reklama

STM32 - minimalisticky vyvoj, chyby, objednavky

kenshin

Re:STM32 - minimalisticky vyvoj, chyby, objednavky
« Odpověď #30 kdy: 15. 12. 2018, 14:19:14 »
na stm32 (aj AVR) pouzivam C++, disciplinovane :

na std knizniciach je zle to, ze tam vidno snahy o akesy "OOP" programovanie v C (rozne handlers a init struct), vysledok je hrozny hnoj, da sa cez nen prejst zaobalenim do vlastnych tried v C++; zdrzi to zvacsa len inicializacie, ale ostatny beh je v poriadku;

nejake napady co som zatial poskusal :

1, gpio cez templates - rychlost je potom na urovni assembleru:
cosi ako :

TGpio<PORTA, 3, MODE_OUT> led; //konstruktor bude asi trocha dlhsi
led = 1; //ale toto sa uz na AVR prelozi na jednu instrukciu
led = 0;

2, pamat pokial mozno len na zaciatku alokovat

3, mat triedu pre casovace, pomocou abstraktnych tried sa da vyhnut callbacks, a vytvorit udalostne riadeny planovac - bez ozajstneho multitaskingu, ale na vela veci to staci;

podla mna nie je zly napad mat aplikacny thread ako potomok nejakej abstraktnej triedy; netreba potom prasacka pointre na funkcie a inu ciernu magiu

4, existuje embedded stl, vyuziva staticku alokaciu https://www.etlcpp.com/
5, pouzivam arm-none-eabi-g++, pocas kompilacie je vypnuta podpora vynimiek, pri trocha snahe je kod takmer rovnako rychly ako v C, s neporovnatelne vacsim komfortom

6, casovo kriticke casti vzdy mozu byt v C / inline assemblery

7, ano, startup v asm je tam des, mam napisany v C

reklama


mhi_

Re:STM32 - minimalisticky vyvoj, chyby, objednavky
« Odpověď #31 kdy: 16. 01. 2019, 21:24:43 »
Takze aktualne mam na stole LPC15xx a STM32F103. Zvazuju jeste Cortex-M3 od Infineonu https://www.infineon.com/dgdl/Infineon-XMC4100_XMC4200-DS-v01_02-en.pdf?fileId=db3a30433afc7e3e013b3cf9b2816573&ack=t  a M4ku od Renesasu.

Pouzivate nekdo ARMy od Renesasu / Infineonu ? Na co si u techto firem dat pozor?

Veci od Renesasu jsem pouzival v minulosti, trosku me desilo to mnozstvi typu a architektur procesoru (ruzne verze V850 apod). Nevim co mam cekat od jejich ARMu...

MarSik

Re:STM32 - minimalisticky vyvoj, chyby, objednavky
« Odpověď #32 kdy: 17. 01. 2019, 15:30:13 »
TGpio<PORTA, 3, MODE_OUT> led; //konstruktor bude asi trocha dlhsi
led = 1; //ale toto sa uz na AVR prelozi na jednu instrukciu
led = 0;

Osobně preferuji gpio_set()/gpio_clear() z opencm3, překládá se na jednu instrukci a je to přehlednější.


netreba potom prasacka pointre na funkcie a inu ciernu magiu

4, existuje embedded stl, vyuziva staticku alokaciu https://www.etlcpp.com/

Když mluvíme o etlcpp, tak tam je https://www.etlcpp.com/function.html pro odkazy na funkce.

5, pouzivam arm-none-eabi-g++, pocas kompilacie je vypnuta podpora vynimiek, pri trocha snahe je kod takmer rovnako rychly ako v C, s neporovnatelne vacsim komfortom

C++ není téměř stejně rychlé, je stejně rychlé. Při vhodném použití static, inline a správných přepínačů je tam nulový overhead.

mhi_

Re:STM32 - minimalisticky vyvoj, chyby, objednavky
« Odpověď #33 kdy: 18. 01. 2019, 08:43:16 »
K STM32 bych mel jeste jeden dotaz: na STM32F103C8) "bluepill" jsem rozchodil zde odkazovany minimalisticky USB stack (CDC, UART). Pouzivate jej nekdo? Na bluepillu jsem vymenil odpor na USB DP+ podle instrukci (i tak to myslim je ale spatne, odpor by mel byt po enumeraci odpojen (viz konkurencni NXP https://community.nxp.com/thread/483690 ).

Na bluepill vzdy jeste pridavam hromadku kondiku, tak jak to je z vyroby to je nepouzitelna nestabilni deska, nechapu ze to lide nezminuji.

Kazdopadne problem je v tom, ze OBCAS se mi ve Windows moje zarizeni nenaenumeruje (bud' Windows vubec nic nedetekuji, nebo "zarizeni nefunguje", nebo se naenumeruje treba za 5-10 vterin. Nejsem schopen diagnostikovat kde je problem, zda ve Windows ci driverech (ano, obcas to delaji i s jimymi zarizeni, pomuze ale obvykle jen restart, coz neni tento pripad), nebo to je tim mini-stackem, nebo nejaky elektricky problem. Nez zacnu resit debugging, mate nekdo praktickou zkusenost?

U Microchipu se nam bezne stavalo, ze *obcas* v kombinaci s nekterymi chipsety doslo ke ztrate dat pri prenosu MCU->PC, problem se nepovedlo vyresit. Nerad bych opakoval podobnou zkusenost i zde, kdy budeme zakaznikum dodavat neco, co nekomunikuje spolehlive.

 

reklama