专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »嵌入式开发 » 基于ARM S3C2410嵌入式系统的 »正文

基于ARM S3C2410嵌入式系统的

来源: 发布时间:星期二, 2009年12月8日 浏览:306次 评论:0
Bootloader分析和设计
蒋维
(青海民族学院电子工程和信息科学系青海省西宁市 810007)

0引言

个完整嵌入式系统从软件Software角度看分为4层分别是引导加载、操作系统内核、文件系统和用户应用引导加载是系统上电后首先运行代码在PC机中引导加载由BIOS(基本输入输出系统)和位于MBR(主引导记录)操作系统Bootload-er共同组成而在嵌入式系统中般没有BIOS那样固件整个系统引导加载由Bootloader来完成也就是说Bootloader是在操作系统内核运行前执行段小通过Bootloader运行对系统板CPU、SDRAM、Flash、串口等主要部件进行创建内核需要些信息并将这些信息传递给内核从而将系统软硬件环境带到个合适状态最终操作系统内核真正起到引导加载内核作用在没有操作系统情况下通过Bootloader也可以下载简单应用文件到系统板运行

1 S3C2410开发版

S3C2410开发版是款通用ARM9开发版其基本配置为CPU采用 3星公司S3C2410 ARM920T主频203 MHz集成有SDRAM控制器、NAND Flash控制器、SD卡控制器、USB Host和USB Device控制器、LCD控制器、IIC总线控制器、IIS总线控制器、SPI总线接口等操作系统支持Linux2.4以上版本且支持Windows CENAND Flash采用32 MBK9F5608U8位数据总线SDRAM采用2片16 M×16 bitHY57V561620组成32位总线S3C2410将系统存储空间分为8个Bank共1 GB空间其中Bank0~Bank5开始地址固定大小为128 MB用于ROM或SRAMBank6和Bank7大小是可编程用于ROM、SRAM或SDRAM在这里NAND Flash位于Bank0区地址范围为0x00000000~0x01ffffff2片SDRAM分别位于Bank6和Bank7区地址范围分别为0x30000000~0x31ffffff和0x32000000~0x33ffffff当核心板上电复位时系统首先将NAND Flash开始0~4 kB映射到自己内部SteppingStone区并把其首地址设为Ox00000000CPU从这个地址开始执行

2设计流程

系统以 3星公司S3C2410为开发版以ARMDeveloper Suite 1.2作为系统开发环境使用ARM9-JTAG调试代理开发流程如图1所示


3启动流程分析和具体实现

3.1启动流程分析

系统加电复位后CPU从复位地址0x00000000处取第1条指令执行S3C2410开发版NAND Flash被映射到这个预先设置好地址上在开发时可通过集成开发环境将Bootloader定位在复位地址开始存储空间内基于S3C2410开发版系统启动流程如图2所示

3.2 Bootloader具体实现

般Bootloader分为Stage1和Stage2两个阶段Stage1阶段建立个2410INIT.S文件这是个汇编语言文件其文件功能是S3C2410启动代码、配置存储器、ISR、堆栈、化C向量地址等具体所做工作是设置异常向量表、化看门狗和外围电路、化存储器、化堆栈、化数据区、跳转到CMain

3.2.1设置异常向量表

ARM异常向量表放在0地址开始处:

由于每个中断只占据向量表中4个字节存储空间因此只能存放条ARM指令旦系统运行有异常中断发生时ARM处理器便把PC指针强制置为向量表中对应中断类型地址值从而跳到存储器其他位置相应标号处执行当硬件系统刚刚上电复位时从0x00000000地址处跳转到标号为ReHandler接着便进入启动引导过程

3.2.2化看门狗和外围电路

主要实现S3C2410看门狗、中断、PLL和MPLL配置寄存器

具体代码如下:

3.2.3化存储器

主要设置内存控制寄存器具体代码如下:

其中SMRDATA作用是设置存储器控制寄存器具体定义可参考文献[2]

3.2.4化堆栈

ARM有7种工作模式而每种模式所用堆栈是区别所以化堆栈必须化这7种模式下堆栈具体代码如下:

有关USERMODE等具体定义为:

3.2.5化数据区

内核映像开始总是在Flash里面其中RO部分可以在Flash中执行也可以转移到RAM中执行而RW和ZI必须转移到RAM中执行所以所谓数据区化就是完成必要部分从Flash到RAM数据传输和内容清零

具体代码如下:



3.2.6跳转到CMain

这是BootloaderStage1部分最后个环节是改变处理器模式转入到C人口操作

具体代码如下:


3.2.7 Main具体实现

这部分是实现BootloaderStage2功能其文件功能为化系统频率、化I/O端口、化中断处理表、化串口、其他硬件化、进入主

Main主要代码如下:

4在线仿真和烧写

4.1在线仿真

以上Bootloader通过ADS软件Software和JTJAG口在目标板上进行仿真其步骤如下:
a)在ARM Developer Suite 1.2中打开boot.mcp工程文件
b)对打开boot.mcp工程文件下所有汇编语言及C语言文件进行编译
c)使目标板上电打开ARM9-JTAG调试代理软硬件连接正确将检测到ARM9内核打开超级终端
d)在AXD中下载并运行编译后生成Boot.axf文件

此时在显示器上显示目标板启动信息

4.2将固化到Flash中并在目标板上运行

a)进行并口驱动安装和设置并用JFLASH线将PC并口和目标板连接
b)将要下载.bin文件放到和SJF2410.exe同个目录下再编辑批处理文件SJF2410_BIOS.BAT内容为:SJF2410/f:boot.bin
c)执行批处理文件将bin文件通过JTAG烧写入Flash中

5结束语

Bootloader修改和移植是针对具体CPU和外围电路进行虽然市场上有很多成熟工具移植起来简单快捷但都存在局限性具体表现在代码量大、不够灵活针对特定目标板自己编写Bootloader不仅代码量小而且灵活性强便于维护



标签:
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: