[ Odin D. @ 10.07.2009. 20:48 ] @
[ Odin D. @ 10.07.2009. 20:48 ] @
[ magicstar @ 10.07.2009. 22:02 ] @
Svaka cast na volji, informacijama i opisu. Ja se takodje bavim jezgrom Cortex-M3 i bas sa ST-ovim mikrokontrolerima(STM32F103RB, STM32F103ZE). Kao razvojnu ploce koristim bas ST-ove za pomenute mikrokontrolere, a kao razvojni alat koristim IAR Embedded Workbench 5.30. Toliko za pocetak.
[ Odin D. @ 11.07.2009. 22:06 ] @
@magicstar
Drago mi je da si se javio, nisam bio pretjerano optimistican u nadanju da ce se na ovom forumu naci jos neko da petlja sa ARM-om. Nadam se da ces se i ti pridruziti ovoj diskusiji i svojim iskustvima povecati kvalitet i zanimljivost teme. Dakle, evo kako je protekao prvi dan: Nakon reinstalacije XP-a na PC-ju i neophodne promjene starog kulera koji je nesnosljivom jacinom zvuka simulirao zvuk usisivaca jacine par hiljada vati, pristupilo se instalaciji Out-of-the-Box rjesenja sa Olimex-ovog CD-a koji je stigao uz ARM-USB-OCD. Eclipse IDE zahtjeva Java Run Time Enviroment, a ako ga nemate moze biti automatski instaliran sa ovog CD-a. Pokazalo se da sam neopravdano bio skeptican. Iako prethodne verzije ovog CD-a manje vise nisu radile same od sebe ili cak nikako, ova izgleda radi! Instalacija softvera je protekla bez problema, kao i instalacija drajvera za ARM-USB-OCD. Evo sta je instalirano: - Compiler: ARM-GCC - Debug-server: Zylin gdb - openOCD za vezu izmedju debug-servera i JTAG-a - Eclipse IDE za C/C++ Izgleda da je ova instalacija bazirana na yagarto toolchain-u (http://www.yagarto.de/). U odnosu na ono sto sam ja bio naumio da sklopim osnovna razlika je u debug-serveru. Ja sam mislio da stavim obicni gdb dok je ovdje upotrebljen neki plugin za Eclipse koji je napravila firma Zylin, a koji je valjda unapredio podrsku za gdb u Eclipse-u. Dakle, eto nema velike razlike izmedju ta dva setup-a, ali me interesujue da li bi debagiranje sa gdb-om pod Eclipse-om radilo i bez tog Zylin-ovog plugin-a. Svi ovi alati se integrisu u Eclipse, tako da je rad isti kao i u bilo kojem drugom komercijalnom IDE-u: sav proces se odvija u okviru jednog programa - interfejsa, i kroz njegove menije. Uz pomenute stvari instaliraju se odmah i razni Example-projekti za plocice koje Olimex proizvodi. Odmah po pokretanju Eclipse-a, pojavilo se stablo foldera sa postojecim projektima, gdje sam izabrao projekt za STM32-H103 i isti otvorio. Zatim sam kliknuo na Project -> Build All i za nekoliko sekundi projekat se iskompajlirao bez greski i sa 2-3 "Warnings-a" koji su se zalili na nepostojanje nekih include-foldera, koji u stvari postoje, ali na drugom mjestu od onih na koje je projekt podesen. No posto je kompjaliranje ipak proslo bez problema nisam se bakcao time da svrljam po "Project settings..." i da ispravljam krive Drine. Mozda neki drugi dan. Sledece je bilo da se pokrene openOCD, a to je islo sa Run -> External Tools -> Open OCD ARM. Dakle, i to je vec bilo prepodeseno u instalaciji (a osim Open OCD ARM-a ima jos i Open OCD ARM Tiny, za onaj drugi JTAG pomenut u prvoj poruci, te jos ponesto ali ne obratih paznju sta :). Nakon klika na pomenutu komandu izbacio je prozorce sa greskom da nije podesen "Target Project" ili tako nesto, pa sam u Run -> External Tool Configuration odabrao Open OCD ARM i podesio tekuci projekt kao target project i pokrenuo ponovo Run -> External Tools -> Open OCD ARM. Ovaj put nije bilo greske i u Console Window poceo je da se pojavljuje tekst sa informacijama o komunikaciji openOCD sa chip-om dok je JTAG skenirao chip sto je znak da je uspostavljena komunikacija sa mikrokontrolerom. Sledeci korak je bio da se pokrene debuger: Run -> Debug -> pa se odabere koji "debug". Tu sam odabrao pomenuti Zylin i u Console Window je poceo da se izlistava tekst koji je informisao o tome sta se trenutno radi (brzina uspostavljene komunikacije, koji fajl se upisuje u chip, koliko je velik, koliko je upis trajao i tome slicno). I to je zavrseno za neki sekund i klikom na Run komandu u Debug Window-u led dioda na plocici je pocela da blinkuje. Stop, Pause, Step In, Step Out, Step Over i jos neke komande (nesto tipa Step with Filter... ne sjecam se tacno kako bijese) radi sve bez problema. Na lijevoj strani Debug prozora se prikazuje source kod, a na desnoj asembler. Da bih jos jednom sve provjerio, promjenio sam duzinu pauze u glavnom programu, ponovo iskompajlirao i ucitao u mikrokontroler i brzina blinkanja se promjenila. Eto, to je bio prvi dan. Mogu reci da sam prijatno iznenadjen, s obzirom da za sve ovo od pocetka do kraja (ukljucujuci i instalaciju) nije proteklo vise od 15-tak minuta. Pomenuti niz operacija (kako sam znao gdje i sta da kliknem) je rezultat nekih mojih ranijih interesovanja za pomenuto okruzenje i ovu problematiku, tako da bi neko ko se nikad nije susretao sa ovim okruzenjem i ovim setup-om vjerovatno morao malo da prolista neki od help-dokumenata koji su stigli na CD-u. Medjutim to nisu nikakvi zvanicni Olimex-ovi dokumenti, niti Eclipse-ovi niti sta slicno tome. Radi se o dokumentima nekih privatnih likova-entuzijasta koji su to okacili "free" na internet, pa Olimex odnekud pokupio. Uostalom, i sam Olimex je sastavio ovaj toolchain na osnovu jednog od tih uputstava. Znaci sve u svemu, osim troskova za hardver (koji su uporedivi sa najeftinijom klasom 8-bitih mikrokontrolera) imamo sasvim pristojno besplatno razvojno okruzenje za ARM procesore. Eclipse je u svakom slucaju prvoklasan IDE, a i JTAG se barem u ovom prvom danu pokazao bez mana. E sad, o kvalitetu gcc kompajlera se moze polemisati, ali s obzirom da je potpuno besplatan u odnosu na par iljadarki u poredjenju sa drugim komercijalnim proizvodima, ne moze mu se bas mnogo prigovoriti. Uostalom, koliko god ima onih koji mu nalaze zamjerke jos vise ima onih koji ih osporavaju, dok su i neki od komercijalnih razvojnih alata koji se prodaju za solidne parice, bazirani takodje na gcc-u. Znaci, u svakom slucaju, za nekog ko hoce da se jeftino oproba sa ovom klasom procesora mislim da je ovo jedna od boljih opcija. I na kraju, posto je ovo proteklo bolje nego sto sam se nadao, tj. posto je razvojno okruzenje odmah proradilo, malo cu promjeniti plan desavanja pa cu prvo malo da se pozabavim samim mikrokontrolerom, pa kasnije setup-om freetoolchain-a (nezavisnim od Olimex-a) na Windowsu i Linux-u. Prvobitni plan je bio da prvo sredim tollchain posto sam mislio da ovaj Olimex-ov nece proraditi, ali kad je vec proradio onda da malo uzivamo i pustimo google na ispasu :) Pozdrav! [ branko_g @ 17.07.2009. 11:08 ] @
Citat: Odin_D: ...pa cu prvo malo da se pozabavim samim mikrokontrolerom... I jel si nešto uradio u međuvremenu? Eto postaknut tvojim primerom sam juče naručio te iste komponente kao i ti. Trebale bi da stignu sredinom sledeće nedelje. U međuvremenu cu pripremiti jednu rastersku pločicu, i to onu iz Conrada koja ima mesta i za dva SUBD-9 konektora. Jedan bih korisito za RS232 a drugi za CAN, ili oba za RS232 a CAN posebno, nisam još odlučio. Preko UART1 bih probao da li radi i interni Bootloader. E kada bude UART proradio pribaću da aktiviram i ADC , pa PWM i tako redom... Naravno potrajaće to, ali ako ima i drugih "saboraca" biće i lakše i brže. Pozdrav [ Odin D. @ 18.07.2009. 11:50 ] @
Pozdrav Branko!
Drago mi je da necu biti sam, vec sam se bio zabrinuo sto se i ti ne javljas :) Ja se zabavljam pomalo, onoliko koliko mi slobodno vreme dozvoljava, medjutim planiram da to intenziviram malo u skorije vreme, taman kad i tebi stignu narucene komponente :), pa da nastavimo zajedno. I ja sam u medjuvremenu sastavio jedan kabal koji ima 10-pinski steker sa jedne strane, a DSUB-9 sa druge da se nadje ako zatreba, jer nisam bio siguran da li ce raditi debug u razvojnom okruzenju, pa reko' ajd da debagujemo slanjem poruka na PC preko RS232 :) Ali dobro ce doci i za ostale stvari. Ako jos nekog zanima, ima jedan ne toliko velik dokument, ali koristan za brzo upoznavanje sa ovim mikrokontrolerom gdje su na koncizan nacin objasnjenje neke osnovne stvari i data uputstva za brzi start. Radi se o "Hitex insiders guide to STM32 ARM microcontrollers". (Hitex je firma koja pravi kompajlere). Moze se skinuti sa sledece adrese: http://www.st.com/mcu/download...p;url=/mcdfiles/1221142709.pdf Skoro sve periferije na ovom mikrokontoleru imaju pored standardnih i neke dodatne mogucnosti pa se nesto od toga moze i u tom dokumentu procitati. Ja danas pocinjem sa proucavanjem ST-ove biblioteke za ovu familiju, pa cu nadam se za dan-dva skrpiti neki test programcic pa cu javiti utiske. Pozdrav! [ milanmeh @ 03.09.2009. 13:15 ] @
Pozdrav od jednog zainteresovanog embedded zaludjenika! Zanima me kako ste narucili gore navedenu opremu, JTAG OCD i STM32 header board? Da li je islo preko neke firme ili direkt od olimexa pa postom?
[ bobansa @ 27.07.2010. 21:26 ] @
Pozdrav svima koje zanima ARM, ja sam takodje pocetnik i za pocetak sam nabavio nekoliko STM32 procesora kao i ST LINK za programiranje i debug programa. Zanima me kakava su vasa dosadasnja iskustva i koliko ste napredovali u svemu sto je vezano sa ARM-om?
[ bogdan.kecman @ 03.10.2010. 02:16 ] @
da podelim par iskustatva ...
uzeo sam neku ET-STM32F103 plocku (na njoj je STM32F103RBT6 mcu) i igrao se par dana ... pa reko da podelim iskustva .. od dzabe stvar najbolje sto sam nasao je CooCox - windoze only (radi 1/1 na linuxu pod wine-om), koristi gcc (rm-none-eabi-) toolchain sa podrskom za cortexm3 i ima biblioteke za periferije vecine avr cortexme procesora (podrzava ATMEL: AT91SAM3U4E AT91SAM3U4C AT91SAM3U2E AT91SAM3U2C AT91SAM3U1E AT91SAM3U1C; ST: STM32F103VB STM32F103V8 STM32F103T8 STM32F103RB STM32F103R8 STM32F103CB STM32F103C8; NXP: LPC1768 LPC1766 LPC1765 LPC1764 LPC1758 LPC1756 LPC1754 LPC1752 PC1751 LPC1311 LPC1313 LPC1342 LPC1343 LPC1111x101 LPC1111x201 LPC1112x101 LPC1112x201 LPC1113x201 LPC1113x301 LPC1114x201 LPC1114x301; Luminary: LM3S811 LM3S8962 LM3S9B96) takodje sam napravio nativni gcc-none-eabi toolchain ( ovde ima sve sta i kako, patch za gcc etc, sve "samo" radi :D) ali nikako nisam uspeo da ga napravim da saradjuje sa eclipse-om... Posto je ovaj dosao vec sa nekim "standardnim" ST bootloaderom nisam se igrao sa przilicom (nemam neki jtag za arm ali bi trebalo da radi sa buspirate+openOCD posto mislim da openOCD podrzava cortex m3) vec menjam firmware koristeci bootloader. Na srecu to radim direkt sa linuxa posto postoji python skript stm32loader.py kao i nativna applikacija (ovo koristim) stm32flash. dalje, zgodna stvar za znati (ja svaki put trazim kako se to radi), posto kompajler nativno pravi ELF binary, da bi taj prebacili u HEX fajl (koji loaderi umeju da spucaju na mcu): Code: arm-none-eabi-objcopy -O ihex projectname.elf projectname.hex isto tako ako hocemo OBJ Code: arm-none-eabi-objcopy -O binary projectname.elf projectname.bin objcopy ume takodje da pravi i elf32-littlearm elf32-bigarm elf32-little elf32-big srec symbolsrec verilog tekhex targete .. no za njima nikada nisam imao potrebe... sta jos znacajno ... da, probao sam demo verzije IAR-a i KEIL-a .. deluju zanimljivo, meni se KEIL vise svidja ali su mnogo bre skupi .. ukrao sam KEIL i instalirao (v4.0 i v3.nesto) na virtualboxovan xp pa cu da se igram jos malo posto se primeri koje sam dobio uz plocu teraju na IAR i KEIL-u automatski (za CoCoox moram da ih budzim, nije 1/1 kompatibilno) sve u svemu - zanimacija :D ... mnogo snage u malom chipu, kada se uporedi sa 8bitnim mcu-ovima prosto je smesno (obzirom da ovi 32bitni kostaju skoro kao 16F84 :D - 16F84 je 8$ a STM32F103RBT6 je 9$ u istoj radnji) DA, zanimljivo, danas sam od drugara cuo da ST mozda vise nece da pravi mikrokontrolere tako da .. mozda je bolje preci na neki drugi cortexm3 (npr atmel ili nxp) no generalno jezgro je isto, svi ovi kompajleri podrzavaju skoro sve njih tako da je samo pitanje biblioteka .. a i st ce verovatno nekome prodati svoj mcu pogon ako i odluce da ih vise ne rade tako da ce vec da se pojave isti ovi pod drugim imenom [ Odin D. @ 03.10.2010. 13:17 ] @
Imas Atolic Studio (atollic.com) koji je besplatan za C. Baziran je na Eclipse-u i GCC-u.
ST-link JTAG je 20-30 evra. Citat: DA, zanimljivo, danas sam od drugara cuo da ST mozda vise nece da pravi mikrokontrolere tako da Zanimljiva informacija. Mozes li nekako doci do izvora tih glasina. Nisam cuo nista slicno, a i zvuci malo nevjerovatno, posto intenzivno izbacuju nove "products line" mikrokontrolere svako malo, a i rekao bih da su im mikrokontroleri medju glavnim proizvodima... Ima jos i Stellaris familija Cortexa koja je sad TI-ova. Imaju zanimljivih kit-ova. [ bogdan.kecman @ 03.10.2010. 15:05 ] @
Citat: Odin D.: Imas Atolic Studio (atollic.com) koji je besplatan za C. Baziran je na Eclipse-u i GCC-u. znaci nesto kao ovaj CooCox .. probacu .. CooCox ima lepo zamisljen ide (skidas biblioteke sa neta, on ti ih samo dodaje u projekat i slicno ... ) mada nisu "prepisali sve" tako da ne mogu da mesam standardni ST lib sa ovim sto su oni prepisali .. pa je malo naporno za pocetnika kao sto sam ja .. ne znam el "do mene" el "do njih" kada nesto ne radi .. mada, mislim da cu morati "back to basics" i da procitam prvo datasheet za ovaj mcu, ne znam zasto sam krenuo od C-a umesto da prvo iscitam datasheet Citat: ne znam dal mi treba .. generalno na ovoj plocki imam par ledara, adc, steker za lcd, usb, sd karticu i par dugmica, dovoljno za testiranje kako to sve radi ... (naravno izlaz svih portova na idc konektorima) tako da tek kada istestiram sve sto me zanima onda cu dalje da vidim da li cu da koristim ili ne ove mcu-e ... a do toga ce proci neko vreme tako da - bootloader radi posao :) ... a za nedaj boze ako smorim bootloader (ne znam da li su ga "zastitili") spucacu ga nazad uz pomoc openocd-a Citat: Odin D.: Zanimljiva informacija. Mozes li nekako doci do izvora tih glasina. Nisam cuo nista slicno, a i zvuci malo nevjerovatno, posto intenzivno izbacuju nove "products line" mikrokontrolere svako malo, a i rekao bih da su im mikrokontroleri medju glavnim proizvodima... znas kako, covek koji mi je rekao (cita ovaj forum) nije siguran da li je ST u pitanju, tako da, on ako navata siguran info, javice se .. do tada ja na to gledam kao na neproveren info (seti se, skoro smo imali da ce microchip da kupi atmel 1000% pa evo i dalje nista od toga) [ bogdan.kecman @ 03.10.2010. 15:41 ] @
video sam atolic, sad vidim kad sam otisao na sajt ... imao sam ga skinutog ali ga jos nisam probao ..
za linux korisnike - CooCox se instalira pod wine-om i radi 1/1 (sitni bagovi sa CoCenter, morate da nadjete "gde stvarno da kliknete" ali sve radi) - Keil v4 se instalira pod wine-om, radi 1/1 samo je neophodno staviti projekte na c:, ako ih stavite na neki mapirani disk onda ne radi kako treba (ne mozete da otvorite fajlove za edit) - Atolic se instalira pod wine-om ali pokusava da starta javu i crkne ko zvecka :( probacu jos par "fora" ali bojim se da od njega nista na linuxu - gcc se iskompajlira ali mi ne radi nesto kako treba imam: /home/arhimed/arm-cs-tools/bin/../lib/gcc/arm-none-eabi/4.4.1/../../../../arm-none-eabi/bin/ld: cannot find -lc collect2: ld returned 1 exit status to sam ja nesto lose uradio ali .. videcemo jos .. [Ovu poruku je menjao bogdan.kecman dana 03.10.2010. u 17:03 GMT+1] ![]() [ bogdan.kecman @ 03.10.2010. 16:20 ] @
Citat: milanmeh: Pozdrav od jednog zainteresovanog embedded zaludjenika! Zanima me kako ste narucili gore navedenu opremu, JTAG OCD i STM32 header board? Da li je islo preko neke firme ili direkt od olimexa pa postom? odin nije u srbiji ako se ja dobro secam tako da je njemu lako da narucuje :D ... sto se olimex stvari tice, comet je najbolji nacin za narucivanje, obe su firme bugarske i dobro saradjuju jedna sa drugom tako da kod cometa (www.comet.rs) narucis i stigne vrlo brzo a ne ugrade se mnogo (manje nego sto bi ti postari uzeli za spediciju, pregled, carinjenje etc..) [ Odin D. @ 03.10.2010. 16:21 ] @
Citat: bogdan.kecman: mada, mislim da cu morati "back to basics" i da procitam prvo datasheet za ovaj mcu, ne znam zasto sam krenuo od C-a umesto da prvo iscitam datasheet Heh, moram da te razocaram, ali datasheet otprilike dolazi na kraju. U datasheet-u su opisane samo ST-ove periferije ugradjene u mikrokontroler, a za cpu i periferije koje pripadaju cortexu imas Cortex-M3 Technical Reference Manual i ARMV7 M Architectural Reference Manual. Takodje ima i jos poneke "pomocne" literature kao sto je npr. The Definitive Guide to the ARM Cortex-M3, Second Edition koja se tu i tamo moze "krisom pozajmiti"... Tako da, nekih par iljada strana se tu nagomila koje valja prolistati ako oces da znas "ko pije a ko placa"... Nemoj samo da se zafrknes pa da to prolistavanje zamjenis studioznim iscitavanjem - potrajalo bi prilicno.... [ bogdan.kecman @ 03.10.2010. 16:49 ] @
rade mi ovi primeri, ali ih ne kontam :( ...
dakle .. evo osnovni deo gde sam zapeo: Code: int main() RCC_Configuration(); NVIC_Configuration(); SysTick_SetReload(9000); SysTick_ITConfig(ENABLE); ... ovako otprilike pocinje svaki primer ... WTF je systick ?! na kojoj frekvenciji radi sada ovaj mcu ?! kristal na ploci je 8MHz .. koji tu pll ide? gde se podesava? postscaler? prescaler? ... koliko mi traje nop? onda dalje .. Code: GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; a sto bas 50MHz ? i sta ovo uopste znaci? da GPIO_WriteBit() traje 1/50M sekundi ili ? dakle, zabo sam se samo tako .. osecam se ko potpun noob EDIT: pozajmio sam The Definitive Guide to the ARM Cortex-M3, Second Edition, hvala za hint, deluje cool [ Odin D. @ 03.10.2010. 17:42 ] @
Systick je sistemski tajmer koji je dio cortex jezgra. Sluzi kao standardni timer za generisanje vremena za RTOS-ove ili periodicno okidanje interruptova i tako to gdje god ti zatreba neko "vreme". Naravno, nema veze sa dodatnim tajmerima koji spadaju u periferiju. Ugradjen je u cortex jezgro isto kao npr. i NVIC (nested interrupt vector controler) ili JTAG debug sistem da bi se obezbedila kompatibilnost izmedju svih cortex m3 mikrokontrolera, koji se u praksi onda razlikuju samo po periferijama koje su pojedini proizvodjaci "nalijepili" uz jezgro.
Znaci, da bi se presaltao svoju aplikaciju sa ST-ovog cipa na NXP-ov npr., treba samo da da vodis racuna o peripheral library, sve ostalo ce da radi 1/1, ukljucujuci i hardver za debagiranje i programiranje. (Skini sa ST-ovog sajta (ili odnekud drugo) "Hitex Insider's guide to the STM32 ARM based microcontroller". To nije velik dokument, a na prvih 20-30 strana imas ukratko opisano o cemu se tu uopste radi sa tim cortex-ima. Ustvari, probacu ja da ga zakacim ovdje ako bude moglo.) U principu, malo je zeznuta ta inicijalizacija na pocetku, jer se tu uglavnom petlja po samom cortex-jezgru i onome sto pripada njemu, dok u datasheetu proizvodjaca se uglavnom opisuju periferije koje je proizvodjac zbudzio uz jezgro, tako da datasheet slabo pomaze u odgonetanju onoga sta se tu zbiva. Ja sam to rjesavao tako sto sam uzeo neki "blinking led" primjer, kompajlirao, u cip usvirao i pokrenuo debugger u step-by-step rezimu i gledao instrukciju po instrukciju sta se tu desava da bi skontao kako se taj cip uopste "pali". U biblioteci je bilo suma nekih funkcija i kad su u toku inicijalizacije krenule jedna drugu da pozivaju (posredno preko trece i cetvrte...) ja sam se pogubio. Na kraju, kad iz citave te ujdurme izbacis sve funkcijske pozive i ostavis samo instrukcije koje nesto rade, se sve svede na sacicu nekih read/write instrukcija koje setuju/resetuje neku sacicu bitova za PLL, real-time clock, interrupt, watch-dog i tome slicno, sto je i za ocekivati, ali ljudi izgleda vole da se sve to zapakuje u neke high-level API-je ko da cu na JAVA-i da ga programiram. I onda pratis te read/write instrukcije i gledas koje flagove kako setuju i otprilike je vrlo lako upratiti kako to ustvari radi. A ako krenes "odozgo" i pocnes da proucavas biblioteke i funkcije ima da se pogubis... Cortex m3 uvijek startuje sa nekog internog "ovaj covjek je neunistiv"-ocilatora da bi radio i kad sve oko njega na ploci pocrkava. I onda u tom rezimu ti ispodesavas PLL i "prikacis" PLL na spoljni oscilator, pa ukljucis PLL, pa sacekas malo da se zalaufa, pa kad dobijes signal da oscilator fercera, onda switchujes jezgro sa tog internog na PLL koji se pogoni externim itd... Znaci, ukljuci debugger u step-by-step rezimu i gledaj instrukciju po instrukciju sta radi u procesu inicijalizacije i brzo ces pohvatati kako idu ta inicijalna podesavanja. EDIT: ne moze upload hitex-ovog uputstva, ima 6MB. Evo ovdje: http://www.st.com/mcu/files/mcu/1221142709.pdf [ bogdan.kecman @ 03.10.2010. 17:51 ] @
thx za pojasnjenje ... sad cu taman da vidim kako radi openocd+buspirate :D
[ Odin D. @ 03.10.2010. 18:09 ] @
Citat: Cortex ima nekoliko magistrala na koje se kace periferije, a koje su zajedno sa sistemskim magistralama i visekanalnim DMA kontrolerom spetljane u neku matricu magistrala. Te magistrale se mogu proizvoljno ukljucivati/iskljucivati i mozes im proizvoljno podesavati brzinu bilo zbog ustede struje (low-power modovi) ili cega drugog. Uglavnom, ako hoces da koristis neku od periferija, prvo treba da ukljucis magistralu na koju je doticna zakacena (jer su po defaultu cini mi se magistrale iskljucene), pa podesis magistralu (brzina), pa ukljucis periferiju (jer su po defaultu cini mi se iskljucene) i eto .... Sve u svemu, malo se to razlikuje od poznatih 8-bitnih i 16-bitnih kontrolercica, malo je zeznutije u startu, ali i mogucnosti su daleko vece. Za jednocifrenu cifru dolara 32-bitni CPU na ~90MHz, Harvard arhitektura, koncepti iz "visih" tipova procesora (Supervisor Mode, User Mode, main stack, process stack...), kontroler pristupa memoriji, nested interrupt controler, shadow registri.... [ bogdan.kecman @ 03.10.2010. 18:14 ] @
da, deluje mnooogo iskusnije od 32mx pic-a (jedini 32bitni mcu sa kojim sam do sada radio) .. videcemo kako ce ici na dalje .. za sada je prilicno sporo :( .. no .. polako ..
[ bogdan.kecman @ 15.10.2010. 11:25 ] @
pazi sad ovo ...
Code: #define SYSCLK_FREQ_24MHz int main(void) { SetSysClock(); //setuje sysclk na 24MHz RCC_GetClocksFreq(&RCC_ClockFreq); /* Initialize Leds mounted on STM32VLDISCOVERY board --------------------------*/ STM32vldiscovery_LEDInit(LED3); STM32vldiscovery_LEDInit(LED4); /* Output HSE clock on MCO pin ---------------------------------------------*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); RCC_MCOConfig(RCC_MCO_HSE); while (1) { STM32vldiscovery_LEDToggle(LED3); STM32vldiscovery_LEDToggle(LED4); } } void STM32vldiscovery_LEDToggle(Led_TypeDef Led) { GPIO_PORT[Led]->ODR ^= GPIO_PIN[Led]; } da je ovo neki PIC koji trci na 24MHz ove ledare bi se palile i gasile na 24/4/2 = 3MHz eventualno mozda na 1.5MHz zavisi kako radim toggle ... elem, ovde ovaj toggle radi na 285.7KHz .. aj sad ako neko moz da objasni ZASTO ?! io bus je na 50MHz, mcu je na 24MHz ... za koji ... zasto 300KHz .. to je 4 puta sporije nego sam ocekivao ?! [ bogdan.kecman @ 15.10.2010. 12:07 ] @
uh sto sam glup, nista mi nije jasno a mrzi me da citam gigabajte ...
na scopeu se vidi da izmedju Code: STM32vldiscovery_LEDToggle(LED3); i Code: STM32vldiscovery_LEDToggle(LED4); prodje 940ns ne kontam ... nemoguce da je toliko sporo menjanje stana pina ![]() [ Odin D. @ 15.10.2010. 17:40 ] @
Uf, nezgodno pitanje...
Na cortexu ne mozes bas tako "pravolinijski" da se zabavljas kao na PIC-u. Prvo, pogledaj sta ti radi kompajler i kakav asembler generise. Postoje 16-bitne instrukcije, a postoje i 32-bitne. Neke pice u jednom ciklusu, a neke u dva. Pogledaj u disasemblovani kod pa vidi koje je tvoj kompajler izvukao iz sesira, pa onda vidi u dokumentaciji cortex-a kako rade te instrukcije, pa onda u dokumentaciju kompajlera da vidis zasto je bas te upotrebio a ne neke druge, pa onda vidi koje parametre treba da mu zadas da bi uradio to sto hoces. Drugo, posto se vrtis u petlji, uvijek imas "overload" od petlje (branch-ing, pipeline flush-ing i ti fazoni). Probaj da u while petlji umjesto jednog off i on diode zaredjas npr. 10 off-ova i on-ova, cisto da odnos toggle-ovanja i skakutanja sa dna petlje na pocetak ne bude 1:1 nego npr. 10:1 ili 20:1, pa vidi da li se onda nesto brze desava. Ti dodatno za toglovanje pina jos imas i pozive funkcija (i povratke iz istih) pa ispada da su ti za jedan on-off diode potrebna dva poziva funkcije, dva povratka iz funkcije, opsluzivanje petlje + instrukcije u funkcijama puta dva. Ispada da tako uglavnom skakuces po memoriji, a sporadicno malo i togglujes po pinovima. Zatim, pogledaj tzv. bit-banging, odnosno re/setovanje bitova u jednom ciklusu (sve periferije su, osim onoga tamo gdje i jesu, preslikane jos jednom negdje u memoriji u tzv. bit-bang opseg, odnosno svaki bit ima svoj alter-ego u tom opsegu. Kad pises/brises u tom alter-ego opsegu sve se odslikava na stvarne bitove u jednom ciklusu. Zatim (a mozda bi ovo trebao najprije) pogledaj da ti nije slucajno negdje u kodu nasvrljano nesto poput #define DEBUG ili nesto tome slicno, sto bi ti mikrokontroler smandrljalo u neki debug mode gdje se zarad debagovanja izmedju "tvojih" instrukcija uspricavaju neke lijeve debugerske i gdje se "nesto" usporava iz istog razloga... Nisam bas dobro upoznat sa tim aspektom, ali cini mi se da to moze dovesti do usporenja. Zatim, mozes da bacis pogled i da li ti se program izvrsava iz RAM-a ili Flash-a. Ako je iz Flash-a onda pogledaj koliko je upucano wait-stanja (posto je jezgro brze nego sto je dohvatanje instrukcija is Flash-a mora se cekati na flash) pa vidi da umjesto 2 wait stanja nije neko zdrmao 8 ili 16 npr. Ovo mi onako na prvu pada na pamet, a vjerujem da ima jos jedno 2 puta toliko mogucih razloga :( Mislim da bi na 72MHz trebalo biti moguce nagurati toggle-ovanja pina na 15-18 MHz. 95% sam siguran da se radi o tome sta je kompajler izgenerisao i koliko je nakitio tu while petlju i pozive tih funkcija. [ bogdan.kecman @ 16.10.2010. 01:19 ] @
nije neka znacajna razlika
Code: while(1){ STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); STM32_Discovery_LEDToggle(LED3); STM32_Discovery_LEDToggle(LED4); } znam za overhead ali on se pokazuje sa jedne strane samo (jedan step je bez overhead-a drugi step je sa overhead-m) nema #define debug, imam debug i release binary, ovo je sa release binariem .. i da, ovaj discovery je 24MHz ne 72 .. elem .. sto se asm-a tice Code: ... 0x08000294 <main+76>: movs r0, #1 0x08000296 <main+78>: bl 0x8000558 <STM32_Discovery_LEDToggle> 0x0800029a <main+82>: movs r0, #0 0x0800029c <main+84>: bl 0x8000558 <STM32_Discovery_LEDToggle> 0x080002a0 <main+88>: movs r0, #1 0x080002a2 <main+90>: bl 0x8000558 <STM32_Discovery_LEDToggle> 0x080002a6 <main+94>: movs r0, #0 0x080002a8 <main+96>: bl 0x8000558 <STM32_Discovery_LEDToggle> 0x080002ac <main+100>: movs r0, #1 0x080002ae <main+102>: bl 0x8000558 <STM32_Discovery_LEDToggle> 0x080002b2 <main+106>: movs r0, #0 0x080002b4 <main+108>: bl 0x8000558 <STM32_Discovery_LEDToggle> 0x080002b8 <main+112>: movs r0, #1 0x080002ba <main+114>: bl 0x8000558 <STM32_Discovery_LEDToggle> 0x080002be <main+118>: movs r0, #0 0x080002c0 <main+120>: bl 0x8000558 <STM32_Discovery_LEDToggle> ... 0x08000558 <STM32_Discovery_LEDToggle>: ldr r3, [pc, #20] ; (0x8000570 <STM32_Discovery_LEDToggle+24>) 0x0800055a <STM32_Discovery_LEDToggle+2>: ldr r1, [pc, #24] ; (0x8000574 <STM32_Discovery_LEDToggle+28>) 0x0800055c <STM32_Discovery_LEDToggle+4>: ldr.w r3, [r3, r0, lsl #2] 0x08000560 <STM32_Discovery_LEDToggle+8>: ldrh.w r1, [r1, r0, lsl #1] 0x08000564 <STM32_Discovery_LEDToggle+12>: ldr r2, [r3, #12] 0x08000566 <STM32_Discovery_LEDToggle+14>: eor.w r2, r1, r2 0x0800056a <STM32_Discovery_LEDToggle+18>: str r2, [r3, #12] 0x0800056c <STM32_Discovery_LEDToggle+20>: bx lr 0x0800056e <STM32_Discovery_LEDToggle+22>: nop ; (mov r8, r8) 0x08000570 <STM32_Discovery_LEDToggle+24>: andcs r0, r0, r0 0x08000574 <STM32_Discovery_LEDToggle+28>: stmdaeq r0, {r2, r4, r6, r9, r10} ... ![]() [ Odin D. @ 16.10.2010. 08:55 ] @
Baci pogled ovdje, mozda isceprkas nesto:
https://my.st.com/public/STe2e...20STM32¤tviews=13118 [ bogdan.kecman @ 18.10.2010. 18:51 ] @
zanimljivo .. no video sam taman juce (super je ovo kada odes na odmor, pogasis telefone i citas lepo na lapu pdf-ove :D ) u hitex manualu za nesto sto se zove bit banding .. u prvi mah sam to preskocio (procitao bit banging) ali sam se posle vratio i skontao da stm32 ima adresirane "linkove" na bitove tako da na taj nacin zaobilazi nedostatak validnog boolean procesora tako da umesto da implementira bit set i bit reset asm naredbe on linkuje svaki bit kao zasebnu rec u odvojenom memorijskom prostoru tako da pisanjem u tu rec mi "u taku" menjamo sadrzaj jednog bita :D .. iskusno :D ... na zalos i dalje ne mozemo da menjamo 3 pina istovremeno velikom brzinom ali boze moj .... doduse, nije mi jasno zasto nemaju boolean procesor, imaju ga i glupi pic/avr .. al verovatno ima razloga ... takodje sam skonto ovaj 4gigabajtni adresni prostor ... skoro pa se osecam kao na xt-u :D
odo dalje da citam, nemam snage ponovo da izlazim na kisu (ne prestaje da pada od kada sam dosao, ne znam sta mi bi da idem na zlatibor u oktobru :D ... no, uspecu bar da se naspavam ako nista drugo :D i da iscitam ovih nekoliko dokumenata :D ) [ Odin D. @ 18.10.2010. 20:00 ] @
Pa skrenuh ti paznju u nekoj od prethodnih poruka na bit-banding, ali ti je izgleda promaklo.
Misim da je razlog neimplementiranja boolean procesora nastojanje da cortex jezgro bude sto je moguce manje, a drugi razlog bi mogao biti taj sto pinovi iovakoionako nisu direktno vezani na jezgro nego preko magistrale, pa bi boolean procesor trebalo nekako direktno sprezati sa pinovima sto bi moglo prilicno zakomplikovati citavu pricu oko kompatibilnosti i prenosivosto softvera (sto je bio jedan od primarnih ciljeva cortexa) jer bi svaki proizvodjac to zbudzio kako on misli da treba (a to je obicno "kako god - samo da ne bude ko' kod onih drugih"). Pozdrav i dobar odmor! [ bogdan.kecman @ 16.11.2010. 07:19 ] @
elem, ja sam se za onaj moj projekat za koji sam ispitivao ARM odlucio da ipak idem sa pic32mx ali sam nastavio da se u medjuvremenu igram jos sa arm-om ..
mozda nekome zanimljivo, projekat koji strobuje ledaru tako da fan izgleda kao da stoji ili da se okrece na jednu/drugu stranu polako ... uradjena verzija sa interaptom i verzija bez interapta ... generalno malo komplikovaniji blink led primer ali za ARM :D .. atolic studio .. sors ima linkovan tamo sa: http://elco.crsndoo.com/wordpr...stm32-discovery-prvi-projekat/ uzivo to izgleda super, ali nijednom kamerom nisam mogao da snimim kako treba, ovako je najbolje (treptanje je do kamere, ne do ledara) [ korak @ 18.01.2011. 17:35 ] @
Nabavio sam Discovery kit i Atolic razvojno okruzenje.
Postoji li real time dibagiranje. Sve ostalo radi. Pozdrav. [ bogdan.kecman @ 18.01.2011. 17:49 ] @
u atolic-u podesi da imas ST-Link i debagiranje bi trebalo da sljaka
EDIT: pogledaj ovde za detalje http://www.atollic.com/index.php/kb/3-debugging/11-kb_stlink [ korak @ 19.01.2011. 00:11 ] @
Hvala.
Dibagiranje radi u smislu da moze da se ide korak po korak i da se gleda sadrzaj memorije, ili da se zaustavi u prekidnoj tacki i da se onda pogleda sve sto te interesuje. Zeleo bih da sve to imam ali da se MCU ne zaustavlja, da radi normalno. Pozdrav. [ bogdan.kecman @ 19.01.2011. 00:28 ] @
nemoj da me drzis za rec ali mislim da je nemoguce kroz st-link posto je to one wire debugging ... taj mcu radi na 70MHz ako se ja dobro secam tako da ne postoji nacin da on kroz taj 1wire interface i 12mbps usb link prosledi tu kolicinu promena....
za realtime arm debugging ti treba minimum usb platform cable (jtag - mislim da je oko 100E ali nemoj da me drzis za rec, ima na sebi brzi usb mcu sa '51-om i jedan cpld) ... mada ja nisam do sada probao ... pravim sada brzi (full speed 480mbps ili koliko bese) jtag koji bi trbalo urjtag da ume da koristi ali ne znam da li urjtag ume da radi realtime debugging, meni je dovoljno da mi radi "jako brzo" ovaj obicni preko jtag-a .. st-link je spor ali je zgodan (samo jedna zica) edit: ono sto je dobro je sto "svi" imaju isto jezgro (cortex m3 - za njih pricam) a debuging modul se nalazi u jezgru tako da je identicno debagiranje bilo kog cortex m3 procesora ... dal je STM32 ili je neki LPC ili NXP ili .. potpuno je identicno sve .. periferija se razlikuje ali samo jezgro, debagiranje, rtc .. sve je isto [ bogdan.kecman @ 19.01.2011. 00:55 ] @
evo sada gledam dokumentaciju za keil ( http://www.keil.com/coresight/ ) i kaze
Cortex-M3 processor-based devices use the ARM CoreSight™ technology which introduces powerful new debug and trace capabilities. Debug features: * Run Control of the processor allowing you to start and stop programs * Single Step one source or assembler line * Set breakpoints while the processor is running * Read/write memory contents and peripheral registers on-the-fly * Program internal and external FLASH memory a za SWD kaze: SWD uses 2-pins to provide the same debug functionality as JTAG with no performance penalty, and introduces data trace capabilities with the Serial Wire Viewer (SWV). kak oto sada sljaka nemam pojma .. kao sto rekoh, ja sam do sada samo koristio breakpoints i step-by-step .. [ bogdan.kecman @ 19.01.2011. 12:00 ] @
btw, stigao mi je dso nano v2 i ocu da ga prodam pa ako nekog zanima neka zdrakne .. to je sprava kojoj je srce cortex m3 i generalno je dso ali teoretski ako je dovoljno 7 tastera, analogni ulaz, digitalni izlaz i 320x240 ekran moze da bude super development platform posto je ceo source open (eno ga sedi na google code-u) ... ako nista, zanimljivo je pogledati kod i videti kako to "iskusni" prave aplikacije za arm :)
[ korak @ 19.01.2011. 14:03 ] @
Zapravo bitno je da se proveri kako radi ovo: Read/write memory contents and peripheral registers on-the-fly Nije vazno sto je jednozicna veza, ti trazis samo ono sto te interesuje da vidis a to nikada nije ise od dvadesetak bajtova ili parce memorije od 128 ili 256 bajtovo. To lepo radi na MC9S08 koji takodje ima jednozicnu vezu. Pozdrav. [ bogdan.kecman @ 19.01.2011. 18:29 ] @
ja mislim da iz attolic-a ne moze ... on koristi gdb a mislim da taj gdb ne moze kada mu kazes "continue" da pokupi info all-registers .. tj, ja ne umem ..
EDIT: evo sad sam probao i sa trace: Code: C:\Program Files\Atollic\TrueSTUDIO STM32 Lite 1.4.0\ARMTools\bin>arm-atollic-eabi-gdb.exe \STM32_workspace\brisi\Debug\brisi.elf GNU gdb (Built by Atollic AB. Distributed with Atollic TrueSTUDIO(r). Build 10.4 Lite.) 7.1 Copyright (C) 2010 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "--host=pentium3-pc-mingw32 --target=arm-atollic-eabi". For bug reporting instructions, please see: <[email protected]>... Reading symbols from \STM32_workspace\brisi\Debug\brisi.elf...done. (gdb) target remote localhost:61234 Remote debugging using localhost:61234 Reset_Handler () at ..\firmware\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\TrueSTUDIO/startup_stm32f10x_md_vl.s:68 68 b LoopCopyDataInit (gdb) load Loading section .isr_vector, size 0x1d0 lma 0x8000000 Loading section .text, size 0x7c8 lma 0x80001d0 Loading section .init_array, size 0x4 lma 0x8000998 Loading section .fini_array, size 0x4 lma 0x800099c Loading section .data, size 0xc lma 0x80009a0 Start address 0x8000759, load size 2476 Transfer rate: 1 KB/sec, 495 bytes/write. (gdb) info trace No tracepoints. (gdb) trace main Tracepoint 1 at 0x8000286: file ..\src\main.c, line 106. (gdb) info trace Num Type Disp Enb Address What 1 tracepoint keep y 0x08000286 in main at ..\src\main.c:106 (gdb) trace main.c:184 Tracepoint 3 at 0x80002c0: file ..\src\main.c, line 184. (gdb) actions Enter actions for tracepoint 3, one per line. End with a line saying just "end". > collect i > collect $regs > end (gdb) tstart Target does not support this command. (gdb) tstop Target does not support this command. (gdb) kaze da "target does not support" ... e sad, dal je do ovog gdb-a ili je do st-linka ne znam [Ovu poruku je menjao bogdan.kecman dana 19.01.2011. u 20:00 GMT+1] [ korak @ 19.01.2011. 20:25 ] @
Kada bih nasao neki data sheet za dibager, bilo bi sve jasno. Mozda preterujem sa ocekivanjima jer kod MC9S08 mogu dibager kontroleru u MCU da zadam oko 20-tak naredbi preko jednozicne veze i on da mi vrati ono sto trazim. Naprimer da mi vrati vrednost neke memorijske lokacije (tu su i RAM i Flash i registri) ciju sam adresu poslao i jos toga. U krajnjoj liniji nema veze. Dibagiranje u realnom vremenu ti treba samo kada testiras program na masini, a moze biti opasno ako se masina zaustavi bez veze. ARM koristim kao dopunu lepezi aplikacija. Na primer nekoliko MC9S08 upravljaju raznom gvozdjurijom, a sve vezem u merezu i preko ARM-a nadgledam i distribuiram komande sa mogucnoscu povezivanja na daljinu. Nisu mi medjusobni konkurenti ova dva MCU-a. [ bogdan.kecman @ 19.01.2011. 21:18 ] @
http://infocenter.arm.com/help...arm.doc.ddi0337e/CEGFHDBB.html
http://www.arm.com/products/sy...mponents/serial-wire-debug.php zakaceno imas specifikaciju za debug modul jezgra [ korak @ 20.01.2011. 01:55 ] @
Hvala proucicu.
Pozdrav. [ bogdan.kecman @ 20.01.2011. 02:05 ] @
dojavi ako napravis nesto ... ja cu ovih dana da probam malo jaci stm32 (od tog malca na discovery ploci) sa nekim jtag-om pa javljam mada nisam nasao nigde opciju kako bi uopste rekao programu da ide a da ja citam podatke ... za gdb mi jedino sto pada napamet su tracepoints - dakle da mu kazem poizicije u programu kada hocu da mi zapamti neke vrednosti ali on mi kaze da "Target ne podrzava" .. dal ne podrzava gdb server ili ne podrzava procesor bem li ga ... a svi ovi dzaba alati su zasnovani na istom tom gdb-u tako da dal je atolic ili coocox ili neki peti isti djavo ... a keil mi je malo skup tako da..
[ korak @ 21.01.2011. 01:01 ] @
Mozda si u pravu, em besplatno em da ima sve. Ali mi se cini na prvi pregled da dibager MCU-a ima tu mogucnost.
Videcemo. pozdrav. [ zoligen @ 16.06.2011. 10:53 ] @
Ja sam jedan nesretni vlasnik STM32F103-STK razvojne ploce i ARM-USB-OCD jtag-a.
Od pocetka je krenulo sve naopako. Prvo sam dobio razvojnu plocu koja cini mi se nije bila nova (konektor za bateriju je napola i vrlo ruzno zalemljen kao i konektor za napajanje) a nisam dobio ni neki CD uz plocu vec samo papirnu trakicu na kojoj je pisala adresa sa koje mogu da skinem openOCD. Dobro, racunam ploca radi pa nema veze ko ce sad sve da vraca... Onda sam skinuo za nekih 4-5 sati openOCD (300 MB ali server im je izgleda ocajan), i onda je pocela igranka. Nakon instalacije pogledam primere, nema za stm32. Dobro, skinuo sam nekoliko. Onda new project, import, ... Napravim nekako primer za moju plocu. Ali, main.o error. Dobro, citam po forumima i odmah nakon nekoliko sati nadjem da eclipse verzija 7.2 ima neki bag i da treba instalirati 7.1. Dobro, uradim i to ali nista. Onda opet malo citanja pa negde sitnim slovima pise da se openOCD ne sme instalirati u C:\programFiles vec odmah na C:\. Dobro, uradim tako i nema vise main.o error-a. Ali sada "test" error zato sto je primer pisan u cigwin-u a moje okruzenje ga ne podrzava... Stvarno pocinjem da gubim strpljenje. Moze li neko da preporuci neko kompletno okruzenje sa nekim primerom ili da okaci cd koji se dobija uz stm razvojne ploce ili da mi na bilo koji nacin pomogne da bar LED pocne da blinka. Pozdrav [ Odin D. @ 16.06.2011. 14:12 ] @
Ajde okacicu ja sad negdje CD koji sam ja dobio, pa cu poslati link cim se uploaduje:
Revision version: 6.0 - G History: 15.10.2008 Updated Eclipse to 3.4.1(Ganymede), OpenOCD to r717. Now using Yagarto and Codesourcery as toolchains. Taj je kod mene radio, a prethodni nije. [ bogdan.kecman @ 16.06.2011. 14:45 ] @
uzmi zadnje alate .. uzmi urjtag mnoooogo je jaci alat od openocd-a
dalje imas: http://forum.sparkfun.com/viewtopic.php?p=82013 Citat: I have your same board and JTAG probe. I can use OpenOCD both from Eclipse and with some standalone scripts. If you want to use it from the command line create the following three files into the directory containing your binary file, also make sure that openocd-ftd2xx.exe is reachable in the system path: Run.bat Code: @echo off start /MIN openocd-ftd2xx.exe start telnet 127.0.0.1 4444 openocd.cfg Code: #daemon configuration telnet_port 4444 gdb_port 3333 #interface interface ft2232 ft2232_device_desc "Olimex OpenOCD JTAG A" ft2232_layout "olimex-jtag" ft2232_vid_pid 0x15BA 0x0003 jtag_speed 5 #use combined on interfaces or targets that can't set TRST/SRST separately reset_config trst_and_srst separate #jtag scan chain #format L IRC IRCM IDCODE (Length, IR Capture, IR Capture Mask, IDCODE) jtag_device 4 0x1 0xf 0xe jtag_device 5 0x1 0x1 0x1e #target configuration daemon_startup reset #target <type> <startup mode> #target arm7tdmi <reset mode> <chainpos> <endianness> <variant> #target arm7tdmi little run_and_halt 0 arm7tdmi-s_r4 target cortex_m3 little run_and_init 0 run_and_halt_time 0 30 #working_area 0 0x40000000 0x40000 nobackup working_area 0 0x20000000 16384 nobackup #flash configuration #flash bank lpc2000 <base> <size> 0 0 <target#> <variant> #flash bank lpc2000 0x0 0x40000 0 0 0 lpc2000_v2 14765 calc_checksum #flash bank cfi 0x80000000 0x400000 2 2 0 flash bank stm32x 0x08000000 0x00010000 0 0 0 # For more information about the configuration files, take a look at: # http://openfacts.berlios.de/in...ml?title=Open+On-Chip+Debugger run (without extension) Code: soft_reset_halt wait_halt poll flash probe 0 stm32x mass_erase 0 flash write_bank 0 ch.bin 0 soft_reset_halt resume In "run" replace ch.bin with your binary file name. From a command prompt launch openocd.bat, it will launch both OpenOCD and a telnet shell. From the telnet shell type "script run", it will flash the board and start the program. I hope this helps, note this is for OpenOCD version r717 that is quite old, some settings may change for more recent versions. [ bogdan.kecman @ 16.06.2011. 14:59 ] @
btw, imas "gotove" ide-e koji rade 1/1 ... negde na pocetku teme su nabrojani
Odlicni su ti Dzaba: CoCox - http://www.coocox.org/ Atolic True Studio Lite - http://www.atollic.com/index.php/targets/stm32 Za pare: Keil: http://www.keil.com/uvision/ (postoji izlecen u verziji 4) Atolic True Studio Professional - http://www.atollic.com/index.php/targets/stm32 (nisam ni trazio izlecen, lite verzija radi extra) IAR: http://www.iar.com/website1/1.0.1.0/2925/1/ (ja ga licno ne koristim ali kazu ljudi da je odlican) [ Odin D. @ 16.06.2011. 15:19 ] @
Nema nista gore nego kad se umjesto poslom moras baviti alatom.
Evo ovo se uploadovalo, pa u slucaju da nekom treba: http://www.megaupload.com/?d=QJVHTOHK Neki od warnings-a i errors-a u koje kompajler javlja su opisani negdje na nekoj od prethodnih strana ove teme, kao i kako da se srede, cini mi se da je vec bilo rijeci o tome, pa prolistaj malo temu ako te zadesi tako nesto. [ zoligen @ 16.06.2011. 16:19 ] @
Hvala vam svima. Nisam ocekivao ovako jaku podrsku. Prvo skidam ovaj cd kojim se sluzio Odin D pa kad malo krene onda cu da vidim za ostalo. Pozdrav.
[ bogdan.kecman @ 17.06.2011. 03:13 ] @
btw, za urjtag - ako koristis olimex definises kabl sa "cable arm-usb-ocd" dakle:
Code: UrJTAG 0.10 #1902 Copyright (C) 2002, 2003 ETC s.r.o. Copyright (C) 2007, 2008, 2009 Kolja Waschk and the respective authors UrJTAG is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. There is absolutely no warranty for UrJTAG. jtag.c:536 main() Warning: UrJTAG may damage your hardware! Type "quit" to exit, "help" for help. jtag> cable arm-usb-ocd Connected to libftd2xx driver. jtag> bsdl path /home/arhimed/Dev/BSDL jtag> detect IR length: 9 Chain length: 2 Device Id: 00111011101000000000010001110111 (0x3BA00477) Unknown manufacturer! (01000111011) (/usr/local/share/urjtag/MANUFACTURERS) Device Id: 00010110010000010000000001000001 (0x16410041) Filename: /home/arhimed/Dev/BSDL/STM32F101C6.bsd jtag> quit (nemam pojma sta je ovaj prvi cip u chain-u (0x3BA00477) na ovoj dev plocki - jedino sto lici da moz da bude vezano je drajver za ledare mada ..) [ bogdan.kecman @ 17.06.2011. 03:26 ] @
btw za openocd, svaki noviji bi trebao da radi samo je bitno da mu napravis pravilan konfig
Code: # openocd --file /home/arhimed/Dev/openocd/olimex.cfg Open On-Chip Debugger 0.4.0 (2010-02-22-22:50) Licensed under GNU GPL v2 For bug reports, read http://openocd.berlios.de/doc/doxygen/bugs.html Info : clock speed 6000 kHz Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!! Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x3ba00477 ..." Warn : AUTO auto1.tap - use "jtag newtap auto1 tap -expected-id 0x16410041 ..." Warn : AUTO auto0.tap - use "... -irlen 4" Warn : AUTO auto1.tap - use "... -irlen 5" Warn : gdb services need one or more targets defined a sam config je: Code: [root@luckey ~]# cat /home/arhimed/Dev/openocd/olimex.cfg # konfig za bugarina interface ft2232 ft2232_device_desc "Olimex OpenOCD JTAG" ft2232_layout olimex-jtag ft2232_vid_pid 0x15ba 0x0003 [ zoligen @ 19.06.2011. 22:00 ] @
Veceras sam konacno nasao malo vremena i prvo sam formatirao jedan hard disk jer je i pored aninstaliranja eclipse izgleda pamtio ranija podesavanja i pomocu openocd-a koji je Odin D okacio uspeo, i:
Ljudi konacno trepce led!!!!!!!!!!!!!!!!!! Do sada sam imao samo jedno pitanje, a sad ih ima milion. Tako je bilo i sa pic16f84. Hvala svima. [ bogdan.kecman @ 19.06.2011. 22:19 ] @
samo napred sa pitanjima :D ... (napravi samo posebnu temu za svako pitanje) ... ima nas nekoliko koji gubimo vreme sa arm cm3 vec neko vreme, nisam primetio da imamo nekog experta ali ...
pogledaj linkove na par iskusnih pdf-ove koje je odin postavio, prodji kroz njih pre nego krenes dalje, neke stvari ce ti biti mnogo jasnije :) [ milanmeh @ 20.06.2011. 00:16 ] @
Pozdrav!
Imam vec skoro godinu dana programer/debuger J-Link EDU od Segger-a koji samo skuplja prasinu, pa sam odlucio da je vreme da krenem da ga koristim. Koju razvojnu plocu bi ste mi preporucili za pocetak rada sa Cortex-M3 (i ARM-om u opste)? Video sam kod olimexa male razvojne ploce za LPC1114 i LPC1343 koji su bezobrazno jeftine poredeci sa ostalim prostijim razvojnim plocama sa Cortex-M3. Da li bi LPC13xx serija bila dobra za upoznavanje sa C-M3 mikrokontrolerima? [ bogdan.kecman @ 20.06.2011. 00:25 ] @
Pogledaj DISCOVERY plocicu
http://www.st.com/internet/evalboard/product/250863.jsp kosta cca 10E ... to je najslabiji cortex m3 ali je extra, zabodes plocku izmedju 2 protoboarda i dobijes extra razvojni alat ovde imas moj prvi projekat sa tom plocicom nista posebno, strobujem led tako da fan deluje da stoji u mestu ili da se okrece polako u jednu/drugu stranu .. [ bogdan.kecman @ 20.06.2011. 00:53 ] @
btw prednost discovery plocke u odnosu na olimex plocke je sto discovery plocka na sebi ima debugger, dakle (ako gledas moju sliku) sa leve strane je debager ST-Link koji je spojen na mikrokontroler (sa desne strane) tako da ne moras uopste da imas jtag adapter, swd adapter etc etc ... imas vec debuger na samoj plocki .. utaknes u usb i vozis :D .. za 10E zavrisis celu pricu ... e sad nije najjaci cortex m3 (obrati paznju LPC1114 je cortex M0 to je dosta drugaciji core i nije bas standardizovan kao m3) ali ima i dovoljno rama i dovoljno flash-a a i dovoljno megaherca za testiranje
cena zavisi drasticno kako ih dobavljas, ja sam od lokalne firme koja mi "dobavlja stvari iz farnela i ekipe" (techn*dis) narucio par komada i izaslo me ako se ne varam oko 1200din komad sve sa carinom, pdv-om .. doduse ima tome sad vec preko godinu dana (uzeo sam ih bukvalno par dana posto ih je ST izbacio na trziste :D ) Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|