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

# ; @REM !等符号在WINCE6.0下的意义和作用

2013年04月26日 ⁄ 综合 ⁄ 共 2802字 ⁄ 字号 评论关闭

     其实在我的日志里面很早就有介绍这里面一些符号的意义了,具体可以看我的第二篇日志《 .bat 配置文件的一些符号所代表的意思?》。只是当时学的不是很扎实,今天师妹请教,于是整理一篇日志,方便后面的同学学习。

     其实这些文件都是一个批处理文件,具体的指令可以参考windows shell 编程指令。

    文章标题中出现的符号不是我们经常所看见的普通标点符号,也不要往C语言哪方面的意思去想。正所谓对事不对人,同一个符号在不同的环境下有着不同的意思。上面提到饿这些符号一般存在于以下几个重要的文件里面:platform.bib,SMDK6410.bat,platform.reg,source等。当然像.CPP文件中肯定也有,但是那里面的# ;相信大家都是知道的,这里就不赘述。

     首先打开platform.reg,这里以SMDK6410.bat为例:

代码
;------------ I2C Bus Driver ------------------------------------------------
IF BSP_NOI2C 
!
;; I2C Bus Driver
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\IIC]
    
"Prefix"="IIC"
    
"Dll"="s3c6410_iic.dll"
    
"Order"=dword:5
    
"Index"=dword:0
    
"Mode"=dword:1                ; Mode: 0 = POLLING, 1 = INTERRUPT
    
"SlaveAddress"=dword:0        ; Bus Driver's Slave Address
    "FriendlyName"="IIC Bus Driver"
    
"IClass"="{A32942B7-920C-486b-B0E6-92A702A99B35}"   ; Power-manageable generic
ENDIF BSP_NOI2C 
!
;
-------------------------------------------------------------------------

    第一行就不用说了,;表示注释。重点介绍IF BSP_NOI2C !和ENDIF BSP_NOI2C !,从字面意思上可以按照IF ENDIF来理解,相信也不是什么困难的事情,只是这里的!到底是什么作用呢?先卖个关子,继续往下看。还是以I2C为例,打开platform.bib,有如下内容:

代码
;------------------ I2C BUS Driver -------------------------------------------------------
IF BSP_NOI2C 
!
    s3c6410_iic.dll        $(_FLATRELEASEDIR)\s3c6410_iic.dll                    NK            SHK
ENDIF BSP_NOI2C 
!
;
---------------------------------------------------------------------------------------

    可以看见这里仍然有IF BSP_NOI2C !和ENDIF BSP_NOI2C !,可以肯定的是和上文的意思是一致的。继续往下看,还是以I2C为例,打开SMDK641.bat,可以看见以下内容:

set BSP_NOI2C=
set BSP_NOSPI=1
@REM wifi can be abled when spi 
is diabled
set BSP_NOWIFI=1

    相信大家看到这里已经有点眉目了,前文说的IF BSP_NOI2C !里面的 BSP_NOI2C !就是指的是否在SMDK6410.bat里面进行了变量的定义,这里set BSP_NOI2C=就是定义了I2C的环境变量,接着注册表和.bib就可以通过IF,ELSE进行判断,进而执行IF,ELSE之间的内容。如果等于1,如:set BSP_NOWIFI=1,则说明,是没有设置WIFI这个环境变量,因而,即使在IF,ELSE之间定义了,如:

IF BSP_NOWIFI !
    s3c6410_wifi.dll        $(_FLATRELEASEDIR)\s3c6410_wifi.dll                    NK            SHK
ENDIF BSP_NOWIFI
!

    那么也是不会去执行IF,ELSE之间的内容。这里的感叹号,你可以理解成前置的set。当然,这里的环境变量你也可以在PB6.0下进行添加,这里就不进行说明了。细心的人或许还发现了@REM wifi can be abled when spi is diabled,这里的@怎么看呢?它应该和@REM 结合在一起看,表示注释。至于#,我们以CAMERA下的SOURCE文件为例:

代码
!IF "$(BSP_SMDK6410)" == "1"
#        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\S5K4BA_MODULE.lib
        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\OV9650_MODULE.lib       
#        $(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\SAA7113_MODULE.lib     
!ENDIF

    我所使用的Samsung6410有SAA7113和OV9650,怎么选择呢?其中一个就是在SOURCE下看你的链接库,那么不需要的就需要注释掉,这里的#就是注释的意义。

    最后再以一个例子让我们一起回顾一下批处理文件:

比如
set BSP_DEBUGPORT=SERIAL_UART0
set 用来设置一个环境变量 BSP_DEBUGPORT就代表SERIAL_UART0从意义上来看 好像是BSP调试端口为串口0,具体的要看具体的实现代码。
@REM 跟#类似为注释掉一行
$()为引用括号里的环境变量
比如:
 set _TARGETPLATROOT=“c:\wince5.0\platform"
set  —CPUINDPATH = ARMlib
$(_TARGETPLATROOT)\lib\$(_CPUINDPATH)\OV9650_MODULE.lib   
 实际上这个路径就相当于  
“c:\wince5.0\platform\lib\armlib\0v9650_module.lib" 

 

 

 

 

 

 

    

抱歉!评论已关闭.