嵌入式Linux: uClinux操作系統(tǒng)移植
fork_init(mempages);
本文引用地址:http://m.butianyuan.cn/article/149092.htmproc_caches_init();
vfs_caches_init(mempages);
buffer_init(mempages);
page_cache_init(mempages);
#ifdefined(CONFIG_ARCH_S390)
ccwcache_init();
#endif
signals_init();
#ifdefCONFIG_PROC_FS
proc_root_init();
#endif
#ifdefined(CONFIG_SYSVIPC)
ipc_init();
#endif
check_bugs();
printk(POSIXconformancetestingbyUNIFIXn);
/*
*Wecountontheinitialthreadgoingok
*Likeidlersinitisanunlockedkernelthread,whichwill
*makesyscalls(andthusbelocked)。
*/
smp_init();
rest_init();
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
5.系統(tǒng)源碼的修改
移植一個(gè)操作系統(tǒng)到新的硬件平臺(tái),比較好的辦法是尋找一個(gè)架構(gòu)相近并且已經(jīng)做好操作系統(tǒng)移植的硬件平臺(tái)。然后,對(duì)原先的操作系統(tǒng)做一定修改。系統(tǒng)源碼修改的工作量取決于自行設(shè)計(jì)的硬件平臺(tái)與現(xiàn)有的硬件平臺(tái)之間差異程度。此設(shè)計(jì)中的硬件平臺(tái)與三星4510芯片較為接近,并且也可以下載到針對(duì)4510b的uclinux系統(tǒng)源碼。所以可以從此源碼入手,根據(jù)我們的硬件平臺(tái)與4510b的不同之處,在源碼中找到相應(yīng)的文件并加以修改。下面介紹如何修改系統(tǒng)源碼。
需要修改的系統(tǒng)源碼主要有如下幾處:
(1)bootloader相關(guān)代碼。此代碼位于uClinuxlinux-2.4.xarcharmnommubootcompressed目錄下名為head.s的文件中。此處程序用匯編語(yǔ)言實(shí)現(xiàn),需要修改的地方主要是設(shè)置memorymap的代碼,與memorycontroller的硬件實(shí)現(xiàn)相關(guān)。
(2)UART相關(guān)代碼。UART相關(guān)代碼位于uClinuxlinux-2.4.xdriverschar目錄下的serial.c
(3)定時(shí)器相關(guān)代碼。uClinux中有如下函數(shù)調(diào)用star_kernel()->time_init()->setup_timer(),需要修改setup_timer()函數(shù)中的相關(guān)代碼。
(4)中斷控制器相關(guān)。uClinuxlinux-2.4.xarcharmnommuirq.c
除了上述的代碼,還有其他多處需要修改。在修改源代碼時(shí),可按照uclinux啟動(dòng)和執(zhí)行順序依次修改整個(gè)平臺(tái)。熟悉linux內(nèi)核源碼結(jié)構(gòu)對(duì)操作系統(tǒng)移植有很大幫助。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論