Fórum témák

» Több friss téma
Fórum » ARM - Miértek hogyanok
 
Témaindító: gtk, idő: Jún 26, 2007
Lapozás: OK   29 / 177
(#) gtk hozzászólása Feb 12, 2013 /
 
Sziasztok !

Sikerult megoldani az optimalizacios problemat: SMT32F4 @ GCC.
Tegnap kapu48 segitsegevel rajottem hogy csak -O0 optimalizacio eseten mukodik a program. Mas optimalizacio eseten hardFaultot dobott. GDB-ben is latszott. A hardFaultot az okozza, hogy (-O0 optimalizacio kivetelevel) a fordito befordit egy VPUSH utasitast a main-be, de ekkor meg nincs inicializalva az FPU.

Az .lst filebol:

  1. int32_t main(void)
  2. {
  3.  80022b8:       e92d 41f0       stmdb   sp!, {r4, r5, r6, r7, r8, lr}
  4.  80022bc:       ed2d 8b02       vpush   {d8}
  5. .
  6. .


Ez -O0 opt. eseten igy nez ki:

  1. int32_t main(void)
  2. {
  3.  80001b4:       b580            push    {r7, lr}
  4.  80001b6:       b08a            sub     sp, #40 ; 0x28
  5.  80001b8:       af02            add     r7, sp, #8
  6. .
  7. .


A megoldas pedig az hogy a startup_stm32f4xx.S fileba a Reset_Handler cimke alatt inicializaljuk az FPU-t.
  1. Reset_Handler:  
  2.  // CPACR is located at address 0xE000ED88
  3.  LDR.W   R0, =0xE000ED88
  4.  // Read CPACR
  5.  LDR     R1, [R0]
  6.  // Set bits 20-23 to enable CP10 and CP11 coprocessors
  7.  ORR     R1, R1, #(0xF << 20)
  8.  // Write back the modified value to the CPACR
  9.  STR     R1, [R0] //; wait for store to complete
  10.  DSB
  11.  // reset pipeline now the FPU is enabled
  12.  ISB
  13.  
  14.  // Csak ezt tartalmazza az eredeti kod:
  15. /* Copy the data segment initializers from flash to SRAM */  
  16.   movs  r1, #0
  17.   b  LoopCopyDataInit


A C kodban ekkor mar folosleges inicializalni az FPU-t.
Kiprobalva ( -Os eseten is ) mukodik !
(program = arm_fir_example modositott valtozata - az eredetit nem probaltam ki ujra !)
A hozzászólás módosítva: Feb 12, 2013
(#) cpt.zoltan.simon válasza gtk hozzászólására (») Feb 12, 2013 /
 
A kódban tudsz utasításokat adni a fordítónak hogy hol, melyik részt milyen erővel optimalizálja?
(#) gtk válasza cpt.zoltan.simon hozzászólására (») Feb 12, 2013 /
 
Nem tudom. A volatile-t kiveve.
(#) ciw hozzászólása Feb 15, 2013 /
 
Sziasztok !

STM32F407VG -ARM ot hol tudok venni, ill. hol érdemes?

Válaszokat előre is köszönöm!
(#) sikolymester válasza ciw hozzászólására (») Feb 15, 2013 /
 
FDH
(#) pici válasza sikolymester hozzászólására (») Feb 15, 2013 /
 
"Szállításra vár "
(#) _vl_ válasza ciw hozzászólására (») Feb 15, 2013 /
 
Ha ilyen formában rendeled, akkor még olcsóbb is, és van is nekik.
(#) sikolymester válasza _vl_ hozzászólására (») Feb 15, 2013 /
 
Aztán lehőlégfúvózza?
(#) _vl_ válasza sikolymester hozzászólására (») Feb 15, 2013 /
 
Ha semmiképp nem jó neki azon a panelon...
(#) ciw válasza sikolymester hozzászólására (») Feb 15, 2013 /
 
Hát köszönöm, ez elszomorító. Akkor várok, amíg érkezik. Próbáltam külföldről is, de sajnos a postaköltség túl drága.

Itthol is az a bajom, hogy a pofátlanul magas postaköltségek elviszik az árakat.
(#) ciw válasza pici hozzászólására (») Feb 15, 2013 /
 
(#) Topi hozzászólása Feb 17, 2013 /
 
Tud valaki valamit a texas LM3S procijainak az NRND jelzeserol? Furcsa számomra, hogy az M3-akat a texas levette a termék listáról, ezernyi számra van a beszallitoknal. Nem javasolják új designhoz, de úgy tűnik nem jelöltek meg "utódot".
Az LM4F egyáltalán nem helyettesíti az LM3S szeriat. Ethernet, CAN stb témában nyomába sem ér.

Nem akarom elhinni, hogy a szemétbe dobja a TI az Ethernettel es a CortexM3-al megszerzett részesedését a piacon.
(#) _vl_ válasza Topi hozzászólására (») Feb 18, 2013 /
 
Fura.... A fórumozók reakciói nem hangzanak túl jól.
Bővebben: Link Bővebben: Link
(#) pici válasza _vl_ hozzászólására (») Feb 18, 2013 /
 
Első reakcióm az vol: f@xom... kicsit kultúráltabban: mélységes szomorúság tölt el ( bár nem a leggyorsabb, de ETH projectekbe a legfelhasználóbarátabb ) kontrollercsalád NRND-be kerül.
Bár a gyártás nem áll le, de nem tudni meddig lesz(elérhető) mert ugye a nagy felhasználók bevásárolnak, hogy kifusson fejlesztéseik.
LM4F-ben várható hasonló tudású kontroller valamikor, de az átállás sem olcsó.
Most én is vakarózhatok, hogy androidos távfelügyelet másik végén LM3S helyett mi legyen.
Remélem lesz még LM3S amíg LM4F "elkészül", addig felvásárlás

TMS570 tervezés alatt (hercules)
Concerto szerintem bonyi...
Valakinek tapasztalat?
A hozzászólás módosítva: Feb 18, 2013
(#) ciw hozzászólása Feb 20, 2013 /
 
Sziasztok!

Úgy látom, itt az ARM világban inkább divat valamilyen OS-t használni, mint saját bare-metal rendszert csinálni, bár én eddig a PIC-eknél ezt tettem és nagyon jól meg voltam a saját állapotdgépeimmel és irtó módon kerültem a végtelen ciklusokat, illetve a főciklust kivéve .

Ezen gondolkodva eszembe jutott, hogy míg a státuszgépes világomban tudtam, hogy mondjuk, ha egy spi eepromba ki kell írnom valamilyen adatot akkor azt tudtam, hogy még ha darabokban írom is ki, de tuti, hogy az állapotgép legalább egy ciklust befejez, mielőtt tovább lép.
Tehát ezután akár jöhetett egy másik "task" ami olvasott az eepromból és nem kellett attól félnem, hogy egy félig befelyezett írásra rájön egy olvasás parancs.

Mondjuk a ChibiOS esetében ugye a task-ok egymástól elzárva futnak és mi van, ha az egyik task-ban ki akarok írni valamit a másikban meg éppen beolvasnék, és mondjuk pont akkor történik a task váltás, amikor kiadtam az írás parancsot, de még nem fejeztem be a műveletet és ekkor ugrik át a másik task-ra ahol meg olvasás folyna?

Vagy az OS-nél el kell felejteni, hogy én alacsony szinten piszkálom a perifériákat és csak annyit kell csinálni, hogy megmondom az OS-nek, hogy ezt írd ki, azt meg olvasd be és a többit elintézi? (mint anno a DOS-nál? nem a HDD-t alacsonyszinten piszkálva kezeltem az adatokat, hanem a rendszer magasszintű függvényeivel fopen, fread stb...)

Vagy hogy kell ezt elképzelni? A ChibiOS-ben pl van HAL layer, de pl a FreeRtos-ban nem láttam.

Nagyon érdekelnének ezek a dolgok, mert enélkül nemnagyon lehet boldogulni, vagy legalábbis nehéz, ha olyat erőltetek a rendszerre amit ő nem akar.

Muszály ebbe is képben lenni, mert úgyis ez a jövő, és nem sokat érek a saját "tákolmánnyal", ha jön valaki egy OS-el és feleannyi idő alatt összekalapál egy projektet mint én, mert neki már a lényegi részek benne vannak az OS-ben, és neki tényleg csak a projekt feladatit ellátó részt kell hozzátenni.

Vagy eleve rossz a gondolatmenetem?
A hozzászólás módosítva: Feb 20, 2013
(#) _vl_ válasza ciw hozzászólására (») Feb 20, 2013 /
 
Ha olyan perifériáról beszélünk, amin egyszerre egy dolgot lehet művelni, amit egyszerre csak egy valaki matathat, ill. ahol a regiszterek konzisztenciáját biztosítani kell (ezek elég tipikus követelmények a perifériáknál), akkor az OS-nek valahogyan meg kell oldania, hogy egyszerre csak egy valaki akarja piszkálni azt. Erre számos megoldás létezik OS szinten.
A legegyszerűbb a interrupt tiltás (enyém az egész CPU, amíg matatok).
Aztán van az ún. lock: mielőtt valaki bármit csinálhatna a perifériával, megmarkol egy lockot, és amíg az nála van, addig más ezt nem tudja megtenni, ergó kénytelen megvárni a művelet befejezését. A lock egyfajta szinkronizációs primitív elem, amivel a taskok egymáshoz képest tudnak várakozni. A lock implementációja is többféle lehet, attól függően, hogy mennyire sok várakozó várható, és milyen egyéb követelményeket kell kielégíteni (átlagosan ill. maximum mennyi ideig tartják megfogva a lockot; vannak-e prioritásos jelentkezők, akiket előbbre kell venni; kell-e garantálni, hogy mindenkire belátható időn belül sor kerül, stb).
Bizonyos esetekben, főleg, ha a task szempontjából aszinkron végrehajtást szeretnénk (a task "kiküldi" a melót a perifériának, az meg "majd egyszer" válaszol, közben a task mást is szeretne csinálni), és sok párhuzamos taskunk van, akkor logikus megoldás, hogy a perifériát csak egy task kezelje, ami ciklusban várja a többi tasktól a kiküldendő feladatokat egy queue-n keresztül, a válaszokat meg visszaküldi nekik. A taskok feladata annyi, hogy a queue-ba berakják a feladatot, majd örülnek az eredménynek.

A dologhoz persze hozzátartozik, hogy egy gyengébben eleresztett mikrokontrolleren nagyon nem mindegy, hogy hány taskunk van (hiszen mindegyiknek saját stack, azaz memória kell), nagyon nem mindegy, hogy várakozás nélküli esetben kell-e plusz context switch, vagy sem. Ezek jelentősen meg tudják változtatni a rendszerből kinyerhető teljesítményt.
A hozzászólás módosítva: Feb 20, 2013
(#) icserny válasza ciw hozzászólására (») Feb 20, 2013 /
 
Bonyolult a kérdés és nincs egyértelmű válasz. Vannak olyan RTOS-nak nevezett rendszerek, amelyekben csak a taszkok szervezését, kezelését, kommunikációjukat, szinkronizálásukat dolgozták ki, a perifériakezelést nem. Vagy írtak bele perifériakezelést is, de csak szokásos dolgokhoz: USB, TCP-IP, filekezelés.

A ChibiOS-t nem ismerem, így nem tudom, hogy a HAL eszközkezelők mit takarnak. Azt biztosan nem tudthatja, hogy mit és hány eszközt kötsz az SPI vagy I2c buszre, de adhat olyan általános célú SPI vagy I2C kezelő függvényeket, amelyekből esetleg összerakhatod a kívánt tranzakciókat. Ez mindenesetre már egy "haladottabb" szintnek tűnik a fentebb írtakhoz képest.
(#) ciw válasza icserny hozzászólására (») Feb 20, 2013 /
 
Hát akkor így nem sok értelme van, sok projekt van a neten ami két ledet villogtat, de ezt OS nélkül is meg lehet, tehát olyan példát még nem láttam, amire azt mondtam volna, hogy na ez igen, ezt már nem bare-metalkodnám össze.
Nekem valahogy idegennek tűnnek ezek a taszkos többszálú cuccok, de ha most nem folyik bele az ember később már nehezebb lesz.

Egyébként a ChibiOS-nek itt a HAL által támogatott eszközök:
Idézet:
„HAL component supporting a variety of abstract device drivers: Port, Serial, ADC, CAN, EXT, GPT, I2C, ICU, MAC, MMC, PWM, RTC, SDC, SPI, UART, USB, USB-CDC.”


A másik előnye, hogy létrehoztak egy komplett csomagot, ahol egy eclipse-be beleintegrálták az egészet, és le lehet tölteni, benne a fordító, az os a debugger és működik is, tehát nem kell többet vesződni az IDE építgetésével. Itt van ChibiStudio néven fut.
(#) cpt.zoltan.simon válasza ciw hozzászólására (») Feb 23, 2013 /
 
Hát nem tudom... Én nem szeretem se OS-t, se a CMSIS-t... Szerintem ezek csak bonyolítják a dolgot. Eddig még mindig mindent meg tudtam csinálni nélkülük, így számomra fölöslegesek.
További hátrányuknak tartom, hogy elvonják a figyelmet a hardvertől. Aztán ha nem működik elsőre - márpedig szinte sose - akkor lehet vakarózni, hogy hát akkor most melyik végén is kezdjek neki? OS, és CMSIS csak egy Layer, ami bonyolít, és lassít.
(#) kRoy válasza cpt.zoltan.simon hozzászólására (») Feb 23, 2013 /
 
Meg van a CMSIS-nek és az operációs rendszernek is a maga helye. Neked lehet, hogy csak bonyolítja az életedet, ez természetes, hiszen téged hobbi szinten érdekel a téma. De ha egy fejlesztő napi 2000 dollárba kerül, akkor nem mindegy, hogy 3 vagy 13 embernapba kerül egy probléma megoldása.
(#) pici válasza kRoy hozzászólására (») Feb 23, 2013 /
 
WoW!
Hol fizetnek ilyen fejlesztésért napi $2000?
Hívom is őket
(#) cpt.zoltan.simon válasza kRoy hozzászólására (») Feb 23, 2013 /
 
Igazad van. De azt se felejtsük el, hogy itt hobbisták vannak hobbi sebességgel. Akikről te írtál ők vérprofik szerintem, és szerintem ők is csak egyszer izzadnak ki valamit mint én (mondjuk FSMC, ECAN on M3, és minden egyéb periféria). Ami meg már meg van nekik, azt egyfelől védik, nem osztogatják mint mi. És mivel a programozó az egy lusta állat, nagyon szereti úgy megírni a programot hogy "mindenhol" jó legyen. Amikor meg napi 2000$-é dolgozik az nem az a rész neki hogy vakon van, és túrja a netet.
(#) icserny válasza pici hozzászólására (») Feb 23, 2013 /
 
Költségről volt szó, nem a fizetésről.
(#) kRoy válasza cpt.zoltan.simon hozzászólására (») Feb 23, 2013 /
 
Pont az a lényege ezeknek a dolgoknak, hogy ne kelljen vért izzadni, sok időt spórolhat meg egy amatőr is, ha eltanulja és hozzászokik ahhoz, ahogy a "nagyok" dolgoznak.
Bárki, aki szoftvert ír CortexM mikrokontrollerre kerülhet olyan helyzetbe, hogy beszállítót kell váltania. Ezen a téren nincs különbség a vérprofik és a hobbisták között.
Nem mindegy, hogy mekkora részét kell újraírni a meglévő kódnak, a tesztek hány százalékát kell újra lefuttatni stb. Ha van egy szabványos gyártótól független réteg, az sokat segíthet.
(#) pici válasza icserny hozzászólására (») Feb 23, 2013 /
 
Idézet:
„És mivel a programozó az egy lusta állat, nagyon szereti úgy megírni a programot hogy "mindenhol" jó legyen. Amikor meg napi 2000$-é dolgozik az nem az a rész neki hogy vakon van, és túrja a netet.”

Még mindig félreértem?
Sebaj, a tizede is elég
(#) kRoy válasza pici hozzászólására (») Feb 23, 2013 /
 
Egészen biztosan Én arról írtam, hogy egy fejlesztő napi 2000 dollárba kerül. Nem annyit kap kézhez, annyi megy el bérre, biztosításra, licenszre, vízre, villanyra, fűtésre, stb.
(#) cpt.zoltan.simon hozzászólása Márc 5, 2013 /
 
Ilyet vett már valaki?

NXP LPC 1788
(#) sikolymester válasza cpt.zoltan.simon hozzászólására (») Márc 5, 2013 /
 
Pöpec.
Azt írja, hogy:
Idézet:
„LCD interface ( Standard 40PIN )”


Én eddig ahány TFT-LCD kijelzővel találkoztam, annyiféle lábkiosztása volt. Tehát ezzel óvatosan.
(#) cpt.zoltan.simon válasza sikolymester hozzászólására (») Márc 5, 2013 /
 
Persze persze... Legrosszabb esetben rövid FFC kábel, egy "keverő" panel, és megint FCC csati. De szerintem jó lesz, még sosem volt gondom.
(#) kapu48 hozzászólása Márc 5, 2013 /
 
Mondjuk ezen az alaplapon van benne fantázia:
Bővebben: HY-LPC1788-SDK ( only motherboard ) Overview
Következő: »»   29 / 177
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem