theKernel参数解析
来源:互联网 发布:网页的优化方案 编辑:程序博客网 时间:2024/06/15 05:10
void (*theKernel)(int zero, int arch, uint params);
theKernel是一函数指针,它指向kernel的启动地址,对于uImage格式的内核,kernel=image_header_t结构体的ih_ep值
theKernel = (void (*)(int, int, uint))ntohl(hdr->ih_ep);这里存在一个转换:ntohl(hdr->ih_ep),原因在于下面两行代码:
mkimage.cep = addr;// 通过mkimage工具传入的内核实际地址(不是uImage的首地址)hdr->ih_ep = htonl(ep);
启动内核的代码为:
theKernel (0, bd->bi_arch_number, bd->bi_boot_params);这里涉及三个参数,第二、第三个参数bd->bi_arch_number、bd->bi_boot_params含义由名字就可以清楚的知道,至于第一个参数,为什是0?有什么内涵?
这是规定。
或者这么说,你要启动内核,必须这么做,它来自于linux-2.6.30.4\Documentation\arm\Booting:
下面一段话说的很透彻,摘自《bootloader与linux中位置无关代码的分析》:
“为什么要这样做呢?因为在跳转到内核前需要设置好r0、r1、r2这3个寄存器的值,而在一般的C函数调用过程中,入口参数就是使用r0、r1、r2...等来传递的,换言之,在3语句中调用theKernel函数时提供的3个入口参数最后将分别传给r0、r1、r2,这样就非常巧妙地通过C语言的特性来实现了r0、r1、r2的设置。”
0 0
- theKernel参数解析
- 参数解析
- 参数解析
- GHOST参数详细解析
- 视频格式参数解析
- Explorer.exe 参数解析
- 命令行参数解析(1)
- 命令行参数解析(2)
- 命令行参数解析实例
- main函数参数解析
- 连接池参数解析
- 变参数printf解析
- 解析命令行参数
- 命令行参数的解析
- linux网络参数解析
- Linux 命令行参数解析
- main参数字符串解析
- js解析url参数
- Linux 内核剖析
- Buffer Overflow
- struts2禁止表单重复提交 demo
- 复选框的单选模式
- android 播放 优酷视频
- theKernel参数解析
- 关于sql引擎 和 plsql引擎
- Core Animation系列之CADisplayLink
- 蜗牛—Java基础之学习(七)
- 二姐夫就感觉给我个共和国IgG几句话够
- 常用算法-mark
- java mail发送邮件
- Linux下模拟getch()
- 大数据分析(Big Data OLAP)引擎Dremel, Tenzing 以及Impala