Windows CE操作系统BSP开发笔记
六.Windows CE平台搭建
Windows CE的烧写
Jtag烧写方式 USB烧写方式 网络烧写
强调:对于这块TQ2440板子的内核烧写, 我们采取的是USB烧写方式。其他的烧写 方式大家感兴趣的话可以在网上搜索相关 的资料来尝试。
Windows CE的串口调试工具
Windows Embedded CE是微软公司嵌入式、移 动计算平台的基础,它是一个开放的、可升级 的32位嵌入式操作系统。 CE中的C代表袖珍(Compact)、消费 (Consumer)、通信能力(Connectivity)和 伴侣(Companion);E代表电子产品 (Electronics)。 WinCE不仅继承了传统的Windows图形界面,并 且在WinCE平台上可以使用Windows95/98上的 编程工具、使用同样的函数、使用同样的界面 风格,使绝大多数的应用软件只需简单的修改 和移植就可以在WinCE平台上继续使用。
综上所述
1. BSP是板级支持包,与你做的或要编程的硬件有 关,由硬件厂商提供。 2. PB需要BSP来配置硬件平台驱动。 3. PB下编译BSP通过后,可以导出和BSP相关的 SDK供EVB/EVC编程用。同时,生成NK.bin映 像文件,NK烧写到供嵌入式系统硬件平台的启 动介质,通过引导启动WinCE系统。 4. WinCE下面的应用程序可以通过注入EVC的开发 工具开发。 5. EVC在编译的时候需要选择硬件平台,由SDK提 供。
2. 还是靠同步功能,不过不是用EVC的自动发送了, 而是直接通过PC上面虚拟的移动设备复制到开 发板的指定目录下,然后在开发板端执行。
3. 从PC端复制编译出来的应用程序到U盘中,然后 再将U盘中的应用程序复制到开发板端。 4. 将编译好的应用程序复制到BSP包中的“Files” 目录下,然后修改“Files”目录下的 “platform.bib”文件,参考如下所示格式添加到 FILES栏目下:
winCE嵌入式操作系统介绍
Windows CE 嵌入式系统Windows CE是Microsoft公司的嵌入式操作系统产品。
它是一个紧凑、高效和可扩展的操作系统,具有多线程、多任务、确定性的实时和完全抢先式优先级的操作系统环境,适合于只有有限硬件资源的硬件系统。
操作系统的定制采用模块化设计方式,便于用户的使用。
支持Win32 API和MFC,具有Windows程序设计经验的用户可迅速掌握其编程方法。
第一章绪论BSPBSP是介于主板硬件和操作系统之间的一层,也可以说是操作系统的一部分,主要目的是为了支持操作系统,使之能够正常地在主板上运行.“嵌入性”、“专用性”和“计算机系统”是嵌入式系统的三个基本要素。
一般情况下,嵌入式操作系统可分为两类:一类是面向控制和通信等领域的实时操作系统,如WinRiver公司的VxWorks、ISI公司的pSOS、QNX公司的QNX和ATI的Nucleus等.另一类是面向消费电子产品的非实时操作系统,Windows CE是一个实时操作系统.实时支持功能在以下几个方面提升了Windows CE的性能.(1)支持嵌套中断(2)允许更高优先级别的中断首先得到响应,而不是等待低级别的中断服务线程(IST)(3)更好的线程响应能力(4)对高级别中断服务线程的响应时间上限的要求更加严格,在线程响应能力方面的改进,可帮助开发人员掌握线程转换的具体时间,并通过增强的监控能力和对硬件的控制能力帮助开发人员创建更好的嵌入式应用程序.(5)更多的优先级别,256个优先级别可使开发人员在控制嵌入式系统的时序安排方面有更大的灵活性.(6)更强的控制能力,对系统内的线程数量的控制能力可使开发人员更好地掌握调度程序的工作情况.5 丰富的多媒体和多语言支持第二章Windows CE的体系结构和功能2.1 Windows CE的层次结构2.2 进程、线程与调度2.3 内存管理2.4 存储管理与文件系统2.5 用户界面与图形系2.1.1 微内核结构Windows CE属于比较典型的微内核操作系统在内核中仅仅实现进程、线程、调度及内存管理等最基本的模块,而把图形系统、文件系统及设备驱动程序等等都作为单独的用户进程来实现.这样做显著地提高了系统的稳定性和灵活性.操作系统的结构可分为单体内核结构和微内核结构.传统的UNIX 是单体内核操作系统的代表.单体内核操作系统将图形、设备驱动及文件系统等功能全部在操作系统内核中实现,运行在内核状态和同一地址空间.其优点是减少了进程间通信和状态切换的系统开销,获得较高的运行效率;缺点是内核庞大,占用资源较多且不易剪裁,一旦每个驱动程序出错,就会导致整个系统的崩溃,系统的稳定性、安全性不好.与此相反,微内核系统在内核中只实现那些必须由内核实现的基本功能,而将图形系统、文件系统、设备驱动及通信等功能在内核之外,以系统服务的形式提供各种功能.这种结构的优点是有一个精炼的内核,便于剪裁与移植,而且由于系统服务程序运行在用户地址空间,因而个别驱动程序的错误不至于导致整个系统的崩溃;其不足之处是在运行中用户状态和内核状态频繁地切换,从而导致系统效率不如单体内核.微内核结构用一个水平分层的结构代替了传统的纵向分层的结构。
板级支持包(BSP)[转载]
板级⽀持包(BSP)[转载]板级⽀持包(BSP)[转载]2008-09-03 20:45BSP是板级⽀持包(Board Support Package)的缩写,是通常⽤在嵌⼊⾏业中的⼀个术语,⽤来代表在⼀个特殊硬件平台上快速构建⼀个嵌⼊操作系统所需的原始资料或者⼆进制软件包。
BSP的作⽤是⽀持操作系统,使之能够更好的运⾏于硬件平台。
BSP是相对于操作系统⽽⾔的,不同的操作系统对应于不同定义形式的BSP,包括Windows CE、Linux、Vxworks 等。
SoC/CPU⼚商应向其芯⽚的⽤户提供⼀个基本的BSP包,以⽀持主板⼚商或整机制造⼚商在此基础上定制和开发各种商⽤终端产品。
在嵌⼊式系统学习过程中设计到了Bootloader,下⾯讲述了Bootloader的基本作⽤,在后续的⽂章中我将对如何编写⾃⼰的Bootloader进⾏介绍。
1. Bootloader的基本概念:简单地说,bootloader就是在操作系统内核运⾏前运⾏地⼀段⼩程序。
通过这段⼩程序,可以对硬件设备,如CPU、SDRAM、Flash、串⼝等进⾏初始化,也可以下载⽂件到系统板、对Flash进⾏擦除和编程,真正起到引导和加载内核镜像的作⽤,但是随着嵌⼊式系统的发展,bootloader已经逐渐在基本功能的基础上,进⾏了扩展,bootloader可以更多地增加对具体系统的板级⽀持,即增加⼀些硬件模块功能上的使⽤⽀持,以⽅便开发⼈员进⾏开发和调试。
从这个层⾯上看,功能扩展后bootloader可以虚拟地看成是⼀个微⼩的系统级的代码包。
bootloader是依赖于硬件⽽实现的,特别是在嵌⼊式系统中。
不同的体系结构需求的bootloader是不同的;除了体系结构,bootloader还依赖于具体的嵌⼊式板级设备的配置。
也就是说,对于两块不同的嵌⼊式板⽽⾔,即使它们基于相同的CPU构建,运⾏在其中⼀块电路板上的bootloader,未必能够运⾏在另⼀块电路开发板上。
嵌入式板级开发知识——BSP开发
片级初始化把CPU从上电时的缺省状态逐步设置成为系统所要求的工作状态 这是一个纯硬件的初始化过程
BSP初始化过程——板级初始化 9
完成CPU以外的其他硬件设备的初始化 同时还要设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件
在Windows CE中,BSP是驱动程序、OEM适应层(OEM Adaptation Layers,OAL)、 硬件抽象层(HAL)以及启动设备和使外设正常工作所需BIOS文件的集合。
不同系统中的BSP 4
一个嵌入式操作系统针对不同的CPU,会有不同的BSP 即使同一种CPU,由于外设的一点差别BSP相应的部分也不一样
嵌入式板级开发知识 ——BSP开发
嵌入式板级开发知识——BSP开发 2
BSP的概念 BSP的特点与功能 BSP的设计与实现 BSP初始化过程
BSP的概念 3
BSP全称“板级支持包”(Board Support Packages),说的简单一点,就是一段启动代 码,和计算机主板的BIOS差不多,但提供的功能区别就相差很大
和软件环境 这是一个同时包含软硬件两部分在内的初始化过程
BSP初始化过程——系统级初始化 10
这是一个以软件初始化为主的过程,主要进行操作系统初始化 BSP将控制转交给操作系统,由操作系统进行余下的初始化操作:
➢ 加载和初始化与硬件无关的设备驱动程序 ➢ 建立系统内存区 ➢ 加载并初始化其他系统软件模块(如网络系统、文件系统等) ➢ 最后,操作系统创建应用程序环境并将控制转交给应用程序的入口
BSP的特点与功能 5
硬件相关性 因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,
wince6.0安装说明和对此过程出现的BUG的解决办法
本文说明:从WINCE6.0的安装到使用,花费时间最大的是在下载需要安装的软件和修复各种运行时的BUG错误一.WINCE6.0开发环境建立:主要对WINCE6.0的开发环境需要的软件,硬盘空间,安装步骤等进行了说明二.安装WINCE6.0过程和使用WINCE6.0时遇到的问题及解决办法一.WinCE6.0开发环境建立(1)需要安装的软件及安装包大小(下面提到的软件安装包都已在公司文件服务器平台组public目录下的win CE6.0文件夹中进行备份)1、Visual Studio 2005 2.6G2、Visual Studio 2005 Service Pack 1 430M3、MSDN(可选)4、Windows Embedded CE6.0 3.67G5、Windows Embedded CE 6.0 Platform Builder Service Pack 1 56.3M6、WINCE6.0R2 1.9G7、WINCE6.0R3 1.14G8、Microsoft Device Emulator 2.09、Virtual Machine Network Driver for Microsoft Device Emulator10、WINCE6.0 Updates Packages(2011)大于1.4G本文基于Windows XP SP3操作系统环境,以上10项除第3项外,其他的都必须安装,并且必须安装顺序安装。
软件下载及遇到问题:a.VS2005客户端需要在第三方网站下载,目前微软官方网站上提供的安装包的安装程序是不能启动的,通过微软官网下载只会浪费时间。
b.VS2005 SP1补丁包也可通过第三方网站下载。
c.WINCE6.0客户端+SP1+R2+R3安装包,微软提供了相应的下载器下载这几个部分的安装包,但使用这些下载器的下载速度可能会让你不耐烦,建议找一个第三方网站直接下载这些客户端的离线安装包,我找到的唯一一个地址为:/id/2793687d.用于运行WINCE6.0的OS镜像的模拟器Emulator2.0可以在微软官网下载,但其VirtualMachine Network Driver for Microsoft Device Emulator微软官网已经关闭此安装程序的下载,需要寻找第三方网站进行下载。
深入windows+CE6.0
User Space 2 Gigabytes Each process has its own mapping
Process space 1 GB per process
Executable code and data VM Allocation File Back Mapfiles
0x00000000
Cached access to physical memory
0x80000000
新的操作系统布局
将关键的驱动、文件系统以及图形窗口管理加入 系统内核
Coredll.dll的内核版本
APIS保持一致
优点
极大的减少了系统调用这些组件的开销 减少了所有从用户空间到内核空间之间调用的开销 提高了基础操作系统服务间的代码共用性
内核空间
0xFFFFFFFF CPU Specific VM Kernel VM (if supported by CPU) 256 MB Kernel VM 256 MB
System Trap Area Kernel Virtual Memory Shared by all kernel Servers and drivers Ram file system & ram registry All XIP DLLs in kernel Uncached access to physical memory
CoreDLL继续保持兼容
WIN32s APIS最小集 变更隐藏在库文件中
共享DLL代码继续保持一致
SDK应用程序表现保持一致
运行时保持不变或很少的变化
应用程序采用一些非常规的应用
将需要被修改 如:在进程间传递句柄及指针
主要改变是驱动程序如何访问客户内存
Windows系统开发教程最完整版
File → New…
VC6.0 可以创建的工程文件类型
项目类型 ATL COM AppWizard Win32 Dynamic-Link Library MFC ActiveX ControlWizard MFC AppWizard(dll) Database Project Win32 Application ISAPI Extension Wizard MFC AppWizard(exe) 说明 创建 ATL 应用程序 创建 Win32 动态链接库 创建 ActiveX 控件程序 创建 MFC 动态链接库 创建数据库工程文件 创建 Win32 应用程序 创建 Internet 服务器或过滤器 创建 MFC 可执行程序
Hello World程序
void CHelloView::OnDraw(CDC* pDC) { CHelloDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here pDC->TextOut( 0,0,"hello world"); }
画笔
• BLACK_PEN Black pen(默认) • NULL_PEN Null pen • WHITE_PEN White pen
Windows CE 6.0入门详解(环境搭建系统开发起步)
Windows CE 6.0入门详解(环境搭建内核配置和应用开发起步)武汉众嵌科技有限公司修订历史记录一、安装开发环境 (3)A)按下列顺序安装所需软件 (3)B)安装说明 (3)C)装中可能出现的问题及解决方法 (4)二、WINDOWS CE 内核定制 (5)A)基W INDOWS CE产品开发流程大致分为以下几个阶段 (5)1.硬件设计 (5)2.选定BSP (5)3.获得驱动程序 (5)4.剪裁系统内核 (5)5.导出SDK (6)B)详细制作流程 (6)1.新建立一个OS Design工程 (6)2.建立工程 (7)3.配置工程 (8)C)配置内核 (10)1.选择应用程序(Applications-End User) (10)2.Applications and Services Development (10)3.选择系统核心服务(Core OS Services) (11)munication Services and Networking (12)5.设备管理(Device Management) (12)6.and Data Store (13)7.选择字体(Fonts): (13)8.国际化支持(International) (13)9.Internet Client Services (14)10.Graphics and Multimedia Technologies (14)11.Shell and User Interface (15)D)生成系统镜像 (15)E)生成SDK (16)F)安装A CTIVE S YNC 并配置 (16)G)配置模拟器并生成程序 (16)H)配置模拟器 (17)I)应用开发 (19)一、安装开发环境a) 按下列顺序安装所需软件1.Visual studio 20052.Visual studio 2005 server pack 13.Visual studio 2005 service pack 1 update for Windows vista/74.Windows Embedded CE 6.0 (Windows Embedded CE6.0.iso)5.Windows Embedded CE6.0 service pack 16.Windows Embedded CE 6.0 R27.Windows Embedded CE 6.0 R38.Windows Embedded CE cumulate product update rolluppackage through(12/31/2010)9.VS_emulator.exe(模拟器)b) 安装说明我的系统是Windows 7 旗舰版所以存在一个权限问题我以这样的方式安装所有的程序:c) 装中可能出现的问题及解决方法报错信息:1. ToolsMsmCA(Error): Setup package issue or CoreConDataStore corrupted: DeviceSDKInstComp Add/Remove failed.HR=0x8007005。
自制Windows CE 安装详细图片教程
自制Windows CE 6.0安装详细图片教程强调:本教程是由郭斌和张学良共同完成,图片教程仅是根据自己安装过程制作而成,有错误或者不足之处应以实际情况为准。
有好的意见和建议请发邮件联系我们,联系邮箱是:pmbc88@.1、更新操作系统,升级为SP3首先检查您的操作系统,如果你的操作系统是Miscrosoft Windows XP SP2版本,那么在安装Windows CE之前必须要更新您的系统。
方法是右键点击我的电脑选择属性,在常规中查看操作系统版本,在自动更新中点击从Windows Update 网站安装更新。
进入Windows 系统更新界面,点击立即下载和安装,安装更新程序完成之后要重新启动电脑,重启完电脑之后开始安装Windows XP Service pack 3。
安装完Windows XP Service pack 3之后,重启电脑,右键单击我的电脑属性,这时候发现Windows系统版本已经成为Miscrosoft Windows XP SP3版本,然后继续点击自动更新,按照上面提到的方法来完成SP3相关的后续更新。
由于更新程序数目很多,速度很慢,为了防止电脑进入待机状态,需要对关闭监视器和屏幕保护程序进行设置,具体设置如下图所示。
2、安装前的一系列准备进入微软中国官方网站(/zh/cn/),可以点击所有产品对微软的产品有所了解,而我们即将要安装的Windows CE 6.0 就属于微软的Windows Embedded产品。
点击Windows Embedded即可进入Windows Embedded界面,在这个界面点击关于就可以了解一下什么是Windows Embedded,点击为什么选择Windows Embedded?就可以对Windows Embedded 系列的产品有所了解,这时候就可以发现Windows Embedded CE。
了解完这些之后,下面就可以在Windows Embedded界面点击下载进入Windows Embedded下载中心。
基于WinCE的BootLoader研究
基于WinCE的BootLoader研究摘要:随着计算机技术的快速发展,嵌入式微控制器技术和嵌入式系统已成为当前的一大热点,而BootLoader则是嵌入式系统中重要的一部分。
对WinCE下的BootLoader做了详细的研究。
关键词:WinCE;BootLoaderBootLoader是在操作系统内核运行之前运行的一段小程序,它存放于目标平台的非易失存储介质中,如ROM或Flash。
它可以初始化硬件设备,建立内存空间的映射图,从而将系统的软硬件环境带到 1 个合适的状态,然后加载操作系统映像到内存,跳转到操作系统代码去执行。
在开发CE的过程中,它主要用于启动硬件和下载nk.bin到目标板上,并有一定的监控作用。
下图描述了WinCE的BSP基本结构以及BootLoader所处的位置。
一般来说,对于BootLoader的功能要求并不是严格定义的,不同的场合区别很大。
比如,在PC的硬件平台上,由于硬件启动根本就不是通过BootLoader(而是通过BIOS),所以BootLoader就不需要对CPU加电后的初始化做任何工作.通常,BootLoader必须包含下载CE映像文件的功能。
图1WinCE BSP的基本结构总体上BootLoader需要完成以下工作:(1)初始化CPU速度。
(2)初始化内存,包括启用内存库,初始化内存配置寄存器等。
(3)初始化中断控制器,在系统启动时,关闭中断,关闭看门狗(Watchdog)。
(4)初始化串行端口(如果在目标上有的话)。
(5)启用指令/数据高速缓存。
(6)设置堆栈指针。
(7)设置参数区域并构造参数结构和标记。
(8)执行POST(加电自检)来标识存在的设备并报告有何问题。
(9)为电源管理提供挂起/恢复支持。
(10)传输操作系统内核镜像文件到目标机。
也可以将操作系统内核镜像文件事先在FLASH中,这样就不需要BootLoader和主机传输操作系统内核镜像文件,这通常是在做成品的情况下使用。
1_WinCE定制流程、目录结构及系统构建
Dirs文件和Sources文件
DIRS文件是位于需要编译的文件夹中的一个特 殊的文本文件,它指出了要编译的源程序所在的 文件夹名 SOURCES文件是位于源程序文件夹中的一个特 殊的文本文件,它包含了一些宏定义,编译程序 就是利用这些宏定义作为选项来决定如何编译和 链接这些源程序的
WinCE 详细的目录结构
1.2得到并安装BSP (1)
得到BSP的途径:
Platform Builder自带(CEPC、Emulator、AMD geo提供(ut2410classic) 自主研发(后续课程详细阐述)
安装BSP方法
(1)源码形式->手工安装
平台配置、编译方法)
平台向导:学会定制模拟器、配置模拟器、下载运
行、远程文件同步、IP地址配置方法。
SDK向导:定义、配置、编译、安装。 平台改造:删除、添加组件,重新build SDK,远
程文件同步
一、定制WinCE操作系统的一般流程
1.1概述
定制WinCE一般需要经过: 创建 构建 运行调试 发布
该命令也会编译包含于系统设计工作区 (Workspace)的工程(Project)
没有任何文件拷贝到目标(Release)文 件夹。
3.6 Build阶段
Build阶段将编译和链接图形、窗口和事 件子系统(GWES)、内核、OEM适配 层(OAL)、设备驱动及应用程序等。
该阶段使用了一组特殊的文件DIRS和 SOURCES文件,这些文件确定了Build过 程需要编译和链接什么文件。
耗内存
下载到目标板上调试运行 得到并安装Bootloader ,eboot 配置串口,建立超级终端 配置eboot网络相关参数 配置PB中的target->conectivity options… Target->attach device…
Windows CE系统软件移植流程
Windows CE系统软件移植流程Windows CE(以下简称CE)是一个可定制的嵌入式操作系统,为了适应不同的硬件平台,需要对BSP、Device Driver、bootloader等进行修改、定制。
本文主要讨论在BSP、driver 等已完成的基础上如何移植,关于BSP、driver等的定制在其他文档中详细描述。
Microsoft为定制CE平台提供了一个集成开发工具——Platform Builder(以下简称PB),我们的工作都是利用这个工具完成的。
另需注意,本文是以X-Hyper255B开发板为例进行说明的。
1.安装BSP(Board Support Packet)为了定制CE,BSP是必需的。
BSP包括bootloader、kernel、Device driver和configuration。
在利用PB生成特定平台的CE之前,必须先安装针对该平台的BSP。
例如,在安装完X-Hyper255B开发板的BSP后,在PB的Third Party中会出现它的BSP。
2.为X-Hyper255B定制CE平台2.1. 创建一个新平台1.在PB中选择File->New Platform开始“New Platform Wizard”。
2.在BSP列表中选择“X-HYPER255B:ARMV4”。
3.后续步骤按向导的提示进行,比较简单,这里不再赘述。
2.2. 设置平台参数在生成kernel image之前应该对平台进行一些设置。
1.如下图,右键单击选择“Settings…”(也可选择Platform->Settings)2.在“Build Options”选择页中选中“Enable Eboot Space in Memory”和“Enable FullKernel Mode”。
2.3. 生成Kernel Image1.选择Build->Generate Platform Headers。
嵌入式系统作业(第5~8章)-保证有正确答案
您的本次作业分数为:100分单选题1.致力于IP核质量衡量,提升IP核安全性和有关标准研发的组织不包括()。
A VSIAB OCP-IPC SPIRTD VCID正确答案:D单选题2.以下哪种方式不是Verilog对设计建模的方式()。
A 行为描述方式---用过程化结构建模B 接口描述方式---用模块化结构建模C 数据流方式---使用连续赋值语句方式建模D 结构化方式---用门和模块实例语句描述建模正确答案:B单选题3.XC系列FPGA是下列哪个公司的产品?A XilinxB AlteraC IntelD AMD正确答案:A单选题4.下列哪种存储设备在掉电情况下会丢失数据?A 内存B FlashMemoryC CF卡D 硬盘单选题5.Linux是UNIX类操作系统的一种,它对UNIX有很好的兼容性,下面不是它特点的是()。
A 实时性强B 互操作性强C 多硬件平台支持,多处理器支持。
D 内存保护模式,共享库支持,TCP/IP、SLIP和PPP支持。
正确答案:A单选题6.用来描述一个任务,使得任务得以独立运行的数据结构是()。
A TLBB TCBC BSPD 以上皆不是正确答案:B单选题7.设备名”/sd0”对应的设备类型是()。
A 串口设备B 软盘驱动器C 管道设备D SCSI设备正确答案:D单选题8.当任务等待的资源变得可用时,会触发的任务状态的转换是()。
A 运行-->阻塞B 阻塞-->就绪C 延迟-->就绪D 运行-->延迟单选题9.目前Leon系列处理器包括以下哪个型号()。
A Leon2B Leon1C Leon4D Leon5正确答案:A单选题10.VxWorks操作系统是WindRiver公司推出的一种32位嵌入式实时操作系统,下面不是它优点的是()。
A VxWorks源码开源,用户的开发成本低。
B 简洁、紧凑、高效的内核。
C 支持多任务,实时性强。
D 较好的兼容性和对多种硬件环境的支持。
WindowsCE操作系统定制实验
Windows CE操作系统定制实验任务1:Windows CE平台构建一、实验目地1、学会使用Platform Builder地New Platform Wizard创建一个新地平台,添加和删除组件b5E2RGbCAP2、根据需要对该平台进行裁减、配置和自定义3、在模拟器上运行新建地平台二、实验步骤1、使用New Platform Wizard创建平台:(1>、打开Platform Builder(2>、选择“File”菜单中地“New Platform…”,弹出“New Platform Wizard”向导p1EanqFDPw(3>、“New Platform Wizard - Step1”:选择“Next”(4>、“New Platform Wizard - Step2”:选择“EMULATOR:X86”BSP,按“Next”按钮继续DXDiTa9E3d(5>、“New Platform Wizard - Step3”:在“Available configurations”中选择“Mobile Handheld”,RTCrpUDGiT 在Location中输入“D:\”,在“Platform name”中输入工程名,比如“MyPlatform”,5PCzVD7HxA按“Next”继续(6>、“New Platform Wizard - Step4”:在“Available features”中选择希望加入地应用程序,jLBHrnAILg按“Next”继续(7>、“New Platform Wizard - Step5”:在“Available features”中选择感兴趣地网络协议,按xHAQX74J0X“Next”继续(8>、“New Platform Wizard – Step6”:按“Next”继续(9>、“New Platform Wizard – Step7”:按“Finish”结束平台创建注意:(1>、Platform Builder会为您地平台生成必要地文件,这个过程大概需要花费几秒钟,Platform Builder会在状态栏地左下角显示这一过程地进度LDAYtRyKfE(2>、结束之后,Platform Builder会显示主界面,默认情况下,左面显示地是Workspace窗Zzz6ZB2Ltk口,这里是与我们新创建地平台相关地信息,包括FeatureView,ParameterView和FileView,其中FeatureView是新平台中已经选择地Windows CE 组件,ParamterView是dvzfvkwMI1与最后运行时映像相关地一些配置信息,FileView是用户添加地工程文件(3>、主界面右边是Catalog窗口,这里有我们可以选择地所有Windows CE地组件2、添加和删除组件(1>、展开右边地CatalogView,定位到“Catalog \ Core OS \ Display based device \ Applications rqyn14ZNXI– End User \ File Viewers \ Microsoft Word Viewer”(2>、在“Microsoft Word Viewer”上点鼠标右键,选择“Add toPlatform”,Word查看器被添加到平台中EmxvxOtOco(3>、展开左边地FeatureView,定位到“Mobile Handheld \ Applications - End User \ Help”SixE2yXPq5(4>、在“Help”上点鼠标右键,选择“Delete”,帮助被从平台中删除3、配置和编译平台(1>、选择“Build”菜单地“Set Active Configuration…”项(2>、在弹出地对话框中选择“MYPLATFORM-EMULATOR:X86 Win32(WCE Emulator> Debug”6ewMyirQFL提示:Platform Builder提供了Debug和Release两种配置,两种配置都支持调试,但是Debug版本增加了更多地调试信息和更灵活地跟踪机制,包括操作系统内核和驱动程序kavU42VRUs(3>、选择“Build”菜单地“Build Platform”开始构建平台提示:(1>、根据机器硬件和选择地组件不同,构建平台大约需要10到30分钟,我们可以通过“Build”窗口来查看构建平台地进度,也可以利用这个时间来浏览一下Windows CE地帮助文件<从“Help”->“Contents”菜单)(2>、构建过程分为四个阶段:首先Sysgen阶段用来生成一些二进制组件,然后会把BSP和用户代码编译成二进制,第三步会把前两步得到地二进制文件复制到同一个目录,最后根据配置信息生成运行时映像NK.Bin(3>、构建结束后,您有可能看到类似地信息:Done!makeimg: Check for D:\MyPlatform\RelDir\EMULAT~2\PostRomImage.bat to run.y6v3ALoS89makeimg: Check for D:\MyPlatform\RelDir\EMULAT~2\PostMakeImg.bat to run.M2ub6vSTnPMYPLATFORM - 0 error(s>, 1 warning(s>注意:(1>、Warning并不影响平台地运行,确保没有Error就可以了(2>、如果Build地过程中出现Error,一般可以从如下几个地方获得出错信息:Platform Builder地Output窗口,%WINCEROOT%/Build.log和%WINCEROOT%/Build.err文件0YujCfmUCw4、连接,下载和运行平台(1>、选择“Target”菜单下地“Configure Remote Connection…”菜单项eUts8ZQVRd(2>、在新地对话框中,把“Download”和“Kernel”两项都选择为“Emulator – 4.20”,然后确定,如图所示:sQsAEJkW5T我们也可以点击“Download”下拉菜单边上地“Configure…”按钮进行详细配置(3>、选择“Target”菜单下地“Download / Initialize”菜单项,开始下载注意:当下载成功结束后,模拟器应该自动启动,这个时候会在Platform Builder地“Debug”窗口中打出大量调试信息.然后,我们可以在模拟器中看到Windows CE地桌面.如果下载失败,请检查远程连接地配置是否正确GMsIasNXkA(4>、选择“Target”菜单下地“Disconnect”菜单项,断开连接(5>、关闭模拟器,关闭Platform Builder任务2:应用程序开发一、实验目地:1、学会使用Platform Builder开发应用程序2、学会使用eMbedded Visual C++开发,调试应用程序3、学会使用Visual 开发基于.NET Compact Framework地应用程序TIrRGchYzg二、实验步骤:使用Platform Builder开发应用程序1、打开Platform Builder2、选择“File”菜单下地“Open Workspace…”,然后打开实验1中创建地平台3、选择“File”菜单下地“New Project or File…”,打开“New Project or File”7EqZcWLZNX对话框4、在“Projects”选项页中选择“WCE Application”;在“Project Name”中输入工程地名字,例如“MyApp”lzq7IGf02E5、在“New Project Wizard –step 1 of 1”中选择“Atypical Hello World Application”,点击“Finish”按钮zvpgeqJ1hk注意:向导会自动帮助我们生成一个典型地Windows CE下地Hello World代码框架.我们可以选择左面Workspace窗口地FileView来查看新生成地文件.如果您熟悉Windows下地应用程序开发,可以尝试比较Windows CE下地Hello World与Windows下地Hello World 地异同NrpoJac3v16、选择“Build”菜单中地“Build MyApp.exe”来编译应用程序.如果没有错误,Platform Builder会显示如下信息:1nowfTG4KIMyApp.exe - 0 error(s>, 0 warning(s>7、选择“Build”菜单中地“Make Image”来重新生成NK.Bin注意:每当向映像中添加,删除文件或者改变配置后,都需要重新生成NK.Bin,在这里我们只进行了平台配置地第四步,如果给平台新添加或删除了组件,则必须从第一步Sysgen开始fjnFLDa5Zo8、选择“Target”菜单下地“Download / Initialize”菜单项,重新运行映像9、当Windows CE地桌面显示之后,选择“Target”菜单下地“RunPrograms…”,然后从弹出地对话框中选择“MyApp.exe”,点“Run”按钮.在模拟器上,我们此时可以看到MyApp.exe已经成功地运行了tfnNhnE6e510、选择“Target”菜单下地“Disconnect”菜单项,断开连接11、关闭模拟器,关闭Platform Builder三、实验小结:1、通过本次实验熟悉了Windows CE地帮助文档和基本概念,了解了应用程序开发地基础知识、“、NET”地基础知识HbmVN777sL2、这次实验先构建了Windows CE平台<使用Platform Builder地New Platform Wizard创建),用上次安装地PB工具来开发应用程序,实现了在模拟器上运行程序V7l4jRB8Hs3、做实验要自己操作一遍才会学会、记住,并且要认真按步骤一步一步操作,不然改错会浪费时间,课后还应该多练习83lcPA59W9。
wince 开发
wince 开发Wince 开发概述:Wince(Windows Embedded Compact),是微软推出的一款嵌入式操作系统平台。
它主要针对嵌入式设备,并提供各种工具和功能,使开发人员能够创建和定制各种嵌入式系统。
本文将介绍Wince开发的基础知识、开发环境搭建和常用开发技巧,以帮助读者快速上手Wince开发。
一、Wince 开发基础知识1. Wince特点:Wince是一个轻量级的操作系统,具有小巧灵活、可裁剪、实时响应等特点。
它适用于各种嵌入式设备,如手机、PDA、智能手表等。
Wince提供了基本的系统服务和API,开发人员可以利用这些功能构建自己的应用程序。
2. 开发工具:Wince开发主要使用Visual Studio平台,其中包括Visual Studio 2008、Visual Studio 2010等版本。
开发人员可以利用这些集成开发环境(IDE)进行应用程序的开发、调试和部署。
3. 编程语言:Wince开发支持多种编程语言,包括C++、C#、Visual Basic等。
开发人员可以根据自己的喜好和项目需求选择合适的编程语言进行开发。
4. Wince应用程序:Wince应用程序可以分为两类:桌面应用程序和嵌入式应用程序。
桌面应用程序类似于Windows操作系统上的应用程序,提供丰富的图形界面和交互功能。
嵌入式应用程序更加注重系统资源的管理和性能优化,通常以服务的形式运行。
二、Wince 开发环境搭建1. 安装Visual Studio:首先,需要安装符合Wince开发需求的Visual Studio版本。
根据实际情况选择合适的版本,并按照安装向导进行操作。
2. 安装Wince平台构建工具:在Visual Studio安装完成后,需要安装Wince平台构建工具,以便进行系统和应用程序的构建。
安装过程类似于安装Visual Studio,根据安装向导进行操作。
3. 创建Wince项目:打开Visual Studio,选择新建项目,选择Wince平台项目模板,然后按照提示进行操作。
SMP865X Windows CE 6
SMP865X Windows CE 6.0 内存概述默认分类以下的信息仅限于SMP8654和Sigma Designs在Windows CE6.0下提供的标准BSP。
这个文档将详细说明标准BSP中的高级设计。
概述SNP8654 BSP是基于MIPS II和MIPSII_FP平台上的,除了基础的内核接口外,对于内建的网卡、遥控接收、UART、NAND闪存,SATA和USB设备都提供了驱动和源码启动过程当SMP8654加电启动后,第一片被执行的代码是内欠在芯片中的ROM代码。
这个ROM代码引导和启动XOS2。
XOS2接着确认XOS2 sxenv2中X.XMB的存在(提示,这个XOS2 sxenv2是芯片内部串行闪存中的一个xenv2块,而与设置在NAND闪存中的xenv2块无关,应该被称为zxenv)。
XOS2接着证实和引导x.xmb中的内容。
XMBOOT(x.xmb中的内容)接着引导ZBOOT(设置在NAND 闪存中的第一页中)。
ZBOOT接着完成内存的设置后启动YAMON。
YAMON可以引导CE bootloader。
CE booloader启动CE内核。
如果必要的话整个启动过程是可以被修改的。
X.XMB启动ZBOOT。
它是在启动过程中ZBOOT引导下一个阶段的步骤。
基本上只要你一改变启动过程中的一个步骤,它都会全然地影响到执行者所依据到启动过程中存在的何种状态。
当前开发阶段的启动过程如下:1. ROM //芯片上电后,芯片内部被执行的第一片代码2. XOS2 //用于确认和引导内部串行闪存中的X.XMB3. X.XMB/STAGE0 //即XMBBOOT4. ZBOOT/STAGE1 //NAND闪存中的第一页,完成内存设置,启动YAMON5. YMAON/STAGE26. CE BOOTLOADER7. CE KERNEL尽管从STAGE0开始改变启动步骤是可能的,典型的用户还是从STAGE1开始改变。
第6章.第3节 WindowsCE操作系统开发
先 看一个 平台的创建流程
Platform Setting
使你可以浏览和修改关于整个平台的每个属性的选项 菜单: Platform -> Settings…
Build Options (1)
Enable CE Target Control Support
选择该选项可以在启动时使能目标控制功能(target control support). 选择这一项同时也打开了内核无关传输层(Kernel Independent Transport Layer — KITL). 选择该选项可以在Config.bib文件中预留内存空间,允许在启动过 程中操作系统可以读取boot loader存储的数据. 选择该选项可以开启事件跟踪子系统(event-tracking subsystem). 选择该选项可使线程运行在内核模式,选择该模式会使系统较脆弱, 但是性能会有所提高. 选择该选项可以使编译好的镜像下载后被烧写的到Flash中
允许调试器建立宿主机和目标机间的链接和传送调试信息 要建立宿主机和目标机间的通讯就必须选择该选项,取消该项也 会同时取消被选定的“Enable CE Target Control Support ”选 项 选择该选项可以将Windows CE的有关内核的信息以日志的形式 装入平台镜像中 这是一个有条件编译的标志,设置它表示OS会提供详细的调试信 息来帮助调试. 选择该选项将事件放入release目录,同时开启事件跟踪
PB能做什么?(2)
Windows CE测试套件(Test Kit)提供了整套驱动 测试工具 内核调试器可以调试定制的OS镜像,同时提供给 用户镜像运行状况的信息 应用调试器可以调试在特定OS上运行的应用程序 远程工具可以调试基于Windows CE的目标机上 运行任务,并获取相关信息 模拟器通过模拟硬件可以加快和简化开发过程, 使用户可以在宿主机上完成平台和应用程序的初 步开发 SDK导出向导可以为用户导出一个特定的软件支 持包(software development kit — SDK).
CE开发平台简介
开发平台(Platform Builder和Embedded Visual C++)简介1 Platform Builder介绍Platform Builder是微软公司提供给Windows CE开发人员进行基于Windows CE平台下嵌入式操作系统定制的集成开发环境。
它提供了所有进行设计、创建、编译、测试和调试Windows CE操作系统平台的工具。
它运行在桌面Windows下,开发人员可以通过交互式的环境来设计和定制内核、选择系统特性,然后进行编译和调试。
同时,开发人员还可以利用Platform Builder来进行驱动程序开发和应用程序项目的开发等等。
Platform Builder的强大功能,已使其成为Windows CE平台下嵌入式操作系统开发和定制的必备工具。
以下是Platform Builder提供的工具集。
使用模版来创建一个新的平台。
使用模版来创建一个新的板级支持包。
在Catalog列表中显示了一系列的系统特性,这些特性可以被选择用于新的平台中。
自动检查各个功能模块之间的依赖关系,以确保系统所需要的功能及其子功能,关联的模块都能被包含的定制的目录中。
通过输出的模板,将一个系统的功能输出到配置文件,以便其他用户使用。
提供基本的默认配置,这为定制具有特定功能的操作系统带来了方便。
Windows CE Test Kit提供了测试驱动的一系列工具。
内核调试器能调试被定制的操作系统,并且能给用户提供性能上的测试参数。
应用程序调试器能在目标机或者虚拟机的操作系统中测试应用程序。
远程调试器能通过远程控制来搜集目标机上的信息,比如远程文件监视器、注册表监视器。
虚拟器可以在硬件平台未搭建好的时候能调试硬件无关的程序。
SDK输出模板可以将特定系统的SDK导出,这可以是应用程序开发人员使用EVC 就可以为特定的系统开发软件。
EVC调试的是应用程序软件,而Platform Builder往往要编译整个内核再调试,两者的开发效率是不同的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【原创】Windows CE操作系统BSP开发——————BootLoader开发OAL开发2011-11-290 概述BSP:介于主板硬件和操作系统之间的一层软件系统把操作系统与硬件交互的接口抽象抽取出来,再作为单独的一层函数,操作系统需要访问底层硬件的时候(例如初始化硬件、关中断等),不再直接访问硬件,而是调用抽象出来的这一层函数完成操作。
有了BSP层的抽象之后,操作系统内核的代码就可以做到只与CPU体系结构相关,而与具体的硬件无关了。
对于不同的CPU体系结构,操作系统仍然需要提供编译好的二进制代码或在该CPU下可编译的源代码。
因此,在内核中如果要使用汇编语句,对不同的CPU都要编写一份,所以操作系统代码大多数都是用C/C++实现的。
BSP与特定的嵌入式操作系统相关。
BSP对应的是某块具体的开发板/产品板,而不是某款CPU,也不是某类CPU 体系架构。
因此,BSP 与开发板一一对应。
概念:芯片支持包,CSPOAL 层:负责Windows CE 内核与硬件通讯。
当引导程序引导操作系统结束后,由OAL层负责硬件平台初始化、中断服务例程、实时钟、计时器、内核调试、开关中断和内核性能监测等工作。
OAL的代码在物理上是内核的一部分,最终经过编译链接,OAL会成为内核的一部分。
引导程序(Boot Loader):在硬件开发板上执行的一段代码,它的主要功能是初始化硬件、加载操作系统映像到内存,然后跳转到操作系统代码去执行。
配置文件:一些包含配置信息的文本文件。
这些配置信息通常与操作系统映像或源代码有关。
例如告诉编译系统如何编译某些源代码,或告诉编译系统如何配置最终的操作系统映像文件。
.BIB、.DB、.REG 和.DAT四类平台初始化文件:用来告诉MakeImage工具如何生成操作系统映像;Sources和DIRS文件:告诉构建系统如何构建代码;CEC文件:这样BSP可以与Platform Builder集成。
设备驱动程序:Q:当最终的产品中不包含boot loader时,操作系统是如何启动的?A:开机就执行OAL代码,然后启动操作系统。
发布BSP的目的是把BSP打包成安装文件,以方便第三方软件开发商使用。
一般而言,可以把BSP打包成.MSI安装文件。
1 BootLoader开发Boot Loader通常位于目标设备上的非易失存储设备中(例如Flash、ROM),并且在系统加电或重置的时候自动执行。
可以通过JTAG或串口烧写工具把Boot Loader烧写到目标设备上。
绝大多数Boot Loader都会从开发机下载映像到目标机然后执行。
与使用JTAG烧写映像到目标机相比,这样做在开发过程中可以方便的更新目标机上的映像,缩短“修改/构建/下载/调试”的开发周期,以节省开发时间。
而之所以选用以太网,主要考虑是它的速度比较快。
图Boot Loader的执行顺序总体而言,Windows CE的Boot Loader有三大功能:◆初始化目标硬件设备:包括初始化内存、中断控制器、时钟和MMU等◆控制启动过程:提供一个简单的菜单与用户交互◆下载并执行操作系统Boot Loader组成BLCommon库:实现通用的Boot Loader框架,其功能包括:把Boot Loader搬到RAM里以获得更快的访问速度、解析以及解包.BIN文件的格式、检验校验和以及跟踪加载进度。
BLCommon库还会调用OEM代码来处理硬件初始化等操作。
在Boot Loader的代码中,开发者可以直接链接blcommon.lib 来使用BLCommon库中的功能。
OEM代码:以OEM开头的一些函数,需要开发人员实现。
EBoot库:实现DHCP、TFTP和UDP网络服务。
在Boot Loader的代码中,开发者可以直接链接eboot.lib来使用EBoot库中的功能。
Windows CE使用TFTP协议进行下载,EBoot库的目的是简化和封装复杂的网络操作。
Boot Loader中有两类设备经常被用到:以太网卡——下载操作系统映像;Flash——用来存储Boot Loader和下载的操作系统映像。
因此Boot Loader针对这两类硬件设备也抽象出了统一的接口,也可以被称作驱动程序,分别是EthDbg 驱动和FMD 驱动。
注:TFTP是一个简单的文件传输协议,EBoot使用它来下载操作系统映像;TFTP是基于UDP协议的。
DHCP 是从服务器动态获得IP地址的协议;如果网段内有DHCP 服务器,EBoot可以用DHCP 动态获得IP地址。
Boot Loader的工作流程和原理Boot Loader的实现必须和可选实现的OEM函数必须实现的与串口调试相关的函数配置和编译Boot Loader1,编译源代码Boot Loader的源代码由C语言代码和汇编语言代码组成。
编译这些代码都可以在Windows CE的构建系统下完成。
因此对于要构建的代码,首先需要编写SOURCES和DIRS文件。
2,配置Boot Loader配置文件须包含目标设备上的内存分配信息,其次要包含ROM的一些信息如起始位置、宽度等,最后还要包含需要打包的文件列表。
Boot.lib文件用来配置Boot Loader。
3,打包打包Boot Loader的工具与打包OS的工具是一样的,都是RomImage.exe。
此工具只接受一个BIB文件为参数。
SOURCES文件的最后一行定义了BootImage附加操作,构建系统在所有编译链接完成后自动调用此操作。
BootImage操作定义在EBoot目录的Makefile.inc文件中:使用RomImage.exe工具打包EBoot代码,将生成的文件(可能的格式有NB0、BIN和SRE)复制到Release目录。
4,最终,根据不同目标设备的烧写方式不同,选择一个适用于自己目标设备的映像,烧写进内置的Flash中,就可以在目标设备上运行Boot Loader了。
SOURCES文件实例:SMDK2410 BSP,Eboot,SOURCES2 OAL开发OAL(OEM Abstraction Layer)是位于Windows CE操作系统内核和目标硬件设备之间的硬件抽象代码。
从物理上来说,OAL的代码是操作系统内核的一部分。
通常OAL代码会被编译成一个库,然后这个库与其它的内核库进行链接,共同形成操作系统内核的可执行文件。
如果在最终的产品中没有Boot Loader,显然在OAL中就要实现硬件初始化。
WINCE的内核代码与CPU相关而与硬件设备无关,所有与具体外设相关的代码都在OAL中。
值得注意的是在OAL中,有很多代码是可以Boot Loader和OAL通用的。
这其中包括一些硬件初始化代码和端口访问代码。
Windows CE内核的构成:NK库:通常指的是NK.lib或NKProf.lib文件,这两个库文件是由微软提供的,包含了Windows CE操作系统内核的大部分功能。
例如:进程线程管理、调度管理、内存管理等。
因此NK 库是内核的核心所在。
其中NK.lib 是含有内核基本功能的库,而NKProf.lib 中含有性能监控代码。
根据CPU体系结构不同,NK库一共有四种,分别对应X86、ARM、MIPS和SH四类CPU。
这也是内核代码与CPU体系结构相关的体现。
KITL是Kernel Independent Transport Layer的缩写,其基本的思想是提供操作系统内核在开发机和目标设备之间建立连接和通信的途径。
正如KITL的名字所描述的一样,KITL的特点是与具体的数据传输介质无关。
数据可以通过以太网、串口、USB 或者并口等多种方式进行传输,但是对于操作系统内核而言,它看到的是统一的接口。
连接建立之后,操作系统内核的很多服务都可以架构在KITL之上。
例如内核调试,控制台等等。
实现KITL的库文件是KITL.Lib。
C函数库也是由微软提供的。
这部分代码是在内核中使用的C语言函数,名字是FullLibc.Lib。
一般的CRT代码都会架构在操作系统之上,并且用到操作系统的一些功能,但是这个库是与操作系统无关的,不会用到操作系统提供的服务,因此可以安全的用在操作系统内核中。
也正因如此,它实现的仅仅是C函数库的一个子集。
Production-Quality OAL是由微软提供的一些可重用的代码库。
这些代码库包含对特定CPU 或CPU内置的外设控制器的操作代码。
在实现BSP的时候,如果要实现对CPU操作或对CPU 内置控制器的操作,应该尽量使用PQOAL中的库而不要自己实现。
在BSP的代码中,基本上以OAL开头的函数都是PQOAL 库中的函数。
在ARM的函数调用过程中,寄存器R0、R1、R2和R3被用来传送函数的参数,而不像X86中把函数的参数放在栈上。
KernelStart()函数,即主控函数的功能:PRIVATE\WINCEOS\COREOS\NK\KERNEL\ARM\Armtrap.s 1,初始化页表、打开MMU和Cache页表就是虚拟地址和物理地址的映射表。
MMU利用查找页表把虚拟地址映射到物理地址。
页表中除了记录有虚拟地址的映射信息外,还包含此段内存的访问权限。
用户设置一个虚实映射的数组,Windows CE的代码会自动根据这个数组的内容去设置相应的页表。
这个数组就是OAL_ADDRESS_TABLE 。
它是一个有用户填充的数组,数组中的内容定义了物理地址到带缓存的虚拟地址(0x8000 0000到0x9FFF FFFF)之间的映射关系。
KernelStart()的代码会根据这个数组的内容,来配置页表。
KernelStart()会根据这个表建立两份虚实映射。
以SMDK2410为例,数组的定义在\PLATFORM\SMDK2410\SRC\INC\oemaddrtab_cfg.inc中。
g_oalAddressTableDCD 0x80000000, 0x32000000, 32 ; 32 MB DRAM BANK 6DCD 0x82000000, 0x08000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 1DCD 0x84000000, 0x10000000, 32 ; nGCS2: PCMCIA/PCCARDDCD 0x86000000, 0x18000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 3DCD 0x88000000, 0x20000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 4DCD 0x8A000000, 0x28000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 5DCD 0x8C000000, 0x30000000, 32 ; 32 MB DRAM BANK 6DCD 0x90800000, 0x48000000, 1 ; Memory control registerDCD 0x90900000, 0x49000000, 1 ; USB Host registerDCD 0x90A00000, 0x4A000000, 1 ; Interrupt Control registerDCD 0x90B00000, 0x4B000000, 1 ; DMA control register……………………DCD 0x91800000, 0x58000000, 1 ; A/D convert registerDCD 0x91900000, 0x59000000, 1 ; SPI registerDCD 0x91A00000, 0x5A000000, 1 ; SD Interface registerDCD 0x92000000, 0x00000000, 32 ; 32 MB SROM(SRAM/ROM) BANK 0DCD 0x00000000, 0x00000000, 0 ; end of tableEND2,设置异常向量跳转表3,当MMU和Cache打开之后,还需要初始化每个模式下的栈,才能开始执行C语言代码。