微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于U-BOOT的S3C44B0引导装载程序的设计与实现

基于U-BOOT的S3C44B0引导装载程序的设计与实现

时间:05-21 来源:互联网 点击:

、2MB的Flash(SST39VF160)、8MB的SDRAM(HY57V641620)、4个LED以及ARM JTAG接口组成。该开发板上与S3C44B0相关部分的功能框图如图1所示。

U-Boot移植主要修改的文件:

针对本文提供的主板硬件资源,从移植U-BOOT最小要求,U-BOOT能正常启动的角度出发,主要考虑修改如下文件:u-boot根目录下的 Makefile文件,include目录下的myboard.h头文件,board目录下的myboard.c文件,cpu/s3c44b0目录下的文件。移植操作中文件修改的具体操作为:

⑴cpu/s3c44b0目录下

◆start.s文件的修改。Start.s是汇编语言编写的U-BOOT程序入口代码,完成对底层硬件的初始化,这个文件的主要任务是设置处理器状态、初始化中断和内存时序等,并确定是否需要对整个U-BOOT代码重定位,最终从Flash中跳转到定位好的内存位置执行。具体修改内容如下。

①设置WTCON=0x0,禁止看门狗定时器,避免处理器强行复位。

②设置INTMSK=0X7ffffff,禁止所有中断。Bootloader的执行过程中不必响应任何中断。

③根据嵌入式微处理器的工作主频,修改宏CONFIG_S3C44B0_CLOCK_SPEED,使处理器能够正常工作,本文的目标板S3C44B0处理器工作主频为66MHZ。

④设置PLLCON寄存器。PLLCON锁相环控制寄存器中存储有计算系统时钟的相关参数,为了产生正确的系统时钟,必须根据外接晶振频率和处理器工作主频确定各个倍频数。

◆serial.c文件。这个文件初始化串口,主要是对UART相关的寄存器进行配置。串口的波特率不需要修改,直接用B2板的串口驱动即可。

⑵board/myboard目录下

◆myboard.c文件。这个文件主要是SDRAM的驱动程序,S3C44B0提供有SDRAM控制器,与一些CPU需要UPM表编程相比,它只需进行相关寄存器的设置即可。

◆flash.c文件。Flash驱动程序就在这个文件中。Flash存储器的烧写与擦除一般不具有通用性,跟具不同型号的存储器做出相应的修改。 Snds110嵌入式系统板选用的是SST39VF160,所以用snds110目录下的flash.c替换原来的flash.c,使FLASH芯片正常工作。

◆memsetup.s文件。memsetup.s代码是对存储器空间的初始化,在start.s中被调用。修改内存映射相关参数,SDRAM的刷新速度等,根据不同嵌入式系统版本修改。

⑶include/configs目录下

◆myboard.h头文件。此文件是目标板的头文件,大多数寄存器参数是在这一文件中设置完成的。为了使串口能够正常工作,需要设置正确的波特率,本嵌入式板波特率为115200bps.根据片上资源配置,修改内存映射相关参数。该头文件里还定义了U-BOOT的一些环境变量,这时可以不用修改,U-BOOT启动后可以通过setenv命令来设定。其它参数与启动操作系统内核有关,需要与内核启动参数相匹配。

⑷Makefile文件修改

在U-BOOT根目录下的makefile文件进行修改,加入:

Myboard_config:unconfig

@./mkconfig $ (@:_config=) arm S3C44B0 myboard

其中“arm”是CPU的种类,S3C44B0是ARM CPU对应的代码目录,myboard是自己开发板对应的目录。

除了以上修改外,可以根据目标板和实际开发需要,添加一些其它功能支持,如以太网、LCD、NVRAM等。与串口和SDRAM调试相比,在已有的基础上,添加这些功能还是较容易的。大多只是在参考现有源码的基础上,进行一些修改和配置[5]。

4.U-BOOT编译与运行

配置好以后,进入U-BOOT主目录,重新编译u-boot代码,运行命令:

#make myboard_config

#make

编译成功,将生成三个文件:

u-boot——ELF格式的文件,可以被大多数Debug程序识别。

u-boot.bin——二进制bin文件,纯碎的U-BOOT二进制执行代码,不保存ELF格式和调试信息。这个文件用于烧到用户的开发板中。

u-boot.srec——Motorola S-Record格式,可以通过串口下载到开发板中。

将得到的u-boot.bin文件借住于FLASH芯片烧写工具Flashpgm通过JTAG口下载到目标板后,检查U-BOOT能否正常工作[6]。如果能从串口输出正确的启动信息,就表明移植基本成功。若没有按任意键,U-BOOT将自动加载操作系统内核和文件系统。若按下任意键,U-BOOT停止自动加载,进入U-BOOT命令行,可以输入命令进行调试。

5.结束语

本文创新点:根据U-BOOT的运行机理,在硬件资源固定,不改变Bootloader框架的前提下,对与目标板硬件相关的代码进行移植,使之能够成功的引导嵌入式操作系统。通过分析引导装载程序在uclinux中的启动流程与运行机理,结合U-BOOT,设计并实现了基于S3C44B0X目标板上的bootloader。在移植过程中,需要对Bootloader的结构和工作流程,以及相关硬件有一定的了解,灵活的选用bootloader,根据具体情况进行裁减,最大程度发挥bootloader的功

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top