u boot引导操作系统的问题

发布于 2022-09-11 21:52:35 字数 450 浏览 12 评论 4

CPU: s3c2410
编译环境:Linux + gcc
问题条件:
在以2410为CPU的开发板上用uboot来load OS(Linux或其它),启动方式为从Norflash启动。
问题描述:
在以Norflash启动的时候,Norflash被映射到2410的0开始的地址,而在uboot中在norflash的这个地址处

放的是中断向量表,在中断发生的时候硬件会自动跳转到相应地址处去跳转到相应中断处理函数。可是当

uboot将OS 启动起来之后,整个控制就转到了OS那边,中断处理的时候应该会需要OS中的中断处理函数,

而这个时候Norflash占用的地址0开始的地址区域,所以每次中断发生时都会跳转到uboot所在的中断向量

表,这种情况是怎么跳转到OS的中断处理函数的??

希望哪位大侠能不吝赐教。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

老子叫无熙 2022-09-19 10:42:58

回复 1# torresliang

    中断矢量表并非一定在 0 地址。在开了mmu 之后,linux的中断矢量表放在了 0xffff0000 的位置上。详情见 arm 的mmu section

琉璃梦幻 2022-09-19 10:22:30

你忽略了MMU

大海や 2022-09-18 14:30:00

回复 2# garyv

可是RAM一般并不是挂在2410的bank0上面的,它的地址0应该并不是2410的地址0,我想它的IVT应该不能够映射到Norflash所占用的bank0的地址处(因为
Norflash的这个地址被Uboot占着),而ARM的架构好像只能够跳转到BANK0的地址0的IVT上(不确定是否一定这样)。
是不是有可能这样,在2410中有一块4K的内部RAM用于从NAND flash启动时的自动下载数据,OS有没有可能在启动之后将自己的向量表放到了这4K的区间,然后
将这4K的区间映射到了BANK0?这个我也不清楚,希望这个帖子能给一个比较解答,也算抛砖引玉吧。

热鲨 2022-09-15 17:05:55

OS有自己的IVT,存放在RAM里面0x00000000开始的地方(ARM)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文