GNU ARM汇编--(十六)bootloader与kernel之间的commandline的传递
在《GNU ARM汇编--(十五)linux下的printascii》中已经初步分析了自己写的bootloader在引导kernel时候出现的commandline在bootloader和kernel之间传递的问题,今天终于解决了,并对参数传递有一些研究:
传递的参数为:
static int __init parse_tag_cmdline(const struct tag *tag){ printk(KERN_NOTICE "parse_tag_cmdline\n"); printk(KERN_NOTICE "tag->u.cmdline.cmdline:%s\n",tag->u.cmdline.cmdline);strlcpy(default_command_line, tag->u.cmdline.cmdline, COMMAND_LINE_SIZE);return 0;}这里我们又将字符串从tag->u.cmdline.cmdline拷贝到了default_command_line中,覆盖了默认配置.
再往下就是memcpy(boot_command_line, from, COMMAND_LINE_SIZE);
因为from指针指的就是default_command_line,所以这时候boot_command_line就是从bootloader传来的值了.
到这里,commandline的就正确传递了,至于linux的串口驱动和console这些是如何利用console=ttySAC0来进行下一步工作,再做分析.
这个流程过了一次,我的问题自然就解决了,自己写的bootloader一切正常了.虽然没有uboot那么强大,但是写bootloader的过程带来的好处绝不比移植uboot的少,哈哈哈哈
今天有点幸运,在路上被三个蜂子蛰了,从6点痛到现在,睡不着也该上床了!!