toolchain-t össze kell rakni, ami azért erősen bonyolultabb az avr-gcc-nél meg az xc8-nál.
Ez ketsegtelen, de leginkabb azert mert kismillio fele ARM-es MCU kering a vilagban, nem csak annyi mint amennyi AVR-es. Ellenben szerintem nem haszontalan ezeket is megismerni:
- Vagy akkor, mikor mar eleve nagyon jol ismersz mar egy jol osszerakott ARM-es toolchain-t hogy ki tudod belole siliabizalni hogy mi kell neked konretan egy adott hardverhez/projekthez.
- Vagy akkor, mikor mar az AVR (vagy altalaban egy ilyen beagyazott mikrokontroller) lelkivilagat, memoria-felosztasat, stb annyira jol ismered hogy azalapjan (plusz kis netes keresgeles alapjan) tudsz mar extrapolalni hogy navajh' egy adott ARM eseten ez hogy is lehet.
A toolchain meg nagyjabol ezekbol a komponensekbol es egyeb input file-okbol all:
- fordito (arm-none-eabi-gcc)
- linker (arm-none-eabi-ld)
- object extraction (arm-none-eabi-objcopy)
- libc (newlib: /usr/lib/arm-none-eabi/newlib/armv6-m/libc.a, usr/lib/arm-none-eabi/newlib/armv6-m/libc_nano.a
- libgcc (arm-none-eabi-gcc: /usr/lib/gcc/arm-none-eabi/5.4.1/armv6-m/libgcc.a)
- linker script (pl. stm32f407.ld)
- _start (/usr/lib/arm-none-eabi/newlib/armv6-m/crt0.o, vagy teljesen sajat)
- vector table
Na, es ezutobbi harom osszevadaszasa az, amihez mar elegge ismerni kell az architekturat. A linker script-ben az MCU-fuggo resz az ARM architekturaja miatt joesetben csak a ROM meg a RAM szekciokat tartalmazza, de a vector table-ban mar hivatkozni kell a linker script-ben definialt szimbolumokra is (pl a stack pointer kezdeti ertekere). A _start pedig akar lehet maga a main() is, de a bss meg az (i)data elokeszites is ide tartozik.
Egyelore ezeket mar nagyjabol sikerult hellyel-kozzel erthetoen osszelonom. Ami meg hatra van, az az hogy a heap kezelese: azaz hogy a libc_nano-ben levo malloc() tudja hogy a RAM melyik teruleten tud allokalni. De ez ugye annyira nem fontos mert azert annyira nem szeretek veszelyesen elni hogy MCU + malloc() kombinaciot hasznaljak :) De tanulsagosnak tanulsagos lesz, az biztos.
Effele "alulrol epitkezos" kiindulasnak ez a kis leiras is nagyon jo.