基于S3C2440的WinCE系统的Bootloader的设计与实现
- 格式:pdf
- 大小:363.94 KB
- 文档页数:3
ARM 920T 启动时,CPU 会自动将 nandflash 第 0 快的 内容搬运到片上 4KB SDRAM,由于 4KB 很小,不可能实现 bootloader 所有功能,所以该 bootloader 分为 2 大部分。该 Bootloader 的第 1 部分 nboot1st 烧写在 nandflash 的第 0 块, 用来初始化硬件平台并实现将第 2 部分 2440boot 从 nand- flash 复制到板子上的 SDRAM 中运行。第 2 部分 2440boot 烧 写在 nandflash 的第 2 块,空出来的第 1 块用来存放 TOC。通 过 2440boot 来引导操作系统内核。2440boot 包含了 Bootload- er 的丰富的功能,例如格式化 flash,对 flash 分区,下载操作 系统镜像文件等等。当 2440boot 跳转至 wince 内核入口时 Bootloader 任务完成,控制权移交给操作系统。Bootloader 的 启动流程设计如图 3 所示,Bootloader 在 nandflash 中的位置 设计为如图 4 所示。
4 结束语
针对采煤机监控通信系统进行研究和设计,完成了无线 收发器的设计、开发工作。利用操作系统的优势以及扩展系 统在多媒体输出等方面的功能,加强了无线收发器在协调生 产和故障分析方面的功能。由于所采集的数据只是针对采煤 机这 1 个设备,其传输数据量不是很大,所以没有进行 TCP 传输流量控制,在以后的设计中应考虑流量控制,以优化 TCP 传输。 参考文献: [1] 钟汉如,叶家威.基于 RS485 的 PC 与 ARM 间文件传输的实现[J].
ARM 开发与应用.2008,(2):119~120. [2] 阙大顺,杜玮,岳鹏.Ⅵvi 在 S3C2410 上的移植研究[J].武汉理工
大学学报.2007.29(12):47~50. [3] 潘伟森,邓胡滨,刘小东.嵌入式 Linux 在 S3C2410 上的移植分
析[J].仪器仪表用户.2008,l 5(2):121-122. [4] RTL8305S 5-PORT 1 O/100 MBPS SINGLE CHIP S、ⅥTCH
∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥∥
switch(Protoc01) { case IP PROT TCP:/* 如果是 TCP 通信 */ { ∥读取数据并解析 i(f commad=contr01) /* 如果是控制命令 */ { OSQPos(t RTUQ,(void)&rcv bufjLine][0]);/* 发送消息队 列给 RS485 通信任务 */ } else i(f commad=get/* 如果是取数据命令 */ { TCPPutArray (socket,topes tx,len);/* 发数据给监控中 心 */ } } } } }
(3)调用 IsrInit 对中断初始化,调用 ChangeMpllvalue, ChangeclockDivider,cal_cpu_bul_clk 设置时钟,关闭 CPU 内 部指令/数据 cache。涉及 clkdvin,mpllcon,upllcon 等寄存器进 行设置。
·166·
煤炭技术
(1. School of Earth Sciences, Yangtze University, Jingzhou 434023, China; 2. Tuha Petroleum Company, Shanshan 838202, China)
Abstract:This paper designes BootLoader based on ADS development environment, via USB high -speed downloads nandflash can provide stabilized formatting flash and operate wince and application procedures for a variety of functions. The bootloader overcomes the inconvenience of microsoft eboot downloads wince mirror by net mouth, has solved difficulties of embedded motherboard without the net mouth to run wince systems. It has a good practical value. Key words:ARM; BSP; BootLoader
ADS 编译开发环境可以开发出在嵌入式板子上启动运 行的二进制文件。先在 ADS 设置好编译连接的各个参数,在 Target 中选择连接器 linker 为 ARM Linker,选择 Post-Linker 为 ARM fromELF, 这样就可以将 ELF 格式的文件转换成各 种二进制格式。在 language settings 中选择处理器为ARM920T, 选择字节顺序为小端模式,在 linker 中选择 linktype 为 sim- ple,将 simple image 中的 RO,RW 设置为合适的地址。其它 一些选项的设置可以使用默认设置,这样最终生成的二进制 文件运行时 nboot1st 就能自动跳转到 2440boot。关键参数的 设置如表 1 所示:
表 1 ADS 集成开发环境主要参数配置表
主要参数
Nboot1st 设置 2440boot 设置
图 1 系统板架构图
图 2 wince 系统架构图
2.2 BootLoader 设计中注意硬件相关性 BootLoader 是依赖于硬件实现的,特别是在嵌入式系统
中。不同的体系结构需求的 BootLoader 是不同的;除了体系 结构,BootLoader 还依赖于具体的嵌入式板级设备的配置。 也就是说,对于 2 块不同的嵌入式板而言,即使它们基于相 同的 CPU 构建,运行在其中一块电路板上的 Boot Loader,未 必能够运行在另一块电路开发板上[4]。
第 29 卷第 5 期 2010 年5 期
煤炭技术
Coal Technology
Vol.29,No.05 May,2010
基于 S3C2440 的 WinCE 系统的 Bootloader 的设计与实现
汤 军1,公学成2
(1. 长江大学地球科学学院, 湖北 荆州 434023; 2. 中石油吐哈石油公司,新疆 鄯善 838202)
CoNTRoLLER.Realtek Semiconductor Corp.2007. [5] Low -Power,Slew -Rate -Limited RS -485/RS -422 Transceivers.
Maxim Integrated Products.2006. (责任编辑 徐艳杰)
2 BootLoader 的设计
2.1 WinCE 系统的结构 Wince 系统的架构图如图 2 所示,Bootloader 的作用就
是连接开发板硬件和 wince 系统的桥梁,它从属于 BSP 当中 的 OEM 适配层部分,作用是通过操作板子上的硬件来引导 wince 操作系统的内核。
图 3 Bootloader 启动流程 图 4 Bootloader 在 flash 中位置 3.1 建立编译环境
ARM Linker ARM fromELF
ARM920T Little Endian
Simple 0x30100000 默认值 0x0
3.2 源代码编写 3.2.1 nboot1st 的实现
该代码在 ADS 环境下开发完成,由该软件将汇编语言 和 c 语言混合编程的代码编译成 2 进制文件,最终通过 JTAG 烧写到 nandflash 的第 0 块。图 5 所示为 nboot1st 的流 程图。该代码主要由 2440init.s,2440loader.c,2440slib.s,2440ad- dr.h 等文件组成,最重要的是 2440init.s 和 2440loader.c,这 2 个文件规定了 nboot1st 执行的流程。由于 nboot1st 主要负责 板上硬件的初始化工作以 及 搬 运 Bootloader 的 第 2 部 分 2440boot 到 sdram 运行,所以主要通过下列方式来实现[4]:
(1)设置成系统工作模式(SVC32 工作模式),调用函数 portInit 进行 I/O 口初始化;
(2)关闭看门狗,屏蔽所有的中断。在 BootLoader 运行时 不响应任何中断,保证成功地引导系统。在 Bootloader 汇编 阶段通过对中断寄存器的赋值来屏蔽中断。如 ldr r0,=INTM- SK;ldr r1,=0xffffffff;str r1,[r0]。
0 引言
ARM 处理器具有高性能、低功耗的特性,在消费电子产 品、无线通信和网络通信等领域有着广泛的应用[1]。Wince 是
微软推出的嵌入式操作系统,最大程度继承了桌面版 Windows 操作系统的丰富功能,同时可以选择性的添加删除组件,适 应了嵌入式领域的要求。BootLoader 是在操作系统内核运行 之前运行的一段小程序。它可以初始化硬件设备、建立内存 空间的映射图,从而将系统的软硬件环境带到 1 个合适的状
(4) 调用 Uart_Init,Uart_Select 进行串口初始化。调用 Mmu_Init 进行 RAM 的初始化,包括正确设置系统中的内存 控制器的功能寄存器以及各 CPU 的外存 (Memory Bank)的 控制寄存器等;
(5)拷贝 Bootloader 到内存 SDRAM 执行,并在执行前初 始化 sdram,如:调用 copy_proc_beg,InitRam 两个函数。
选择连接器 linker Post-Linker