diff --git a/FileInclude/Lib_Com_Periph_2022.lib b/FileInclude/Lib_Com_Periph_2022.lib new file mode 100644 index 0000000..ce805ab Binary files /dev/null and b/FileInclude/Lib_Com_Periph_2022.lib differ diff --git a/FileInclude/MyI2C.h b/FileInclude/MyI2C.h new file mode 100644 index 0000000..289c9ed --- /dev/null +++ b/FileInclude/MyI2C.h @@ -0,0 +1,229 @@ +#ifndef _I2C_ +#define _I2C_ + +#include "stm32f10x.h" + +/************************************************************************************* +===================== By Periph team INSA GEI 2022 =========================== +*************************************************************************************/ + +/* +************************************************************************************* +===================== I2C les IO STM32F103 ================================= +************************************************************************************* + +Les IO sont pris en charge par la lib, pas besoin de faire les configurations Alt OD. + +**I2C1** +SCL PB6 +SDA PB7 + +**I2C2** +SCL PB10 +SDA PB11 + + +************************************************************************************* +==================== Fondamentaux I2C ========================================== +************************************************************************************* +- Bus synchrone Low speed (<100kHz) ou high speed (=400kHz), Ici Low speed 100kHz. +- Transfert octet par octet, poids fort en premier, avec aquittement pour chaque octet +- Deux lignes SDA et SCL (horloge) en open drain, repos '1' +- bit "normal" = SDA stable lors du pulse SCL (ie durant l'état haut de SCL, SDA est stable) +- bit Start/Stop/Restart = SDA non stable lorsque SCL vaut '1' (violation règle précédente) + * Start : front descendant de SDA lorsque SCL vaut '1' + * Stop : front montant de SDA lorsque SCL = '1' + * Restart = Start en cours de trame (typiquement pour changer Write/read). +- uC en Mode Master uniquement (c'est notre choix) : c'est le uC qui est maître de l'horloge SCL. +- Le Slave a une @ 7 bits. On ajoute un bit LSB qui est /WR (donc 0 pour écriture, 1 pour lecture) +- Une adresse s'écrit donc |a6 a5 a4 a3 a2 a1 a0 /WR| ce qui donne 8 bits. Elle indique une future +lecture ou écriture. +On parle d'@ 7 bits en regroupant |a6 a5 a4 a3 a2 a1 a0| +On parle d'@ 8 bits en regroupant |a6 a5 a4 a3 a2 a1 a0 /WR| (donc une @ écriture, une @ lecture) +NB : préférer le concept @7bits...c'est plus clair. + +- On peut lire ou écrire une ou plusieurs données à la suite. C'est lors de l'envoie de l'adresse Slave +par le Master que le sens à venir pour les datas est indiqué. +- En écriture, + * les Ack sont faits par le slave après chaque octet envoyé par le master (Ack = mise à 0 le bit 9). +- En lecture, + * dès que le l@ slave est transmise (/RW = 1), et le Ack réalisé, le slave positionne le bit 7 + du prochain octet à lire sur SDA par anticipation , + * le master enchaîne ses pulses (9), lors du pulse 9 (le dernier) c'est le master qui acquite. + * Après chaque acquitement, le Slave amorce le prochain octet en positionnant son bit 7 sur SDA + * Après le dernier octet, le Master génère un stop. + * Pour pouvoir générer le stop, le Master doit piloter SDA, or ce n'est pas possible puisque + le Slave positionne le futur bit 7 ... Pour régler ce problème : + lors du dernier transfert, le Master N'acquitte PAS (NACK). Ainsi le Slave ne + propose plus le bit 7 du prochain octet sur SDA et libère SDA. Le Master peut alors clôturer la + communication avec un Stop. + + + + +======= Echange typique avec un Slave ================================================================ +- Une lecture ou écriture se fait vers un Slave et à partir d'une adresse mémoire donnée (pointeur interne). +Ce pointeur est automatiquement incrémenté dans le slave lors des accès écriture ou lecture. + +- Ecriture de N octets , trame complète (@ = adresse slave, pt = valeur de chargement du pointeur interne) +|Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| +|pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| +|d7|d6|d5|d4|d3|d2|d1|d0|Slave ACK| (data 1) +..... +|d7|d6|d5|d4|d3|d2|d1|d0|Salve ACK|Stop Cond| (data N) + +- Lecture de N octets à partir d'une adresse de pointeur donnée +|Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| +|pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| +|ReStart Cond |@6|@5|@4|@3|@2|@1|@0| Wr =1 |Slave ACK| (NB: restart nécessaire pour changer écriture / lecture) +|d7|d6|d5|d4|d3|d2|d1|d0|Master ACK| (data 1) +..... +|d7|d6|d5|d4|d3|d2|d1|d0|Master ACK| (data N-1) +|d7|d6|d5|d4|d3|d2|d1|d0|Master NACK|Stop Cond| (data N) + + + + + +************************************************************************************* +==================== La lib I2C ========================================== +************************************************************************************* + +3 fonctions essentielles : +MyI2C_Init +MyI2C_PutString +MyI2C_GetString + +1 fonction spéciale : MyI2C_Get_Error + +Les fonctions Put/Get string fonctionnent sur le principe classique décrit précédemment +(Slave@, Pter @, Data...). +La fonction init prend parmi ses paramètres le nom d'une fct callback d'erreur. +En fait, le driver gère en IT les erreurs possibles I2C. La fonction MyI2C_Get_Error permet de +recevoir un code erreur. +Il est conseillé d'utiliser ce callback. Si on tombe dedans, c'est qu'une erreur s'est produite. +Si le code erreur est "inconnu", souvent c'est qu'il y a un soucis à l'adressage slave: +Vérifier alors la connectique physique SDA/SCL ainsi que l'alimentation du slave ou tout simplement +l'@ slave ! + + +==========================================================================================*/ + + + + + +/*========================================================================================= + GESTION ERREURS +========================================================================================= */ +typedef enum +{ + OK, + BusError, // + AckFail, // Pas,d'ack + TimeOut, // SCL est resté plus de 25ms à l'état bas + UnknownError // IT erreur déclenchée mais pas de flag explicite ... +} MyI2C_Err_Enum; + + + + +/** + * @brief Retourne les erreurs I2C + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @retval Type d'erreur rencontrée , voir MyI2C_Err_Enum + */ + +MyI2C_Err_Enum MyI2C_Get_Error(I2C_TypeDef * I2Cx); + + + +/*========================================================================================= + INITIALISATION I2C +========================================================================================= */ + + +/** + * @brief Initialise l'interface I2C (1 ou 2) + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param char IT_Prio_I2CErr 0 à 15 (utilisé en cas d'erreur, IT courte et non bloquante + * @param *ITErr_function : callback à utiliser pour sortir d'un plantage transmission + * @retval None + * @Example MyI2C_Init(I2C1, 2,My_CallbackErr); + + + + */ +void MyI2C_Init(I2C_TypeDef * I2Cx, char IT_Prio_I2CErr, void (*ITErr_function) (void)); + + + +/*========================================================================================= + EMISSION I2C : PutString +========================================================================================= */ + + +// Structure de données pour l'émission ou la réception I2C : +typedef struct +{ + char SlaveAdress7bits; // l'adresse I2C du slave device + char * Ptr_Data; // l'adresse du début de tableau char à recevoir/émettre (tableau en RAM uC) + char Nb_Data; // le nbre d'octets à envoyer / recevoir +} +MyI2C_RecSendData_Typedef; + + + +/** + * @brief|Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| + |pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| + |d7|d6|d5|d4|d3|d2|d1|d0|Slave ACK| (data 1) + ..... + |d7|d6|d5|d4|d3|d2|d1|d0|Salve ACK|Stop Cond| (data N) + + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param PteurAdress = adresse de démarrage écriture à l'interieur du slave I2C + * @param DataToSend, adresse de la structure qui contient les informations à transmettre + voir définition MyI2C_RecSendData_Typedef + * @retval None + * @Example MyI2C_PutString(I2C1,0xAA, &MyI2C_SendTimeData); + * Ecrit dans le slave câblé sur I2C1 à partir de l'@ mémoire interne Slave 0xAA + + */ +void MyI2C_PutString(I2C_TypeDef * I2Cx, char PteurAdress, MyI2C_RecSendData_Typedef * DataToSend); + + + + + + + + + + +/*========================================================================================= + Réception I2C : GetString +========================================================================================= */ + +/** + * @brief |Start Cond |@6|@5|@4|@3|@2|@1|@0| Wr =0 |Slave ACK| + |pt7|pt6|pt5|pt4|pt3|pt2|pt1|pt0|Slave ACK| + |ReStart Cond |@6|@5|@4|@3|@2|@1|@0| Wr =1 |Slave ACK| + |d7|d6|d5|d4|d3|d2|d1|d0|Master ACK| (data 1) + ..... + |d7|d6|d5|d4|d3|d2|d1|d0|Master NACK|Stop Cond| (data N) + + * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. + * @param PteurAdress = adresse de démarrage lecture à l'interieur du slave I2C + * @param DataToSend, adresse de la structure qui contient les informations nécessaires à la + réception des données voir définition MyI2C_RecSendData_Typedef + * @retval None + * @Example MyI2C_GetString(I2C1,0xAA, &MyI2C_RecevievedTimeData); + Lit dans le slave câblé sur I2C1 à partir de l'@ mémoire interne Slave 0xAA + */ +void MyI2C_GetString(I2C_TypeDef * I2Cx, char PteurAdress, MyI2C_RecSendData_Typedef * DataToReceive); + + + + +#endif diff --git a/FileInclude/MySPI.h b/FileInclude/MySPI.h new file mode 100644 index 0000000..b5f9aef --- /dev/null +++ b/FileInclude/MySPI.h @@ -0,0 +1,129 @@ + +#ifndef INC_MYSPI_H_ +#define INC_MYSPI_H_ + +#include "stm32f10x.h" + +/************************************************************************************* +===================== By Periph team INSA GEI 2022 =========================== +*************************************************************************************/ + +/* +************************************************************************************* +===================== I2C les IO STM32F103 ================================= +************************************************************************************* +Les IO sont pris en charge par la lib, pas besoin de faire les configurations + + +Sur la Nucléo , le SPI1 est perturbé par la LED2 (PA5), mais doit pouvoir subir les front SCK qd même (LED clignote vite..) +le SPI2 n'est pas utilisable car pin non connectées par défaut (sauf à modifier les SB). En fait la Nucléo fait un choix entre SPI1 +et SPI2 par soudage jumper (SB). + +-> Utiliser SPI1 avec la carte Nucléo + + * **IO SPI 1** + SPI1_NSS PA4 + SPI1_SCK PA5 + SPI1_MISO PA6 + SPI1_MOSI PA7 + + **IO SPI 2** + SPI2_NSS PB12 + SPI2_SCK PB13 + SPI2_MISO PB14 + SPI2_MOSI PB15 + + + + + +************************************************************************************* +==================== Fondamentaux SPI ========================================== +************************************************************************************* +- Bus Synchrone, 4 fils (même si on peut l'utiliser en 3 fils) +- Transfert à l'octet +- Protocole entre un Master (contrôle SCK) et un Slave +- SCK permet de synchroniser les bits de chaque octet. Il se configure par : + * son niveau de repos : ici niveau '1' + * le front actif de synchronisation pour chaque bit : ici front montant (front up durant bit stable) +- /CS ou /NSS active le slave sur l'état bas +- MOSI : Master Out Slave In (donc data circulant du Master vers le Slave, donc écriture dans le Slave) +- MISO : Master In Slave Out (donc data circulant du Slave vers le Master, donc lecture du Slave) + +Bien que la lib propose une fonction d'écriture et de lecture : + * une écriture s'accompagne obligatoirement d'une lecture (bidon) + * une lecture s'accompagne obligatoirement d'une écriture (bidon) +La gestion /CS = /NSS se fait "à la main". On peut alors lire toute une série d'octets +en laissant /CS à l'état bas pendant toute la durée de circulation des octets. + + +************************************************************************************* +==================== La lib SPI ========================================== +************************************************************************************* + +fonctions essentielles : + +MySPI_Init +MySPI_Send +MySPI_Read +MySPI_Set_NSS +MySPI_Clear_NSS + + +==========================================================================================*/ + + + + +/*========================================================================================= + INITIALISATION SPI +========================================================================================= */ + +/** + * @brief Configure le SPI spécifié : FSCK = 281kHz, Repos SCK = '1', Front actif = up + Gestion /CS logicielle à part, configure les 4 IO + - SCK, MOSI : Out Alt push pull + - MISO : floating input + - /NSS (/CS) : Out push pull + * @param SPI_TypeDef * SPI : SPI1 ou SPI2 + */ +void MySPI_Init(SPI_TypeDef * SPI); + + + +/** + * @brief Envoie un octet (/CS non géré, à faire logiciellement) + Plus en détail, émission de l'octet souhaité sur MOSI + Lecture en même temps d'un octet poubelle sur MISO (non exploité) + * @param : char ByteToSend : l'octet à envoyer + */ +void MySPI_Send(char ByteToSend); + + +/** + * @brief Reçoit un octet (/CS non géré, à faire logiciellement) + Plus en détail, émission d'un octet bidon sur MOSI (0x00) + pour élaborer les 8 fronts sur SCK et donc piloter le slave en lecture + qui répond sur MISO + * @param : none + * @retval : l'octet lu. + */ +char MySPI_Read(void); + + + +/** + * @brief Positionne /CS = /NSS à '1'. A utiliser pour borner les octets à transmettre/recevoir + * @param : none + */ +void MySPI_Set_NSS(void); + + + +/** + * @brief Positionne /CS = /NSS à '0'. A utiliser pour borner les octets à transmettre/recevoir + * @param :none + */ +void MySPI_Clear_NSS(void); + +#endif diff --git a/Listings/Projet1_Simulation.map b/Listings/Projet1_Simulation.map index 9e8e674..a1404ff 100644 --- a/Listings/Projet1_Simulation.map +++ b/Listings/Projet1_Simulation.map @@ -17,7 +17,12 @@ Section Cross References main.o(i.main) refers to plateau.o(i.Init_Plateau) for Init_Plateau main.o(i.main) refers to mygirouette.o(i.Init_Girouette) for Init_Girouette main.o(i.main) refers to myvoile.o(i.MyVoile_Init) for MyVoile_Init + main.o(i.main) refers to myspi.o(i.MySPI_Init) for MySPI_Init + main.o(i.main) refers to myspi.o(i.MySPI_Clear_NSS) for MySPI_Clear_NSS + main.o(i.main) refers to myspi.o(i.MySPI_Send) for MySPI_Send + main.o(i.main) refers to myspi.o(i.MySPI_Set_NSS) for MySPI_Set_NSS main.o(i.main) refers to batterie.o(i.Init_Batterie) for Init_Batterie + main.o(i.main) refers to myspi.o(i.MySPI_Read) for MySPI_Read main.o(i.main) refers to mygirouette.o(i.Get_Angle) for Get_Angle main.o(i.main) refers to myvoile.o(i.Set_Voile) for Set_Voile main.o(i.main) refers to main.o(.data) for Data @@ -90,6 +95,12 @@ Section Cross References system_stm32f10x.o(i.SetSysClock) refers to system_stm32f10x.o(i.SetSysClockTo72) for SetSysClockTo72 system_stm32f10x.o(i.SystemCoreClockUpdate) refers to system_stm32f10x.o(.data) for SystemCoreClock system_stm32f10x.o(i.SystemInit) refers to system_stm32f10x.o(i.SetSysClock) for SetSysClock + myspi.o(i.MySPI_Clear_NSS) refers to myspi.o(.data) for ActiveSPI + myspi.o(i.MySPI_Init) refers to myspi.o(i.MySPI_Set_NSS) for MySPI_Set_NSS + myspi.o(i.MySPI_Init) refers to myspi.o(.data) for ActiveSPI + myspi.o(i.MySPI_Read) refers to myspi.o(.data) for ActiveSPI + myspi.o(i.MySPI_Send) refers to myspi.o(.data) for ActiveSPI + myspi.o(i.MySPI_Set_NSS) refers to myspi.o(.data) for ActiveSPI entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000F) for __rt_final_cpp entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$00000011) for __rt_final_exit entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry12b.o(.ARM.Collect$$$$0000000E) for __rt_lib_shutdown_fini @@ -168,8 +179,11 @@ Removing Unused input sections from the image. Removing system_stm32f10x.o(.rrx_text), (6 bytes). Removing system_stm32f10x.o(i.SystemCoreClockUpdate), (164 bytes). Removing system_stm32f10x.o(.data), (20 bytes). + Removing myspi.o(.rev16_text), (4 bytes). + Removing myspi.o(.revsh_text), (4 bytes). + Removing myspi.o(.rrx_text), (6 bytes). -37 unused section(s) (total 876 bytes) removed from the image. +40 unused section(s) (total 890 bytes) removed from the image. ============================================================================== @@ -179,35 +193,35 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry12a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE + ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE ../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE - ../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE ../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE ../fplib/microlib/d2f.c 0x00000000 Number 0 d2f.o ABSOLUTE ../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE ../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE - ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE + ../fplib/microlib/fpepilogue.c 0x00000000 Number 0 fepilogue.o ABSOLUTE ../fplib/microlib/fpfix.c 0x00000000 Number 0 ffixui.o ABSOLUTE ../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltui.o ABSOLUTE ../fplib/microlib/fpflt.c 0x00000000 Number 0 ffltui.o ABSOLUTE - ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE ../fplib/microlib/fpmul.c 0x00000000 Number 0 fmul.o ABSOLUTE + ../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE FileInclude\Batterie.c 0x00000000 Number 0 batterie.o ABSOLUTE FileInclude\Driver_GPIO.c 0x00000000 Number 0 driver_gpio.o ABSOLUTE FileInclude\MyADC.c 0x00000000 Number 0 myadc.o ABSOLUTE @@ -222,6 +236,8 @@ Image Symbol Table FileInclude\\MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE FileInclude\\Plateau.c 0x00000000 Number 0 plateau.o ABSOLUTE FileInclude\\Telecommande.c 0x00000000 Number 0 telecommande.o ABSOLUTE + MyDrivers\MySPI.c 0x00000000 Number 0 myspi.o ABSOLUTE + MyDrivers\\MySPI.c 0x00000000 Number 0 myspi.o ABSOLUTE MyVoile.c 0x00000000 Number 0 myvoile.o ABSOLUTE MyVoile.c 0x00000000 Number 0 myvoile.o ABSOLUTE RTE\Device\STM32F103RB\startup_stm32f10x_md.s 0x00000000 Number 0 startup_stm32f10x_md.o ABSOLUTE @@ -274,51 +290,57 @@ Image Symbol Table i.MyGPIO_Init 0x080009d8 Section 0 driver_gpio.o(i.MyGPIO_Init) i.MyGPIO_Reset 0x08000a8c Section 0 driver_gpio.o(i.MyGPIO_Reset) i.MyGPIO_Set 0x08000a9a Section 0 driver_gpio.o(i.MyGPIO_Set) - i.MyTimer_ActiveIT 0x08000aa8 Section 0 mytimer.o(i.MyTimer_ActiveIT) - i.MyTimer_Base_Init 0x08000b58 Section 0 mytimer.o(i.MyTimer_Base_Init) - i.MyTimer_Base_Start 0x08000bc4 Section 0 mytimer.o(i.MyTimer_Base_Start) - i.MyTimer_PWM 0x08000bd0 Section 0 mytimer.o(i.MyTimer_PWM) - i.MyVoile_Init 0x08000db8 Section 0 myvoile.o(i.MyVoile_Init) - i.Send_Char 0x08000de0 Section 0 telecommande.o(i.Send_Char) - i.Send_Message 0x08000dfc Section 0 telecommande.o(i.Send_Message) - i.SetSysClock 0x08000e14 Section 0 system_stm32f10x.o(i.SetSysClock) - SetSysClock 0x08000e15 Thumb Code 8 system_stm32f10x.o(i.SetSysClock) - i.SetSysClockTo72 0x08000e1c Section 0 system_stm32f10x.o(i.SetSysClockTo72) - SetSysClockTo72 0x08000e1d Thumb Code 214 system_stm32f10x.o(i.SetSysClockTo72) - i.Set_Direction 0x08000efc Section 0 plateau.o(i.Set_Direction) - i.Set_Duty_Cycle 0x08000f24 Section 0 mytimer.o(i.Set_Duty_Cycle) - i.Set_Moteur_Plateau 0x08000f4c Section 0 plateau.o(i.Set_Moteur_Plateau) - i.Set_PWM_PRCT 0x08000f64 Section 0 mytimer.o(i.Set_PWM_PRCT) - i.Set_Vitesse 0x08000f9c Section 0 plateau.o(i.Set_Vitesse) - i.Set_Voile 0x08000fbc Section 0 myvoile.o(i.Set_Voile) - i.SystemInit 0x080010a8 Section 0 system_stm32f10x.o(i.SystemInit) - i.TIM1_UP_IRQHandler 0x08001108 Section 0 mytimer.o(i.TIM1_UP_IRQHandler) - i.TIM2_IRQHandler 0x0800112c Section 0 mytimer.o(i.TIM2_IRQHandler) - i.TIM3_IRQHandler 0x08001150 Section 0 mytimer.o(i.TIM3_IRQHandler) - i.TIM4_IRQHandler 0x08001174 Section 0 mytimer.o(i.TIM4_IRQHandler) - i.USART1_IRQHandler 0x08001198 Section 0 telecommande.o(i.USART1_IRQHandler) - i.__scatterload_copy 0x080011b4 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x080011c2 Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x080011c4 Section 14 handlers.o(i.__scatterload_zeroinit) - i.f 0x080011d4 Section 0 main.o(i.f) - i.handler 0x08001214 Section 0 main.o(i.handler) - i.initADC 0x080012d8 Section 0 myadc.o(i.initADC) - i.main 0x08001314 Section 0 main.o(i.main) - i.read 0x08001388 Section 0 myadc.o(i.read) - i.startADC 0x080013b0 Section 0 myadc.o(i.startADC) - .constdata 0x080013c4 Section 36 mygirouette.o(.constdata) - .constdata 0x080013e8 Section 8 myvoile.o(.constdata) - .conststring 0x080013f0 Section 8 main.o(.conststring) - .data 0x20000000 Section 36 main.o(.data) - .data 0x20000024 Section 16 mytimer.o(.data) - .data 0x20000034 Section 4 mygirouette.o(.data) - .data 0x20000038 Section 16 plateau.o(.data) - .data 0x20000048 Section 4 batterie.o(.data) - .data 0x2000004c Section 8 telecommande.o(.data) - .bss 0x20000054 Section 24 plateau.o(.bss) - .bss 0x2000006c Section 12 batterie.o(.bss) - .bss 0x20000078 Section 52 telecommande.o(.bss) - STACK 0x200000b0 Section 1024 startup_stm32f10x_md.o(STACK) + i.MySPI_Clear_NSS 0x08000aa8 Section 0 myspi.o(i.MySPI_Clear_NSS) + i.MySPI_Init 0x08000ad8 Section 0 myspi.o(i.MySPI_Init) + i.MySPI_Read 0x08000ccc Section 0 myspi.o(i.MySPI_Read) + i.MySPI_Send 0x08000d20 Section 0 myspi.o(i.MySPI_Send) + i.MySPI_Set_NSS 0x08000d70 Section 0 myspi.o(i.MySPI_Set_NSS) + i.MyTimer_ActiveIT 0x08000d9c Section 0 mytimer.o(i.MyTimer_ActiveIT) + i.MyTimer_Base_Init 0x08000e4c Section 0 mytimer.o(i.MyTimer_Base_Init) + i.MyTimer_Base_Start 0x08000eb8 Section 0 mytimer.o(i.MyTimer_Base_Start) + i.MyTimer_PWM 0x08000ec4 Section 0 mytimer.o(i.MyTimer_PWM) + i.MyVoile_Init 0x080010ac Section 0 myvoile.o(i.MyVoile_Init) + i.Send_Char 0x080010d4 Section 0 telecommande.o(i.Send_Char) + i.Send_Message 0x080010f0 Section 0 telecommande.o(i.Send_Message) + i.SetSysClock 0x08001108 Section 0 system_stm32f10x.o(i.SetSysClock) + SetSysClock 0x08001109 Thumb Code 8 system_stm32f10x.o(i.SetSysClock) + i.SetSysClockTo72 0x08001110 Section 0 system_stm32f10x.o(i.SetSysClockTo72) + SetSysClockTo72 0x08001111 Thumb Code 214 system_stm32f10x.o(i.SetSysClockTo72) + i.Set_Direction 0x080011f0 Section 0 plateau.o(i.Set_Direction) + i.Set_Duty_Cycle 0x08001218 Section 0 mytimer.o(i.Set_Duty_Cycle) + i.Set_Moteur_Plateau 0x08001240 Section 0 plateau.o(i.Set_Moteur_Plateau) + i.Set_PWM_PRCT 0x08001258 Section 0 mytimer.o(i.Set_PWM_PRCT) + i.Set_Vitesse 0x08001290 Section 0 plateau.o(i.Set_Vitesse) + i.Set_Voile 0x080012b0 Section 0 myvoile.o(i.Set_Voile) + i.SystemInit 0x0800139c Section 0 system_stm32f10x.o(i.SystemInit) + i.TIM1_UP_IRQHandler 0x080013fc Section 0 mytimer.o(i.TIM1_UP_IRQHandler) + i.TIM2_IRQHandler 0x08001420 Section 0 mytimer.o(i.TIM2_IRQHandler) + i.TIM3_IRQHandler 0x08001444 Section 0 mytimer.o(i.TIM3_IRQHandler) + i.TIM4_IRQHandler 0x08001468 Section 0 mytimer.o(i.TIM4_IRQHandler) + i.USART1_IRQHandler 0x0800148c Section 0 telecommande.o(i.USART1_IRQHandler) + i.__scatterload_copy 0x080014a8 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x080014b6 Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x080014b8 Section 14 handlers.o(i.__scatterload_zeroinit) + i.f 0x080014c8 Section 0 main.o(i.f) + i.handler 0x08001508 Section 0 main.o(i.handler) + i.initADC 0x080015cc Section 0 myadc.o(i.initADC) + i.main 0x08001608 Section 0 main.o(i.main) + i.read 0x080016c8 Section 0 myadc.o(i.read) + i.startADC 0x080016f0 Section 0 myadc.o(i.startADC) + .constdata 0x08001704 Section 36 mygirouette.o(.constdata) + .constdata 0x08001728 Section 8 myvoile.o(.constdata) + .conststring 0x08001730 Section 8 main.o(.conststring) + .data 0x20000000 Section 44 main.o(.data) + .data 0x2000002c Section 16 mytimer.o(.data) + .data 0x2000003c Section 4 mygirouette.o(.data) + .data 0x20000040 Section 16 plateau.o(.data) + .data 0x20000050 Section 4 batterie.o(.data) + .data 0x20000054 Section 8 telecommande.o(.data) + .data 0x2000005c Section 4 myspi.o(.data) + .bss 0x20000060 Section 24 plateau.o(.bss) + .bss 0x20000078 Section 12 batterie.o(.bss) + .bss 0x20000084 Section 52 telecommande.o(.bss) + STACK 0x200000b8 Section 1024 startup_stm32f10x_md.o(STACK) Global Symbols @@ -429,62 +451,70 @@ Image Symbol Table MyGPIO_Init 0x080009d9 Thumb Code 166 driver_gpio.o(i.MyGPIO_Init) MyGPIO_Reset 0x08000a8d Thumb Code 14 driver_gpio.o(i.MyGPIO_Reset) MyGPIO_Set 0x08000a9b Thumb Code 12 driver_gpio.o(i.MyGPIO_Set) - MyTimer_ActiveIT 0x08000aa9 Thumb Code 148 mytimer.o(i.MyTimer_ActiveIT) - MyTimer_Base_Init 0x08000b59 Thumb Code 98 mytimer.o(i.MyTimer_Base_Init) - MyTimer_Base_Start 0x08000bc5 Thumb Code 10 mytimer.o(i.MyTimer_Base_Start) - MyTimer_PWM 0x08000bd1 Thumb Code 472 mytimer.o(i.MyTimer_PWM) - MyVoile_Init 0x08000db9 Thumb Code 32 myvoile.o(i.MyVoile_Init) - Send_Char 0x08000de1 Thumb Code 22 telecommande.o(i.Send_Char) - Send_Message 0x08000dfd Thumb Code 24 telecommande.o(i.Send_Message) - Set_Direction 0x08000efd Thumb Code 34 plateau.o(i.Set_Direction) - Set_Duty_Cycle 0x08000f25 Thumb Code 40 mytimer.o(i.Set_Duty_Cycle) - Set_Moteur_Plateau 0x08000f4d Thumb Code 24 plateau.o(i.Set_Moteur_Plateau) - Set_PWM_PRCT 0x08000f65 Thumb Code 56 mytimer.o(i.Set_PWM_PRCT) - Set_Vitesse 0x08000f9d Thumb Code 22 plateau.o(i.Set_Vitesse) - Set_Voile 0x08000fbd Thumb Code 210 myvoile.o(i.Set_Voile) - SystemInit 0x080010a9 Thumb Code 78 system_stm32f10x.o(i.SystemInit) - TIM1_UP_IRQHandler 0x08001109 Thumb Code 28 mytimer.o(i.TIM1_UP_IRQHandler) - TIM2_IRQHandler 0x0800112d Thumb Code 32 mytimer.o(i.TIM2_IRQHandler) - TIM3_IRQHandler 0x08001151 Thumb Code 28 mytimer.o(i.TIM3_IRQHandler) - TIM4_IRQHandler 0x08001175 Thumb Code 28 mytimer.o(i.TIM4_IRQHandler) - USART1_IRQHandler 0x08001199 Thumb Code 18 telecommande.o(i.USART1_IRQHandler) - __scatterload_copy 0x080011b5 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x080011c3 Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x080011c5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - f 0x080011d5 Thumb Code 54 main.o(i.f) - handler 0x08001215 Thumb Code 126 main.o(i.handler) - initADC 0x080012d9 Thumb Code 50 myadc.o(i.initADC) - main 0x08001315 Thumb Code 94 main.o(i.main) - read 0x08001389 Thumb Code 34 myadc.o(i.read) - startADC 0x080013b1 Thumb Code 14 myadc.o(i.startADC) - Region$$Table$$Base 0x080013f8 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08001418 Number 0 anon$$obj.o(Region$$Table) + MySPI_Clear_NSS 0x08000aa9 Thumb Code 30 myspi.o(i.MySPI_Clear_NSS) + MySPI_Init 0x08000ad9 Thumb Code 480 myspi.o(i.MySPI_Init) + MySPI_Read 0x08000ccd Thumb Code 70 myspi.o(i.MySPI_Read) + MySPI_Send 0x08000d21 Thumb Code 68 myspi.o(i.MySPI_Send) + MySPI_Set_NSS 0x08000d71 Thumb Code 28 myspi.o(i.MySPI_Set_NSS) + MyTimer_ActiveIT 0x08000d9d Thumb Code 148 mytimer.o(i.MyTimer_ActiveIT) + MyTimer_Base_Init 0x08000e4d Thumb Code 98 mytimer.o(i.MyTimer_Base_Init) + MyTimer_Base_Start 0x08000eb9 Thumb Code 10 mytimer.o(i.MyTimer_Base_Start) + MyTimer_PWM 0x08000ec5 Thumb Code 472 mytimer.o(i.MyTimer_PWM) + MyVoile_Init 0x080010ad Thumb Code 32 myvoile.o(i.MyVoile_Init) + Send_Char 0x080010d5 Thumb Code 22 telecommande.o(i.Send_Char) + Send_Message 0x080010f1 Thumb Code 24 telecommande.o(i.Send_Message) + Set_Direction 0x080011f1 Thumb Code 34 plateau.o(i.Set_Direction) + Set_Duty_Cycle 0x08001219 Thumb Code 40 mytimer.o(i.Set_Duty_Cycle) + Set_Moteur_Plateau 0x08001241 Thumb Code 24 plateau.o(i.Set_Moteur_Plateau) + Set_PWM_PRCT 0x08001259 Thumb Code 56 mytimer.o(i.Set_PWM_PRCT) + Set_Vitesse 0x08001291 Thumb Code 22 plateau.o(i.Set_Vitesse) + Set_Voile 0x080012b1 Thumb Code 210 myvoile.o(i.Set_Voile) + SystemInit 0x0800139d Thumb Code 78 system_stm32f10x.o(i.SystemInit) + TIM1_UP_IRQHandler 0x080013fd Thumb Code 28 mytimer.o(i.TIM1_UP_IRQHandler) + TIM2_IRQHandler 0x08001421 Thumb Code 32 mytimer.o(i.TIM2_IRQHandler) + TIM3_IRQHandler 0x08001445 Thumb Code 28 mytimer.o(i.TIM3_IRQHandler) + TIM4_IRQHandler 0x08001469 Thumb Code 28 mytimer.o(i.TIM4_IRQHandler) + USART1_IRQHandler 0x0800148d Thumb Code 18 telecommande.o(i.USART1_IRQHandler) + __scatterload_copy 0x080014a9 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x080014b7 Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x080014b9 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + f 0x080014c9 Thumb Code 54 main.o(i.f) + handler 0x08001509 Thumb Code 126 main.o(i.handler) + initADC 0x080015cd Thumb Code 50 myadc.o(i.initADC) + main 0x08001609 Thumb Code 158 main.o(i.main) + read 0x080016c9 Thumb Code 34 myadc.o(i.read) + startADC 0x080016f1 Thumb Code 14 myadc.o(i.startADC) + Region$$Table$$Base 0x08001738 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x08001758 Number 0 anon$$obj.o(Region$$Table) droite 0x20000000 Data 4 main.o(.data) b 0x20000004 Data 4 main.o(.data) testBatterie 0x20000008 Data 4 main.o(.data) bat 0x2000000c Data 4 main.o(.data) - counter 0x20000010 Data 4 main.o(.data) - visuBatterie 0x20000014 Data 4 main.o(.data) - TIM 0x20000018 Data 8 main.o(.data) - Data 0x20000020 Data 4 main.o(.data) - ptr1 0x20000024 Data 4 mytimer.o(.data) - ptr2 0x20000028 Data 4 mytimer.o(.data) - ptr3 0x2000002c Data 4 mytimer.o(.data) - ptr4 0x20000030 Data 4 mytimer.o(.data) - x 0x20000034 Data 4 mygirouette.o(.data) - channel 0x20000038 Data 1 plateau.o(.data) - TIMPlateau 0x2000003c Data 8 plateau.o(.data) - DataPlateau 0x20000044 Data 4 plateau.o(.data) - nivBatterie 0x20000048 Data 4 batterie.o(.data) - Usart 0x2000004c Data 4 telecommande.o(.data) - ptr 0x20000050 Data 4 telecommande.o(.data) - GPIOC9 0x20000054 Data 12 plateau.o(.bss) - GPIOB1 0x20000060 Data 12 plateau.o(.bss) - GPIOC0 0x2000006c Data 12 batterie.o(.bss) - USART 0x20000078 Data 28 telecommande.o(.bss) - GPIOA10 0x20000094 Data 12 telecommande.o(.bss) - GPIOA9 0x200000a0 Data 12 telecommande.o(.bss) - __initial_sp 0x200004b0 Data 0 startup_stm32f10x_md.o(STACK) + ID_acc 0x20000010 Data 4 main.o(.data) + ID_acc2 0x20000014 Data 4 main.o(.data) + counter 0x20000018 Data 4 main.o(.data) + visuBatterie 0x2000001c Data 4 main.o(.data) + TIM 0x20000020 Data 8 main.o(.data) + Data 0x20000028 Data 4 main.o(.data) + ptr1 0x2000002c Data 4 mytimer.o(.data) + ptr2 0x20000030 Data 4 mytimer.o(.data) + ptr3 0x20000034 Data 4 mytimer.o(.data) + ptr4 0x20000038 Data 4 mytimer.o(.data) + x 0x2000003c Data 4 mygirouette.o(.data) + channel 0x20000040 Data 1 plateau.o(.data) + TIMPlateau 0x20000044 Data 8 plateau.o(.data) + DataPlateau 0x2000004c Data 4 plateau.o(.data) + nivBatterie 0x20000050 Data 4 batterie.o(.data) + Usart 0x20000054 Data 4 telecommande.o(.data) + ptr 0x20000058 Data 4 telecommande.o(.data) + ActiveSPI 0x2000005c Data 4 myspi.o(.data) + GPIOC9 0x20000060 Data 12 plateau.o(.bss) + GPIOB1 0x2000006c Data 12 plateau.o(.bss) + GPIOC0 0x20000078 Data 12 batterie.o(.bss) + USART 0x20000084 Data 28 telecommande.o(.bss) + GPIOA10 0x200000a0 Data 12 telecommande.o(.bss) + GPIOA9 0x200000ac Data 12 telecommande.o(.bss) + __initial_sp 0x200004b8 Data 0 startup_stm32f10x_md.o(STACK) @@ -494,109 +524,114 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x0000146c, Max: 0x00020000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000017b8, Max: 0x00020000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001418, Max: 0x00020000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00001758, Max: 0x00020000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x08000000 0x08000000 0x000000ec Data RO 503 RESET startup_stm32f10x_md.o - 0x080000ec 0x080000ec 0x00000000 Code RO 554 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 575 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 578 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 580 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 582 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 583 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 590 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) - 0x08000100 0x08000100 0x00000000 Code RO 585 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) - 0x08000100 0x08000100 0x00000000 Code RO 587 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) - 0x08000100 0x08000100 0x00000004 Code RO 576 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) - 0x08000104 0x08000104 0x00000024 Code RO 504 .text startup_stm32f10x_md.o - 0x08000128 0x08000128 0x00000064 Code RO 557 .text mf_w.l(fmul.o) - 0x0800018c 0x0800018c 0x0000014e Code RO 559 .text mf_w.l(dadd.o) - 0x080002da 0x080002da 0x000000e4 Code RO 561 .text mf_w.l(dmul.o) - 0x080003be 0x080003be 0x000000de Code RO 563 .text mf_w.l(ddiv.o) - 0x0800049c 0x0800049c 0x0000000a Code RO 565 .text mf_w.l(ffltui.o) - 0x080004a6 0x080004a6 0x0000001a Code RO 567 .text mf_w.l(dfltui.o) - 0x080004c0 0x080004c0 0x00000028 Code RO 569 .text mf_w.l(ffixui.o) - 0x080004e8 0x080004e8 0x00000030 Code RO 571 .text mf_w.l(cdcmple.o) - 0x08000518 0x08000518 0x00000038 Code RO 573 .text mf_w.l(d2f.o) - 0x08000550 0x08000550 0x0000001e Code RO 591 .text mc_w.l(llshl.o) - 0x0800056e 0x0800056e 0x00000024 Code RO 593 .text mc_w.l(llsshr.o) - 0x08000592 0x08000592 0x00000000 Code RO 595 .text mc_w.l(iusefp.o) - 0x08000592 0x08000592 0x0000006e Code RO 596 .text mf_w.l(fepilogue.o) - 0x08000600 0x08000600 0x000000ba Code RO 598 .text mf_w.l(depilogue.o) + 0x08000000 0x08000000 0x000000ec Data RO 506 RESET startup_stm32f10x_md.o + 0x080000ec 0x080000ec 0x00000000 Code RO 574 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 595 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 598 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 600 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 602 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 603 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 610 .ARM.Collect$$$$0000000E mc_w.l(entry12b.o) + 0x08000100 0x08000100 0x00000000 Code RO 605 .ARM.Collect$$$$0000000F mc_w.l(entry10a.o) + 0x08000100 0x08000100 0x00000000 Code RO 607 .ARM.Collect$$$$00000011 mc_w.l(entry11a.o) + 0x08000100 0x08000100 0x00000004 Code RO 596 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x08000104 0x08000104 0x00000024 Code RO 507 .text startup_stm32f10x_md.o + 0x08000128 0x08000128 0x00000064 Code RO 577 .text mf_w.l(fmul.o) + 0x0800018c 0x0800018c 0x0000014e Code RO 579 .text mf_w.l(dadd.o) + 0x080002da 0x080002da 0x000000e4 Code RO 581 .text mf_w.l(dmul.o) + 0x080003be 0x080003be 0x000000de Code RO 583 .text mf_w.l(ddiv.o) + 0x0800049c 0x0800049c 0x0000000a Code RO 585 .text mf_w.l(ffltui.o) + 0x080004a6 0x080004a6 0x0000001a Code RO 587 .text mf_w.l(dfltui.o) + 0x080004c0 0x080004c0 0x00000028 Code RO 589 .text mf_w.l(ffixui.o) + 0x080004e8 0x080004e8 0x00000030 Code RO 591 .text mf_w.l(cdcmple.o) + 0x08000518 0x08000518 0x00000038 Code RO 593 .text mf_w.l(d2f.o) + 0x08000550 0x08000550 0x0000001e Code RO 611 .text mc_w.l(llshl.o) + 0x0800056e 0x0800056e 0x00000024 Code RO 613 .text mc_w.l(llsshr.o) + 0x08000592 0x08000592 0x00000000 Code RO 615 .text mc_w.l(iusefp.o) + 0x08000592 0x08000592 0x0000006e Code RO 616 .text mf_w.l(fepilogue.o) + 0x08000600 0x08000600 0x000000ba Code RO 618 .text mf_w.l(depilogue.o) 0x080006ba 0x080006ba 0x00000002 PAD - 0x080006bc 0x080006bc 0x00000024 Code RO 600 .text mc_w.l(init.o) - 0x080006e0 0x080006e0 0x00000020 Code RO 602 .text mc_w.l(llushr.o) - 0x08000700 0x08000700 0x00000028 Code RO 289 i.EXTI0_IRQHandler mygirouette.o - 0x08000728 0x08000728 0x0000000e Code RO 290 i.Get_Angle mygirouette.o + 0x080006bc 0x080006bc 0x00000024 Code RO 620 .text mc_w.l(init.o) + 0x080006e0 0x080006e0 0x00000020 Code RO 622 .text mc_w.l(llushr.o) + 0x08000700 0x08000700 0x00000028 Code RO 292 i.EXTI0_IRQHandler mygirouette.o + 0x08000728 0x08000728 0x0000000e Code RO 293 i.Get_Angle mygirouette.o 0x08000736 0x08000736 0x00000002 PAD - 0x08000738 0x08000738 0x00000028 Code RO 412 i.Get_Batterie batterie.o - 0x08000760 0x08000760 0x00000006 Code RO 97 i.Get_Max_Duty mytimer.o + 0x08000738 0x08000738 0x00000028 Code RO 415 i.Get_Batterie batterie.o + 0x08000760 0x08000760 0x00000006 Code RO 100 i.Get_Max_Duty mytimer.o 0x08000766 0x08000766 0x00000002 PAD - 0x08000768 0x08000768 0x00000028 Code RO 413 i.Init_Batterie batterie.o - 0x08000790 0x08000790 0x000000f4 Code RO 291 i.Init_Girouette mygirouette.o - 0x08000884 0x08000884 0x00000038 Code RO 449 i.Init_Message_Reception telecommande.o - 0x080008bc 0x080008bc 0x00000080 Code RO 363 i.Init_Plateau plateau.o - 0x0800093c 0x0800093c 0x0000009c Code RO 450 i.Init_USART telecommande.o - 0x080009d8 0x080009d8 0x000000b4 Code RO 241 i.MyGPIO_Init driver_gpio.o - 0x08000a8c 0x08000a8c 0x0000000e Code RO 243 i.MyGPIO_Reset driver_gpio.o - 0x08000a9a 0x08000a9a 0x0000000c Code RO 244 i.MyGPIO_Set driver_gpio.o + 0x08000768 0x08000768 0x00000028 Code RO 416 i.Init_Batterie batterie.o + 0x08000790 0x08000790 0x000000f4 Code RO 294 i.Init_Girouette mygirouette.o + 0x08000884 0x08000884 0x00000038 Code RO 452 i.Init_Message_Reception telecommande.o + 0x080008bc 0x080008bc 0x00000080 Code RO 366 i.Init_Plateau plateau.o + 0x0800093c 0x0800093c 0x0000009c Code RO 453 i.Init_USART telecommande.o + 0x080009d8 0x080009d8 0x000000b4 Code RO 244 i.MyGPIO_Init driver_gpio.o + 0x08000a8c 0x08000a8c 0x0000000e Code RO 246 i.MyGPIO_Reset driver_gpio.o + 0x08000a9a 0x08000a9a 0x0000000c Code RO 247 i.MyGPIO_Set driver_gpio.o 0x08000aa6 0x08000aa6 0x00000002 PAD - 0x08000aa8 0x08000aa8 0x000000b0 Code RO 99 i.MyTimer_ActiveIT mytimer.o - 0x08000b58 0x08000b58 0x0000006c Code RO 100 i.MyTimer_Base_Init mytimer.o - 0x08000bc4 0x08000bc4 0x0000000a Code RO 101 i.MyTimer_Base_Start mytimer.o - 0x08000bce 0x08000bce 0x00000002 PAD - 0x08000bd0 0x08000bd0 0x000001e8 Code RO 103 i.MyTimer_PWM mytimer.o - 0x08000db8 0x08000db8 0x00000028 Code RO 332 i.MyVoile_Init myvoile.o - 0x08000de0 0x08000de0 0x0000001c Code RO 451 i.Send_Char telecommande.o - 0x08000dfc 0x08000dfc 0x00000018 Code RO 452 i.Send_Message telecommande.o - 0x08000e14 0x08000e14 0x00000008 Code RO 511 i.SetSysClock system_stm32f10x.o - 0x08000e1c 0x08000e1c 0x000000e0 Code RO 512 i.SetSysClockTo72 system_stm32f10x.o - 0x08000efc 0x08000efc 0x00000028 Code RO 364 i.Set_Direction plateau.o - 0x08000f24 0x08000f24 0x00000028 Code RO 104 i.Set_Duty_Cycle mytimer.o - 0x08000f4c 0x08000f4c 0x00000018 Code RO 365 i.Set_Moteur_Plateau plateau.o - 0x08000f64 0x08000f64 0x00000038 Code RO 105 i.Set_PWM_PRCT mytimer.o - 0x08000f9c 0x08000f9c 0x00000020 Code RO 366 i.Set_Vitesse plateau.o - 0x08000fbc 0x08000fbc 0x000000ec Code RO 333 i.Set_Voile myvoile.o - 0x080010a8 0x080010a8 0x00000060 Code RO 514 i.SystemInit system_stm32f10x.o - 0x08001108 0x08001108 0x00000024 Code RO 106 i.TIM1_UP_IRQHandler mytimer.o - 0x0800112c 0x0800112c 0x00000024 Code RO 107 i.TIM2_IRQHandler mytimer.o - 0x08001150 0x08001150 0x00000024 Code RO 108 i.TIM3_IRQHandler mytimer.o - 0x08001174 0x08001174 0x00000024 Code RO 109 i.TIM4_IRQHandler mytimer.o - 0x08001198 0x08001198 0x0000001c Code RO 453 i.USART1_IRQHandler telecommande.o - 0x080011b4 0x080011b4 0x0000000e Code RO 606 i.__scatterload_copy mc_w.l(handlers.o) - 0x080011c2 0x080011c2 0x00000002 Code RO 607 i.__scatterload_null mc_w.l(handlers.o) - 0x080011c4 0x080011c4 0x0000000e Code RO 608 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x080011d2 0x080011d2 0x00000002 PAD - 0x080011d4 0x080011d4 0x00000040 Code RO 4 i.f main.o - 0x08001214 0x08001214 0x000000c4 Code RO 5 i.handler main.o - 0x080012d8 0x080012d8 0x0000003c Code RO 202 i.initADC myadc.o - 0x08001314 0x08001314 0x00000074 Code RO 6 i.main main.o - 0x08001388 0x08001388 0x00000028 Code RO 203 i.read myadc.o - 0x080013b0 0x080013b0 0x00000014 Code RO 204 i.startADC myadc.o - 0x080013c4 0x080013c4 0x00000024 Data RO 292 .constdata mygirouette.o - 0x080013e8 0x080013e8 0x00000008 Data RO 334 .constdata myvoile.o - 0x080013f0 0x080013f0 0x00000008 Data RO 7 .conststring main.o - 0x080013f8 0x080013f8 0x00000020 Data RO 604 Region$$Table anon$$obj.o + 0x08000aa8 0x08000aa8 0x00000030 Code RO 560 i.MySPI_Clear_NSS Lib_Com_Periph_2022.lib(myspi.o) + 0x08000ad8 0x08000ad8 0x000001f4 Code RO 561 i.MySPI_Init Lib_Com_Periph_2022.lib(myspi.o) + 0x08000ccc 0x08000ccc 0x00000054 Code RO 562 i.MySPI_Read Lib_Com_Periph_2022.lib(myspi.o) + 0x08000d20 0x08000d20 0x00000050 Code RO 563 i.MySPI_Send Lib_Com_Periph_2022.lib(myspi.o) + 0x08000d70 0x08000d70 0x0000002c Code RO 564 i.MySPI_Set_NSS Lib_Com_Periph_2022.lib(myspi.o) + 0x08000d9c 0x08000d9c 0x000000b0 Code RO 102 i.MyTimer_ActiveIT mytimer.o + 0x08000e4c 0x08000e4c 0x0000006c Code RO 103 i.MyTimer_Base_Init mytimer.o + 0x08000eb8 0x08000eb8 0x0000000a Code RO 104 i.MyTimer_Base_Start mytimer.o + 0x08000ec2 0x08000ec2 0x00000002 PAD + 0x08000ec4 0x08000ec4 0x000001e8 Code RO 106 i.MyTimer_PWM mytimer.o + 0x080010ac 0x080010ac 0x00000028 Code RO 335 i.MyVoile_Init myvoile.o + 0x080010d4 0x080010d4 0x0000001c Code RO 454 i.Send_Char telecommande.o + 0x080010f0 0x080010f0 0x00000018 Code RO 455 i.Send_Message telecommande.o + 0x08001108 0x08001108 0x00000008 Code RO 514 i.SetSysClock system_stm32f10x.o + 0x08001110 0x08001110 0x000000e0 Code RO 515 i.SetSysClockTo72 system_stm32f10x.o + 0x080011f0 0x080011f0 0x00000028 Code RO 367 i.Set_Direction plateau.o + 0x08001218 0x08001218 0x00000028 Code RO 107 i.Set_Duty_Cycle mytimer.o + 0x08001240 0x08001240 0x00000018 Code RO 368 i.Set_Moteur_Plateau plateau.o + 0x08001258 0x08001258 0x00000038 Code RO 108 i.Set_PWM_PRCT mytimer.o + 0x08001290 0x08001290 0x00000020 Code RO 369 i.Set_Vitesse plateau.o + 0x080012b0 0x080012b0 0x000000ec Code RO 336 i.Set_Voile myvoile.o + 0x0800139c 0x0800139c 0x00000060 Code RO 517 i.SystemInit system_stm32f10x.o + 0x080013fc 0x080013fc 0x00000024 Code RO 109 i.TIM1_UP_IRQHandler mytimer.o + 0x08001420 0x08001420 0x00000024 Code RO 110 i.TIM2_IRQHandler mytimer.o + 0x08001444 0x08001444 0x00000024 Code RO 111 i.TIM3_IRQHandler mytimer.o + 0x08001468 0x08001468 0x00000024 Code RO 112 i.TIM4_IRQHandler mytimer.o + 0x0800148c 0x0800148c 0x0000001c Code RO 456 i.USART1_IRQHandler telecommande.o + 0x080014a8 0x080014a8 0x0000000e Code RO 626 i.__scatterload_copy mc_w.l(handlers.o) + 0x080014b6 0x080014b6 0x00000002 Code RO 627 i.__scatterload_null mc_w.l(handlers.o) + 0x080014b8 0x080014b8 0x0000000e Code RO 628 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x080014c6 0x080014c6 0x00000002 PAD + 0x080014c8 0x080014c8 0x00000040 Code RO 4 i.f main.o + 0x08001508 0x08001508 0x000000c4 Code RO 5 i.handler main.o + 0x080015cc 0x080015cc 0x0000003c Code RO 205 i.initADC myadc.o + 0x08001608 0x08001608 0x000000c0 Code RO 6 i.main main.o + 0x080016c8 0x080016c8 0x00000028 Code RO 206 i.read myadc.o + 0x080016f0 0x080016f0 0x00000014 Code RO 207 i.startADC myadc.o + 0x08001704 0x08001704 0x00000024 Data RO 295 .constdata mygirouette.o + 0x08001728 0x08001728 0x00000008 Data RO 337 .constdata myvoile.o + 0x08001730 0x08001730 0x00000008 Data RO 7 .conststring main.o + 0x08001738 0x08001738 0x00000020 Data RO 624 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001418, Size: 0x000004b0, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08001758, Size: 0x000004b8, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08001418 0x00000024 Data RW 8 .data main.o - 0x20000024 0x0800143c 0x00000010 Data RW 110 .data mytimer.o - 0x20000034 0x0800144c 0x00000004 Data RW 293 .data mygirouette.o - 0x20000038 0x08001450 0x00000010 Data RW 368 .data plateau.o - 0x20000048 0x08001460 0x00000004 Data RW 415 .data batterie.o - 0x2000004c 0x08001464 0x00000008 Data RW 455 .data telecommande.o - 0x20000054 - 0x00000018 Zero RW 367 .bss plateau.o - 0x2000006c - 0x0000000c Zero RW 414 .bss batterie.o - 0x20000078 - 0x00000034 Zero RW 454 .bss telecommande.o - 0x200000ac 0x0800146c 0x00000004 PAD - 0x200000b0 - 0x00000400 Zero RW 501 STACK startup_stm32f10x_md.o + 0x20000000 0x08001758 0x0000002c Data RW 8 .data main.o + 0x2000002c 0x08001784 0x00000010 Data RW 113 .data mytimer.o + 0x2000003c 0x08001794 0x00000004 Data RW 296 .data mygirouette.o + 0x20000040 0x08001798 0x00000010 Data RW 371 .data plateau.o + 0x20000050 0x080017a8 0x00000004 Data RW 418 .data batterie.o + 0x20000054 0x080017ac 0x00000008 Data RW 458 .data telecommande.o + 0x2000005c 0x080017b4 0x00000004 Data RW 565 .data Lib_Com_Periph_2022.lib(myspi.o) + 0x20000060 - 0x00000018 Zero RW 370 .bss plateau.o + 0x20000078 - 0x0000000c Zero RW 417 .bss batterie.o + 0x20000084 - 0x00000034 Zero RW 457 .bss telecommande.o + 0x200000b8 - 0x00000400 Zero RW 504 STACK startup_stm32f10x_md.o ============================================================================== @@ -608,7 +643,7 @@ Image component sizes 80 12 0 4 12 1108 batterie.o 206 14 0 0 0 1822 driver_gpio.o - 376 102 8 36 0 209023 main.o + 452 114 8 44 0 209146 main.o 120 22 0 0 0 1248 myadc.o 298 32 36 4 0 1612 mygirouette.o 1028 82 0 16 0 7434 mytimer.o @@ -619,14 +654,15 @@ Image component sizes 292 54 0 8 52 3186 telecommande.o ---------------------------------------------------------------------- - 3272 434 320 84 1116 231734 Object Totals + 3348 446 320 92 1112 231857 Object Totals 0 0 32 0 0 0 (incl. Generated) - 8 0 0 0 4 0 (incl. Padding) + 8 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name + 756 80 0 4 0 348 myspi.o 0 0 0 0 0 0 entry.o 0 0 0 0 0 0 entry10a.o 0 0 0 0 0 0 entry11a.o @@ -655,18 +691,19 @@ Image component sizes 100 0 0 0 0 76 fmul.o ---------------------------------------------------------------------- - 1552 16 0 0 0 1404 Library Totals + 2308 96 0 4 0 1752 Library Totals 4 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- Code (inc. data) RO Data RW Data ZI Data Debug Library Name + 756 80 0 4 0 348 Lib_Com_Periph_2022.lib 188 16 0 0 0 272 mc_w.l 1360 0 0 0 0 1132 mf_w.l ---------------------------------------------------------------------- - 1552 16 0 0 0 1404 Library Totals + 2308 96 0 4 0 1752 Library Totals ---------------------------------------------------------------------- @@ -675,15 +712,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 4824 450 320 84 1116 230690 Grand Totals - 4824 450 320 84 1116 230690 ELF Image Totals - 4824 450 320 84 0 0 ROM Totals + 5656 542 320 96 1112 230901 Grand Totals + 5656 542 320 96 1112 230901 ELF Image Totals + 5656 542 320 96 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 5144 ( 5.02kB) - Total RW Size (RW Data + ZI Data) 1200 ( 1.17kB) - Total ROM Size (Code + RO Data + RW Data) 5228 ( 5.11kB) + Total RO Size (Code + RO Data) 5976 ( 5.84kB) + Total RW Size (RW Data + ZI Data) 1208 ( 1.18kB) + Total ROM Size (Code + RO Data + RW Data) 6072 ( 5.93kB) ============================================================================== diff --git a/Objects/Projet1_Réel.dep b/Objects/Projet1_Réel.dep index 48e60ea..e84bbe8 100644 --- a/Objects/Projet1_Réel.dep +++ b/Objects/Projet1_Réel.dep @@ -1,6 +1,6 @@ Dependencies for Project 'Projet1', Target 'Réel': (DO NOT MODIFY !) CompilerVersion: 5060960::V5.06 update 7 (build 960)::.\ARMCC -F (.\Sources\main.c)(0x6380E896)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\FileInclude -I.\RTE\Device\STM32F103RB -I.\RTE\_R_el -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -o .\objects\main.o --omf_browse .\objects\main.crf --depend .\objects\main.d) +F (.\Sources\main.c)(0x6380FB44)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\FileInclude -I.\RTE\Device\STM32F103RB -I.\RTE\_R_el -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -o .\objects\main.o --omf_browse .\objects\main.crf --depend .\objects\main.d) I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h)(0x58258CCC) I (.\RTE\_R_el\RTE_Components.h)(0x6380E338) I (C:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include\core_cm3.h)(0x5E8F2582) @@ -17,6 +17,7 @@ I (.\FileInclude\Telecommande.h)(0x6380E338) I (.\FileInclude\Batterie.h)(0x6380E338) I (.\FileInclude\MyGirouette.h)(0x63727F20) I (.\FileInclude\MyVoile.h)(0x63727F20) +I (.\FileInclude\MySPI.h)(0x634E5AE0) F (.\FileInclude\MyTimer.c)(0x6380E338)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\FileInclude -I.\RTE\Device\STM32F103RB -I.\RTE\_R_el -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -o .\objects\mytimer.o --omf_browse .\objects\mytimer.crf --depend .\objects\mytimer.d) I (FileInclude\MyTimer.h)(0x6380E338) I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\stm32f10x.h)(0x58258CCC) @@ -111,6 +112,7 @@ I (C:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include\system_ I (FileInclude\Driver_GPIO.h)(0x6380E338) I (FileInclude\Plateau.h)(0x6380E338) I (FileInclude\Telecommande.h)(0x6380E338) +F (.\FileInclude\Lib_Com_Periph_2022.lib)(0x634E68C6)() F (RTE\Device\STM32F103RB\RTE_Device.h)(0x6380E338)() F (RTE\Device\STM32F103RB\startup_stm32f10x_md.s)(0x6380E338)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\Device\STM32F103RB -I.\RTE\_R_el -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 534" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --pd "_RTE_ SETA 1" --list .\listings\startup_stm32f10x_md.lst --xref -o .\objects\startup_stm32f10x_md.o --depend .\objects\startup_stm32f10x_md.d) F (RTE\Device\STM32F103RB\system_stm32f10x.c)(0x63727F21)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O0 --apcs=interwork --split_sections -I .\FileInclude -I.\RTE\Device\STM32F103RB -I.\RTE\_R_el -IC:\Programdata\Keil\Arm\Packs\ARM\CMSIS\5.7.0\CMSIS\Core\Include -IC:\Programdata\Keil\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F10X_MD -D_RTE_ -o .\objects\system_stm32f10x.o --omf_browse .\objects\system_stm32f10x.crf --depend .\objects\system_stm32f10x.d) diff --git a/Objects/Projet1_Simulation.axf b/Objects/Projet1_Simulation.axf index 91eada2..cae0f27 100644 Binary files a/Objects/Projet1_Simulation.axf and b/Objects/Projet1_Simulation.axf differ diff --git a/Objects/Projet1_Simulation.build_log.htm b/Objects/Projet1_Simulation.build_log.htm index 622c549..ffe3358 100644 --- a/Objects/Projet1_Simulation.build_log.htm +++ b/Objects/Projet1_Simulation.build_log.htm @@ -27,19 +27,19 @@ Project File Date: 11/25/2022

Output:

*** Using Compiler 'V5.06 update 7 (build 960)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Rebuild target 'Réel' -compiling Driver_GPIO.c... compiling MyVoile.c... compiling MyADC.c... -compiling Plateau.c... +compiling Driver_GPIO.c... compiling MyTimer.c... compiling MyGirouette.c... compiling main.c... +compiling Plateau.c... assembling startup_stm32f10x_md.s... compiling Batterie.c... -compiling Telecommande.c... compiling system_stm32f10x.c... +compiling Telecommande.c... linking... -Program Size: Code=4824 RO-data=320 RW-data=84 ZI-data=1116 +Program Size: Code=5656 RO-data=320 RW-data=96 ZI-data=1112 ".\Objects\Projet1_Simulation.axf" - 0 Error(s), 0 Warning(s).

Software Packages used:

diff --git a/Objects/Projet1_Simulation.htm b/Objects/Projet1_Simulation.htm index 2b45d0a..a3d81e4 100644 --- a/Objects/Projet1_Simulation.htm +++ b/Objects/Projet1_Simulation.htm @@ -3,7 +3,7 @@ Static Call Graph - [.\Objects\Projet1_Simulation.axf]

Static Call Graph for image .\Objects\Projet1_Simulation.axf


-

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Fri Nov 25 18:01:54 2022 +

#<CALLGRAPH># ARM Linker, 5060960: Last Updated: Fri Nov 25 18:28:39 2022

Maximum Stack Usage = 144 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

@@ -92,7 +92,7 @@ Global Symbols

__main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
[Address Reference Count : 1]

-

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

_main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

_main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))

[Calls]