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

[复制链接]
 楼主| 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 | 显示全部楼层
跪求版主阿南哥指导
cuijinyi 发表于 2013-12-14 08:43 | 显示全部楼层
ljn562483069 发表于 2013-12-24 07:30 | 显示全部楼层
这个应该是程序小于4K时可以不进行程序搬运,因为硬件自动将4K代码搬运到Stepping Stone(内部4K RAM),当程序大于4K由于Nand Flash不能运行代码所以必须将程序搬运到SDRAM运行,当然上述的前提是从Nand Flash启动
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

21

主题

523

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:沐浴着XX的春风,义无反顾游荡在马勒戈壁

21

主题

523

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部