喷码机平台喷码机平台WinCE5.0系统的系统的BSP开发开发
基于以S3C2440A处理器为核心的喷码机硬件开发平台,研究了嵌入式WinCE5.0操作系统板级支持包BSP的开
发。分析了喷码机平台的硬件组成和BSP的框架结构,利用源代码重用的思想,完成了Bootloader、OAL、驱动
程序、配置文件的开发工作并在BINFS文件系统的基础上实现Multibin成功将内核分块。
引言
本文在实现喷码机板载系统一体化的目标下,研究了喷码机软件系统开发的操作系统板级支持包(Board Support
Package,BSP)[1]。
1 BSP结构概述
板级支持包BSP是介于硬件和操作系统之间的一层软件系统,其作用就是抽象操作系统和主板硬件之间的交互接口。基于具体
开发板开发BSP,必须对它的结构有一定的了解。一般情况下,WinCE5.0的BSP包含引导程序(BootLoader)、OEM适配层
(OEM Adaptation Layer,OAL)、驱动程序、配置文件四部分。
2 开发板的硬件组成
BSP不仅与特定的操作系统有关,而且与不同的开发平台也是一一对应的。喷码机系统的硬件平台主要由图1所示的几大部分
组成。
图1 开发板硬件组成
以喷码机控制系统的CPU为核心,外围设备主要包括两片HY57V561620F(L)T(P)芯片、一片K9F2G08U0A和EN29LV160AB
芯片,使开发板拥有了64 MB的SDRAM、256 MB的NAND FLASH以及2 MB的 NOR FLASH。网卡采用DM9000,提供互联
网连接等功能,同时包含4.3寸的触摸屏、XJ128喷头以及丰富的接口资源。
3 BSP开发
从零开始研发BSP成本较高、耗时长,所以现实中最常采用的方法是根据需要对现有的相近BSP源码进行移植。本文就是以相
近开发板的BSP为基础,根据喷码机硬件平台的外围配置,对BSP的源码做出对应的修改,使之能够有效支持硬件系统。主要
工作介绍如下。
3.1 BootLoader的实现
BootLoader是嵌入式软件系统最底层的一组代码,是依赖硬件存在的。微软公司提供了一套WinCE系统BootLoader的基本框
架,由Blcommon库、Eboot库、OEM代码、EDBG驱动以及存储管理组成[1]。移植时前二者无需改动,后面三部分则需要根
据开发板的实际配置进行修改。在实现过程中应尽量使用微软提供的支持库,这样在保证了规范性、高效性的同时还节省了实
现时间。
BootLoader需要实现的代码主要分为两部分:由汇编语言编写的启动代码以及由C语言编写的主代码。汇编代码startup.s是
BootLoader的入口函数,CPU启动后将立即运行,完成对CPU的初始化、地址映射、及BootLoader代码的搬运[2]。以下是平
台的部分代码实现:
ResetHandler
movr0, #0
mcrp15, 0, r0, c8, c7, 0; flush both TLB
mcrp15, 0, r0, c7, c5, 0; invalidate instruction cache
mcrp15, 0, r0, c7, c6, 0; invalidate data cache
ldr r0, = WTCON; disable watch dog
ldr r1, = 0x0
str r1, [r0]
; set INTMSK, INTSUBMSK, disable all interrupts
ldr r0, = INTMSK
ldr r1, = 0xffffffff; disable all interrupts
str r1, [r0]
ldr r0, = INTSUBMSK