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   123 / 177
(#) kapu48 válasza don_peter hozzászólására (») Máj 25, 2018 /
 
Ez biztosan működik f407zet-en (fekete board): STM32F4xx_SDIO_Example.zip
Teszteltem!

Bár ez rajtad nem segít, mert Keil-böl kellene adoptálnod!
Csak biztatásképen, hogy menni fog ez!

Teszt:
SD Kártya nélkül
<CR> Debug Module Init
<CR>Open a test file (message.txt)
<CR>not exist the test file (message.txt)
<CR>Create a new file (hello.txt)
<CR>Create a new file error
<CR>rc=3 FR_NOT_READY

SD Kártyával
<CR><CR> Debug Module Init
<CR>Open a test file (message.txt)
<CR>Type the file content
<CR><CR>
MESSAGE.TXT
<CR>Close the file
<CR>Create a new file (hello.txt)
<CR>Write a text data. (hello.txt)
<CR>14 bytes written
<CR>Close the file
<CR>read the file (hello.txt)
<CR>Type the file content(hello.txt)
<CR>Hello world!
<CR>Close the file (hello.txt)
<CR>Open root directory
<CR>Directory listing...
<CR> 14 HELLO.TXT
<CR> 13 MESSAGE.TXT
<CR>Test completed
<CR>
A hozzászólás módosítva: Máj 25, 2018
(#) kapu48 válasza kapu48 hozzászólására (») Máj 25, 2018 /
 
Azért jó, hogy utána néztem a problémádnak!

Mert közben megtaláltam a megoldást az én USARt – DMA átvitel vége, lezárásának.

Végig itt volt az orom előtt.

(#) csatti2 válasza don_peter hozzászólására (») Máj 25, 2018 / 1
 
Belenéztem a kódba és lefordítottam TrueStudio-val. Legközelebb mellékeld a toolchain-t is, nem volt annyira vicces mindent úgy összevadászni (honnan tudjam, melyik verziót használod?).
Nálam is pont úgy viselkedik mint nálad (létrejön a fájl, de üres), így kicsit belenéztem a használt könyvtárakba is. Az összes úgy van összekukázva valahonnan, a driver a fatfshez egy nagy halom [csúnya szó ] (pl. minden egyes híváskor teljesen újrainicializálja a perifériát, illetve a kártyát, csak épp minek), a használt sdcard.c és .h vmi ősrégi SPL példán alapszik, az "új" már rengeteget fejlődött ehhez képest. A FatFS is ősrégi. Szerintem ez így több erőfeszítést nem érdemel meg. Keress valamilyen frissebb forrást.
(#) csatti2 válasza don_peter hozzászólására (») Máj 25, 2018 /
 
Na egye fene alapon beletettem azt a példa könyvtárat kíváncsiságból, amit múltkor linkeltem. Frissítettem az utasításokat a main.c-ben és voilá tökéletesen működik.
Most rajtad a sor, hogy adaptáld IAR-be...
A hozzászólás módosítva: Máj 25, 2018

teszt.zip
    
(#) don_peter válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Köszi, meg fogom nézni.
Remélem sikerül majd implementálnom..

Mi az a toolchain?
FatFs verziója, vagy mire gondolsz?
(#) kapu48 válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Nekem 15 Errort produkál a programod!

Nem igazán értem, mert más projectben nincsen hiba a: "startup_stm32f407xx.s"-ben!

error15.jpg
    
(#) csatti2 válasza kapu48 hozzászólására (») Máj 26, 2018 /
 
Mert nem az én linker scriptemet használod valamiért. Én külön definiáltam extra változókat és hozzáadtam a szükséges assembly inicializációs kódot a CCM (core coupled memory) helyes használatához (alapból az ide szánt változókat se nem inicializálja, se nem nullázza az erre a célra készített startup kód, pedig a C szabvány ezt előírja). Például az RTOS heap területét (és így a task-ok stack területét is) ide szoktam tenni, mert így gyorsabban működik a szoftver. Az egyetlen feltétel az, hogy DMA-t nem lehet ezzel a területtel használni (ahhoz a hagyományos SRAM-ból kell területet foglalni).
(#) csatti2 válasza kapu48 hozzászólására (») Máj 26, 2018 / 1
 
Közben rájöttem. Mivel csak projektet készítettem a meglévő könyvtárból, ezért nem állította be a linker script-et a projektben. Gondolom nálad valamilyen alapértelmezett linker script-et használt és abban hiányoznak a szükséges változók. A projekt nevén jobb klikkelve hozhatod elő a Properties ablakot. Ott keresd meg a képen látható beállítást és állítsd be.
(#) csatti2 válasza don_peter hozzászólására (») Máj 26, 2018 /
 
A project toolchain-je a fordításhoz szükséges összes kiegészítő és forráskód összessége. Ez alatt GCC esetén értjük tehát az ARM-hoz való GCC-t (ezt tartalmazza a TrueStudio tehát ezt adott), a linker scriptet, a startup scriptet, az SPL-t és CMSIS-t, illetve az összes további felhasznált könyvtárat.
A te esetedben lévén IAR-t használsz, illett volna a használt SPL és CMSIS könyvtárakat is mellékelni.

Igen, a FatFS is a toolchain része.
(#) kapu48 válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Köszönöm!

Ma is tanultam valami újat! Csak még meg is kel majd érteni, hogyan csináltad?
(#) kapu48 válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Akkor azt mondod, hogy automatikusan nem használja az Atollic a: CCMRAM (rw) : ORIGIN = 0x10000000, LENGTH = 64K memóriát?

Ezt kézzel kel beállítani?
(#) kapu48 válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Én kíváncsiságból benéztem az IAR honlapjára.
Szerintem lemaradtak a fejlesztéssel, komolyabb anyagot csak STM8-hoz találtam.

Nem hiszem, hogy az STM32-eseket tudják komolyan használni
(#) don_peter válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Kipróbáltam, implementáltam, lefut és hiba mentesen indul is, de sajnos nem csinál semmit.
Még csak 1 hibát sem dob.. Nem is értem..

Van amit be kell állítanom a header állományokban?
Csatoltam a képet.., a hibátlan hiba..
A hozzászólás módosítva: Máj 26, 2018
(#) don_peter válasza don_peter hozzászólására (») Máj 26, 2018 /
 
Tévedtem még is van, hiba, csak nem írattam ki előzőleg..: kép csatolva (Not Ready)
(#) csatti2 válasza kapu48 hozzászólására (») Máj 26, 2018 / 1
 
Pontosan.

Ha megnézed a linker scriptjeidet (.ld fájl), akkor láthatod hogy a .data és .bss szekciót a RAM-ba teszi (a .data az inicializált változót [van kezdőértéke, ami nem nulla, ezért flash-t is "eszik" hozzá], .bss pedig a nullára inicializált változókat jelenti, természetesen mindkét terület a globális változókra vonatkozik csak). Ez a két szekció a standard C változóké.

Ha egy változót máshova akarsz tenni, mint ezek az alapértelmezett területek, akkor azt külön jelezned kell. GCC esetén erre a section szolgál.
pl.:
  1. #define FONT                              __attribute__((section(".font")))
  2. #define IMAGE                             __attribute__((section(".image")))
  3. #define TEXT                              __attribute__((section(".str")))
  4. #define LIB                               __attribute__((section(".lib")))
  5. #define CCMRAM                            __attribute__((section(".ccmram")))
  6. #define CCMBSS                            __attribute__((section(".ccmbss")))
  7. #define TXT(s)                            (__extension__({static const char TEXT __c[] = (s); &__c[0];}))

Majd használat:
  1. uint8_t ucHeap[ configTOTAL_HEAP_SIZE_CCM ] CCMBSS;
  2. static const unsigned char symbolfont[] FONT = {
  3.   0x00, 0x01, 0x11, 0x10, 0x10, ...
  4. };
  5.  
  6. line1 = TXT("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");


A linker script-ben pedig:
  1. .image 0x08060000:
  2. {
  3. } > ROM
  4.  
  5. .font 0x0806B000:
  6. {
  7. } > ROM
  8.  
  9. .patch 0x08074000:
  10. {
  11. } > ROM
  12.  
  13. .str 0x0807B000:
  14. {
  15. } > ROM
  16.  
  17. _siccmram = LOADADDR(.ccmram);
  18.  
  19.   .ccmbss :
  20.   {
  21.     . = ALIGN(4);
  22.     _sccmbss = .;       /* create a global symbol at ccmbss start */
  23.     *(.ccmbss)
  24.     *(.ccmbss*)
  25.     . = ALIGN(4);
  26.     _eccmbss = .;       /* create a global symbol at ccmbss end */
  27.     __CCMHeapLimit = .;
  28.   } >CCMRAM
  29.  
  30.   .ccmram :
  31.   {
  32.     . = ALIGN(4);
  33.     _sccmram = .;       /* create a global symbol at ccmram start */
  34.     *(.ccmram)
  35.     *(.ccmram*)
  36.    
  37.     . = ALIGN(4);
  38.     _eccmram = .;       /* create a global symbol at ccmram end */
  39.   } >CCMRAM AT> FLASH

A példában látszik, hogy akár fix területekre is hivatkozhatunk a flash-ben is (jól jöhet, ha ritkán változó erőforrásokat fix területre mentünk, mert nem kell őket állandóan beleírni a flashbe új program feltöltésekor).
A hozzászólás módosítva: Máj 26, 2018
(#) csatti2 válasza don_peter hozzászólására (») Máj 26, 2018 /
 
Nálam megy.
(#) don_peter válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Figyi, látom, hogy van egy ilyen fájl: Debug_STM32F407ZE_FLASH.ld
Ezt nekem is kellene valahogy használnom?
Ezek szerint kell az SD működéséhez?
Lehet ezért nem megy semmi nálam.

ui: ha igen, akkor ezt hogy tudom a rendszernek jelezni, hogy ezt a linkert keresse és használja?
A hozzászólás módosítva: Máj 26, 2018
(#) kapu48 válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Köszi!

Kitaláltad a gondolatomat! Éppen ezek iránt szeretem volna érdeklődni.


Csinálok pdf-et az okításaidból, hogy megmaradjon későbbre.
És megpróbálom átvinni a gyakorlatba.
(#) csatti2 válasza don_peter hozzászólására (») Máj 26, 2018 /
 
Szerintem az neked nem kell (az IAR valószínűleg más formátumot használ). Ha kellene akkor nem is fordult volna le eddig a programod lévén ez a linker script, ami megmondja mit hova tegyen a fordító.
(#) don_peter válasza csatti2 hozzászólására (») Máj 26, 2018 /
 
Akkor viszont passzolom a dolog.. Nem megy sajna.
(#) don_peter válasza csatti2 hozzászólására (») Máj 27, 2018 /
 
Ez az Atollic TrueSTUDIO ingyenes?
Kérdés még, hogy melyik verziója a legjobb, mit érdemes letölteni?
Nézegetem, hogy hasonló mint az IAR, elég letisztultnak látszik elsőre, lehet muszáj lesz váltanom, ha ennyire nem működnek a dolgok IAR alatt.
(#) csatti2 válasza don_peter hozzászólására (») Máj 27, 2018 / 1
 
Igen az. Tavaly megvette az ST a céget és azóta ingyenessé tette a professional verziót (és kiszedte belőle a konkurencia támogatását természetesen). Értelemszerűen a legújabb verziót használd.
https://www.atollic.com/
(#) don_peter válasza csatti2 hozzászólására (») Máj 27, 2018 /
 
9-est leszedtem.. Kipróbálom, hátha megtetszik..
(#) don_peter válasza csatti2 hozzászólására (») Máj 27, 2018 /
 
Ilyen programozom van: Bővebben: Link
Ezt be lehet állítani, hogy működjön a programmal, vagy megszívtam?
(#) kapu48 válasza don_peter hozzászólására (») Máj 27, 2018 /
 
Bővebben, Menük: help > information center > J-link user guide
(#) kapu48 válasza don_peter hozzászólására (») Máj 27, 2018 /
 
Többet én sem tudok.
Mert én az F4DISCOVERI boardon levő gyári ST-linket, kötöttem a fekete zet-es boardra.
(#) csatti2 válasza don_peter hozzászólására (») Máj 27, 2018 /
 
Én ilyet használok:
https://www.segger.com/products/debug-probes/j-link/models/j-link-edu/

Gondolom a tied a kínai klónja ennek. A J-Link debugger-t a project létrehozásának elején is ki lehet választani, illetve utólag is hozzá adható.

Nyomsz egy jobb klikket a project nevén, utána Debug As / Debug Configurations...

Ekkor megnyílik egy dialógusablak, itt a bal felső sarokban lévő New gombbal adhatsz hozzá új debugger eszközt.

Javaslom szerezz be egy ST-Link-et is. Sokkal lassabb ugyan, viszont a J-Link-nek néha (spéci esetben) van valami kehe, ami miatt nem lehet vele minden hibát megkeresni (egyszerűen elveszti a fonalat léptetésnél pl. kernel debugnál).
A hozzászólás módosítva: Máj 27, 2018
(#) don_peter válasza csatti2 hozzászólására (») Máj 27, 2018 /
 
Igen, így csinálom én is a beállítást.
Szerinted egy ilyen is jó lehet? Bővebben: Link
Sajnos az enyémmel, egyszer elindul, ha gyorsan léptetek, akkor egyszer végig megy majd behal.
Lehet ezt nem debugba is programozni?
Mert ha be tudja programozni a kontrollert azzal lehetne ellenőrizni a működést, bár debug nélkül nem sok minden látszana..
(#) csatti2 válasza don_peter hozzászólására (») Máj 27, 2018 /
 
Az a baj az ilyen klón programozókkal, hogy régi firmware van rajtuk és nem lehet használni velük az új drivereket. Ha nincs eredetire pénzed, akkor használhatod a filléres ST-Link-eket, ott nincs ez a gond, bár valamivel lassabbak.
Pl.:
https://www.aliexpress.com/item/1pcs-New-ST-LINK-V2-ST-LINK-V2-CN-S...6.html

Ha nincs szükséged az összes pinre, akkor ezek is jók lehetnek:
https://www.aliexpress.com/item/ST-Link-V2-Programming-Unit-mini-ST...8.html

Saját nyákon úgysem szokta az ember az összes lábat kivezetni, illetve annak az ormótlan nagy csatlakozónak sincs hely.

Ha rátudsz szánni egy kicsit többet, akkor rendes J-Linket itt tudsz venni:
http://www.ak-modul-bus.de/cgi-bin/iboshop.cgi?showd0!0,41038701172...nk_EDU

Én is itt vettem. 68,5€ volt szállítással együtt.
A hozzászólás módosítva: Máj 27, 2018
(#) don_peter válasza csatti2 hozzászólására (») Máj 27, 2018 /
 
Itt az első és második közt mi a különbség, termesztésen nem a méretre gondolok.
Kicsi olyan kis aranyos, hogy rögtön rendeltem belőle.. 628Ft-ot megér, hogy kipróbáljam.
Következő: »»   123 / 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