"《WinCE开发实践》是一本专注于Windows CE操作系统开发的教材,由李伟铭撰写,来自亿道电子技术有限公司。本书涵盖了从系统启动、地址空间分配到特定功能如LOGO显示、CF卡启动和USB Host驱动的实现等关键知识点。书中详细解析了WinCE的启动流程,包括汇编语言层面的Startup()函数以及C代码中的BootLoaderMain()等系列初始化函数。此外,还介绍了内存映射表的配置以及内存空间的分布,例如Eboot、NK.BIN和Logo在FLASH和SDRAM中的位置。"
在WinCE开发实践中,系统启动是一个至关重要的环节。启动流程始于汇编语言编写的Startup()函数,该函数位于\XSBase255\KERNEL\HAL\ARM\fwxsc1.s文件中,接着一系列初始化操作如Reset_Handler、PREINIT、INITGPIO、INITCLKS、DISPLAY_FREQS、INITMMU,最终调用到blmain。在C代码层面,BootLoaderMain()函数是启动流程的核心,它会调用一系列的OEM和下载相关的函数,如OEMDebugInit()、OEMPlatformInit()等,实现系统的预下载、映像下载及启动。
地址空间分配在WinCE系统中扮演着基础架构的角色。映射表位于..\XSBase255\INC\memmap.inc,定义了内存区域的分配,如Eboot、Ebootcfg、NK.BIN、REGcfg等位于FLASH的不同地址,而Logo则存储在SDRAM的1MB区域内。系统内存总计28M,NK代码区占用32M,Eboot的运行区域位于地址0x80000000。
LOGO显示部分,书中详细讲解了如何将Logo图片转换为数据,并集成到Eboot的代码中,通过LCD_Initialize()等函数实现LCD显示。这一过程涉及图像处理和设备驱动的知识。
CF卡启动是另一个实践重点,目的是从CF卡上启动NK.bin程序。书中阐述了EBOOT中内嵌的代码如何初始化CF卡接口,读取文件并确认其为NK.bin,然后设置程序的执行入口点。这种启动方式增加了系统部署的灵活性。
至于磁盘结构,书中提到了C/H/S(柱面/磁头/扇区)的概念,这在访问和管理存储设备时非常重要。通过理解这些概念,开发者可以更好地理解和处理与存储设备相关的操作。
《WinCE开发实践》是一本深入浅出的教程,涵盖了从系统底层到应用层的各种关键知识点,对于想要从事WinCE系统开发的工程师来说,是一份宝贵的参考资料。