嵌入式linux开发 (三十二) 内存管理2.0(3) ucos2内存管理 ucos3内存管理

和 freertos有些区别
  • ucos2
整体来说,布局的话
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))

  • ucos3
整体来说,布局的话
flash
	.code .ro-data // 应用程序的和系统的混在一起了
ram
	.data .bss .heap  TCB(应用程序) // 应用程序的和系统的混在一起了
		// 注意: TCB在 .data 中
		// OS_TCB StartTaskTCB;
		// OS_TCB Led0TaskTCB;
		// OS_TCB Led1TaskTCB;
	.stack(内核) .stack(应用程序1) .stack(应用程序2) ...  // 应用程序的和内核的分开了
	// freertos 的 应用程序stack 是在 .data中的 
	// CPU_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))

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