NKStartup的参数KData
NKStartup的參數(shù)KData是什么?,其實就是一個數(shù)據(jù)結構,?它位于nkldr的data區(qū)。如下:
??????AREA?|.KDATA|,DATA,NOINIT
????????
KDataArea
PTs?????%???????0x4000??????????;?space?for?first-level?page?table
ExceptionVectors?
????????%???????0x0400????;?space?for?exception?vectors
????????%???????0x0400????;?space?for?interrupt?stack
????????%???????0x0100????;?space?for?FIQ?stack
????????%???????0x0700????;?space?for?Abort?stack
KPage??%???????0x0c00???;?space?for?kernel?stack?&?KDataStruct
HighPT?%???????0x0400???;?2nd?level?page?table?to?map?0xFFF00000
KDEnd?%???????0
撇開實現(xiàn),?單純去理解的話,?和傳遞一個結構體指針沒有什么區(qū)別。?再問:?這個數(shù)據(jù)結構干嘛的,代表什么??這得明白高地址分配。
[高地址分配]
???^?0xFFFD0000
FirstPT?????????#?0x4000
?????????????#?0x4000
?????????????#?0x8000
?????????????#?0x10000???????;?not?mapped
ExVector???????#?0x0400????????;?vectors?and?table
?????????????#?0x0400??;?1K?interrupt?stack????????????(ffff0400)
IntStack???????#?0x0100?;?256?byte?FIQ?stack????????????(ffff0800)
FIQStack??????#?0x0700?;?2K-256?abort?stack????????????(ffff0900)
AbortStack??#0xC000-0x1000;not?mapped????????????????(ffff1000)
KDBase???????#?0x07E0????????;?2K-32?kernel?stack
KStack????????#?0x0020????????;?temporary?register?save?area
KData?????????#?0x400?????????;?kernel?data?area
FirstPT就是之前說的一級頁表所在。大小16kbytes。?后面保留了2塊區(qū)域,也許是提供給2級頁表使用。?ExVector是異常入口,?Arm有個機制,?通過設定p15,?可以將異常入口從0x18改成高地址FFFF0000.?IntStack,?FIQStack,?AbortStack,?KStack分別是各個模式以及內核的堆棧。?KData就是內核參數(shù)區(qū)了。
typedef?struct?ARM_HIGH?{
????ulong???firstPT[4096];??????//?0xFFFD0000:?1st?level?page?table
????char????reserved2[0x20000-0x4000];
????char????exVectors[0x400];???//?0xFFFF0000:?exception?vectors
????char????reserved3[0x2400-0x400];
????char????intrStack[0x400];???//?0xFFFF2400:?interrupt?stack
????char????reserved4[0x4900-0x2800];
????char????abortStack[0x700];??//?0xFFFF4900:?abort?stack
????char????reserved5[0x6800-0x5000];
????char????fiqStack[0x100];????//?0xFFFF6800:?FIQ?stack
????char????reserved6[0xC000-0x6900];
????char????kStack[0x800];??????//?0xFFFFC000:?kernel?stack
????struct?KDataStruct?kdata;???//?0xFFFFC800:?kernel?data?page
}?ARM_HIGH;
總結
以上是生活随笔為你收集整理的NKStartup的参数KData的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CE6内核启动过程-新角度
- 下一篇: WINCE6.0+S3C2443的启动过