SYD8801是一款低功耗高性能蓝牙低功耗SOC,集成了高性能2.4GHz射频收发机、32位ARM Cortex-M0处理器、128kB Flash存储器、以及丰富的数字接口。SYD8801片上集成了Balun无需阻抗匹配网络、高效率DCDC降压转换器,适合用于可穿戴、物联网设备等。具体可咨询:http://www.sydtek.com/
KEIL编译stdarg处理机制遇到incorrect use之类的问题
在编译MO内核的SYD8801蓝牙芯片的时候有些电脑会出现如下错误:
这个错误根本原因是ADS软件和MDK软件的兼容问题,ADS和MDK一样,也是使用ARMCC编译器,如果事先已经装好了ADS软件再装MDK软件的话,环境变量中的ARMCCINC和ARMCCLIB将是ADS软件下的目录,而MDK软件引用了ADS软件下的文件就会出现问题,解决办法如下博客:
摘录于:http://www.cnblogs.com/yihuihong/articles/4964868.html
/************************************************************************************************/
如果以前玩过ARM7,使用过ADS软件,那么安装新版本的keil(4.6以上)就会有环境变量冲突问题,解决方法,网上有很多,
1、卸载ADS重装keil,这种方法不可取!
2、删除ADS下的环境变量,两种环境只能使用一个!
3、还有就是在keil的LINker下加入条件“--libpath=C:\Keil\ARM\ARMCC\lib”,每个工程都要添加,麻烦!
上面的三种方法都都太麻烦或者存在弊端,最好的方法如下:
在我的电脑点击属性
--->高级--->环境变量---->系统变量,修改环境变量:ARMCC5LIB
变量值:C:\Keil\ARM\ARMCC\lib(keil的安装目录,视您的安装情况更改)
让这个环境变量指向MDK的目录即可!
/************************************************************************************************/
..\FATFS\src\ff.c(3995): error: #928: incorrect use of va_start
..\FATFS\src\ff.c(3995): error: #253: expected a ","
..\FATFS\src\ff.c(3995): error: #29: expected an expression
..\FATFS\src\ff.c(4026): error: #929: incorrect use of va_arg
..\FATFS\src\ff.c(4037): error: #929: incorrect use of va_arg
..\FATFS\src\ff.c(4052): error: #929: incorrect use of va_arg
..\FATFS\src\ff.c(4052): error: #929: incorrect use of va_arg
..\FATFS\src\ff.c(4052): error: #929: incorrect use of va_arg
如果还是报错,stdarg.h头文件还是被指向ADS的文件夹。我后来自己又加了一个环境变量:ARMCC5INC C:\Keil\ARM\ARMCC\include(MDK的安装路径),再编译就OK了。仅供参考。
这里感谢原博客博主!