-- 作者:wangxinxin
-- 发布时间:2010-11-26 9:03:36
-- 在Bootloader, WinCE,应用程序间传递参数的方法
基本思想就是在Nand Flash等固态存储器中保存这个变量 实现方法有很多种,如果你使用的是EBoot,EBoot的例子中会有一个BOOT_CFG的结构体,默认保存EBoot参数的,这个参数保存在固态存储器上,可以参考WINCE500\\PLATFORM\\SMDK2410\\SRC\\BOOTLOADER\\EBOOT\\main.c 这样解决了保存变量的问题,但是如何在Bootloader与操作系统间传递参数呢, 同样对于2410的例子,OEMPlatformInit里面会有一个BSP_ARGS的结构体,用来在EBoot与WinCE之间传递参数,这块区域是SDRAM的区域,一般是保留出来作为参数传递的,WinCE不会覆盖这块区域,这个结构体在EBoot中被填充,所以,可以将参数放在BOOT_CFG中,然后EBoot初始化时从Nand中读出来,放到BSP_ARGS,以达到传递给WinCE的目的。 但是这样只是解决了读取的问题,这个参数在CE中的修改还是不会被保存。 这种默认的方法最一般的用途就是来控制KITL,这种单向参数传递的 如果需要双向传递或保存,最简单的方法就是在WinCE驱动中添加一个IOCTL,比如FMD的IOCTL,用来读写这块参数区域 这样子,应用程序也就可以访问这块参数了。
如果不使用EBoot的默认方式,就直接规定一个或几个Nand区域,读写方案同上,以达到多个应用的参数分开保存的目的,比如BT MAC在Block2, WIFI MAC在Block3, 其他参数在Block4。这样做可以将经常读写的参数和不经常读写的参数分开,以免经常读写的块损坏,而破坏其他的功能 |
|