介紹
本應(yīng)用筆記描述了使用 GCC 環(huán)境時(shí),數(shù)據(jù)段的定位實(shí)現(xiàn)。
μC/OS-MPU介紹
μC/OS-MPU基于 μC/OS-II,增加了內(nèi)存保護(hù)擴(kuò)展,這種保護(hù)稱為“空間保護(hù)”,隔離 μC/OS-II 內(nèi)核與任務(wù)。基于μC/OS-MPU,為任務(wù)提供了一個(gè)受保護(hù)的運(yùn)行環(huán)境,其他任務(wù)不會(huì)干擾或損壞任務(wù)的內(nèi)存,避免非法訪問(wèn)。
· 空間保護(hù)
空間保護(hù)旨在保護(hù)應(yīng)用程序的內(nèi)存不被其他任務(wù)破壞。下圖展示了一個(gè)包含三個(gè)進(jìn)程的系統(tǒng),以說(shuō)明空間保護(hù)的實(shí)現(xiàn)。
通常,μC/OS-II 內(nèi)部變量和線程(任務(wù))放到進(jìn)程#0。進(jìn)程#1包含 2個(gè)線程。進(jìn)程#2包含 3個(gè)線程,線程可以訪問(wèn)共享內(nèi)存區(qū)域(shared memory)。進(jìn)程#3是2個(gè)線程的集合,并且有權(quán)訪問(wèn)共享內(nèi)存區(qū)域。
段的組織
在基于μC/OS-MPU的應(yīng)用中,進(jìn)程中的所有全局?jǐn)?shù)據(jù)位于同一個(gè)段。下圖展示了單個(gè)段的數(shù)據(jù)組織:
在啟動(dòng)階段,運(yùn)行環(huán)境的啟動(dòng)函數(shù)將初始化數(shù)據(jù)(initialized data)從 ROM 復(fù)制到 RAM ,并清零未初始化數(shù)據(jù)(uninitialized data)。事實(shí)上,每個(gè)進(jìn)程都有自己的段,在項(xiàng)目中,該組織結(jié)構(gòu)可能存在多次。
· 未初始化數(shù)據(jù)
使用宏SP_MEM(
示例:全局變量 Task1Stk[] 和 SyncSem 放置到段”sec01”中未初始化數(shù)據(jù)域。
將已有代碼集成到μC/OS-MPU系統(tǒng)時(shí),可以基于文件放置數(shù)據(jù),僅需調(diào)整鏈接命令文件。
示例:基于提供的GCC鏈接命令文件模板,紅色部分的行表示將文件 myfile.c中未初始化數(shù)據(jù)放置到段”secA0”中的未初始化數(shù)據(jù)域。
在啟動(dòng)階段,我們需要清零段中未初始化數(shù)據(jù)域。為了簡(jiǎn)化實(shí)現(xiàn),系統(tǒng)提供了一些有用的宏SP_INIT_
示例:在調(diào)用函數(shù) MyInitData()時(shí),段” sec01”和”secA0”中未初始化數(shù)據(jù)域清零。注意:函數(shù)”_zero_init”可能是啟動(dòng)環(huán)境外部提供的:
· 初始化數(shù)據(jù)
使用SP_MEM(
示例:全局變量”MyNumber”和”MyValue”放到段” sec01”中的初始化數(shù)據(jù)域。此外,數(shù)據(jù)的值被放置在ROM中的數(shù)據(jù)區(qū)域。
將已有代碼集成到μC/OS-MPU系統(tǒng)時(shí),也可以基于文件放置數(shù)據(jù),僅需調(diào)整鏈接器命令文件。
示例:根據(jù)提供的GCC鏈接命令文件模板,紅色顯示的行表示將文件 myfile.c中的初始化數(shù)據(jù)放置到段” secA0”中的初始化數(shù)據(jù)域。
在啟動(dòng)階段,我們需要復(fù)制段中的初始化數(shù)據(jù)域。為了簡(jiǎn)化實(shí)現(xiàn),系統(tǒng)提供一些有用的宏SP_INIT_
示例:調(diào)用函數(shù) MyInitData()時(shí),段” sec01”和” secA0”中的初始化數(shù)據(jù)域,將從 ROM 復(fù)制到 RAM。
注意:函數(shù)"_data_init"可能不是啟動(dòng)環(huán)境提供的:
審核編輯 :李倩
-
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6896瀏覽量
123756 -
GCC
+關(guān)注
關(guān)注
0文章
108瀏覽量
24890 -
線程
+關(guān)注
關(guān)注
0文章
505瀏覽量
19758
原文標(biāo)題:空間隔離操作系統(tǒng)μC/OS-MPU中段的定位
文章出處:【微信號(hào):麥克泰技術(shù),微信公眾號(hào):麥克泰技術(shù)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論