在使用pb的时候,我们增加一个feather,事实上只是增加了这个feather对应的sysgen变量而已,如此简单. Sysgen变量本质是一个环境变量,它怎么可以影响代码,影响镜像的生成,影响注册表等所有相关的东西?比如,我增加一个usb鼠标功能,对应的是sysgen_usb_hid_mouse.你可以在pb的图形界面下从catalog窗口中add to os designed,也可以在环境变量中直接增加. 这背后是怎么回事?
回忆我对linux浅薄了解.linux下面事实上也是有这样一个神奇的东西.大概叫什么config的东西,用户可以在文本或者图形界面menuconfig下配置.然后就可以影响代码了.我当时的了解是,这事情是有幕后黑手make工具来实现的,它得到这些配置后,强行在源代码前插入一个大概叫config.h这样的头文件,从而环境变量变成了c和c++能够识别的宏变量了!
对于wince呢?其实也是类似的.这个幕后黑手是winceos.bat等这些批处理文件,他们根据环境变量设定,最后产生了一个叫做ceconfig.h的头文件.然后CeFilter.exe根据环境变量和宏变量去过滤代码,注册表,bib文件等等.于是我们可以看到大量的开关,类似这样
如果是宏,大概呈现为这样形式:@CESYSGEN IF CE_MODULES_NK
如果是环境变量,呈现为这样形式:IF IMGPROFILER !
有了上面的了解后,阅读bib,reg等等文件就不会再困惑了. |