嵌入式平台S3C6410的UBoot分析与移植*
2017-11-24,
,
(1.西南交通大学 信息科学与技术学院,成都 611756;2.西南交通大学 交通与运输学院)
ldrpc, _start_armboot
_start_armboot:
.word start_armboot

董君,倪少权2
(1.西南交通大学 信息科学与技术学院,成都 611756;2.西南交通大学 交通与运输学院)
详细分析基于S3C6410的嵌入式平台的U-Boot源代码和启动过程。在此基础上成功移植了U-Boot软件,实现了S3C6410处理器时钟初始化、串口通信、内存初始化、MMU初始化、NAND Flash初始化。通过移植NAND Flash驱动,实现读写NAND Flash和从NAND Flash启动的功能,使得整个系统能够正常运行。
U-Boot;分析;移植;NAND Flash驱动
引 言
U-Boot全称 Universal BootLoader,是遵循GPL条款的开放源码项目。U-Boot在嵌入式设备中起着初始化硬件、引导系统、为操作系统做准备的作用,因此分析与移植U-Boot有着重要的意义。
首先找到board/samsung/smdk6410/的u-boot.lds(连接器脚本),连接器脚本的作用主要是配置U-Boot程序的布局,由其中的.text部分可知,第一部分代码从cpu/s3c64xx/start.S开始执行。因此分析start.S是U-Boot分析的第一阶段。
(1)建立异常向量表
由于ARM处理器有7种异常,分别是:复位、未定义指令、软中断、指令预取终止、数据终止、外部中断请求、快速中断请求,所以有7个异常向量。
(2)设置处理器工作模式
设置ARM的运行模式为32位管理模式。
(3)CPU初始化
首先冲洗指令/数据缓存、关闭MMU和cache、设置外设基地址。接着通过bl lowlevel_init指令跳转到标号 lowlevel_init处执行,其位于boardsamsungsmdk6410下。
(4)点亮LED/关闭看门狗/关闭中断
点亮LED能够检验之前的步骤是否正确,关闭看门狗/中断能够让系统不受外界的影响正常启动。S3C6410中断控制器有64个中断源,其中有VIC0和VIC1两个中断矢量控制器。
(5)S3C6410时钟初始化
S3C6410系统控制器主要包含系统时钟控制单元和系统电源管理单元,其中时钟控制单元主要包括APLL、 MPLL、 EPLL三个锁相环。……
