其实在我的日志里面很早就有介绍这里面一些符号的意义了,具体可以看我的第二篇日志《 .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_MACHINEDriversBuiltInIIC]
'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.0platform'
set —CPUINDPATH = ARMlib
$(_TARGETPLATROOT)lib$(_CPUINDPATH)OV9650_MODULE.lib
实际上这个路径就相当于
“c:wince5.0platformlibarmlib v9650_module.lib'
上一篇:ARM AVI 视频播放 基于 2440 freambuffer 绘制
下一篇:基于Linux的智能家居的设计(3)
- 热门资源推荐
- 热门放大器推荐
- LM2904DMR2G 函数发生器运算放大器的典型应用
- DEMO9RS08KA2: DEMO9RS08KA2 Demonstration Board
- MCP73871EV,MCP73871 锂离子电池充电器评估板
- STEVAL-IHM039V1,采用 STM32F415 微控制器的双电机控制演示板
- LTC1606CG 演示板、16 位、250ksps ADC
- RT8086B 3.5A、1.2MHz、同步降压转换器的典型应用
- TS4999EIJT 典型应用 免滤波器立体声 2.8 W D 类音频功率放大器,可选择 3D 音效
- LTM4615,采用 15mm-15mm 封装的完整双路和三路输出负载点模块稳压器
- LTC2415-1IGN 24 位 ADC 的典型应用电路使用电阻器阵列在励磁放大器中提供精确匹配
- 使用 Analog Devices 的 LTC1450LIN 的参考设计

非常经典的关于LLC的杨波博士论文
EL5624IRE-T13

1CIS223-04TG3M






京公网安备 11010802033920号