打印
[S3C2440]

关于天嵌S3C2440启动代码的一些疑惑,求过来人指导

[复制链接]
1647|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zdhlixiang2006|  楼主 | 2013-12-12 22:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
书上说ARM的异常必须定义在从0地址开始的一个连续的内存空间,每个占4个字节,还举例假如发生了irq中断,处理器在执行完当前指令后,会强制把PC指向0x00000018处,可是为什么启动代码最后的一个内存表中,HandlerIRQ的地址是0x3fffff18呢?难道是有内部的重映射机制?在哪里设置的呢

相关帖子

沙发
zdhlixiang2006|  楼主 | 2013-12-13 16:17 | 只看该作者
也许是我的问题太过弱智了,都没人看一眼,自己顶一下好了
我基本弄清楚了过程,首先,发生IRQ中断时,处理器是将PC强制设为0x00000018,但是由于MMU的干预,这个地址会被映射到0x30000018处,经过b HandlerIRQ进入一个宏段,在此会继续跳到另外一个段处,在这里根据偏移值就可以查找到具体的中短服务地址,C中只需要做好对接即可。

启动代码中首先是用NAND读写函数将NADN0地址开始的4M代码搬运到SDRAM中,然后进行加载域和运行域的搬移,包括RO RW ,ZI全部初始化为0,。我发现将搬运代码的函数注释掉,然后编译下载,程序依然没有任何问题,但是如果不进行加载域和运行域的搬移,程序上电后没有任何反应,这个怎么回事?难道搬运4M代码的工作可以取消?还不懂

使用特权

评论回复
板凳
zdhlixiang2006|  楼主 | 2013-12-13 16:17 | 只看该作者
--

使用特权

评论回复
地板
zdhlixiang2006|  楼主 | 2013-12-13 16:19 | 只看该作者
跪求版主阿南哥指导

使用特权

评论回复
5
cuijinyi| | 2013-12-14 08:43 | 只看该作者
mark

使用特权

评论回复
6
ljn562483069| | 2013-12-24 07:30 | 只看该作者
这个应该是程序小于4K时可以不进行程序搬运,因为硬件自动将4K代码搬运到Stepping Stone(内部4K RAM),当程序大于4K由于Nand Flash不能运行代码所以必须将程序搬运到SDRAM运行,当然上述的前提是从Nand Flash启动

使用特权

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

本版积分规则

个人签名:沐浴着XX的春风,义无反顾游荡在马勒戈壁

21

主题

523

帖子

2

粉丝