C nyelvu˝ program ARM Cortex M3-on
´ os ´ rendszerek Real-time operaci RTOS
¨ Dr. Schuster Gyorgy
´ 2011. oktober 14. ¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ vazlata ´ A ford´ıtas prog.c
Előfeldolgozó
Átmenti állomány
Fordító
prog.obj
könyvtárak
más .obj-tek
indító kód
Linker
futtatható kód
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ es ´ Ismetl
˝ ´ odb ´ ol ´ ember szam ´ ara ´ nem olvashato, ´ de a Elofeldolgoz o´ a nyers forrask ´ ara ´ optimalis ´ atmeneti ´ ´ ´ kesz´ ´ ıt. Tovabb ´ a´ ford´ıto´ szam allom any ´ ˝ ´ vegrehajtja az elofeldolgoz o´ utas´ıtasokat.
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ es ´ Ismetl
˝ ´ odb ´ ol ´ ember szam ´ ara ´ nem olvashato, ´ de a Elofeldolgoz o´ a nyers forrask ´ ara ´ optimalis ´ atmeneti ´ ´ ´ kesz´ ´ ıt. Tovabb ´ a´ ford´ıto´ szam allom any ´ ˝ ´ vegrehajtja az elofeldolgoz o´ utas´ıtasokat. ˝ ´ ´ ´ mar ´ binaris, ´ ´ futasra ´ Ford´ıto´ az elofeldolgozott allom anyb ol de meg ´ - ugynevezett ´ ´ kesz ´ ul, nem kesz ´ object - allom any ¨
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ es ´ Ismetl
˝ ´ odb ´ ol ´ ember szam ´ ara ´ nem olvashato, ´ de a Elofeldolgoz o´ a nyers forrask ´ ara ´ optimalis ´ atmeneti ´ ´ ´ kesz´ ´ ıt. Tovabb ´ a´ ford´ıto´ szam allom any ´ ˝ ´ vegrehajtja az elofeldolgoz o´ utas´ıtasokat. ˝ ´ ´ ´ mar ´ binaris, ´ ´ futasra ´ Ford´ıto´ az elofeldolgozott allom anyb ol de meg ´ - ugynevezett ´ ´ kesz ´ ul, nem kesz ´ object - allom any ¨ ¨ ´ konyvt ¨ ´ allom ´ ´ uzi ˝ a leford´ıtott object es ari anyokat. Linker oszef
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ es ´ Ismetl
˝ ´ odb ´ ol ´ ember szam ´ ara ´ nem olvashato, ´ de a Elofeldolgoz o´ a nyers forrask ´ ara ´ optimalis ´ atmeneti ´ ´ ´ kesz´ ´ ıt. Tovabb ´ a´ ford´ıto´ szam allom any ´ ˝ ´ vegrehajtja az elofeldolgoz o´ utas´ıtasokat. ˝ ´ ´ ´ mar ´ binaris, ´ ´ futasra ´ Ford´ıto´ az elofeldolgozott allom anyb ol de meg ´ - ugynevezett ´ ´ kesz ´ ul, nem kesz ´ object - allom any ¨ ¨ ´ konyvt ¨ ´ allom ´ ´ uzi ˝ a leford´ıtott object es ari anyokat. Linker oszef ´ (startup kod) ´ specialis ´ programmodul, amely meg ´ a main Ind´ıto´ kod ˝ lefut, inicializalja ´ a rendszert es ´ a programot. elott
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ vektortabla ´ Megszak´ıtas . . . static unsigned long pulStack[64]; __attribute__((section(".isr_vector"))) void (* const g_pfnVectors[])(void) = { (void (*)(void))((unsigned long)pulStack + sizeof(pulStack)), // The initial stack pointer ResetISR, // The reset handler NmiSR, // The NMI handler FaultISR, // The hard fault handler IntDefaultHandler, // The MPU fault handler IntDefaultHandler, // The bus fault handler IntDefaultHandler, // The usage fault handler 0, // Reserved 0, // Reserved 0, // Reserved 0, // Reserved IntDefaultHandler, // SVCall handler . . . }
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ´ Reszenk ent
static unsigned long pulStack[64];
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ´ Reszenk ent
static unsigned long pulStack[64]; __attribute__((section(".isr_vector")))
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ´ Reszenk ent
static unsigned long pulStack[64]; __attribute__((section(".isr_vector"))) void (* const g_pfnVectors[])(void)
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ´ Reszenk ent
static unsigned long pulStack[64]; __attribute__((section(".isr_vector"))) void (* const g_pfnVectors[])(void) (void(*)(void))((unsigned long)pulStack + sizeof(pulStack))
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ´ Reszenk ent
static unsigned long pulStack[64]; __attribute__((section(".isr_vector"))) void (* const g_pfnVectors[])(void) (void(*)(void))((unsigned long)pulStack + sizeof(pulStack)) ResetISR,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Szegmensek
´ .text a futtathato´ kod szegmense,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Szegmensek
´ .text a futtathato´ kod szegmense, .rodata csak olvashato´ adatok terulete, ¨
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Szegmensek
´ .text a futtathato´ kod szegmense, .rodata csak olvashato´ adatok terulete, ¨ ´ globalis ´ es ´ .data az inicializalt ´ ´ statikus valtoz ok szegmense,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Szegmensek
´ .text a futtathato´ kod szegmense, .rodata csak olvashato´ adatok terulete, ¨ ´ globalis ´ es ´ .data az inicializalt ´ ´ statikus valtoz ok szegmense, ´ statikus .bss a nem inicializalt ´ ´ szegmense. valtoz ok
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Szegmensek vectors
´ .text a futtathato´ kod szegmense, .rodata csak olvashato´ adatok terulete, ¨ ´ globalis ´ es ´ .data az inicializalt ´ ´ statikus valtoz ok szegmense, ´ statikus .bss a nem inicializalt ´ ´ szegmense. valtoz ok
¨ Dr. Schuster Gyorgy
.text .rodata
load és runtime load runtime
.data
.data .bss
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
ResetISR void ResetISR(void) { unsigned long *pulSrc, *pulDest; pulSrc = &_etext; for(pulDest=&_data;pulDest<&_edata;) { *pulDest++ = *pulSrc++; } for(pulDest=&_bss;pulDest<&_ebss;) { *pulDest++ = 0; } main(); } Ahol: ´ ´ elso˝ ”szabad c´ım”, _etext a .text szegmens vege utani ´ ´ _ebss a .bss Dr. szegmens v ege ut ani elso˝oper ”szabad c´ım”. RTOS ¨ ´ os ´ rendszerek Schuster Gyorgy Real-time aci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!!
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!! ´ ´ an ´ al ´ elofordulhat, ˝ A PLL atprogramoz as hogy azt:
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!! ´ ´ an ´ al ´ elofordulhat, ˝ A PLL atprogramoz as hogy azt: ´ 1 veletlen ul ¨ kikapcsolod,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!! ´ ´ an ´ al ´ elofordulhat, ˝ A PLL atprogramoz as hogy azt: ´ 1 veletlen ul ¨ kikapcsolod, ´ all´ ´ ıtasz be, amivel a processzor mar ´ nem kepes ´ 2 olyan frekvenciat futni.
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!! ´ ´ an ´ al ´ elofordulhat, ˝ A PLL atprogramoz as hogy azt: ´ 1 veletlen ul ¨ kikapcsolod, ´ all´ ´ ıtasz be, amivel a processzor mar ´ nem kepes ´ 2 olyan frekvenciat futni. ¨ valoj ´ aban ´ ´ ´ Ekkor az eszkoz hasznalhatatlann a´ valik.
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!! ´ ´ an ´ al ´ elofordulhat, ˝ A PLL atprogramoz as hogy azt: ´ 1 veletlen ul ¨ kikapcsolod, ´ all´ ´ ıtasz be, amivel a processzor mar ´ nem kepes ´ 2 olyan frekvenciat futni. ¨ valoj ´ aban ´ ´ ´ Ekkor az eszkoz hasznalhatatlann a´ valik. ´ fejleszteskor ´ ´ a Ezert mindig tarts fenn egy bemeneti bitet, amelyet meg ´ ´ ´ ha az egy adott logikai szinten van kergesd startup kodban megvizsgalsz es ´ ˝ csak akkor lephet ´ a processzort vegtelen ciklusba. Ebbol ki ha ez a bemeneti szint megszunt. ¨
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!! ´ ´ an ´ al ´ elofordulhat, ˝ A PLL atprogramoz as hogy azt: ´ 1 veletlen ul ¨ kikapcsolod, ´ all´ ´ ıtasz be, amivel a processzor mar ´ nem kepes ´ 2 olyan frekvenciat futni. ¨ valoj ´ aban ´ ´ ´ Ekkor az eszkoz hasznalhatatlann a´ valik. ´ fejleszteskor ´ ´ a Ezert mindig tarts fenn egy bemeneti bitet, amelyet meg ´ ´ ´ ha az egy adott logikai szinten van kergesd startup kodban megvizsgalsz es ´ ˝ csak akkor lephet ´ a processzort vegtelen ciklusba. Ebbol ki ha ez a bemeneti szint megszunt. ¨ ´ csak, csakis ezutan ´ a ciklus utan ´ all´ ´ ıtsd a PLL-t. Es
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ !!! Figyelmeztetes ´ intezked ´ ´ mielott ˝ a PLL-hez nyuln ´ Biztonsagi es ´ al!!! ´ ´ an ´ al ´ elofordulhat, ˝ A PLL atprogramoz as hogy azt: ´ 1 veletlen ul ¨ kikapcsolod, ´ all´ ´ ıtasz be, amivel a processzor mar ´ nem kepes ´ 2 olyan frekvenciat futni. ¨ valoj ´ aban ´ ´ ´ Ekkor az eszkoz hasznalhatatlann a´ valik. ´ fejleszteskor ´ ´ a Ezert mindig tarts fenn egy bemeneti bitet, amelyet meg ´ ´ ´ ha az egy adott logikai szinten van kergesd startup kodban megvizsgalsz es ´ ˝ csak akkor lephet ´ a processzort vegtelen ciklusba. Ebbol ki ha ez a bemeneti szint megszunt. ¨ ´ csak, csakis ezutan ´ a ciklus utan ´ all´ ´ ıtsd a PLL-t. Es
¨ Kul ¨ onben ¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
make ´ a make paranccsal tort ¨ enik. ´ A ford´ıtas
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
make ´ a make paranccsal tort ¨ enik. ´ A ford´ıtas ´ ´ A make a Makefile nevu˝ allom anyt olvassa. ´ szabalyokat. ´ Ez tartalmazza a ford´ıtasi
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
make ´ a make paranccsal tort ¨ enik. ´ A ford´ıtas ´ ´ A make a Makefile nevu˝ allom anyt olvassa. ´ szabalyokat. ´ Ez tartalmazza a ford´ıtasi ´ ˝ hasznaljunk ´ ´ Makefile-t. Tanacs: elsore gyari
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
make ´ a make paranccsal tort ¨ enik. ´ A ford´ıtas ´ ´ A make a Makefile nevu˝ allom anyt olvassa. ´ szabalyokat. ´ Ez tartalmazza a ford´ıtasi ´ ˝ hasznaljunk ´ ´ Makefile-t. Tanacs: elsore gyari ´ nyelvvel rendelkezik, ami hasonl´ıt a shell A make specialis scripthez, de nem azonos vele.
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
make ´ a make paranccsal tort ¨ enik. ´ A ford´ıtas ´ ´ A make a Makefile nevu˝ allom anyt olvassa. ´ szabalyokat. ´ Ez tartalmazza a ford´ıtasi ´ ˝ hasznaljunk ´ ´ Makefile-t. Tanacs: elsore gyari ´ nyelvvel rendelkezik, ami hasonl´ıt a shell A make specialis scripthez, de nem azonos vele. ´ aban ´ ´ o˝ Makefile ket ´ allom ´ ´ A peld lev anyt h´ıv meg, ezek:
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
make ´ a make paranccsal tort ¨ enik. ´ A ford´ıtas ´ ´ A make a Makefile nevu˝ allom anyt olvassa. ´ szabalyokat. ´ Ez tartalmazza a ford´ıtasi ´ ˝ hasznaljunk ´ ´ Makefile-t. Tanacs: elsore gyari ´ nyelvvel rendelkezik, ami hasonl´ıt a shell A make specialis scripthez, de nem azonos vele. ´ aban ´ ´ o˝ Makefile ket ´ allom ´ ´ A peld lev anyt h´ıv meg, ezek: ´ ´ ¨ ´ ara ´ egy makedefs allom anyt, amely az osszes peld ´ enyes ´ ´ anos ´ ´ erv altal szabalyokat tartalmazza,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
make ´ a make paranccsal tort ¨ enik. ´ A ford´ıtas ´ ´ A make a Makefile nevu˝ allom anyt olvassa. ´ szabalyokat. ´ Ez tartalmazza a ford´ıtasi ´ ˝ hasznaljunk ´ ´ Makefile-t. Tanacs: elsore gyari ´ nyelvvel rendelkezik, ami hasonl´ıt a shell A make specialis scripthez, de nem azonos vele. ´ aban ´ ´ o˝ Makefile ket ´ allom ´ ´ A peld lev anyt h´ıv meg, ezek: ´ ´ ¨ ´ ara ´ egy makedefs allom anyt, amely az osszes peld ´ enyes ´ ´ anos ´ ´ erv altal szabalyokat tartalmazza, a linker script-et.
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../..
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../.. # A k¨ oz¨ os ford´ ıt´ as ´ allom´ anya include ${ROOT}/makedefs
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../.. # A k¨ oz¨ os ford´ ıt´ as ´ allom´ anya include ${ROOT}/makedefs # Hol vannak a header-ek, amelyek nem a forr´ ask¨ onyvt´ arban vannak IPATH=../../..
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../.. # A k¨ oz¨ os ford´ ıt´ as ´ allom´ anya include ${ROOT}/makedefs # Hol vannak a header-ek, amelyek nem a forr´ ask¨ onyvt´ arban vannak IPATH=../../.. # Az ´ altal´ anos szab´ aly, a bin´ aris ´ ep´ ıt´ es´ ere all: ${COMPILER} all: ${COMPILER}/blinky.axf
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../.. # A k¨ oz¨ os ford´ ıt´ as ´ allom´ anya include ${ROOT}/makedefs # Hol vannak a header-ek, amelyek nem a forr´ ask¨ onyvt´ arban vannak IPATH=../../.. # Az ´ altal´ anos szab´ aly, a bin´ aris ´ ep´ ıt´ es´ ere all: ${COMPILER} all: ${COMPILER}/blinky.axf # A t¨ orl´ esi szab´ aly clean: rm -rf ${COMPILER} ${wildcard * }
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../.. # A k¨ oz¨ os ford´ ıt´ as ´ allom´ anya include ${ROOT}/makedefs # Hol vannak a header-ek, amelyek nem a forr´ ask¨ onyvt´ arban vannak IPATH=../../.. # Az ´ altal´ anos szab´ aly, a bin´ aris ´ ep´ ıt´ es´ ere all: ${COMPILER} all: ${COMPILER}/blinky.axf # A t¨ orl´ esi szab´ aly clean: rm -rf ${COMPILER} ${wildcard * } # A c´ el k¨ onyvt´ ar el} o´ all´ ıt´ asa ${COMPILER}: mkdir -p ${COMPILER}
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../.. # A k¨ oz¨ os ford´ ıt´ as ´ allom´ anya include ${ROOT}/makedefs # Hol vannak a header-ek, amelyek nem a forr´ ask¨ onyvt´ arban vannak IPATH=../../.. # Az ´ altal´ anos szab´ aly, a bin´ aris ´ ep´ ıt´ es´ ere all: ${COMPILER} all: ${COMPILER}/blinky.axf # A t¨ orl´ esi szab´ aly clean: rm -rf ${COMPILER} ${wildcard * } # A c´ el k¨ onyvt´ ar el} o´ all´ ıt´ asa ${COMPILER}: mkdir -p ${COMPILER} # A forr´ asok ford´ ıt´ asa ´ es a linker script h´ ıv´ asa ${COMPILER}/blinky.axf: ${COMPILER}/blinky.o ${COMPILER}/blinky.axf: ${COMPILER}/startup_${COMPILER}.o ${COMPILER}/blinky.axf: blinky.ld SCATTERgcc_blinky=blinky.ld ENTRY_blinky=ResetISR
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Makefile # Milyen eszk¨ ozre ford´ ıtunk PART=LM3S9B92 # Hol van a gy¨ okere a ford´ ıt´ asnak ROOT=../../.. # A k¨ oz¨ os ford´ ıt´ as ´ allom´ anya include ${ROOT}/makedefs # Hol vannak a header-ek, amelyek nem a forr´ ask¨ onyvt´ arban vannak IPATH=../../.. # Az ´ altal´ anos szab´ aly, a bin´ aris ´ ep´ ıt´ es´ ere all: ${COMPILER} all: ${COMPILER}/blinky.axf # A t¨ orl´ esi szab´ aly clean: rm -rf ${COMPILER} ${wildcard * } # A c´ el k¨ onyvt´ ar el} o´ all´ ıt´ asa ${COMPILER}: mkdir -p ${COMPILER} # A forr´ asok ford´ ıt´ asa ´ es a linker script h´ ıv´ asa ${COMPILER}/blinky.axf: ${COMPILER}/blinky.o ${COMPILER}/blinky.axf: ${COMPILER}/startup_${COMPILER}.o ${COMPILER}/blinky.axf: blinky.ld SCATTERgcc_blinky=blinky.ld ENTRY_blinky=ResetISR # A f¨ ugg} o f´ ajlok automatikus gener´ al´ asa ifneq (${MAKECMDGOALS},clean) -include ${wildcard ${COMPILER}/*.d} __dummy__ endif ¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato.
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´ ¨ ´ - a kornyezet nevet,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´ ¨ ´ - a kornyezet nevet, ´ es ´ eler ´ esi ´ utj ´ - a ford´ıto´ program nevet ´ at,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´ ¨ ´ - a kornyezet nevet, ´ es ´ eler ´ esi ´ utj ´ - a ford´ıto´ program nevet ´ at, ¨ ´ allom ´ ´ ´ esi ´ utj ´ - a konyvt ari anyok eler ´ at,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´ ¨ ´ - a kornyezet nevet, ´ es ´ eler ´ esi ´ utj ´ - a ford´ıto´ program nevet ´ at, ¨ ´ allom ´ ´ ´ esi ´ utj ´ - a konyvt ari anyok eler ´ at, ´ ´ - a ford´ıtashoz szuks ¨ eges flag-eket,
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´ ¨ ´ - a kornyezet nevet, ´ es ´ eler ´ esi ´ utj ´ - a ford´ıto´ program nevet ´ at, ¨ ´ allom ´ ´ ´ esi ´ utj ´ - a konyvt ari anyok eler ´ at, ´ ´ - a ford´ıtashoz szuks ¨ eges flag-eket, ´ parancs vegrehajt ´ ´ at, ´ - a ford´ıtasi as
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´ ¨ ´ - a kornyezet nevet, ´ es ´ eler ´ esi ´ utj ´ - a ford´ıto´ program nevet ´ at, ¨ ´ allom ´ ´ ´ esi ´ utj ´ - a konyvt ari anyok eler ´ at, ´ ´ - a ford´ıtashoz szuks ¨ eges flag-eket, ´ parancs vegrehajt ´ ´ at, ´ - a ford´ıtasi as ´ ´ at, ´ - a linker parancs vegrehajt as
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
makedefs ´ anos ´ ´ u´ make allom ´ ´ A makedefs egy olyan altal cel any, amely minden ´ ´ alkalmazasra alkalmazhato. ´ ıtasokat ´ Alapveto˝ beall´ tartalmaz, ugymint: ´ ¨ ´ - a kornyezet nevet, ´ es ´ eler ´ esi ´ utj ´ - a ford´ıto´ program nevet ´ at, ¨ ´ allom ´ ´ ´ esi ´ utj ´ - a konyvt ari anyok eler ´ at, ´ ´ - a ford´ıtashoz szuks ¨ eges flag-eket, ´ parancs vegrehajt ´ ´ at, ´ - a ford´ıtasi as ´ ´ at, ´ - a linker parancs vegrehajt as ´ image elo˝ all´ ´ ıtas ´ at. ´ - a binaris
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
Linker script MEMORY { FLASH (rx):ORIGIN=0x00000000,LENGTH=256K SRAM (rwx):ORIGIN=0x20000000,LENGTH=96K } SECTIONS { .text : { KEEP(*(.isr_vector)) *(.text*) *(.rodata*) _etext = .; } > FLASH .data:AT(ADDR(.text)+SIZEOF(.text)) { _data = .; *(vtable) *(.data*) _edata = .; } > SRAM }
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ROM rutinok hasznalata ´ ese ´ a rom.h seg´ıtseg ´ evel ´ ¨ enhet. ´ A rom rutinok eler tort ´ ahoz ´ A rom rutinok hasznalat a #define TARGET_IS_TEMPEST_RC1 1 ´ ´ elott ˝ definialni ´ kell. ford´ıtasidej u˝ konstanst a rom.h h´ıvasa
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ROM rutinok hasznalata ´ ese ´ a rom.h seg´ıtseg ´ evel ´ ¨ enhet. ´ A rom rutinok eler tort ´ ahoz ´ A rom rutinok hasznalat a #define TARGET_IS_TEMPEST_RC1 1 ´ ´ elott ˝ definialni ´ kell. ford´ıtasidej u˝ konstanst a rom.h h´ıvasa
#define ROM_APITABLE
((unsigned long *)0x01000010)
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ROM rutinok hasznalata ´ ese ´ a rom.h seg´ıtseg ´ evel ´ ¨ enhet. ´ A rom rutinok eler tort ´ ahoz ´ A rom rutinok hasznalat a #define TARGET_IS_TEMPEST_RC1 1 ´ ´ elott ˝ definialni ´ kell. ford´ıtasidej u˝ konstanst a rom.h h´ıvasa
#define #define #define #define
ROM_APITABLE ROM_VERSION ROM_UARTTABLE ROM_SSITABLE
((unsigned long *)0x01000010) (ROM_APITABLE[0]) ((unsigned long *)(ROM_APITABLE[1])) ((unsigned long *)(ROM_APITABLE[2]))
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ROM rutinok hasznalata ´ ese ´ a rom.h seg´ıtseg ´ evel ´ ¨ enhet. ´ A rom rutinok eler tort ´ ahoz ´ A rom rutinok hasznalat a #define TARGET_IS_TEMPEST_RC1 1 ´ ´ elott ˝ definialni ´ kell. ford´ıtasidej u˝ konstanst a rom.h h´ıvasa
#define #define #define #define
ROM_APITABLE ROM_VERSION ROM_UARTTABLE ROM_SSITABLE
((unsigned long *)0x01000010) (ROM_APITABLE[0]) ((unsigned long *)(ROM_APITABLE[1])) ((unsigned long *)(ROM_APITABLE[2]))
#if defined(TARGET_IS_DUSTDEVIL_RA0) ||\ defined(TARGET_IS_TEMPEST_RB1) ||\ defined(TARGET_IS_TEMPEST_RC1) ||\ defined(TARGET_IS_TEMPEST_RC3)
¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci
C nyelvu˝ program ARM Cortex M3-on
´ Ford´ıtas ´ Startup kod make
´ ROM rutinok hasznalata ´ ese ´ a rom.h seg´ıtseg ´ evel ´ ¨ enhet. ´ A rom rutinok eler tort ´ ahoz ´ A rom rutinok hasznalat a #define TARGET_IS_TEMPEST_RC1 1 ´ ´ elott ˝ definialni ´ kell. ford´ıtasidej u˝ konstanst a rom.h h´ıvasa
#define #define #define #define
ROM_APITABLE ROM_VERSION ROM_UARTTABLE ROM_SSITABLE
((unsigned long *)0x01000010) (ROM_APITABLE[0]) ((unsigned long *)(ROM_APITABLE[1])) ((unsigned long *)(ROM_APITABLE[2]))
#if defined(TARGET_IS_DUSTDEVIL_RA0) ||\ defined(TARGET_IS_TEMPEST_RB1) ||\ defined(TARGET_IS_TEMPEST_RC1) ||\ defined(TARGET_IS_TEMPEST_RC3) #define ROM_UARTCharPut \ ((void (*)(unsigned long ulBase,\ unsigned char ucData))ROM_UARTTABLE[0]) ¨ Dr. Schuster Gyorgy
´ os ´ rendszerek RTOS Real-time operaci