Microblaze MCS (Xilinx) - problemy

Problem dotyczy mikrokontrolera Microblaze. Nie mylić z procesorem Microblaze. Używam WebPack'a ISE 14.7. Rzeczony uC jest dostępny jako IP w Core Generator. Nigdy nie bawiłem się w Embedded na FPGA, aż w końcu zaszła taka potrzeba. Zdefiniowanie IP w Core Generatorze, to bułka z masłem. Na początek zdefiniowałem go tak, że ma tylko CLK,RST i jeden 1-no bitowy GPO.No i 4kB pamięci (aż za dużo, ale mniej się nie da). Ot tylko po to, żeby treningowo napisać duperelny soft na "mruganie" tym bitem, a następnie sprawdzić to na symulatorze. Myśle se na chłopski rozum, że jak odpalę SDK, to trza będzie go ino poinformować na jaki zdefiniowany IP będziemy bazgrać soft, a następnie w/g własnego uznania poinformować kompilator jak chcę przydzielić dostępny zdefiniowany obszar pamięci na program, dane, stos i takie tam pierdulamenty... No to se qrva źle myślę !!

No to jadę po helpach.. ISE odsyła mnie do SDK, SDK odsyła mnie do ISE...

Pytam Wujka Googla.. Daje mi coś takiego:

formatting link
No to jademy step by step:

1) Zaczyna się na str.5 Important: Use the component name you used and the instance name 'mcs_0' mentioned earlier. In this example the component name is 'microblaze_mcs' and instance name is 'mcs_0'.

Co to za burdel?!

2) "Top" co prawda zrobiłem nie w HDL'u, ale w SCH. Nie ma to jednak żadnego znaczenia. uC chlapnąłem na schemat i walnąłem 3 porty (CLK,RST,GPO(0:0)).

3) OK, w/g instrukcji ze strony 6 odpalam syntezę. Po kiego Wacka w tym momencie projektowania? Nie wiem! Ale robię jak kazali, jest OK.

4) Na tej samej stronie tutoriala piszą: Create Merged BMM and Update Tool to Use BMM. O co tu do Pani Nędzy chodzi? Co to jest BMM?!

5) Każą na tej samej stronie uaktywnić Tcl console i nabazgrać: source ipcore_dir/microblaze_mcs_setup.tcl . OK, robię to jak małpa, bo tak kazali, ale za Wuja Wacka nie wiem co i po co to robię.

6) Na tejże samej stronie każą mi zaimplementować design. Po co, jak jeszcze softu do uC nie mam? No ale dobra, zaś jak szympans wykonuję polecenie.

7) Przechodzimy na stronę 7. Teraz każą mi zdefiniować WorkSpace. Noż urwa, to chyba oczywiste że nie w chmurce, ino w katalogu głównym. Jasne, że jak ktoś chce to nichaj ma możliwość zrobienia tego w dowolnym folderze, ale niechaj chociaż soft sam zaproponuje logiczną lokalizację. OK, czynię jak mi każą.

8) Teraz przechodzę na stronę 8 tutoriala. Każą : New -> Board Support Package O co zaś qrva tutaj chodzi? Jaki Board? Jaki Support? Jaki Package? OK, zaś jak szympans wykonuję polecenie.

9) Na tej samej stronie pokazują okienko w którym mam wskazać hardware specification. To po kiego była ta zabawa w pkt. 5?

10) Na stronie 9 tutoriala jadę już kompletnie jak małpiszon. Klikam co kazali i czekam.

11) Na stronie 9 tutoriala następuje finalna porażka. File => New Application Project. Niestety takowe okno dialogowe się nie pojawia, pojawia się zupełnie inne. Jest tam co prawda do wyboru "coś tam", wybieram "Microblaze Standalone", po czym otrzymuję "hardware specification not found" i takie tam..

==============

Reasumując:

Prośba:

1) Najlepiej na porządny link tutorialowy set by step. Na stronach Xilinxa nic sensownego nie znalazłem.

2) Wasze wskazówki wynikające z doświadczenia.

======================

Moja Baba mnie podsłuciwała podczas zabawy z Microblaze i stwierdziła,że nie sądziła że znam takie piękne Polskie wyrazy..

Reply to
stchebel
Loading thread data ...

Przerabiałem to samo z Alterą. Mają znacznie lepszą dokumentację niż X ( przynajmniej dla mnie ). Sposób pisania dokumentacji X zawsze mnie jakoś irytował.

W tym miejscu masz definicję swojego mikrosystemu o nazwie domyślnej mcs_0. Dla potrzeb przykładu powinien się nazywać microblaze_mcs. Takich procesorków i to różnych możesz mieć i 10 w jednej fpga. Jeżeli przyjdzie Ci ochota podłączyć się jtagiem, który jest tylko jeden, musisz zidentyfikować do którego procesora chcesz się podłączyć. Zdarzają się sytuacje kiedy trzeba debugować oba systemy na raz przy pomocy jednego jtaga.

No i pięknie.

Żeby sprawdzić czy się zmieści do wybranego układu. Pewnie też przygotowuje jakieś pliki z definicją systemu.

Poszukaj rozwinięcia skrótu to się wyjaśni.

Zwykle skrypt w tcl ustawia jakieś parametry istotne do kompilacji. Może definicje zegarów i parametrów czasowych ?Trzeba by tam zajrzeć.

Board support package to zestaw bibliotek dla architektury którą sobie stworzyłeś. Jest tam startup-code, są tam funkcje obsługi portu GPIO etc. Czyli to co może być potrzebne z setek funkcji i dodatków.

No bo musisz podać dla jakiego systemu. Gdzie jest ram i jaki ma adres , jakie wektory resetu , przerwań i wiele wiele innych.

Na nieszczęście jest to tak elastyczne że trzeba wiedzieć co się robi. Niestety tutoriale dość szybko się deaktualizują.

A nie ma gotowego przykładu do odpalenia ?

Adam

Reply to
Adam Górski

W dniu czwartek, 8 maja 2014 11:23:43 UTC+2 użytkownik Adam Górski napisał:

Od pewnego czasu niestety tak jest. Wcześniejsze dokumentacje były bardziej strawne/przejrzyste, no ale cóż na to poradzić.. Jest jak jest...

To jeszcze ostatnim wysiłkiem szarych komórek jestem w stanie zrozumieć, ale na mój chłopski rozum można byłoby to zrobić bardziej "users friendly". Gdybym był 'supervisorem' projektu ISE, to kazałbym łebskim programistom (bo zapewne są łebscy) zrobić to GUI zupełnie inaczej. Coś w miarę podobnego jak zrobili to chłopaki w Altium. No ale, supervisorem nie jestem no i muszę zadawać pytania..

Tak na marginesie, VIVADO nie ma już możliwości smarowania siana cyfrowego z poziomu schematu. Ino HDL. Jestem jak najbardziej zwolennikiem behawioralnego HDL'a, natomiast strukturalny to jest moim zdaniem 'sort of last resort'. Czasem się to przydaje, ale idę o zakład że byle jaki duperelny projekt zrobiony na czterech układach logicznych AND/NAND/OR/NOR/XOR/NOT zostanie z poziomu graficznego (schematu) zrozumiany w mgnieniu oka i wyjściowa funkcja logiczna do ogarnięcia też w mgnieniu oka. W strukturalnym HDL'u jest to zaledwie parnaście linii kodu. Ale idę o zakład, że tablicy stanów z tego tak 'od strzału' nie wysmarujesz. Najpierw namalujesz sobie schemat, a następnie równanie logiczne śmigniesz w/g de'Morgana.

Przy okazji taka drobna dygresja n/t języków programowania. Obecnie "standartem, cokolwiek to znaczy jest C/C++. Niestety, nie mam na to żadnego wpływu, Świata nie zmienię, ale uważam że jest to syf^N. Definiowanie zmiennych byle gdzie, wskażnik wskaźnika do wskaźnika, posrane symbole operatorów logicznych (nie do zapamiętania-obok monitora musi być "ściąga" przy pisaniu) itd., itp... Robi się burdel. No to co zamiast C? Assembler? Jasne, że nie !! Przykład:

if (a>=b) and (c<>d) and (not e) then Coś_Tam_Zrób

Ano jest to nabazgrane w Pascalu. KAŻDY !! zrozumie ten zapis!! A teraz zapisz to samo w C. Będzie kupa krzaków !!

No ale to taka dygresja, gaduła jestem, a Świata nie zmienię.

Zaraz, zaraz.... Synteza ni ma nic do układu docelowego. Możesz zaprojektować sobie dowolne siano cyfrowe mające na pokładzie sryljon bądź pjerdyljon bramek, przerzutników, pamięci i czegokolwiek. Jeżeli nie ma błędów logiczny/syntaktycznych/literówek , to synteza przeleci bezbłędnie nawet jeżeli docelowym układem w projekcie jest X2K. A czy się zmieści w kostce? Odpowiedź na to pytanie uzyskasz dopiero w procesie mapowania siana do układu. Nie w syntezie !!

OK, znalazłem. Na marginesie, amerykańce mają pierdolca na punkcie akronimów. PCMCIA - People Can't Memorize Computer Industry Acronyms :)))

Supervisorowi kolejnej wersji ISE należy dać wypowiedzenie z roboty. You are Fired !!

Hmm, rozumiem, ale ja bym to opisał jako "Link desired Library", albo coś w tym stylu. Bardziej zrozumiałe.

Ano właśnie o to chodzi. Ja wiem co chcę zrobić, i system w przyjazny sposób powinien mnie przez to przeprowadzić. Zresztą popatrz, zdefiniowałem sobie IP z zaledwie trzema pinami : CLK, RST, jednobitowy GPO. Może być coś prostrzego? No chyba ciężko wymyślić. I do tego chcę nabazgrać duperelny soft na "mruganie" tym jednobitowym GPO. I niestety przy takiej dupereli ręce mi opadają.

A może i jest, ale nie w tym rzecz. Chodzi mi o metodologię postępowania przy projektowaniu, a nie na dowód że da się to zrobić.

Reply to
stchebel

Jednym pasuje innym nie. Takie życie.

Będzie. Wszystkie idee procesorów w FPGA włączając SoC są względnie nowe. Narzędzia nie są jeszcze dostosowane do masowego odbiorcy.

I bardzo dobrze że nie ma już schematów. Nie ma jak tego kontrolować przy pomocy CVS czy SVN.

Kwestia wprawy. Poza tym, chcesz mieć AND zamiast && to sobie makro napisz i będzie. Ciekawe co byś powiedział o składni np. sed-a :)

Być może i nie ma bezpośrednio. Może podczas syntezy robione są jeszcze inne rzeczy które są potrzebne. Nie wiem, jak ostatnio używałem X to jeszcze nikt nie myślał o wkładaniu procków do fpga na poważnie.

Poszukaj rozwinięcia nazwy technologi TWAIN - jeśli dobrze pamiętam dotyczyło to skanerów :)

Pamiętaj że wszystkie te narzędzia wywodzą się z unixów . Tam to było i jest jak najbardziej normalne.

Jak dla mnie wcale nie jest bardziej zrozumiałe.

No niestety trzeba się tego nauczyć.

Ja tam najpierw odpalałem gotowe przykłady i schodziłem w dół aż doszedłem do tego jak samemu taki przykład zrobić od zera.

Pzdr

Adam

Reply to
Adam Górski

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.