泰凌微电子Zephyr固件下载及示例程序

描述

在了解适用于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示例。

 

  审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分