在BSP的.bat文件下設置全局變量方法

本文介绍如何在BSP的.bat文件中设置全局变量,通过定义和转换变量实现不同产品共用BSP时的定制化加载驱动和配置类型。详细步骤包括声明变量、在CMN文件中进行C调用格式转换、在C代码中引用变量,并通过条件编译实现根据不同变量执行特定代码块。

用于多個產品共用一個BSP的時候,在BSP的.bat文件中設置全局變量,去掉不需要加載的驅動和不同點是很好的方法。

 

一,舉例:BSP中.bat的一段code:

set BSP_SMDK2443=1 

set BSP_SMDK2450=2

set BSP_TYPE=%BSP_SMDK2450%

 

這個就類似c中:

#define BSP_SMDK2443  1 
#define BSP_SMDK2450  2
#define BSP_TYPE  BSP_SMDK2450 

 

二,操作

1.我們先在.bat文件中聲明自己需要的定義上面類似的

set BSP_SMDK2443=1 

 

2.如果需要在BSP中C,C++等files里面能直接引用。必須要在BSP的根目錄下面sources.cmn文件中進行轉換一下,成為C可以調用的格式。以下兩行。每使用一個變量,都需要定義兩行。

ADEFINES=$(ADEFINES) -pd "BSP_SMDK2443 SETA $(BSP_SMDK2443)"
CDEFINES=$(CDEFINES) -DBSP_SMDK2443=$(BSP_SMDK2443)

 

ADEFINES=$(ADEFINES) -pd "BSP_SMDK2450 SETA $(BSP_SMDK2450)"
CDEFINES=$(CDEFINES) -DBSP_SMDK2450=$(BSP_SMDK2450)

 

ADEFINES=$(ADEFINES) -pd "BSP_TYPE SETA $(BSP_TYPE)"
CDEFINES=$(CDEFINES) -DBSP_TYPE=$(BSP_TYPE)

 

3.在c中引用。比如在OAL/Init.c中/OEMInit()中調用,就像#define一樣使用。

#if (BSP_TYPE==BSP_SMDK2443)

//--add

 

#elif (BSP_TYPE==BSP_SMDK2450)

//--add

 

#endif

 

4. build, make img即可。

Rebuild started: Project: fy_ecu_a009_10f_1key_3led *** Using Compiler 'V5.06 update 7 (build 960)', folder: 'D:\Keil\Leil5\ARM\ARMCC\Bin' Rebuild target 'N32G43x' assembling startup_n32g43x.s... compiling n32g43x_adc.c... compiling n32g43x_lpuart.c... compiling n32g43x_usart.c... compiling n32g43x_flash.c... compiling n32g43x_gpio.c... compiling n32g43x_rcc.c... compiling n32g43x_exti.c... compiling n32g43x_tim.c... compiling misc.c... compiling system_n32g43x.c... compiling util.c... compiling n32g43x_pwr.c... compiling n32g43x_wwdg.c... compiling main.c... compiling n32g43x_it.c... compiling bsp.c... compiling sys_var.c... compiling key.c... compiling app.c... linking... Program Size: Code=52576 RO-data=716 RW-data=4196 ZI-data=5708 FromELF: creating hex file... After Build - User command #1: fromelf.exe --bin --output "fy_ecu_a009_10f_1key_3led.bin" "D:\联云创智\LY-F2402\fy_ecu_a009_10f_1key_3led_250827\MDK-ARM\Objects\fy_ecu_a009_10f_1key_3led.axf" ".\Objects\fy_ecu_a009_10f_1key_3led.axf" - 0 Error(s), 0 Warning(s). Build Time Elapsed: 00:00:06 Load "D:\\联云创智\\LY-F2402\\fy_ecu_a009_10f_1key_3led_250827\\MDK-ARM\\Objects\\fy_ecu_a009_10f_1key_3led.axf" Set JLink Project File to "D:\联云创智\LY-F2402\fy_ecu_a009_10f_1key_3led_250827\MDK-ARM\JLinkSettings.ini" * JLink Info: Device "N32G432RB" selected. JLink info: ------------ DLL: V7.96n, compiled Jun 20 2024 18:47:24 Firmware: J-Link OB-STM32F072-CortexM compiled Mar 8 2020 11:15:54 Hardware: V1.00 S/N : 20240158 Feature(s) : GDB, RDI, FlashBP, FlashDL, JFlash, RDDI * JLink Info: Found SW-DP with ID 0x2BA01477 * JLink Info: DPv0 detected * JLink Info: CoreSight SoC-400 or earlier * JLink Info: Scanning AP map to find all available APs * JLink Info: AP[1]: Stopped AP scan as end of AP map has been reached * JLink Info: AP[0]: AHB-AP (IDR: 0x24770011) * JLink Info: Iterating through AP map to find AHB-AP to use * JLink Info: AP[0]: Core found * JLink Info: AP[0]: AHB-AP ROM base: 0xE00FF000 * JLink Info: CPUID register: 0x410FC241. Implementer code: 0x41 (ARM) * JLink Info: Found Cortex-M4 r0p1, Little endian. * JLink Info: FPUnit: 6 code (BP) slots and 2 literal slots * JLink Info: CoreSight components: * JLink Info: ROMTbl[0] @ E00FF000 * JLink Info: [0][0]: E000E000 CID B105E00D PID 000BB00C SCS-M7 * JLink Info: [0][1]: E0001000 CID B105E00D PID 003BB002 DWT * JLink Info: [0][2]: E0002000 CID B105E00D PID 002BB003 FPB * JLink Info: [0][3]: E0000000 CID B105E00D PID 003BB001 ITM * JLink Info: [0][4]: E0040000 CID B105900D PID 000BB9A1 TPIU * JLink Info: [0][5]: E0041000 CID B105900D PID 000BB925 ETM ROMTableAddr = 0xE00FF000 * JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET. * JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ. Target info: ------------ Device: N32G432RB VTarget = 3.300V State of Pins: TCK: 0, TDI: 0, TDO: 1, TMS: 1, TRES: 1, TRST: 1 Hardware-Breakpoints: 6 Software-Breakpoints: 8192 Watchpoints: 4 JTAG speed: 2000 kHz * JLink Info: Memory map 'after startup completion point' is active Erase Done. Programming Done. Verify OK. Flash Load finished at 14:43:31
最新发布
10-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值