问个arm处理器下uboot的问题

suncs2001 2018-04-09 03:57:00
正在学习三星4412 上的uboot流程,之前搞过单片机 stm32F1xx等类型的arm cortex M系列的cpu。 现在有个疑问,在stm32的单片机上,有个偏移向量(SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET;),bootloader跳转的时候要跳到这个地址,而应用程序里面也要设置同样的偏移向量,而且代码要下载到这个地址上,程序才能正常运行,这个地址实际就是应用程序的中断向量表的起始地址。

但是在linux的uboot上,看到了有设置中断向量表,但是这个地址与bin文件的地址并不一样,都是arm的处理器,难道跟单片机的那个机制不一样吗?
...全文
787 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jklinux 2018-04-11
  • 打赏
  • 举报
回复
引用 3 楼 suncs2001 的回复:
我的疑问是,在进入kernel阶段后,如果发生了中断,因为是arm体系的cpu,应该是从中断向量表开始执行,那在kernel阶段,中断向量表的起始地址在哪里呢。
进入内核后, uboot就不存在了, 内核里通过mmu映射0xffff0000高地址的异常向量地址到内核里的异常处理,
jklinux 2018-04-10
  • 打赏
  • 举报
回复
4412上 ,uboot代码里没开中断功能的。而且uboot指定的执行地址也不是0地址, 而是在编译时指定执行地址为0x43e00000. 也就是uboot里的异常向量表地址也是从0x43e00000地址开始的(真发生异常时会也不会用到这处理代码) 而且4412的uboot启动过程比较复杂: 0地址默认是irom(也就是bios)占用的, irom里的程序是一开机就执行的, 负责引导bl1.bin的代码, bl1再负责引导bl2.bin(uboot的前14K代码), bl2.bin的最后会读出uboot的完整代码到编译时指定的内存地址0x43e00000上执行
fly 100% 2018-04-10
  • 打赏
  • 举报
回复
将0地址映射过去的,uboot 不用中断的,所以随便放哪运行
suncs2001 2018-04-10
  • 打赏
  • 举报
回复
我的疑问是,在进入kernel阶段后,如果发生了中断,因为是arm体系的cpu,应该是从中断向量表开始执行,那在kernel阶段,中断向量表的起始地址在哪里呢。
介绍了源码开放的通用启动模块U-Boot 的文件结构,并以Broadcom 公司的4 内核处理器BCM1480 和RMI的32 内核处理器XLR732 为例,阐述了该模块在64 位多内核MIPS体系结构处理器上的移植经验,包括文件的修改、新增、编译、多内核的启动顺序等。   目前,微处理器架构呈百家争鸣之势,x86、PowerPC、MIPS、68x、ARM、Xscale 等架构纷纷在广阔的电子产品市场划分势力范围。x86 架构在PC机领域独领风骚——虽然基于x86的处理器迄今最多集成4 个内核,小于MIPS 架构的32 内核。ARM 架构的处理器统治着消费类电子市场,而在嵌入式领域,尤其是通信产品领域,x86、MIPS、PowerPC 架构的处理器正逐鹿中原。不同特性的处理器架构组成了丰富多彩的计算控制平台,但是无论是什么类型的处理平台,“开门第一件事”都是调用启动代码。   启动代码一般存放在外部的非易失性存储器上,例如Flash芯片。通常不同的处理器,即便基于相同的架构,启动代码往往大相径庭,更何况不同的处理器架构了。例如,BIOS 启动代码适合于x86 的处理器,风河(Windriver)公司的基于VxWorks操作系统的Bootrom 支持PowerPC、ARM、MIPS 等多种处理器。但是,这些启动代码往往源码不开放、开发工具和许可费用昂贵、通用性差。   U-Boot 是德国Denx 软件中心依照GPL 发布的源码公开的公共软件,其全称是Universal Bootloader,即通用启动模块,目前它支持x86、PowerPC、MIPS、ARM处理器架构,支持1000 多种嵌入式平台。然而,因为U-Boot 的前身是ppcboot,是一种专用于PowerPC 架构处理器的启动模块,后来Denx 软件中心将其扩展到ARM 处理器等其他架构,所以目前U-Boot支持的平台中,PowerPC 架构的处理器最多。其他架构的处理器平台正在全世界有兴趣的工程师的努力下逐渐完善。   U-Boot 的最新版本是1.1.5,支持4Kc、5Kc、MIPS32AU1x00 等少数MIPS 架构单内核处理器。笔者将U-Boot 扩展到了业界先进的两款64位多内核MIPS处理器上。

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧