uboot移植之uboot和kernel的参数传递
来源:互联网 发布:js超出两行显示省略号 编辑:程序博客网 时间:2024/05/21 07:13
从uboot启动内核的形式theKernel (0, machid, bd->bi_boot_params)
可以看出uboot给内核传递了3个参数,第1个是0,第2个是机器码,第3个是参数列表在SDRAM的起始位置
刚好满足一下调用内核的条件
• R0=0。
• R1=机器类型ID;
• R2=启动参数标记列表在RAM 中起始基地址
①在 uboot/board/tekkamanninja/mini2440/mini2440.c的board_init函数中
指定机器码
gd->bd->bi_arch_number = MACH_TYPE_MINI2440
而MACH_TYPE_MINI2440定义在include/asm-arm/mach-types.h
#define MACH_TYPE_MINI2440 1999
需对应内核的linux/arch/arm/mach-s3c2440/mach-mini2440.c中一行代码
MACHINE_START(MINI2440, "MINI2440 test")
而MINI2440定义在linux/arch/arm/tools/mach-types
mini2440 MACH_MINI2440 MINI2440 1999
②在 uboot/board/tekkamanninja/mini2440/mini2440.c的board_init函数中
指定参数位置
gd->bd->bi_boot_params = 0x30000100;
对应内核的linux/arch/arm/mach-s3c2440/mach-mini2440.c中一行代码
.boot_params = S3C2410_SDRAM_PA + 0x100,
如果uboot没有给出gd->bd->bi_boot_params的值,则linux默认去这个地址寻址tag
如果uboot给出了gd->bd->bi_boot_params的值,则linux则按照uboot的给的这个地址去寻址tag
所以即使uboot中设置 gd->bd->bi_boot_params = 0x30000000或 0x30000200或 0x300000300(或许设置一个空闲的内存区就可以)
而内核的.boot_params = S3C2410_SDRAM_PA + 0x100,(就用不到了)
也能顺利启动内核,已试过
在试验中发现uboot中设置gd->bd->bi_boot_params=0或将gd->bd->bi_boot_params注释掉,都未能顺利启动内核。貌似在uboot必须为gd->bd->bi_boot_params指定一个值才行,而linux的.boot_params 始终都没有用到。
gd是一个全局结构体指针,用于uboot中各个文件中重要的参数传递,其成员见http://blog.csdn.net/songqqnew/article/details/6847699
看一下uboot在sdram 0x30000100处给内核传递了什么东东,见http://blog.csdn.net/songqqnew/article/details/6847609
参考嵌入式Linux应用开发完全手册ch15.1 p243
转自:http://blog.csdn.net/songqqnew/article/details/6847392
可以看出uboot给内核传递了3个参数,第1个是0,第2个是机器码,第3个是参数列表在SDRAM的起始位置
刚好满足一下调用内核的条件
• R0=0。
• R1=机器类型ID;
• R2=启动参数标记列表在RAM 中起始基地址
①在 uboot/board/tekkamanninja/mini2440/mini2440.c的board_init函数中
指定机器码
gd->bd->bi_arch_number = MACH_TYPE_MINI2440
而MACH_TYPE_MINI2440定义在include/asm-arm/mach-types.h
#define MACH_TYPE_MINI2440 1999
需对应内核的linux/arch/arm/mach-s3c2440/mach-mini2440.c中一行代码
MACHINE_START(MINI2440, "MINI2440 test")
而MINI2440定义在linux/arch/arm/tools/mach-types
mini2440 MACH_MINI2440 MINI2440 1999
②在 uboot/board/tekkamanninja/mini2440/mini2440.c的board_init函数中
指定参数位置
gd->bd->bi_boot_params = 0x30000100;
对应内核的linux/arch/arm/mach-s3c2440/mach-mini2440.c中一行代码
.boot_params = S3C2410_SDRAM_PA + 0x100,
如果uboot没有给出gd->bd->bi_boot_params的值,则linux默认去这个地址寻址tag
如果uboot给出了gd->bd->bi_boot_params的值,则linux则按照uboot的给的这个地址去寻址tag
所以即使uboot中设置 gd->bd->bi_boot_params = 0x30000000或 0x30000200或 0x300000300(或许设置一个空闲的内存区就可以)
而内核的.boot_params = S3C2410_SDRAM_PA + 0x100,(就用不到了)
也能顺利启动内核,已试过
在试验中发现uboot中设置gd->bd->bi_boot_params=0或将gd->bd->bi_boot_params注释掉,都未能顺利启动内核。貌似在uboot必须为gd->bd->bi_boot_params指定一个值才行,而linux的.boot_params 始终都没有用到。
gd是一个全局结构体指针,用于uboot中各个文件中重要的参数传递,其成员见http://blog.csdn.net/songqqnew/article/details/6847699
看一下uboot在sdram 0x30000100处给内核传递了什么东东,见http://blog.csdn.net/songqqnew/article/details/6847609
参考嵌入式Linux应用开发完全手册ch15.1 p243
转自:http://blog.csdn.net/songqqnew/article/details/6847392
0 0
- uboot移植之uboot和kernel的参数传递
- uboot移植之uboot和kernel的参数传递
- uboot移植之uboot和kernel的参数传递
- uboot和kernel传递参数
- uboot中给kernel参数的传递
- uboot传递新参数到kernel的两种方式
- uboot 启动延时,向kernel传递参数的设置
- uBoot和Linux的参数传递关系
- Uboot与Linux Kernel参数传递
- 移植5- uboot之tftp启动kernel
- uboot--参数-->kernel
- uboot--参数-->kernel
- uboot移植之uboot stage1
- uboot移植之uboot stage2
- UBOOT传递内核参数
- uboot参数传递问题
- MIPS架构UBOOT和linux参数传递
- MIPS架构UBOOT和Linux参数传递
- apache2.2后修改最大并发连接数
- Ext逗号多余警告错误查找
- POJ 1050 最大矩阵子段和
- 设计模式
- EasyUI DataGrid 窗口大小自适用
- uboot移植之uboot和kernel的参数传递
- [译]Apply和数组:三个技巧
- 差分约束入门题ZOJ2770&&AOJ517
- 模型
- Powershell演示WPF弹窗
- 可变参数个数的函数
- 免费镜像地址收集,让自己的下载更快一点
- JSP九个隐式对象
- 单片机与PC机串口通讯接地问题