admin 管理员组文章数量: 1184232
我们制作映像文件的目的什么?把自己的程序烧写到启动设备,让boot ROM程序启动它。
所以制作映像文件的起点是:我们编写的程序。制作过程中各填值的计算方法如下图所示。
上图中各步骤细说如下:
① 确定入口地址entry:
我们的程序运行时要放在内存中哪一个位置,这是我们决定的。它被称为入口地址、链接地址。
② 确定映像文件在内存中的地址start:
boot ROM程序启动时,会把“initial load region”读出来,“initial load region”里含有IVT、Boot data、DCD。boot ROM根据DCD初始化设备后,再把整个映像文件读到内存。
在启动设备上,“initial load region”之后紧跟着我们的程序,反过来说就是我们程序的前面,放着“initial load region”。假设“initial load region”的大小为load_size,那么在内存中“initial load region”的位置start = entry – load_size。
注意:“initial load region”位于启动设备0位置,它的头部并不是IVT,而是一些无用的数据(或是分区信息)。
③ 确定IVT在内存中的地址self:
我们知道IVT在启动设备上某个固定的位置:ivt_offset。那么在内存中它的位置可以如下计算:
self = start + ivt_offset = entry – load_size + ivt_offset
④ 确定Boot data在内存中的地址boot_data:
IVT的大小是32字节,IVT之后就是Boot data,而IVT中的boot_data值表示Boot data在内存中的位置,计算如下:
boot_data = self + 32 = e
版权声明:本文标题:揭秘IMX6ULL设备系统映像制作之路,小白也能轻松上手 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1770516066a3534540.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论