一,开发环境搭建
VS2005S3C2440AWinCE6.0WINCE6.0BSPWINCD6.0工程文件
WINCD6.0工程文件下载 http://download.youkuaiyun.com/detail/qq236106303/3920877WINCE6.0BSP 下载 http://download.youkuaiyun.com/detail/qq236106303/3921393
问题总结:
复制BSP包到WINCE安装目录下的platform目录中,复制工程目录到WINCE安装目录下的OSDesigns目录。 打开VS2005中打开工程,提示报警找不到WINCEROOT环境变量。
出错原因:
在安装WINCE6.0的时候更改了默认的目录。使其安装在非根目录,或者路径中包含有空格
解决办法:
卸载了WINCE6.0,重新安装,注意选择安装路径在根目录。安装完成在VS2005中打开工程.选择Tool->Options->Platform Builder for CE 中可以设置WINCEROOT,将其设置为安装WINCE6.0的目录。
二,WINCE6.0工程编译
问题总结:
打开WINCE6.0的工程后点击工具栏的Build->Advance Build Commands->Build And Sysgen 进行编译,最后编译出错.出错信息为又宏没有定义。
出错原因:
没有安装WINCE6.0的升级包。
解决办法:
安装WINCE6.0升级包WinCEPB60-091231-Product-Update-Rollup-Armv4I.msi
三,镜像烧写
编译成功后在\OSDesigns\TQ2440A\RelDir\TQ2440_ARMV4I_Release生成了STEPLDR.nb0,STEPLDR.nb1,STEPLDR.nb2,EBOOT.bin,EBOOT.nb0我们烧写STEPLDR.nb1到nandflash的0block.其大小为4K,主要功能是搬迁EBOOT到RAM中运行。搬迁代码在E:\WINCE600\PLATFORM\TQ2440\Src\Bootloader\Stepldr的main.c中
- for (nPage = rNAND_COPY_PAGE_OFFSET ; nPage < (LOAD_SIZE_PAGES + rNAND_COPY_PAGE_OFFSET) ; nPage++)
- {
- nBlock = ((nPage / rNAND_PAGES_PER_BLOCK) + nBadBlocks);
- if (!NF_ReadPage(nBlock, (nPage % rNAND_PAGES_PER_BLOCK), pCopyPtr))
- {
- if ((nPage % rNAND_PAGES_PER_BLOCK) != 0)
- {
- //Led_Display(0x9); // real ECC Error.
- // Spin forever...
- while(1)
- {
- }
- }
- // ECC error on a block boundary is (likely) a bad block - retry the page 0 read on the next block.
- nBadBlocks++;
- nPage--;
- continue;
- }
- pCopyPtr += rNAND_PAGE_SIZE_BYTES;
- }
其中
- rNAND_COPY_PAGE_OFFSET =4*rNAND_PAGES_PER_BLOCK;
定义了拷贝的便宜地址为4block.即Eboot将存放的起始地址为nandflash的4block。烧写完STEPLDR.nb1再将EBOOT.nb0烧写到004block,重新上电可以从DNW看到串口输出的系统启动信息。