在了解適用于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示例。
審核編輯:湯梓紅
-
固件
+關注
關注
10文章
560瀏覽量
23113 -
程序
+關注
關注
117文章
3794瀏覽量
81270 -
RTOS
+關注
關注
22文章
819瀏覽量
119798 -
開發板
+關注
關注
25文章
5116瀏覽量
97917 -
Zephyr
+關注
關注
0文章
22瀏覽量
5985
原文標題:【技術專欄】泰凌微電子Zephyr固件下載及示例程序
文章出處:【微信號:telink-semi,微信公眾號:泰凌微電子】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論