《手持式移动设备嵌入式WinCE开发(4.1)》由会员分享,可在线阅读,更多相关《手持式移动设备嵌入式WinCE开发(4.1)(42页珍藏版)》请在金锄头文库上搜索。
1、v手持式移动设备嵌入式手持式移动设备嵌入式WinCE开发开发4WinCE映像文件下载映像文件下载 第章本章目标理解理解BootLoader在映像文件下载过程中的作用在映像文件下载过程中的作用掌握掌握BootLoader烧写方法和原理烧写方法和原理掌握通过掌握通过PB下载内核映像的方法下载内核映像的方法 4.1 BootLoader概述概述vBootLoaderBootLoader 就是在操作系统内核运行之前运行的就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,可以完成初始化一段小程序。通过这段小程序,可以完成初始化硬件设备、建立内存空间的映射图、和内核镜像硬件设备、建立内存空间的映
2、射图、和内核镜像建立通讯通道和建立通讯通道和 调试通道等等工作。调试通道等等工作。 (ARM2410(ARM2410的的BootLoaderBootLoader分为分为NbootNboot和和ebooteboot) )vBootLoaderBootLoader 是严重依赖于硬件,必须专门定制。是严重依赖于硬件,必须专门定制。vBootloaderBootloader实现的功能都无外乎两个:实现的功能都无外乎两个:启动内核启动内核镜像和下载内核镜像镜像和下载内核镜像 启动加载(启动加载(BootloadingBootloading)模式:即)模式:即BootloaderBootloader自动加
3、载系统的过程,整个过程自动加载系统的过程,整个过程并没有开发者和用户的介入。在正常条件下,并没有开发者和用户的介入。在正常条件下,必须保证这种启动方式的有效,特别是在嵌必须保证这种启动方式的有效,特别是在嵌入式产品发布的时侯,入式产品发布的时侯,BootLoaderBootLoader必须直接必须直接工作在这种模式下以保证系统的正常运行。工作在这种模式下以保证系统的正常运行。 4.1 BootLoader概述概述下载(下载(DownloadingDownloading)模式:在这种模式下,目标机上的)模式:在这种模式下,目标机上的Boot Loader Boot Loader 将通过串口连接或
4、网络连接等通信手段从主机将通过串口连接或网络连接等通信手段从主机(HostHost)下载内核等文件。从主机下载的文件通常首先被)下载内核等文件。从主机下载的文件通常首先被 BootLoaderBootLoader保存到目标机的保存到目标机的 RAM RAM 中,然后再被中,然后再被 BootLoaderBootLoader 写到目标机上的写到目标机上的 FLASH FLASH 类固态存储设备中。类固态存储设备中。BootLoaderBootLoader 的的这种模式通常在第一次安装内核与根文件系统时被使用;此这种模式通常在第一次安装内核与根文件系统时被使用;此外,以外,以 后的系统更新也会使用
5、后的系统更新也会使用 BootLoaderBootLoader 的这种工作模的这种工作模式。工作于这种模式下的式。工作于这种模式下的 Boot Loader Boot Loader 通常都会向它的终通常都会向它的终端用户提供一个简单的命令行接口,并可以执行简单的交互。端用户提供一个简单的命令行接口,并可以执行简单的交互。 4.1 BootLoader概述概述vARM2410ARM2410上的上的 WinCE WinCE 系统和其他系统和其他 RTOS RTOS 不同,它具有两级不同,它具有两级 BootloaderBootloader 来引导内核镜像。在来引导内核镜像。在 Bootloader
6、Bootloader 阶段,比阶段,比起其他系统起其他系统 BootloaderBootloader 来讲要复杂的多。来讲要复杂的多。 4.2 烧写烧写Bootloader vWinCE WinCE 所需的所需的 BootloaderBootloader 有多个镜像文件组成,分别为:有多个镜像文件组成,分别为:2410loader.Bin 2410loader.Bin NBOOT NBOOT,烧写至,烧写至 Block0Block0。Tocblock1 Tocblock1 TOC TOC,烧写至,烧写至 Block1Block1。Eboot.nb0 Eboot.nb0 EBOOT EBOOT,
7、烧写至,烧写至 Block2Block2。Logo.binLogo.bin 启动时的启动时的 LOGO LOGO 镜像,烧写至镜像,烧写至 Block10Block10,可省略。,可省略。vNbootNboot的烧写的烧写 NbootNboot(NandFlashNandFlash BootloaderBootloader)是)是24102410板子上板子上WinCE WinCE 的第的第一级一级BootloaderBootloader,位于位于 NandNand Flash Flash 的的Block0Block0。主要负责初。主要负责初始化始化 FlashFlash,读取,读取 TOCTO
8、C等等工作,等等工作,最后将最后将 EbootEboot 内容拷贝内容拷贝到到 RAM RAM 中,把中,把 CPU CPU 执行权交给执行权交给 EbootEboot 接管接管。 NbootNboot将将EbootEboot加载到加载到24102410的的RAMRAM,EbootEboot将将NK.binNK.bin(内核镜像(内核镜像文件)加载到文件)加载到2410.2410. 4.2 烧写烧写Bootloader 使用使用 SJF SJF 来把来把 NbootNboot 部分部分 BootloaderBootloader 烧写在第烧写在第 0 0 个个 block block 中。使用方
9、法如下:中。使用方法如下:首先,修改首先,修改 BIOS BIOS 中计算机并口的选项,设置并口为中计算机并口的选项,设置并口为“378378”模式。在平台和模式。在平台和 PC PC 之间连接好之间连接好 JTAG JTAG (并口)(并口)下载线,下载线, 并并开始安装开始安装 GiveioGiveio (JTAGJTAG口)驱动。口)驱动。 在在WinXPWinXP下安装下安装GiveioGiveio 驱动步骤如下:驱动步骤如下:复制复制giveio.sysgiveio.sys到到C:WINDOWSsystem32driversC:WINDOWSsystem32drivers目录下。目录
10、下。在控制面板选择在控制面板选择“添加硬件添加硬件” 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 接下来就可以进行接下来就可以进行NbootNboot的烧的烧写写了。了。烧烧写写的格式是的格式是: : sjf2410 /f:2410loader.binsjf2410 /f:2410loader.bin
11、 v烧写烧写TOCTOCTOCTOC(Table Of ContentTable Of Content)是整个是整个 NandNand Flash Flash 中存储内容中存储内容的一个列表的一个列表,这里面储存了有,这里面储存了有 关启动和系统内核的一些相关启动和系统内核的一些相关存储信息,需要写在关存储信息,需要写在 NandNand Flash Flash 的的 block1 block1 中,由中,由 NbootNboot 里的函数读取。之后里的函数读取。之后 NbootNboot 会按照读取的内容进行会按照读取的内容进行配置和跳转到不同的地址。配置和跳转到不同的地址。 TOCTOC的
12、烧写格式的烧写格式sjf2410 /f:tocblock1sjf2410 /f:tocblock1注意注意TOCTOC是被烧写到是被烧写到block1block1的。的。 4.2 烧写烧写Bootloader vEbootEbootEbootEboot(Ethernet Ethernet BootloaderBootloader)是一种高级)是一种高级 BootloaderBootloader,可以理解为一个伪的可以理解为一个伪的Kernel ImageKernel Image,位于从位于从NandNand Flash Flash的的Block2 Block2 (512KB512KB)开始部分
13、空间)开始部分空间。它主要负责各个设备的。它主要负责各个设备的初始化,内存地址映射,文件系统,网络系统驱动和加载初始化,内存地址映射,文件系统,网络系统驱动和加载内核镜像的相关准备工作,已经是比较复杂的内核镜像的相关准备工作,已经是比较复杂的BootloaderBootloader了。了。 使用使用EbootEboot下载内核,下载内核,EbootEboot执行完毕之后可以通过控制台执行完毕之后可以通过控制台来下载真正的来下载真正的Kernel ImageKernel Image, 并跳转到并跳转到Kernel Kernel 来执行,来执行,这时系统就引导起来了。这时系统就引导起来了。在执行过
14、程中,在执行过程中,EbootEboot 会根据需要改变会根据需要改变TOCTOC中的内容,这样中的内容,这样就记录下来当时的状态,例如就记录下来当时的状态,例如IPIP地址地址,MAC ,MAC 地址,启动信息地址,启动信息等等等等。 4.2 烧写烧写Bootloader 只有在调试阶段才有使用只有在调试阶段才有使用EbootEboot的必要,当系统设计完毕之的必要,当系统设计完毕之后,可以通过修改后,可以通过修改NbootNboot 来直接跳转执行来直接跳转执行Kernel ImageKernel Image,不再使用不再使用EbootEboot 来控制执行。这时,启动速度会有很大提来控制
15、执行。这时,启动速度会有很大提高高。Boot Loader Boot Loader 由两部分组成:由两部分组成:OEM OEM 启动代码(启动代码(OEM startup OEM startup codecode)和主代码()和主代码(main codemain code)。)。 OEMOEM启动代码是最先执行启动代码是最先执行的部分,它的功能是初始化内存寄存器、设置的部分,它的功能是初始化内存寄存器、设置 CPU CPU 频率、频率、初始化高速缓存等。之后它跳转到主代码中执行。一般初始化高速缓存等。之后它跳转到主代码中执行。一般OEMOEM启动代码都是用汇编编写。主代码一般用启动代码都是用汇
16、编编写。主代码一般用C C语言编写,它负语言编写,它负责其它所有任务,在执行的同时还能够将执行的相关信息责其它所有任务,在执行的同时还能够将执行的相关信息显示在屏幕上。一般添加公司显示在屏幕上。一般添加公司 LOGO LOGO 或者其它启动或者其它启动 LOGO LOGO 都在此修改。都在此修改。 4.2 烧写烧写Bootloader 主代码主要由几个部分组成:主代码主要由几个部分组成:镜像下载代码,通过并口或者网卡来实现从远程计算机下载镜像下载代码,通过并口或者网卡来实现从远程计算机下载nk.binnk.bin串口调试代码,包含对串口的读写函数,用户调用这些函数。串口调试代码,包含对串口的读
17、写函数,用户调用这些函数。就可以通过串口在远程计算机和本地计算机之间通信。就可以通过串口在远程计算机和本地计算机之间通信。写写flashflash代码,包含写镜像到代码,包含写镜像到flashflash的函数。的函数。硬件监控代码。硬件监控代码。 4.2 烧写烧写Bootloader 4.2 烧写烧写Bootloader 在在EbootEboot中,当所有关中,当所有关于网络和系统的初始化于网络和系统的初始化工作都已经完成,并作工作都已经完成,并作好了下载内核镜像的准好了下载内核镜像的准备后,备后,DownloadImageDownloadImage()()就开始下载内核镜像,就开始下载内核镜
18、像,然后执行然后执行OEMLaunchOEMLaunch()()函数,跳转到内核开始函数,跳转到内核开始地址运行。此后内核就地址运行。此后内核就接管了接管了CPUCPU的使用权和的使用权和控制权,控制权,BootloaderBootloader退退出控制。出控制。 4.2 烧写烧写Bootloader EbootEboot的烧写格式的烧写格式sjf2410 /f:eboot.nb0 sjf2410 /f:eboot.nb0 EbootEboot应该被写入应该被写入block2block2v开发包中提供了一个批处理文件,可以将前面讲到的三开发包中提供了一个批处理文件,可以将前面讲到的三个部分的烧
19、写工作一次性完成。个部分的烧写工作一次性完成。v烧写烧写LOGOLOGO这一部分是可以省略的,它的烧写时间较长。这一部分是可以省略的,它的烧写时间较长。4.3 运行运行Eboot v配置超级终端配置超级终端打开超级终端打开超级终端填入连接名填入连接名填写通讯时使用的接口,我们这里选择填写通讯时使用的接口,我们这里选择COM1COM1修改波特率为修改波特率为115200bps115200bps,数据流控制为,数据流控制为“无无”v开启开发板的电源可以看到如下画面。开启开发板的电源可以看到如下画面。4.3 运行运行Eboot 4.3 运行运行Eboot 运行的运行的EbootEboot界面界面 4
20、.3 运行运行EbootvEbootEboot中各个功能选项的解释中各个功能选项的解释为设备启动为设备启动IP IP 及子网地址设定;及子网地址设定;2 2 为为boot boot 延时的时间设定;延时的时间设定;3 3 选择是否设置动态选择是否设置动态IP IP 分配,这一级分配,这一级Boot Boot 可以选择可以选择IP IP 分分配方式;配方式;4 4 为重置为重置TOC TOC 为缺省设置,各项参数将还原为默认值;为缺省设置,各项参数将还原为默认值;5 5 有两个选择,切换有两个选择,切换DOWNLOAD NEW DOWNLOAD NEW 方式和方式和LAUNCH EXIST LA
21、UNCH EXIST 方式;方式;6 6 选择是否将选择是否将RAM RAM 内的内的image image 写入到写入到NandNand Flash Flash 中去,如中去,如果是果是DisableDisable,则系统掉电将,则系统掉电将不能被保存;不能被保存;7 7 选择修改选择修改MAC MAC 地址,推荐避开主机的地址,推荐避开主机的MAC MAC 地址;地址;4.3 运行运行Eboot8 8 选择是否开启选择是否开启Kernel Debug Kernel Debug 功能;功能;9 9 为格式化整片为格式化整片NandFlashNandFlash 为二进制文件系统,这需要大为二进
22、制文件系统,这需要大约几分钟的时间;约几分钟的时间; B B 选择是否支持二进制文件系统,如果选择了选择是否支持二进制文件系统,如果选择了9 9,则必须,则必须支持二进制文件系统;支持二进制文件系统;D D 下载内核镜像;下载内核镜像;R R 读取读取TOC TOC 中实际配置数据;中实际配置数据;F F 为低级格式化为低级格式化NandFlashNandFlash,选择这一项将擦除,选择这一项将擦除flash flash 上上包括包括BootloaderBootloader 的所有内容;的所有内容;L L 运行运行NandFlashNandFlash 上已有的内核镜像。上已有的内核镜像。W
23、W 将当前配置好的数据写到将当前配置好的数据写到TOC TOC 中保存中保存 v以上这些功能解释我们将在实验中进一步向大家讲解它以上这些功能解释我们将在实验中进一步向大家讲解它的用法。的用法。 4.4通过通过 PB 下载下载 WinCE 内核内核 v首先确保用可靠的首先确保用可靠的PC-PCPC-PC直连网线将开发机和设备连接在直连网线将开发机和设备连接在一起,或者将设备用可靠的一起,或者将设备用可靠的 普通网线挂到局域网内。普通网线挂到局域网内。v然后打开然后打开 Platform Builder 4.2Platform Builder 4.2,将已经编译好的,将已经编译好的 NK.binN
24、K.bin 拖拽到拖拽到 PB PB 中。中。 4.4通过通过 PB 下载下载 WinCE 内核内核v在在PBPB中选择菜单中中选择菜单中 TargetConfigure Remote TargetConfigure Remote Connection,Connection,弹出如下对话框,将弹出如下对话框,将“DownloadDownload”、“KernelKernel”两栏都选择为两栏都选择为“EthernetEthernet”,点击,点击“确定确定”退退出出。 4.4通过通过 PB 下载下载 WinCE 内核内核 v启动实验板,按空格进入控制台,监视超级终端,配置好子启动实验板,按空格
25、进入控制台,监视超级终端,配置好子网掩码和系统网掩码和系统IPIP,保存选项,再选择,保存选项,再选择“D D”选项下载新的内核,选项下载新的内核,然后等待超级终端出现下面信息:然后等待超级终端出现下面信息: Sent BOOTME to 255.255.255.255Sent BOOTME to 255.255.255.255v选择菜单中选择菜单中 TargetConfigure Remote ConnectionTargetConfigure Remote Connection,在,在 Download Download 栏中按栏中按 ConfigureConfigure。 按钮,出现如下
26、对话框。按钮,出现如下对话框。 4.4通过通过 PB 下载下载 WinCE 内核内核 v在在 Available Devices Available Devices 框中选择识别出的设备名,点击框中选择识别出的设备名,点击框中的设备,在框中的设备,在 Selected Selected DeveiceDeveice中选中该设备,之后中选中该设备,之后点点“OKOK”确定。退出远程连接配置对话框。确定。退出远程连接配置对话框。v选择菜单中的选择菜单中的 Target-Download/InitializeTarget-Download/Initialize。这时会出。这时会出现下载进度,如下图所
27、示现下载进度,如下图所示。 4.4通过通过 PB 下载下载 WinCE 内核内核 4.4通过通过 PB 下载下载 WinCE 内核内核 v下载时开发板上的下载时开发板上的 LED LED 循环闪烁,指示下载的速度。如循环闪烁,指示下载的速度。如果果 LED LED 停止循环闪烁,则表示停止循环闪烁,则表示 下载暂停或终止。下载完下载暂停或终止。下载完毕后目标板上的毕后目标板上的WinCEWinCE系统会自动运行系统会自动运行。 4.4通过通过 PB 下载下载 WinCE 内核内核 4.5建立建立WinCE平台与平台与PC连接连接vMicrosoft ActiveSyncMicrosoft Ac
28、tiveSync允许使用串行或允许使用串行或USBUSB电缆、底座或电缆、底座或红外线在移动设备和桌面计算机之间建立合作关系。建立红外线在移动设备和桌面计算机之间建立合作关系。建立合作关系后,如果设备支持调制解调器或网合作关系后,如果设备支持调制解调器或网( (以太网以太网) )卡,卡,就可以使用它们同步数据。通过就可以使用它们同步数据。通过ActiveSyncActiveSync还可以使用现还可以使用现有计算机连接其他资源。有计算机连接其他资源。v开发时,需要从设备复制或移动文件,或者添加或删除程开发时,需要从设备复制或移动文件,或者添加或删除程序,但此过程不会同步任何信息。这种情况下,序,
29、但此过程不会同步任何信息。这种情况下,ActiveSyncActiveSync以来宾身份工作。以来宾身份工作可以建立无以来宾身份工作。以来宾身份工作可以建立无信息同步的临时连接。信息同步的临时连接。 4.5建立建立WinCE平台与平台与PC连接连接v在在PCPC上安装好上安装好Microsoft ActiveSyncMicrosoft ActiveSync软件。软件。 4.5建立建立WinCE平台与平台与PC连接连接v将专用将专用 USB USB 连接线一端插入硬件平台的连接线一端插入硬件平台的 USB Device USB Device 插插槽中,将另一端插入槽中,将另一端插入 PC PC
30、上的上的 USB USB 插插 槽,此时平台的液槽,此时平台的液晶屏上会显示出正在连接的窗口。晶屏上会显示出正在连接的窗口。v连接成功时,连接成功时,ActiveSyncActiveSync会弹出新建合作关系的对话框会弹出新建合作关系的对话框 。 4.5建立建立WinCE平台与平台与PC连接连接v可以选择可以选择“是是”来建立合作关系,点击下一步进行详细的来建立合作关系,点击下一步进行详细的设置,这有赖于设置,这有赖于 WinCE WinCE 系统的定系统的定 制情况;也可以选择制情况;也可以选择“否否”,或者点击,或者点击“取消取消”。v对于我们提供的平台,如果在定制的时候加入对对于我们提供
31、的平台,如果在定制的时候加入对 ActiveSync ActiveSync 的支持,并且加入了文件同步的特征,当取的支持,并且加入了文件同步的特征,当取消这个对话框以后,可以在我的电脑中看到一个消这个对话框以后,可以在我的电脑中看到一个 WinCE WinCE 设备的图标设备的图标。 4.5建立建立WinCE平台与平台与PC连接连接v至此,我们已经完成了至此,我们已经完成了 PC PC 与设备的连接,通过此连接,与设备的连接,通过此连接,我们可以查看设备的各项属性,包我们可以查看设备的各项属性,包 括文件,注册表,进括文件,注册表,进程和线程等等,也可以连机调试应用程序程和线程等等,也可以连机调试应用程序。总结总结v本本章章中中的的主主要要内内容容都都有有待待于于上上机机实实验验中中去去熟熟悉悉操操作和理解。作和理解。作业1.1.简述简述BootLoaderBootLoader下载原理下载原理? ?