目錄
簡介
這裡是提供一份基於RTL8720DN(BW16)模組遇到的各種問題解決方法。請通過在這篇文章下的評論提供任何反饋,使得更多人可以受益。這篇文章的最終版本可以在Amebad Read The Doc官方往站上找到。
此文件是基於原廠工程師翻譯的中文版本,正確性請依照該文章為主。
如何更新軔體
事前準備
- USB 轉串列
- BW16模組
連接
BW16 | USB轉串列模組 |
---|---|
LOG_RX (PA8) | TX |
LOG_TX (PA7) | RX |
3V3 | 3V3 |
GND | GND |
如何讓BW16模組Reset
將EN 接腳 連接到地(GND) 這樣就可以讓BW16 Reset
如何進入BW16 軔體下載模式
- 將LOG_TX (PA7) 接至 GND.
- 將 EN 腳接至 GND, 等待一下之後然後將EN腳再接到VCC
- 將LOG_TX (PA7) 連接到USB轉串列模組的RX腳上
- 現在BW16已經在下載模式
#更新軔體方法
BW16是由安泰信(B&T)公司所推出模組,其中已經預先燒錄好AI-Thinker 的AT 指令集,其畫面如下所示
此時將會造成,雖然透過Ardunio下載顯示成功,但是只要Reset 還是恢復到預設程式如上圖所示
更新解決方法
方法1–使用OTA清除Flash
B&T預設軔體可以通過Realtek的Image Tool提供的OTA方式進行更新,使用者可以通過AT 命令更新軔體。 OTA方法的詳細描述和常用AT命令的定義在B&T《RTL8720D AT命令用戶手冊》附錄6.1中進行了描述,可以在下面的參考部分找到。
步驟1 - 事先準備
從 ambiot GitHub 的鏈接下載 ambd_sdk。 Realtek 的 Image Tool 可以在以下文件路徑下找到:
“ambd_sdk\tools\AmbaD\Image_tool\image_tool.exe”
###步驟2– 使用AT 命令連接到WiFi熱點
打開任意串列工具如,Tera Term
,cutecom
等。
使用AT命列連接到無線分享器
“#ATPN=your-SSID,your-password”
等待回應
“#ATPN OK”
(詳情請參考B&T《RTL8720D AT指令用戶手冊》3.2節).
請注意,PC 和 BW16必須再同一個網段內。
步驟3 – 產生OTA 燒錄檔案
使用步驟 1 中下載的 ambd_sdk
中的鏈接中的 Ameba Image Tools 生成可上傳到BW16的 OTA.bin
“ambd_sdk\tools\AmbaD\Image_tool\image_tool.exe”
點轚“Generate”籤頁,在“Generate Target”部分中選擇“OTA_All”。 然後,勾選
Bin 3`右側的複選框,可以在下面的路徑中找到Arduino產生的燒錄檔案:
“C:%USER%\AppData\Local\Arduino15\packages\realtek\tools\ameba_d_tools\1.0.5\km0_km4_image2.bin”
然後點擊 Generate
, 然後儲存 OTA.bin
在以下路徑
“ambd_sdk\tools\DownloadServer”
步驟4 – 進行OTA流程
-
打開Windows命令提示字元,並且切換到以下路徑
“ambd_sdk\tools\DownloadServer”. -
點選
start.bat
並等待顯示的TCP Port,預設的Port為 “ 8082 ”.
-
然後在命令提示字元中輸入
ipconfig
來獲取本機的IP位址
-
獲得IP位址與 Port之後執行DownloadServer…exe
.\DownlaoadServer.exe YOUR-PORT-NUMBER ota.bin
正確設置DownloadServer…exe後,命令提示字元將顯示以下訊息
*因為之前我們已經在步驟 2 中將 BW16 模塊(OTA 客戶端)連接到與 PC(OTA 服務器相同的網路. 現在我們使用OTA 更新命令 “#ATSO=IP-address,port-number” 連接到OTA伺服器 (更多資訊請參考 B&T《RTL8720D AT 命令用戶手冊》第 2.9 節).
輸入命令之後,請等待命令提示字元出現 ”Erase is ongoing……”
可以看到目前OTA狀態,等待整個上傳過程完成。 OTA 完成後,再次按下Reset按鈕。
步驟5 -通過UART下載Arduino程序
Ardunio 透過UART下載程式
現在我們可以在Ardunio中通過UART下載程序,但是由於RTLDuino USB芯片連接到LP_UART而不是LOG_UART。 LOG_UART_TX (GPIOA_7) 和LOG_UART_RX (GPIOA_8) 引腳用於程序上傳。 但是,板載USB轉UART模塊連接LP_UART_TX(GPIOB_1)和LP_UART_RX(GPIOB_2),不能直接用於程序上傳。
您可以選擇使用連接到 GPIOA_7 和 GPIOA_8 的外部 USB 轉 UART 模組,或者您可以將這兩個腳按照下圖接法以使用板載 USB 進行程序上傳:
- PA8 ––– PB1
- PA7 ––– PB2
如果要進入UART下載程序,先按住BURN和RESRT鈕,然後先放開RESET最後再放開BURN鈕。
方法2–使用AmbeaD_SDK_Image_tool清除Flash
如果因爲網絡限制,無法使用透過連接Wi-Fi後上傳程序到BW16這種方式(OTA)。 另一種方法是使用 Image Tool 從寄存器地址0x8000_0000開始清除flash内部的所有資料,直到2MB的image結束位置。這個步驟完成後,可以使用Arduino IDE 重新將Realtek Arduino SDK燒錄回開發板中。
按照 方法 1 步驟 1
下載 ambd_sdk 並在繼續使用此方法之前進行必要的設置準備。
步驟一 打開 Image Tool
將波特率設置為“115200”,然後從 Memory Address 0x0800 6000
中選擇 Flash Erase 範圍,具體地址為 2024 KB
。 將BW16進入下載模式,然後單擊“Erase”按鈕。
當完成清除步驟之後按下RESET按鈕, 如下圖所示 “#calibration” 信息將不會出現在serior monitor 中:
步驟二 使用Arduino IDE 重新燒錄 Image
按照 方法1 步驟 5 的引導燒錄任意一個Arduino示例到開發板后, 按下RESET按鈕,此時將重新在 Serial Monitor 中看到 Ameba Arduino SDK Image 的信息.
特別感謝@minexo79 用繁體中文列出了此方法的文檔,可在此鏈接中找到:
方法3–使用Image_tool清除Flash
由於 Realtek 的 Amebad Image Tool 是專為 Windows 系統設計的。 對於使用其他操作系統的用戶,請參考@Alphi_Jiang 在此鏈接中提供的方法:
這是方法二的簡化版。他建議使用內建的image_tool 進行Flash的清除和下載,而不是執行“amebad_image_tool.exe”。
我還沒有測試過這種方法,任何嘗試過這種方法的人都可以在下面的評論中分享他/她的經驗。
步驟1- 建立一個資料夾,裏面包含下面檔案
步驟2 - 產生大小為2024KB,檔名為km0_km4_image2.bin
取代原來ardunio 產生的檔案
範例:
$ambed_image_tools /dev/ttyUSB0
@Alphi_Jiang 提供一個簡單的python 檔案方便產生km0_km4_image2.bin
========================== gen_bin.py ===========================================
# -*- coding: UTF-8 -*-
import sys
import os
def main():
if len(sys.argv) < 4 :
print('gen.py <file> <size> <pat>')
print('example: gen.py km0_km4_image2.bin 1FA000 ff')
sys.exit(1)
else:
target_name = sys.argv[1]
target_size = int(sys.argv[2],base=16)
target_pat = int(sys.argv[3],base=16)
print('name: {0} size: {1} pat: {2}'.format(target_name,target_size,target_pat))
with open(sys.argv[1],"wb") as file:
buff = [target_pat]*target_size
target_context = bytearray(buff)
file.write(target_context)
file.close()
if __name__ == '__main__':
main()
步驟 4 – 執行 “image_tool.exe COM_PORT”
請先按照方法1步驟1進入UART下載模式,然後執行以下動作
參考
- Introduction of RTL8720DN on Instructable:
https://www.instructables.com/RTL8720DN/ - Load Arduino image into BW16:
How to load BW16 program with Arduino - #13 by Alphi_Jiang - RTL8720DN (BW16) IMG2 SIGN Invalid Solution:
RTL8720DN(BW16) IMG2 SIGN Invalid Solution - B&T “RTL8720D AT Command User Manual”:
https://docs.ai-thinker.com/_media/rtl8710/docs/rtl8720d-at指令手册v2.4.1-20190814.pdf - FTDI Driver Download from here:
https://ftdichip.com/wp-content/uploads/2021/02/CDM21228_Setup.zip