CH32V003

Miroslav Mraz mrazik na volny.cz
Neděle Březen 3 09:53:23 CET 2024


Ano. U toho STM mi vadilo spíš to, že jádro je přizpůsobeno, aby se to 
celé dalo udělat v C, assembler není nutný. Tak proč to tak není.
U CH32V003 je to složitější. Tam musíte v assembleru nastavit SP, GP a 
některé CSR procesoru, aby se jádro chovalo jak chcete. V CH32V003_fun 
to bylo blbě, protože autoři nechali rutinu pro nastavení hodin jádra 
volat uživatele až v main(). Tedy až po zavolání statických 
konstruktorů. To by mohlo dělat problémy.
Napsal jsem to v C++, protože inline assembler umožní použít raw-string, 
což je čitelnější a takové nějak hezčí. Ale jinak je ten assembler 
RISC-V dost záhada, proč jsou ty .option tak jak jsou, netuším a ani to 
nechci zkoumat.
Jediný negativní postřeh je, že clang/llvm tohle neumí, nezná extenzi E 
(zřejmě není kanonická). Ale lidi to programují v rustu, vzal jsem odtud 
SVD, takže to třeba nějak ohnuli, nevím.

Mrazík

On 02. 03. 24 22:45, Petr Labaj wrote:
> Jen pro ujištění, že si rozumíme.
> Mám na mysli startup, který po resetu nastaví oscilátory, PLL, děličky atd.
> A v praxi tento modul taky většinou obsahuje tabulku vektorů na pevných 
> adresách, defaultně nastavenou pro všechny IRQ zatím na nějaký "kód 
> smrti" (nějakou nekonečnou smyčku).
> Tedy to, co se třeba u STM jmenuje nějak jako startup_stm32f0xx.s.
> 
> PL
> 


Další informace o konferenci Hw-list