嵌入式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))

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