uboot移植之tag传参
2017-05-14 17:57
197 查看
1:什么是tag
(1)tag是一种数据结构,用于uboot向内核传递参数,一个tag代表了一个参数,uboot在向kernel传参时,就是通过一个个tag来实现的。
(2)每个tag都有一个tag_header(一个结构体),包含了tag的类型和大小,然后tag中剩余的部分tag_xxx来当作传参的tag
2:kernel如何知道tag的起始地址。
uboot启动内核的最后通过theKernel (0, machid, bd->bi_boot_params);来启动内核,这三个参数,第一个固定是0,;第二个是机器码;第三个就是tag的存放的起始地址,也就是setup_start_tag。这三个参数分别存放在寄存器r0 r1 r2中。
3:kernel如何知道tag的结束地址
在tag传参的过程中,有一个setup_start_tag(ATAG_CORE类型)和setup_end_tag (ATAG_NONE类型),setup_start_tag表示tag开始传参,setup_end_tag 表示传参的结束,这两个tag之间的tag就是实际的向内核传递的tag。
总结:uboot和kernel都是在DDR中运行的,uboot先运行,最后通过theKernel (0, machid, bd->bi_boot_params);跳转到执行kernel,uboot向kernel传参的实现就是uboot和kernel规定一种传参的数据格式(tag),然后uboot将需要传递给kernel的参数存放到DDR的某段内存中,然后将 这段内存的起始地址传递给kernel,然后kernel通过这个地址来读取传递的参数。
在uboot的移植的时候需要注意的是
(1)tag传参部分的代码是不需要修改的,我们需要做的是需要打开或者关闭相应的宏定义,用来确定向内核传递哪些参数
(2)如果内核启动不成功,则需要考虑uboot传参是否正确。传参不成功首先看uboot中bootargs设置是否正确,其次看uboot是否开启了相应宏以支持传参。
(1)tag是一种数据结构,用于uboot向内核传递参数,一个tag代表了一个参数,uboot在向kernel传参时,就是通过一个个tag来实现的。
(2)每个tag都有一个tag_header(一个结构体),包含了tag的类型和大小,然后tag中剩余的部分tag_xxx来当作传参的tag
2:kernel如何知道tag的起始地址。
uboot启动内核的最后通过theKernel (0, machid, bd->bi_boot_params);来启动内核,这三个参数,第一个固定是0,;第二个是机器码;第三个就是tag的存放的起始地址,也就是setup_start_tag。这三个参数分别存放在寄存器r0 r1 r2中。
3:kernel如何知道tag的结束地址
在tag传参的过程中,有一个setup_start_tag(ATAG_CORE类型)和setup_end_tag (ATAG_NONE类型),setup_start_tag表示tag开始传参,setup_end_tag 表示传参的结束,这两个tag之间的tag就是实际的向内核传递的tag。
总结:uboot和kernel都是在DDR中运行的,uboot先运行,最后通过theKernel (0, machid, bd->bi_boot_params);跳转到执行kernel,uboot向kernel传参的实现就是uboot和kernel规定一种传参的数据格式(tag),然后uboot将需要传递给kernel的参数存放到DDR的某段内存中,然后将 这段内存的起始地址传递给kernel,然后kernel通过这个地址来读取传递的参数。
在uboot的移植的时候需要注意的是
(1)tag传参部分的代码是不需要修改的,我们需要做的是需要打开或者关闭相应的宏定义,用来确定向内核传递哪些参数
(2)如果内核启动不成功,则需要考虑uboot传参是否正确。传参不成功首先看uboot中bootargs设置是否正确,其次看uboot是否开启了相应宏以支持传参。
相关文章推荐
- uboot给内核传参的方式——tag
- uboot向kernel的传参机制——bootm与tags
- Uboot移植添加启动菜单
- omap4460 uboot移植到EMMC2说明
- uboot移植-nandflash支持问题
- uboot原理和移植
- uboot 移植
- OK6410(256MRAM2Gnandflash) uboot2010.03移植笔记之error小结
- 从0移植uboot (二) _uboot启动流程分析
- 从0移植uboot(三) _编译最小可用uboo
- 移植1- 裸写BL1,启动uboot
- 嵌入式linux开发uboot移植(七)——三星官方uboot的移植
- Uboot学习笔记③---(uboot移植及启动过程)
- 从三星官方移植uboot
- uboot 移植遇到的问题及解决方法(转)
- uboot移植之uboot命令体系解析
- uboot移植——DM9000的移植
- uboot移植记录
- uboot移植问题
- UBOOT-2012-10在OK6410平台的移植(四)uboot 2012.10 raise: Signal # 8 caught的问题