嵌入式Linux: uClinux操作系統(tǒng)移植
fork_init(mempages);
本文引用地址:http://2s4d.com/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)源碼的修改
移植一個操作系統(tǒng)到新的硬件平臺,比較好的辦法是尋找一個架構相近并且已經做好操作系統(tǒng)移植的硬件平臺。然后,對原先的操作系統(tǒng)做一定修改。系統(tǒng)源碼修改的工作量取決于自行設計的硬件平臺與現有的硬件平臺之間差異程度。此設計中的硬件平臺與三星4510芯片較為接近,并且也可以下載到針對4510b的uclinux系統(tǒng)源碼。所以可以從此源碼入手,根據我們的硬件平臺與4510b的不同之處,在源碼中找到相應的文件并加以修改。下面介紹如何修改系統(tǒng)源碼。
需要修改的系統(tǒng)源碼主要有如下幾處:
(1)bootloader相關代碼。此代碼位于uClinuxlinux-2.4.xarcharmnommubootcompressed目錄下名為head.s的文件中。此處程序用匯編語言實現,需要修改的地方主要是設置memorymap的代碼,與memorycontroller的硬件實現相關。
(2)UART相關代碼。UART相關代碼位于uClinuxlinux-2.4.xdriverschar目錄下的serial.c
(3)定時器相關代碼。uClinux中有如下函數調用star_kernel()->time_init()->setup_timer(),需要修改setup_timer()函數中的相關代碼。
(4)中斷控制器相關。uClinuxlinux-2.4.xarcharmnommuirq.c
除了上述的代碼,還有其他多處需要修改。在修改源代碼時,可按照uclinux啟動和執(zhí)行順序依次修改整個平臺。熟悉linux內核源碼結構對操作系統(tǒng)移植有很大幫助。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論