www.elektronik.si
STM32 Standard peripheral library oziroma CubeMX
Pojdi na stran Prejšnja  1, 2, 3  Naslednja  :||:
www.elektronik.si -> ARM arhitektura

Avtor: . PrispevekObjavljeno: Sre Okt 29, 2014 10:49 am    Naslov sporočila:  
----------------------------------------------------------------------------
Brisana vsebina odstranjenega uporabnika.

Avtor: jmivsekKraj: Ajdovščina PrispevekObjavljeno: Sre Okt 29, 2014 11:20 am    Naslov sporočila:  
----------------------------------------------------------------------------
1. Kako se pa tale Cube obnese "peš" z GNU orodji na Linuxu? Upam da obstaja še vedno možnost odprtokodnega razvoja?
2. Se knjižnice proizvajalcev ARM mikrokrmilnikov bližajo med sabo ali gredo zmeraj bolj narazen?
3. Če želim ostali kolikor toliko neodvisen od proizvajalca (recimo da bi želel v bodočnosti iz STM32 na NXP, ali pa obratno), kakšno taktiko naj uberem?

Lep pozdrav
Janko

Avtor: alyKraj: Kranj - struževo PrispevekObjavljeno: Tor Nov 04, 2014 11:25 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Umnik je napisal/a:
Počakaj še, da aly izlije svoj gnev na CubeMX Mr. Green

Bom Very Happy

Evo nadaljujem zgodbo.
Na prejšnji sliki je bilo videti, da je Cube zgeneriral fajle, ni pa dokončal Keil projekta. Dobro, si mislim, fajle zložit ni taka težava.
Moj željeni procesor STM32F302C6 ni podprt v Keil MDK 4.22, zato dol potegnem 5.12.
Naredim nov projekt, nabašem notri *.c fajle, nastavim Include mape do vseh *.h fajlov in poženem Build...
Emmmm...

Citiram:
Build target 'Target 1'
compiling main.c...
Src\main.c(181): warning: #1134-D: literal treated as "long long"
htim2.Init.Period = 4294967295;
Src\main.c: 1 warning, 0 errors
compiling stm32f3xx_hal_msp.c...
compiling stm32f3xx_it.c...
compiling usb_device.c...
...
compiling stm32f3xx_hal_rcc.c...
compiling stm32f3xx_hal_rcc_ex.c...
compiling stm32f3xx_hal_tim.c...
compiling stm32f3xx_hal_tim_ex.c...
linking...
.\Objects\TEST.axf: Error: L6320W: Ignoring --entry command. Cannot find argument 'Reset_Handler'.
.\Objects\TEST.axf: Warning: L6320W: Ignoring --first command. Cannot find argument '__Vectors'.
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 1 warning and 1 error messages.
".\Objects\TEST.axf" - 1 Error(s), 2 Warning(s).
Target not created.


BAH. Niti ne vem, kje bi se lotil iskat te napake Rolling Eyes
Izgleda da je "pozabil" zgenerirat tabelo interrupt vektorjev ?!


Nazadnje urejal/a aly Tor Nov 04, 2014 11:32 pm; skupaj popravljeno 2 krat

Avtor: tilz0RKraj: Črnomelj PrispevekObjavljeno: Tor Nov 04, 2014 11:27 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Ouf, super reklama za ST je to! Applause

Dobro ga je mimo vstrelil Very Happy

Avtor: mujoKraj: MB PrispevekObjavljeno: Tor Nov 04, 2014 11:45 pm    Naslov sporočila:  
----------------------------------------------------------------------------
jmivsek, nazadnje ko sem se igral z cubemx je bila opcija za export v "gcc" vendar je bila onemogočena. Mi je vse skupaj delovalo kot nekaj kaj bi naj implementirali. Je pa sigurno možna uporaba knjižnjice z gcc. Atollic TrueSTUDIO ga uporablja kot prevajalnik.

aly, poglej ali imaš (pravilno) startup_*.s datoteko. Ta datoteka vsebuje interrupt vektorje (kot si rekel). Te so generične in lahko kopiraš iz primerov.

Avtor: TilenS PrispevekObjavljeno: Sre Nov 05, 2014 12:44 am    Naslov sporočila:  
----------------------------------------------------------------------------
Tiste dve funkciji se nahajata v asemblerskem startup delu, xxx_startup.s oz. nekaj podobnega.

Ravno pišem svoje inicilizacijske driver-je in zadevo spravim v par vrstic kode, cube mx mi pa naredi to po celo več map polnih nekih nepotrebnih zadev.

Saj ne rečem da to ni uporabno ampak mi res deluje zelo nepregledno, še posebaj to medsebojno klicanje funkcij samo zaradi tega, da lahko imajo svoje driverje označene z HAL_xxx. Glede na to, da se ponavadi odločim za en procesor in tega potem uporabljam v večini projektov nimam nobene potrebe po teh driver-jih ter prenosljivosti SW-ja, če pa že bo treba prilagodit za drug procesor pa tudi ni takšnih razlik med njimi.

Avtor: alyKraj: Kranj - struževo PrispevekObjavljeno: Sre Nov 05, 2014 10:45 am    Naslov sporočila:  
----------------------------------------------------------------------------
Hvala za namig - bom res preveril, če je kje Startup datoteka. Ne vem, zakaj je ni avtomatsko dal zraven v projekt?
Evo, *.s ne obstaja med generiranimi datotekami... :/ svašta.
Sem ga skopiral iz C:\Keil_v5\ARM\Pack\Keil\STM32F3xx_DFP\1.1.0\Device\Source\ARM

Rezultat:
Citiram:
Build target 'Target 1'
assembling startup_stm32f30x.s...
linking...
.\Objects\TEST.axf: error: L6050U: The code size of this image (42808 bytes) exceeds the maximum allowed for this version of the linker.
Finished: 0 information, 0 warning, 0 error and 1 fatal error messages.
".\Objects\TEST.axf" - 1 Error(s), 0 Warning(s).
Target not created

Z optimizacijo na 3 pa:
Citiram:
.\Objects\TEST.axf: error: L6047U: The size of this image (32876 bytes) exceeds the maximum allowed for this version of the linker

Haha, ko sem delal s STM32F103 isti primer z StdLib+USB, je bil za šalo pod 32k...
V aplikaciji je samo 1 timer, 1 ADC in USB com port.... pa je toliko krame... hm.
Nisem zadovoljen.
Licenco imam za uVision MDK 4.22, kjer tega procesorja ni.
Keil 4.22 podpira procesor STM32L1xx, ki ga pa CubeMX ne podpira Whistle
Kakšna zmešnjava Brick wall

Avtor: mujoKraj: MB PrispevekObjavljeno: Sre Nov 05, 2014 11:48 am    Naslov sporočila:  
----------------------------------------------------------------------------
Fun fun!
Poskusi izklopiti vse "module" knjiznice.

Avtor: tilz0RKraj: Črnomelj PrispevekObjavljeno: Sre Nov 05, 2014 11:52 am    Naslov sporočila:  
----------------------------------------------------------------------------
off:

Aly, a se tebi tudi dogaja, da zadnje črke v besedi izginjajo ko se z miško postaviš nad njih? Govorim o programu CubeMX.

Primer: odpreš program in imaš "New Project", "Load project" in "Help".
Če se z miško postavim nad "New Project", ta postane "New projec".

To se mi dogaja vsepovsod v programu. CubeMX 4.4.0

PS: manjka tudi pol menuja zgoraj.

Avtor: TilenS PrispevekObjavljeno: Sre Nov 05, 2014 12:32 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Kolikor vem pri meni deluje ok. Če se ne motim zadeva uporablja javo mogoče probaj nadgradit verzijo na novejšo.

Avtor: mujoKraj: MB PrispevekObjavljeno: Sre Nov 05, 2014 12:54 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Uh sem pozabil povedati kako CubeMX meni deluje:
Ne deluje mi. Sploh se mi ne zažene. Updejtal sem iz stare verzije na novo, in se mi več ne zažene. Se pa sploh ne sekiram. Mislim da nič ne zamujam.

Avtor: alyKraj: Kranj - struževo PrispevekObjavljeno: Sre Nov 05, 2014 10:10 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Update.
Še en procesor, kjer zadeva ne deluje: STM32F042C6

Citiram:
Build target 'Cube project Configuration'
linking...
Cube project Configuration\Cube project Configuration.axf: Error: L6406E: No space in execution regions with .ANY selector matching usbd_cdc_if.o(.bss).
...
Cube project Configuration\Cube project Configuration.axf: Error: L6407E: Sections of aggregate size 0xa20 bytes could not fit into .ANY selector(s).
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 15 error messages.
"Cube project Configuration\Cube project Configuration.axf" - 15 Error(s), 0 Warning(s).
Target not created.


Končno sem našel dva procesorja, kjer CubeMX prebavi vse in Keil 5 tudi iz prve skompajla ustvarjeni projekt.
STM32F373C8, 12k kode, 72 MHz, teoretična poraba 39 mA
STM32L151CC, 12.2k kode, 32 MHz, teoretična poraba 12 mA

Slednjega že imam, ob priliki ga zalotam na plato in preverim, če se zbudi in poveže z USB s tem projektom Smile

Avtor: alyKraj: Kranj - struževo PrispevekObjavljeno: Pon Dec 22, 2014 2:50 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Evo, projekt, ki sem se ga od nule lotil s CubeMX in STM32L151CC je končan.
Uporabljen je USB-CDC virtualni COM port, enkoderski vmesnik na 32-bitnem števcu ter še nekaj drugih timerjev in interruptov. Efektivno sem za zadevo porabil en teden dela.

Malo sem se lovil pri tem, kako so HAL driverji zasnovani, recimo namesto da svojo kodo postaviš direktno v IRQ_Handler proceduro, so tukaj pri HAL na voljo "Callback" funkcije. Stanja hardvera ne gledaš v registrih (ker HAL sam briše zastavice), ampak v statusnih zastavicah driverja.
Primer:
Koda:
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
  if (htim == &htim5)
  {
    if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_3) IRQ_handler_Encoder_Ri();  // Referencna znacka
    if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_4) IRQ_handler_Encoder_Trigger();  // Zunanji latch
  }
}


Malo drugačen način dela, ampak gre.

Kar mi gre še vedno na živce je, da je za ta projekt zgeneriral 60 (!) direktorijev. Ampak ko to dejstvo ignoriraš, je v redu Smile

Z zadnjo posodobitvijo CubeMX že kar dobro špila.

Pri STD-Lib sem za nov projekt vedno vzel enega starega in ga predelal, s tem pa vlekel s sabo vse (neposodobljene) knjižnice in buge v lastni kodi Smile Sedaj pa rajši štartam iz nule. Seveda začnem z novo namestitvijo Cube orodja - Updater ne dela. Smile

Avtor: mujoKraj: MB PrispevekObjavljeno: Pon Dec 22, 2014 7:11 pm    Naslov sporočila:  
----------------------------------------------------------------------------
Kako se ti performančno zdi, da zadeva deluje?
Glede na to, da se še neke dodatne zastavice dodajajo verjetno ni nek višek... Po drugi strani pa je potrebno procesor zaposlit z nečem...

Avtor: dejko1Kraj: Ljubljana PrispevekObjavljeno: Tor Dec 23, 2014 9:12 am    Naslov sporočila:  
----------------------------------------------------------------------------
Tiste zastavice znajo prav prit če delaš večopravilno Wink

CubeMX je malo podoben kakšnemu arduinotu in je lažji za uporabo od StdLib. (Primerov je žal bolj malo - ampak večino stvari se tako najde v examples. Ali pa si pogledaš za StdLib in potem iz tistega izhajaš.)

Pa kakšne stvari se znajo zaradi abstrakcije skrit v kakšne xy datoteke, tako da moraš najprej pogruntat kje se kaj nahaja (init, startup, mspinit).

Zadeva čisto lepo špila v gcc (CooCox).

Jaz recimo sem do zdaj pogrešal repeated start pri I2C komunikaciji Razz Uarti z FIFO-ti bi lahko tudi bili vgrajeni v zadevo, samo tu je verjetno 1000 opcij kaj kdo rabi.

(Sem od pred kratkim na CubeMX in se zaenkrat na njem igram le s STM32F4xx.)

Stran 2 od 3

Powered by phpBB © 2001,2002 phpBB Group