现在的位置: 首页 > 综合 > 正文

初次编译

2013年05月30日 ⁄ 综合 ⁄ 共 1713字 ⁄ 字号 评论关闭

拿到BSP后,直接按照《[WinCE50]S3C2440A_Installation Manual_V1.1.pdf》中的方法添加BSP到PB中,添加必要组件并编译。

编译后生成六个文件:STEPLDR.nb0, STEPLDR.bin, EBOOT.nb0, EBOOT.bin, NK.nb0, NK.bin。 

由于开发板上只有NAND Flash,因此只能使用三星的stepstone技术来引导系统。stepstone的作用是系统上电复位时,将NAND Flash前4K的数据复制到内部的SRAM运行,可以在这4K里实现直接引导操作系统的功能,也可以复制eboot到外部SDRAM运行,再由eboot来烧写、引导操作系统。这前4K的程序称为nboot(NAND bootloader),WinCE 5.0中的stepldr其实就是nboot。 

编译完成后,使用SJF2440将nboot/stepldr.nb1烧写到NAND Flash的0 block位置,将eboot.nb0烧写到2 block的位置(修改stepldr的NAND_COPY_PAGE_OFFSET宏可更改此位置)。或者烧写NK.nb0到2 block位置,直接引导系统(需要修改stepldr的LOAD_SIZE_BYTES)。

 

关于编译选项

Build OS菜单中有三种编译选项: 

    Sysgen 

        若只是添加删除Catlog item,则只需要Sysgen,是三种方式中最快的。 

    Build and Sysgen 

        若修改过public下的代码或者配置文件,则必须用这种方式。

    Build and Sysgen Current BSP 

        若修改了BSP中的代码,则可以用这种方式。

    推荐是使用Clean Before Building编译选项,此选项会清空先前编译的结果,编译时间很长,因此可以在需要的时候才选上,一般是更改了环境变量的设置时选上。第一次编译时必须选上。 

    另外,若是只修改某个工程的代码,可以直接使用Build Project + Make Run-Time Image After Build。这样速度最快,不必每次都重新编译系统。

 

关于nbx文件与bin文件

    nb0文件是可以直接烧写到内存中运行的二进制映像文件,可以通过修改相应BIB文件里的ROMSIZE参数,来改变生成的nb0文件大小,若实际大小大于ROMSIZE,则会生成nb1, nb2等等,大小均等于ROMSIZE。

    bin文件具有特定的格式,是压缩过的映像文件。必须使用eboot来读取bin文件。bin格式文件主要是为了实现BinFS,后面配置Multi-Bin会用到。 

 

stepldr大于4K的问题 

    出现的第一个问题是:PB编译出来的stepldr.nb0大小是12K,不能直接烧写进NAND Flash运行。即使更改ROMSIZE大小,烧写stepldr.nb0也无法运行。这个其实是PB的一个BUG,不能生成完整的小于4K的nb0文件。 

    解决方法有两种: 

    1 打开PLATFORM/SMDK2440A/Src/Bootloader/Stepldr/stepldr.bib文件,修改CONFIG节下的ROMSIZE参数:ROMSIZE=00001000。重新编译后生成三个4K的nbx文件:stepldr.nb0, stepldr.nb1, stepldr.nb2。烧写stepldr.nb1即可。 

    2 使用ADS编译的nboot。 

    最后,如果已经烧写了eboot,则可以直接烧写stepldr.bin文件来更新stepldr。 

 

无法生成NK.nb0的问题 

    编译完成后发现没有生成NK.nb0文件。 

    在CSDN论坛上找到解决方法: 

    方法1、把工程目录和PB放在同一个磁盘下。 

    方法2、使用WinHex或UltraEdit等十六进制编辑器修改 PUBLIC/COMMON/OAK/BIN/I386/romimage.exe文件,把偏移地址0x25a7b上的“6A  01”改成“6A  03” 

 

抱歉!评论已关闭.