嵌入式linux开发 (三十三) 内存管理2.0(4) rt-thread内存管理

//
static char thread1_stack[1024];
struct rt_thread thread1;
rtthread_startup
	rt_application_init
	rt_system_scheduler_start
		
	    rt_thread_init(&thread1,
	                   "led1",
	                   rt_thread_entry1,
	                   RT_NULL,
	                   &thread1_stack[0],
	                   sizeof(thread1_stack),11,5);
	    rt_thread_startup(&thread1);
整体来说,布局的话,和ucos 一样
flash
	.code .ro-data // 应用程序的和系统的混在一起了
ram
	.data .bss .heap  TCB(应用程序) // 应用程序的和系统的混在一起了
		// 注意: TCB在.data里面 
		// OS_EXT  OS_TCB            OSTCBTbl[OS_MAX_TASKS + OS_N_SYS_TASKS];   /* Table of TCBs                  */
	.stack(内核) .stack(应用程序1) .stack(应用程序2) ...  // 应用程序的和内核的分开了
	// freertos 的 应用程序stack 是在 .data中的 
	// OS_STK START_TASK_STK[START_STK_SIZE];
	//内核stack 是 一开始初始化的
---------------------------和裸机内存的布局有什么不同
1.大体相同(都是 .code .ro-data .data .bss .heap .stack)
2.只不过.data被内核用了一部分(用于TCB的管理)
3.stack被分成了很多份(内核一份(内核的stack在.stack),每个应用程序一份(用户的stack在.data))


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章