【Silicon Labs BG22-EK4108A 蓝牙开发评测】 II. 进展与障碍
[复制链接]
本帖最后由 zhang1gong 于 2022-1-8 10:49 编辑
1 生成范例(EXAMPLE PROJECT)项目的代码并运行
运行“Bluetooth - SoC Blinky”成功,在手机端通过app “EFR Connect”控制BG22-EK4108A评估板上的LED点亮或熄灭,并可以观察评估板上按键的状态。首战非常顺利,但这毕竟是直接烧录并运行已经已生成的二进制代码,并没有经过编译、烧录、运行(如果是真正自己做的项目几乎不可避免地还要进行调试、排错)的全过程。
找了几个比较简单的范例项目进行全过程的试验。首先生成了范例项目“tensorflow_lite_micro_helloworld”。看了一下这个范例程序的说明:范例中的一个模块产生循环变化的正弦函数值,用这一函数值改变PWM信号的脉宽,以控制LED的明暗。同时,正弦函数值通过评估板的虚拟串口(通过USB接口)发往PC机。在“Simplicity Studio” IDE环境中,顺利地编译、烧录并运行了这一范例程序,呼吸灯效果如下:
在PC端打开串口模拟终端,可以接收到评估板通过虚拟串口发来的数据:
将接收到的数据导入maltab用plot函数绘图看了一下,确实是不太光滑的正弦波(每个周期只有20个点,粗糙了点儿)。
2 生成 IAR 开发环境的工程文件
虽然初步熟悉了 SSv5(Simplicity Studio 5),并编译、烧录并运行了简单的范例项目,但毕竟因为刚刚接触,感觉用起来不是太顺手。在学习SSv5的过程中,发现可以在生成Simplicity Studio 工程文件后,生成IAR 开发环境的工程文件,而我因为以前用IAR较多,相对来说用起来更加顺手。生成了范例项目“blink_pwm_baremetal”的IAR 工程文件,然后在IAR 开发环境中编译、烧录、运行,很顺利,没问题。
3 遭遇障碍,奇怪的解决方式
看到 damiaa 网友的帖子提到蓝牙控制下点亮LED的范例项目编译后无法运行的情况,记得我似乎编译、烧录后成功运行了。没想到再次试验时编译、烧录没有任何错误提示顺利通过,但运行后结果完全不对,手机端app “EFR Connect”毫无反应。在SSv5 中暂停后,看到烧录的代码似乎完全不对。生成IAR 工程文件后,在IAR 开发环境中编译,似乎顺利地生成了目标码(obj),卡在链接环节中,既不报错,也不继续前进,几个与蓝牙相关的范例项目都是这种情况。
这期间我曾经重新安装SSv5,没解决问题。而且问题似乎变得更加糟糕:现在无法直接用“RUN” 运行DEMO,总是报错:“Part cannot be detected. Please tell Studio what the part is by using context menu of the selected device.”,而以前是没问题的,不知什么原因。查看以前的截图,发现有些地方似乎与重装前不同.....
忽然想到前两天曾经备份了系统,花了两个小时的时间还原系统,把SSv5恢复到去年的模样。居然又可以直接“RUN”DEMO了!而且蓝牙点灯范例恢复正常了。经过反复试验发现,只要编译、烧录过“tensorflow_lite_micro_helloworld”之类的小范例项目,再编译运行蓝牙相关的程序就不行,必须再次“run”一下某个蓝牙相关的DEMO“激活”一下(做这种试验是受到 damiaa 帖子的启发),这是不是什么地方有BUG呢?
|