U-boot-1.1.6-2008R1到vdsp5(bf561)的移植记录:#if

本文探讨了在U-Boot配置文件bf561-ezkit.h中遇到的预处理错误pp0063,并提供了详细的解决方案。通过条件编译避免了汇编器不支持的8字节整数定义问题。

 

问题:
在u-boot-1.1.6-2008R1/include/configs/bf561-ezkit.h中有类似这样的语句:
#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
#define CFG_CBSIZE         1024     /* Console I/O Buffer Size */
#else
#define CFG_CBSIZE         256      /* Console I/O Buffer Size */
#endif
这样的语句在汇编器中是无法通过的,但是在C编译器中则没有问题。在汇编器中引用时会产生这样的错误:
[Error pp0063] "../../include/configs/bf561-ezkit.h":160 Bad number format
帮助中对pp0063的解释是:
pp0063
Preprocessor Error: Bad number format
 
Description
The preprocessor evaluated an expression with an invalid numeric base in the context of a #if directive.
 
Severity
Error
 
Example
 
#if 01ux
 
#endif
 
[Error pp0063] "error63.c":5 Bad number format
 
How to Fix
Correct the expression to ensure that it has a valid number.
主要的原因是u-boot将每一个命令都用一个8个字节的整数来表示,而vdsp5的汇编器却不支持8个字节的整数运算,也不支持其定义,如
#define CFG_CMD_EXT2   0x1000000000000000ULL /* EXT2 Support             */
所以就出现ERROR。
解决方法:
查找CFG_CBSIZE时并没有发现在.s文件中有对它的引用,因此可以直接改为:
#ifndef __ASSEMBLY__
     #if (CONFIG_COMMANDS & CFG_CMD_KGDB)
     #define CFG_CBSIZE         1024     /* Console I/O Buffer Size */
     #else
     #define CFG_CBSIZE         256      /* Console I/O Buffer Size */
     #endif
#endif
以此相类似的还有
     #if (CONFIG_COMMANDS & CFG_CMD_NET)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌云阁主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值