-- 作者: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。這樣做可以將經常讀寫的參數和不經常讀寫的參數分開,以免經常讀寫的塊損壞,而破壞其他的功能 |
|