最小的 nk.bin 需要以下檔案組成,可於建立新 OS design 時選擇 small footprint device 再 build 即可。

在完成 nk.bin 的建立後,可以 visual studio 2005 的 image viewer 檢視檔案內容(File->Open,檔案類型要選一下)。

以下為 sysgen variable(列於 nk.bin 中的 ceconfig.h 中)

Debug Release
#define CE_MODULES_COREDLL 1 #define CE_MODULES_KCOREDLL 1 #define CE_MODULES_NK 1 #define CE_MODULES_NKLOADER 1 #define CE_MODULES_OEM 1 #define CE_MODULES_OALIOCTL 1 #define CE_MODULES_FPCRT 1 #define COREDLL_COREMAIN 1 #define COREDLL_THUNKS 1 #define COREDLL_LMEM 1 #define COREDLL_SHOWERR 1 #define COREDLL_CORECRT 1 #define COREDLL_CORESTRW 1 #define COREDLL_SNOTIFY 1 #define COREDLL_COREGWESTUB 1 #define COREDLL_COREIMMSTUB 1 #define COREDLL_MULTIUI 1 #define COREDLL_LOCMINI 1 #define COREDLL_NOSTRSAFE 1 #define COREDLL_LMEM 1 #define COREDLL_SHOWERR 1 #define COREDLL_CORECRT 1 #define COREDLL_CORESTRW 1 #define COREDLL_SNOTIFY 1 #define COREDLL_COREGWESTUB 1 #define COREDLL_COREIMMSTUB 1 #define COREDLL_MULTIUI 1 #define COREDLL_LOCMINI 1 #define COREDLL_NOSTRSAFE 1 #define KCOREDLL_KCOREMAIN 1 #define KCOREDLL_KTHUNKS 1 #define KCOREDLL_LMEM 1 #define KCOREDLL_SHOWERR 1 #define KCOREDLL_CORECRT 1 #define KCOREDLL_CORESTRW 1 #define KCOREDLL_SNOTIFY 1 #define KCOREDLL_COREGWESTUB 1 #define KCOREDLL_COREIMMSTUB 1 #define KCOREDLL_MULTIUI 1 #define KCOREDLL_LOCMINI 1 #define KCOREDLL_NOSTRSAFE 1 #define KCOREDLL_LMEM 1 #define KCOREDLL_SHOWERR 1 #define KCOREDLL_CORECRT 1 #define KCOREDLL_CORESTRW 1 #define KCOREDLL_SNOTIFY 1 #define KCOREDLL_COREGWESTUB 1 #define KCOREDLL_COREIMMSTUB 1 #define KCOREDLL_MULTIUI 1 #define KCOREDLL_LOCMINI 1 #define KCOREDLL_NOSTRSAFE 1 #define NK_NKNOCOMP 1 #define NK_NKNOMAPFILE 1 #define NK_NKNOMSGQ 1 #define NK_OEMSTUB 1 #define NK_NKLOGGER 1 #define NKLOADER_NKLDR 1 #define OEM_NKSTUB 1 #define OEM_OEMMAIN 1 #define OEM_OEMMAIN_STATICKITL 1 #define CE_MODULES_COREDLL 1 #define CE_MODULES_KCOREDLL 1 #define CE_MODULES_NK 1 #define CE_MODULES_NKLOADER 1 #define CE_MODULES_OEM 1 #define CE_MODULES_OALIOCTL 1 #define CE_MODULES_FPCRT 1 #define COREDLL_COREMAIN 1 #define COREDLL_THUNKS 1 #define COREDLL_LMEM 1 #define COREDLL_SHOWERR 1 #define COREDLL_CORECRT 1 #define COREDLL_CORESTRW 1 #define COREDLL_SNOTIFY 1 #define COREDLL_COREGWESTUB 1 #define COREDLL_COREIMMSTUB 1 #define COREDLL_MULTIUI 1 #define COREDLL_LOCMINI 1 #define COREDLL_NOSTRSAFE 1 #define COREDLL_LMEM 1 #define COREDLL_SHOWERR 1 #define COREDLL_CORECRT 1 #define COREDLL_CORESTRW 1 #define COREDLL_SNOTIFY 1 #define COREDLL_COREGWESTUB 1 #define COREDLL_COREIMMSTUB 1 #define COREDLL_MULTIUI 1 #define COREDLL_LOCMINI 1 #define COREDLL_NOSTRSAFE 1 #define KCOREDLL_KCOREMAIN 1 #define KCOREDLL_KTHUNKS 1 #define KCOREDLL_LMEM 1 #define KCOREDLL_SHOWERR 1 #define KCOREDLL_CORECRT 1 #define KCOREDLL_CORESTRW 1 #define KCOREDLL_SNOTIFY 1 #define KCOREDLL_COREGWESTUB 1 #define KCOREDLL_COREIMMSTUB 1 #define KCOREDLL_MULTIUI 1 #define KCOREDLL_LOCMINI 1 #define KCOREDLL_NOSTRSAFE 1 #define KCOREDLL_LMEM 1 #define KCOREDLL_SHOWERR 1 #define KCOREDLL_CORECRT 1 #define KCOREDLL_CORESTRW 1 #define KCOREDLL_SNOTIFY 1 #define KCOREDLL_COREGWESTUB 1 #define KCOREDLL_COREIMMSTUB 1 #define KCOREDLL_MULTIUI 1 #define KCOREDLL_LOCMINI 1 #define KCOREDLL_NOSTRSAFE 1 #define NK_NKNOCOMP 1 #define NK_NKNOMAPFILE 1 #define NK_NKNOMSGQ 1 #define NK_OEMSTUB 1 #define NK_NKLOGGER 1 #define NKLOADER_NKLDR 1 #define OEM_NKSTUB 1 #define OEM_OEMMAIN 1 #define OEM_OEMMAIN_STATICKITL 1

以及檔案列表

Debug(13 files, 2184921 bytes) Release(9 files, 755417 bytes)
ceconfig.h coredll.dll fpcrt.dll k.coredll.dll k.fpcrt.dll kernel.dll kitl.dll nk.exe oalioctl.dll hd.dll kd.dll osaxst0.dll osaxst0.dll ceconfig.h coredll.dll fpcrt.dll k.coredll.dll k.fpcrt.dll kernel.dll kitl.dll nk.exe oalioctl.dll

可以看出,這上面只有 kernel 及 kitl 的部份,並沒有 driver 及 application,因為這些跟 OS bring up 沒有什麼關係。所以如果你的 image build 出來而檔案列表一樣,但確沒法進到 kernel 中,應該會是 boot loader 或 OAL 出了什麼問題。