hwti (./69) :
Nucleus je ne pense pas que ça nous soit si utile que ça, c'est très bas niveau.
J'ai accès à des sources/docs Nucleus aussi (un peu modifiées et non diffusables) au cas où.
Pour être plus précis, ça permettrait :
- De voir à partir de quel moment on entre dans ces couches basses en traçant des sous-fonctions au désassembleur
- De comprendre le layout mémoire
- De comprendre la gestion des interuptions
- De mettre la main sur les fonctions POSIX qui s'appuient dessus (pthread & co)
En voilà plusieurs :
MakeName (0X11800000, "INT_Vectors");
MakeName (0X1181F1B4, "INT_System_SP");
MakeName (0X1181F1BC, "INT_First_Avail_Mem");
MakeName (0X1181F220, "INT_Initialize");
MakeName (0X1181F280, "INT_Vectors_Loaded");
MakeName (0X1181F28C, "INT_Setup_Vector");
MakeName (0X1181F2CC, "INT_Retrieve_Shell");
MakeName (0X1181F2DC, "INT_Undef_Inst");
MakeName (0X1181F314, "INT_Software");
MakeName (0X1181F350, "INT_Prefetch_Abort");
MakeName (0X1181F390, "INT_Data_Abort");
MakeName (0X1181F41C, "INT_Reserved");
MakeName (0X1181F454, "INT_IRQ_Shell");
MakeName (0X1181F55C, "INT_C_Memory_Initialize");
MakeName (0X1181F56C, "INT_ROM_Data_Copy");
MakeName (0X1181F598, "INT_Clear_BSS");
MakeName (0X1181F5B4, "INT_System_Initialize");
MakeName (0X1181F650, "INT_HW_Memory_Initialize");
MakeName (0X1181F870, "INT_Target_Initialize");
MakeName (0X1181F88C, "INT_IRQ");
MakeName (0X1181F8B0, "INT_FIQ");
MakeName (0X1181F8C0, "INT_Interrupts_Initialize");
MakeName (0X1181F950, "INT_Timer_Initialize");
MakeName (0X11987790, "INT_IRQ_Vectors");
MakeNameEx(0X1181F584, "INT_ROM_Vars_Copy", SN_LOCAL);
MakeName (0X11800050, "Nucleus_Application_Initialize");
MakeName (0X11808C54, "CSC_Place_On_List");
MakeName (0X11808C84, "CSC_Priority_Place_On_List");
MakeName (0X11808D04, "CSC_Remove_From_List");
MakeName (0X1181E170, "TCC_Create_HISR");
MakeName (0X1181E248, "TCC_Delete_Task");
MakeName (0X1181E2A0, "TCC_Delete_HISR");
MakeName (0X1181E2F8, "TCC_Reset_Task");
MakeName (0X1181E378, "TCC_Resume_Task");
MakeName (0X1181E538, "TCC_Create_Task");
MakeName (0X1181E6F8, "TCC_Resume_Service");
MakeName (0X1181E778, "TCC_Suspend_Task");
MakeName (0X1181E974, "TCC_Terminate_Task");
MakeName (0X1181EAE4, "TCC_Suspend_Service");
MakeName (0X1181EB34, "TCC_Task_Timeout");
MakeName (0X1181EC10, "TCC_Task_Sleep");
MakeName (0X1181EC60, "TCC_Relinquish");
MakeName (0X1181ECDC, "TCC_Time_Slice");
MakeName (0X1181ED70, "TCC_Current_Task_Pointer");
MakeName (0X1181EDA0, "TCC_Current_HISR_Pointer");
MakeName (0X1181EE2C, "TCC_Signal_Shell");
MakeName (0X1181F008, "TCC_Dispatch_LISR");
MakeName (0X1181F060, "TCC_Register_LISR");
MakeName (0X1181FB78, "TCT_Local_Control_Interrupts");
MakeName (0X1181FB9C, "TCT_Restore_Interrupts");
MakeName (0X1181FBC0, "TCT_Build_Task_Stack");
MakeName (0X1181FC6C, "TCT_Build_HISR_Stack");
MakeName (0X1181FCE8, "TCT_Build_Signal_Frame");
MakeName (0X1181FD58, "TCT_Check_Stack");
MakeName (0X1181FDB4, "TCT_Schedule");
MakeName (0X1181FE38, "TCT_Control_To_Thread");
MakeName (0X1181FE90, "TCT_Control_To_System");
MakeName (0X1181FF08, "TCT_Signal_Exit");
MakeName (0X1181FF70, "TCT_Current_Thread");
MakeName (0X1181FF7C, "TCT_Set_Execute_Task");
MakeName (0X1181FF88, "TCT_Protect");
MakeName (0X1181FFF0, "TCT_Unprotect");
MakeName (0X11820044, "TCT_Not_Protected");
MakeName (0X1182004C, "TCT_Skip_Unprotect");
MakeName (0X11820050, "TCT_Unprotect_Specific");
MakeName (0X118200E4, "TCT_Set_Current_Protect");
MakeName (0X118200F8, "TCT_Protect_Switch");
MakeName (0X11820140, "TCT_Schedule_Protected");
MakeName (0X118201A0, "TCT_Interrupt_Context_Save");
MakeName (0X118202B4, "TCT_Interrupt_Context_Restore");
MakeName (0X11820300, "TCT_Activate_HISR");
MakeName (0X11820390, "TCT_HISR_Shell");
MakeNameEx(0X1181FE2C, "TCT_Schedule_Thread", SN_LOCAL);
MakeNameEx(0X1181FE6C, "TCT_No_Start_TS_1", SN_LOCAL);
MakeNameEx(0X1181FE88, "TCT_Interrupt_Resume", SN_LOCAL);
MakeNameEx(0X11820038, "TCT_Not_Waiting_Unpr", SN_LOCAL);
MakeName (0X1182049C, "TMT_Set_Clock");
MakeName (0X118204A8, "TMT_Retrieve_Clock");
MakeName (0X118204B4, "TMT_Read_Timer");
MakeName (0X118204C0, "TMT_Enable_Timer");
MakeName (0X118204D8, "TMT_Adjust_Timer");
MakeName (0X118204FC, "TMT_Disable_Timer");
MakeName (0X1182050C, "TMT_Retrieve_TS_Task");
MakeName (0X11820518, "TMT_Timer_Interrupt");
MakeName (0X118205A8, "TMT_No_Time_Slice_Active");
Nucleus_Application_Initialize est une fonction haut-niveau spécifique Nspire basée sur un template de chargement d'application Nucleus.
INT_Vectors pointe sur une table d'interruptions ARM.