77Fermer79
ExtendeDLe 24/10/2009 à 19:57
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.