( apal | 2019. 03. 24., v – 14:11 )

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.