打印
[i.MX]

还是启动问题,最后一点没理解

[复制链接]
1347|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 dannys0302 于 2014-6-4 10:31 编辑

芯片:i.mx6q
平台:E9卡片电脑

仔细看了手册,大体理解到:
1、启动时(我从SD卡启动),芯片会复制SD卡从0x400开始的4K内容到内部RAM。
2、内部ROM检测IVT和DCD,然后执行DCD去初始化外部内存。
3、拷贝boot_data中length指定长度的内容,到boot_data指定的地址去,然后跳转到entry指定的地址。

以上是我的理解,问题:
1、以上说法是否正确?

2、若以上说**确,那么说明,内部ROM是先执行DCD初始化DDR,再把代码拷贝到外部内存。那么DCD的绝对地址,应该和外部内存没有关系。

这个是我的可执行文件的开头一部分,此文件是可以运行的(成功点灯),可以看到,这里使用的地址偏移量是0x27800000(改成0x10000000也行,只要在DDR地址范围之内)。
即:
boot_data->start       = 0x27800000
DCD绝对地址              = 0x2780042C
第一条指令地址entry = 0x278006E0
都是相对0x27800000偏移的,我也验证过,内部ROM确实会把代码拷贝到内存的这个地址(打印PC值看了)。

问题来了,既然是先执行DCD再拷贝代码,那么DCD的位置,应该和外部内存的地址无关,就是说,内部ROM,应该不能根据外部内存的地址,去寻找DCD所在位置,否则本末倒置了。
但我修改DCD绝对地址的值,会导致代码跑飞(灯点不亮),这是为什么?内部ROM是根据什么来寻找DCD的?

3、若启动流程分析正确,内部ROM会拷贝boot_data->length长度的代码,到外部内存中,目标地址是boot_data->start,但我把boot_data->length的值改为0,代码还是可以工作,这是为什么?

一直对启动流程不太理解,想搞个明白,麻烦各位大神解答一下,另,这个问题与板子和BSP无关,只是芯片的启动流程。

相关帖子

沙发
dannys0302|  楼主 | 2014-6-4 15:40 | 只看该作者
别沉了~~是问题描述的不够详细吗~~

使用特权

评论回复
板凳
FSL_TICS_Robin| | 2014-6-4 17:13 | 只看该作者
dannys0302 发表于 2014-6-4 15:40
别沉了~~是问题描述的不够详细吗~~

楼主你好
由于我们i.mx的工程师事务繁忙,所以可能回复你的帖子有些慢。
不过还请你放心,不会忘记你的问题的。

使用特权

评论回复
地板
dannys0302|  楼主 | 2014-6-4 20:09 | 只看该作者
FSL_TICS_Robin 发表于 2014-6-4 17:13
楼主你好
由于我们i.mx的工程师事务繁忙,所以可能回复你的帖子有些慢。
不过还请你放心,不会忘记你的问 ...

好的,麻烦了

使用特权

评论回复
5
dannys0302|  楼主 | 2014-6-5 18:16 | 只看该作者

使用特权

评论回复
6
dannys0302|  楼主 | 2014-6-6 13:53 | 只看该作者
顶~~~

使用特权

评论回复
7
FSL_TICS_Rita| | 2014-6-6 17:47 | 只看该作者
楼主你好,关于这个问题只能建议你看文档理解一下。我对这一块的原理也不是很了解,我支持的内容偏向于使用和调试要多一些。望楼主理解,我有看到你也在我们的官网上提过技术服务请求。估计你也没有得到满意的答案,要不你在我们的英文论坛上再提个帖子吧,英文论坛有我们全球的工程师,说不定会给你一些思路和建议。希望能够对你有帮助。英文论坛链接为:https://community.freescale.com/community/imx/content

使用特权

评论回复
8
dannys0302|  楼主 | 2014-6-7 16:54 | 只看该作者
FSL_TICS_Rita 发表于 2014-6-6 17:47
楼主你好,关于这个问题只能建议你看文档理解一下。我对这一块的原理也不是很了解,我支持的内容偏向于使用 ...

好的谢谢

使用特权

评论回复
9
linglongic| | 2015-4-24 19:43 | 只看该作者
楼主, 最后结果如何?怎样启动的啊???

使用特权

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

本版积分规则

4

主题

34

帖子

1

粉丝