一、声明
首先这些问题仅仅是我在开发中所遇到的一些问题,并且其中的解决办法也并不是唯一的,所以如果你也遇到了类似的问题,参考我的解决方法并不能解决的话。可以去芯科官网的论坛中寻找问题的解决办法。
二、问题汇总
1、IAR开发环境问题
问题:安装IAR后使用在线调试功能提示,JLINK版本不符合(The connected J-Link is defective…)
解决办法:参考KEIL出现问题的解决办法:
2、simplicity studio V5环境安装问题
问题:在simplicity studio V5版本下创建minimal工程,发生错误,无法创建SLCP。且错误的类型是没有cmd.exe\pkg。
解决办法:查看芯科的社区,发现并没有什么解决办法。尝试多次重新安装软件,创建minimal工程时还是提示此错误,只能生成文件,但编译工程会提示各种各样的错误。并且在其他电脑安装时并没有出现此问题,说明造成此问题的原因是电脑系统问题,所以此问题最好的解决办法是重装系统。并且在安装了simplicity studio V4版本后,再去重新使用V5版本创建minimal工程发现并没有出现此错误。
3、pintool设置问题
问题:在simplicity studioV5版本下创建串口通信程序时,编译出现有些宏没有定义。
解决办法:这是因为添加了串口驱动,但是没有添加实际引脚的定义,所以需要在pintool中设置串口的引脚。
4、程序框架问题
问题:simplicity studioV4版本下初次创建NCP工程后编译成功,但是例程中并没有生成main函数的接口。尝试添加main函数的接口后编译提示重复定义,但是在工程内进行搜索没有发现重复定义的地方。
解决办法:查看重复定义的地方发现在em260-uart1-util-library.a,这是一个静态库,猜测是芯科官方已经把main函数写入到em260-uart1-util-library文件中并编译成静态库的方式。所以在程序中我们不需要直接编写main函数,直接在.Isc文件文件的Callbacks中勾选以下两个函数。然后在emberAfMainTickCallback函数中实现自己的功能。
5、bootloader问题
问题:simplicity studioV4版本下创建NCP工程后,下载到芯片中,如果此时芯片中没有BootLoader程序的话,NCP程序是运行不起来的。
解决办法:NCP工程默认不包含Gecko Bootloader,需要单独添加!在 v2.0 和 v2.6 之间的SDK 中旧版 OTA 引导加载程序包含在软件示例中,其他设备(EFR32xG12、EFR32xG13)创建的软件示例项目中不包含引导加载程序。在SDK v2.7 或更高版本中任何软件示例项目中均不包含引导加载程序。然而,当一个程序被刷新时,NCP应用程序和Bootloader 一起刷新。
可通过以下操作解决:
先把应用程序(.s37 或 .hex 或 .bin)下载到设备。
然后创建一个Gecko Bootloader工程,Bootloader-UART-xmodem类型的。
(在 Simplicity Studio 中点击 New Project 按钮,选择 Gecko Bootloader,选择 Bootloader-UART-xmodem生成后并完成编译)
再把“–combined”结尾的 .s37 文件文件下载到芯片中。
注意:例如工程名为bootloader-uart-xmodem,那bootloader-uart-xmodem- combined.s37包含 Gecko Bootloader 的第一+第二阶段,而 bootloader-uart-xmodem.s37 仅包含第二阶段。第一次刷bootloader时需要第一+第二阶段,升级bootloader时仅需要第二阶段。
注意:
commander.exe 位于:
C:\SiliconLabs\SimplicityStudio\v4\developer\adapter_packs\commander
对于 v2.4.0 之前的 SDK,第二种和第三种方法仅在使用 IAR 作为编译器时才适用。从 v2.4.0 开始才完全支持 GCC。
在 SDK v2.3.3 中,bootloader生成和编译可能会失败,并且 -combined.s37 文件可能会丢失。在这种情况下,打开bootloader工程,选择Project > Properties > C/C++ Build > Settings > Build steps,并将生成.s37的脚本路径放在引号之间。然后重新编译。
6、程序下载问题
问题:偶尔会出现获取芯片信息错误,下载程序提示错误,无法进行程序DeBug调试。
解决办法:原因可能是下载排线内部损坏或者接口不稳导致,更换下载排线。
7、在线调试问题
问题:选择在线调试时,程序运行一段时间后点击暂停按钮,程序每次都暂停在EMU_Enter_EM1中。
解决办法:这是因为没有使能DCDC驱动的原因。需要在工程的.hwconf文件中勾选DCDC。
8、引脚控制问题
问题:创建NCP工程后,初始化PF2为程序运行状态指示管脚,引脚状态无法翻转。
解决办法:这是因为工程默认把PF2作为JTAG管脚,即使工程中没有使能它,但是程序默认初始化为输出高电平状态。解决办法是“1”选择Plugins,点击“2”Debug JTAG,“3”勾选Enabled,“4”选择Value中管脚为PD15(可以根据需求选择)。
9、调试问题
问题:完成工程创建后,无法进入Debug模式,且提示no launch history。
解决办法:“1”选择Debug,“2”选择Debug Configurations…,“3”选择工程,“4”选择Search Project,“5”选择后缀为.out文件,“7”选择Connect,“8”选择SWD,“6”选择Apply。
10、调用组网函数后组网失败问题
问题:组网失败。路由设备无法搜索到可加入设备。并且搜索到后提示加入失败。
解决办法:安装天线,并在Plugin选项中使能Install Code库。
11、程序执行异常问题
问题:在emberAfHalButtonIsrCallback函数中使用emberAfPluginFindAndBindTargetStart函数后程序复位且复位类型是看门狗。
解决办法:emberAfHalButtonIsrCallback,因为此回调函数相当于中断处理函数,所以回调函数中的程序尽量短。把emberAfPluginFindAndBindTargetStart的调用放到自定义处理事件中。
12、调试异常问题
问题:“1”左下角提示锁定,“2”选择Force Unlock后提示有两个界面正在使用。
解决办法:1、如果调试模式还没有退出,选择Debug界面后选择Disconnect。
2、如果不是在调试模式状态,且无法进入调试模式,则需要重启simplicity studio软件。