打印
[i.MX]

i.mx6启动image头信息

[复制链接]
1323|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dannys0302|  楼主 | 2014-5-6 16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在i.mx6执行的第一条语句(代码第一条,可能并非CPU执行的第一条)之前,有1760个字节的头信息
其中前1024(0x400)个字节,开头4字节是0xB6 0x01 0x00 0xEA (反汇编后看到意思是 b        278006e0 <_start>),就是跳转到第1760个字节。
接下来的数据是IVT+DCD之类的数据。

     调试过程:
         1.复制可以运行的uboot.bin的开头1760个字节
         2.自己写了个控制GPIO的汇编代码,编译并objcopy成2进制文件,编译的链接地址为0x0
         3.合并两个数据,即把我写的代码放到1760地址处(0x6E0)。
         4.用MFGtools把合成的bin烧写到TF卡启动

     结果:代码被成功运行,GPIO接上一个LED,可以看到LED在闪烁。

我的Makefile:
        arm-none-linux-gnueabi-gcc -c Start.S
        arm-none-linux-gnueabi-ld -Ttext 0 -o boot.elf Start.o
        arm-linux-objcopy --gap-fill=0xff -O binary boot.elf myboot.bin
        cat 1.bin myboot.bin> u-boot.bin
这里的1.bin就是从uboot截取的头数据,我使用的链接地址是-Ttext 0

疑问:
1.  b        278006e0 <_start>这条指令在最开始,它有没有被执行?
由于uboot的链接地址是0x27000000,所以截取的uboot的头信息的这条语句,是跳转到0x278006e0,但我编译的代码链接地址是0,所以这条指令应该不能跳转到我的代码
并且手册指出,芯片从SD启动的时候,开始地址应该是0x400,就是IVT head的地址,但就算如此,整个IVT使用的链接地址都是0x27000000(boot data的值也是相对于0x27000000),那么我的代码是如何被执行的?

相关帖子

沙发
FSL_TICS_Rita| | 2014-5-6 16:49 | 只看该作者
你好,请问你使用的板子型号以及使用的BSP版本是什么?

使用特权

评论回复
板凳
dannys0302|  楼主 | 2014-5-7 00:29 | 只看该作者
板子型号是一个叫E9的卡片电脑,芯片是i.mx6q,BSP是他们光盘带的,这个不重要啦,我主要想知道启动流程

使用特权

评论回复
地板
FSL_TICS_A| | 2014-5-9 10:04 | 只看该作者
dannys0302 发表于 2014-5-7 00:29
板子型号是一个叫E9的卡片电脑,芯片是i.mx6q,BSP是他们光盘带的,这个不重要啦,我主要想知道启动流程 ...

你好,楼主!
为避免工程师错过你的回复信息。
请点击工程师回复的那一楼的回复按钮进行回复,不然工程师无法及时得知最新的回复信息。

使用特权

评论回复
5
FSL_TICS_Rita| | 2014-5-9 13:59 | 只看该作者
dannys0302 发表于 2014-5-7 00:29
板子型号是一个叫E9的卡片电脑,芯片是i.mx6q,BSP是他们光盘带的,这个不重要啦,我主要想知道启动流程 ...

楼主你好,你是想要了解i.mx6的启动流程么?还是指的别的?

使用特权

评论回复
6
dannys0302|  楼主 | 2014-5-12 11:09 | 只看该作者
是的   就是启动流程,我看了下手册,没搞明白细节,主要是想知道,启动的时候,CPU是如何执行到我的代码的,就是主题所说的内容

使用特权

评论回复
7
dannys0302|  楼主 | 2014-5-12 11:10 | 只看该作者
FSL_TICS_Rita 发表于 2014-5-9 13:59
楼主你好,你是想要了解i.mx6的启动流程么?还是指的别的?

是的   就是启动流程,我看了下手册,没搞明白细节,主要是想知道,启动的时候,CPU是如何执行到我的代码的,就是主题所说的内容

使用特权

评论回复
8
dannys0302|  楼主 | 2014-5-12 11:11 | 只看该作者
FSL_TICS_A 发表于 2014-5-9 10:04
你好,楼主!
为避免工程师错过你的回复信息。
请点击工程师回复的那一楼的回复按钮进行回复,不然工程师 ...

好的  谢谢提醒

使用特权

评论回复
9
dannys0302|  楼主 | 2014-5-13 13:48 | 只看该作者
别沉了~~~~

使用特权

评论回复
10
FSL_TICS_Rita| | 2014-5-13 14:37 | 只看该作者
dannys0302 发表于 2014-5-13 13:48
别沉了~~~~

楼主你这个问题,由于你使用的是E9板子,并且BSP也是他们公司的,这里建议你到他们公司的网站找他们的技术支持,或者论坛上寻求答案,这样会比较快捷。他们是在我们的基础上修改的,不知道已经修改了哪些内容。

使用特权

评论回复
11
FSL_TICS_Rita| | 2014-5-13 14:39 | 只看该作者
还有,我看到你也在我们官网上提交了技术服务请求,我们的工程师也会给你一些建议的,请注意查看给你的回复~~

使用特权

评论回复
12
dannys0302|  楼主 | 2014-5-13 15:10 | 只看该作者
FSL_TICS_Rita 发表于 2014-5-13 14:37
楼主你这个问题,由于你使用的是E9板子,并且BSP也是他们公司的,这里建议你到他们公司的网站找他们的技 ...

其实这个问题与BSP无关,是芯片的启动流程,与代码无关的,就是想知道从芯片上电的那一刻,芯片怎么执行代码的

使用特权

评论回复
13
FSL_TICS_Rita| | 2014-5-14 18:08 | 只看该作者
dannys0302 发表于 2014-5-13 15:10
其实这个问题与BSP无关,是芯片的启动流程,与代码无关的,就是想知道从芯片上电的那一刻,芯片怎么执行 ...

你好,关于芯片的工作流程,你要看一下IMX6DQRM.pdf的Chapter 8 System Boot,里面讲的很清楚的。

使用特权

评论回复
14
dannys0302|  楼主 | 2014-5-19 20:56 | 只看该作者
终于搞明白了,原来启动的时候芯片会根据头信息去初始化DDR并且把代码拷贝到外部内存

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

34

帖子

1

粉丝