在head.s中,有這樣的調用:
/* pass the uboot arguments to the global value command line */
R0 = R7;
call _cmdline_init;
實際上就是將u-boot傳遞過來的參數保存下來,在合適的時間傳送給相應的模塊(參見《u-boot向uClinux的參數傳遞》一文)。因為在此並不使用u-boot這樣的引導程序,而是直接引導,因此做了適當的修改。
首先看看cmdline_init的實現,此函數在arch/blackfin/kernel/setup.c(714):
char __initdata command_line[COMMAND_LINE_SIZE];
void __init cmdline_init(const char *r0)
{
if (r0)
strncpy(command_line, r0, COMMAND_LINE_SIZE);
}
很簡單,就是保存參數,在後面啟動的過程中再對此參數進行分析。
原想將參數定義放在config.h中,但是這樣一來,每次修改參數必然造成整個內核的重新編譯,太痛苦了,因此直接將保存參數的字符串替換掉r0。
void __init cmdline_init(const char *r0)
{
//if (r0)
// strncpy(command_line, r0, COMMAND_LINE_SIZE);
if (r0)
strncpy(command_line, "", COMMAND_LINE_SIZE);
}
暫時使用了一個空字符串,內容在後面添加。
uclinux-2008R1-RC8(bf561)到VDSP5的移植(62)
uclinux-2008R1-RC8(bf561)到VDSP5的移植(60):current_text_addr
uclinux-2008R1-RC8(bf561)到VDSP5的移植(58)
uclinux-2008R1-RC8(bf561)到VDSP5的移植(57)
uclinux-2008R1-RC8(bf561)到VDSP5的移植(56):__grab_cache_page
uclinux-2008R1-RC8(bf561)到VDSP5的移植(46):raw_rwlock_t