微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > GNU ARM汇编--(十六)bootloader与kernel之间

GNU ARM汇编--(十六)bootloader与kernel之间

时间:11-26 来源:互联网 点击:

  1. agtable(tag,fn)
  2. staticstructtagtable__tagtable_##fn__tag={tag,fn}
  3. structtagtable{
  4. __u32tag;
  5. int(*parse)(conststructtag*);
  6. };

也就是说这里我们会调用parse_tag_cmdline

[cpp]view plaincopy

  1. staticint__initparse_tag_cmdline(conststructtag*tag)
  2. {
  3. printk(KERN_NOTICE"parse_tag_cmdline");
  4. printk(KERN_NOTICE"tag->u.cmdline.cmdline:%s",tag->u.cmdline.cmdline);
  5. strlcpy(default_command_line,tag->u.cmdline.cmdline,COMMAND_LINE_SIZE);
  6. return0;
  7. }

这里我们又将字符串从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点痛到现在,睡不着也该上床了!!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top