在了解适用于telink zephyr的b91开发板和如何使用west相关的命令去编译zephyr应用之后,让我们重温一下将固件下载到开发板上的方法和步骤,并且了解一些配件的连接和使用方式,正式开始体验zephyr rtos所提供的例程吧!
1固件下载
泰凌提供多种多样的烧录方式,可以将固件下载到b91开发板上。本文主要介绍在windows平台下,采用telink burning evk结合burning and debugging tools (bdt)软件进行烧录的两种方式:一,single wire (swire);二,usb through swire (dp&dm)。
swire
swire是使用bdt工具的默认烧入方式,请按照下面的图示将b91开发板与telink burning evk进行硬件连接。
图中的紫线代表mini接口的usb线,另外两根线代表杜邦线。其中,蓝色的为sws - swm接线,黑色的为gnd - gnd接线。完成后如下图所示。
usb through swire
第二个方式,是采用usb through swire功能,以usb接口的dp&dm当作gpio口,去模拟上一个方法中的sws和gnd接线。那样,可以省去杜邦线,仅使用mini-usb接线。
在zephyr工程的telink_matter等分支中,是默认打开了这个功能,可以方便我们的烧录,更可以运用于某些未接出sws管脚的情况下。不过,请注意,目前泰凌公司仓库中的develop分支上默认关闭了这个功能,若使用由那个分支上编译的固件,不能使用本办法。
burning and debugging tools
bdt下载地址:
http://wiki.telink-semi.cn/wiki/ide-and-tools/burning-and-debugging-tools-for-all-series/
使用bdt 的简要步骤:
1、⽤另一条mini-usb线将burning evk连接到电脑的usb⼝。
2、双击可执⾏⽂件telink bdt.exe。如果硬件连接正常,可以看到bdt工具的主窗⼝。在状态栏中最左侧可以查看evk设备的连接状态,在标题栏中也可以看到已被连接的烧录器的设备信息。
3、(可选)点击工具栏中的activate按钮,可以唤醒并激活mcu(尤其是mcu处于“低功耗”模式中),停止正在进行的任务,使得芯片处于能够被burning evk烧录状态。
4、(可选)点击工具栏中的sws按钮,可以尝试用swire将burning key与将要烧录的目标mcu实现同步。
*注意:建议每次打开mcu电源时,执行一次swire同步,以检查burning evk与目标板的通信是否正常。若通信状态错误,执行第3步,尝试解决问题。
5、设置flash擦除的区域大小。
点击工具栏中的setting按钮,在弹出的“setting窗口中可以看到默认的flash擦除的区域大小是512kb。
*注意:对于外挂2mb flash的b91开发板,flash最后的8kb空间预留用于保存重要的soc信息,因此最多可以擦除2040kb的flash区域。
6、点击工具栏中的erase按钮,等待flash擦除操作完成。
7、选择需要烧录的固件(通常为二进制的bin文件)。
点击file菜单里的open子菜单,在弹出的文件选择对话框中选中需要烧录的bin文件。选中后的bin文件将显示在底部的状态栏中。
8、点击工具栏中的download按钮,等待flash烧录完成。
更多信息及使用方法请参考泰凌wiki。
2示例程序
这里以之前编译过的示例介绍一下telink zephyr所需要用到的一些配件的连接和使用方式。
blinky与led灯泡
配置不同的灯光效果,可以用来指示zephyr应用的运行状态。从之前文章的介绍中,我们知道blinky固件将会实现一个led灯闪烁的效果。那么,在b91开发板上烧录了之前编译的blinky固件后,再点击bdt工具的reset按钮以重新开始供电。然后,mcu将开始先加载再运行这一程序,可以观察到b91开发板上的蓝灯开始闪烁。
那么,我们是否可以操纵其他led灯泡呢?答案是肯定的。
结合zephyr/boards/riscv/tlsr9518adk80d/tlsr9518adk80d.dts 中的配置信息,我们可以发现,只需要将 zephyr/samples/basic/blinky/src/main.c 源文件中,代表蓝色led灯的led0替换为代表绿色led灯的led1。然后,重新编译一下新的固件,再烧录在b91开发板上,重新上电运行,那么新的固件就将操纵绿色的led灯泡开始闪烁。
hello world与串口输出
在开发和维护片上系统的过程中,利用打印输出也是常用的调试手段,在telink zephyr工程中,也默认开启了uart协议的串口通信功能来进行打印输出。
如果烧录了之前编译的hello_world固件,需要获取输出信息以检验输出是否正常。那么,可以采用telink zephyr默认gpio管脚,去外接一个uart-to-usb串口输出模块,连接到上位机上去获取打印信息。可以按照下图的管脚配置进行连接,默认的uart0配置为:
其中,gpio pb2是b91开发板上的输出管脚,与转换模块上的rxd接口相连;类似的,gpio pb3是输入管脚,应该与txd接口相连;也别忘了接地,否则可能导致无法输出,或输出异常。
将串口输出模块接入pc,使用串口读取工具,配置波特率为 115200,8n1,则可以读取 b91开发板的打印信息。从上面截图中,可以看到hello_world例程默认地输出了zephyr系统的banner,并用printk方法打印出了字符串和当前开发板的名字。
当然,zephyr也提供了logging子系统供我们使用,下面将简要介绍一下在模块中配置这个子系统的方法。拿hello_world这个例程举例,在prj.confg中使能config_log这个宏以开启logging子系统,然后在源代码中,包含logging的头文件,注册hello_world例程为一个模块。使用以下方法可以输出指定的打印信息:
(1) log_err: 等级为1
(2) log_wrn: 等级为2
(3) log_inf: 等级为3
(4) log_dbg: 等级为4
注意这里的log_module_register方法中的第二个参数指定了可以输出的打印信息的等级,选择了log_level_wrn,即意味着可以输出log_err和log_wrn以上的信息。
从接收到的串口打印输出来看,也对应了我们在源代码中的配置。
当然,这里只是一个简单的用法。更多信息和用法,可以阅读zephyr社群的文档并参考logging示例。
美国联邦通信委员会FCC决定拍卖2.5GHz频谱来推进5G无线网络的发展
新势力,蓝戟重磅显卡亮相B站嘉年华
透射式空间光调制器的应用及技术参数
电机与碳刷有什么关系
安信可即将推出星闪模组
泰凌微电子Zephyr固件下载及示例程序
百货商场LED显示屏、高清led全彩屏广告大屏幕介绍
无线充电器品牌_2017无线充电器品牌排行榜
经常重启对笔记本影响好吗
Uber自动驾驶新专利:闪烁灯光和噪音可与人交互
罗姆RBQ系列新增满足高耐压需求的100V产品,小型低损耗,高温环境下稳定运行的肖特基势垒二极管!
热交换器安装方法及选择
教你延长投影机寿命之关键:防尘虑尘
浅谈人机融合的矛盾在于哪里?
AI对抗冠状病毒爆发 将成为第一道新防线
基于TEA1733的低成本绿色75W开关电源控制设计方案
演讲预告 | 知存科技业务拓展副总裁詹慕航:存内计算的应用和发展趋势
水泵控制使用过程中出现信号报警怎么办?
iphone8什么时候上市?iphone8发布时间确认:更多的黑科技和新功能曝光,iPhone8值得等待
HOLTEK新推出HT66F26D高电流LED驱动Enhanced A/D型Flash MCU