嘗試移植 Micro Python 到 RTL-8710
無聊在自己的藏寶箱 全是廢舊電子開發板 中找到了兩三片已經吃灰數年的 RTL-00 模塊,
大概幾年前玩 ESP8266 的時候, 有大佬吹這個模塊有多棒多棒, 然後跟風就買了一些。但是就一直沒用上。
於是乎, 今天意外地把它從塵封的箱子中翻了出來。
順便最近一直想玩 Micro Python, 就看看能不能順便玩玩。
那就開始吧 XD
魔改 NodeMCU
RTL-00 模塊從設計上就和 ESP8266 模塊 P2P (Pin-To-Pin) 兼容,
所以可以直接代換, 不會出問題。
那我就直接用 NodeMCU 開刀了。 (以前買了不少這個板子
然後只需要按照下表接綫
CMSIS-DAP | NodeMCU | |
---|---|---|
3V3 | -> | 3V |
GND | -> | G |
SWDIO | -> | D6 |
SWCLK | -> | D0 |
RX | -> | TX |
TX | -> | RX |
然後再用 OpenOCD 試著連上板子。
如果一切工作, 將會看到 OpenOCD 識別到一個 Cortex-M3 核。
1 | > openocd -f interface/cmsis-dap.cfg -f target/ameba1-mod.cfg |
展開命令行輸出
Open On-Chip Debugger 0.11.0 (2021-11-18) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
libusb1 09e75e98b4d9ea7909e8837b7a3f00dda4589dc3
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport “swd”. To override use ‘transport select
ameba1_init
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : CMSIS-DAP: SWD supported
Info : CMSIS-DAP: JTAG supported
Info : CMSIS-DAP: Atomic commands supported
Info : CMSIS-DAP: FW Version = 0254
Info : CMSIS-DAP: Serial# = 0700000105deff3834334e4643206540a5a5a5a597969908
Info : CMSIS-DAP: Interface Initialised (SWD)
Info : SWCLK/TCK = 1 SWDIO/TMS = 1 TDI = 1 TDO = 1 nTRST = 0 nRESET = 1
Info : CMSIS-DAP: Interface ready
Info : clock speed 10000 kHz
Info : SWD DPIDR 0x2ba01477
Info : rtl8195a.cpu: Cortex-M3 r2p1 processor detected
Info : rtl8195a.cpu: target has 6 breakpoints, 4 watchpoints
Info : starting gdb server for rtl8195a.cpu on 3333
Info : Listening on port 3333 for gdb connections
CMSIS-DAP 几乎是基操了。
所以如果你常玩 ARM 設備, 我會推薦你買一個 CMSIS-DAP。
附一個我改過的 target 配置。
來源 drasko/rtl8710-sdk-3.5a
ameba1-mod.cfg
1 | # Main file for Ameba1 series Cortex-M3 parts |
隨手寫點固件
算了.. 不發了, 這個坑太大了。
我是一邊寫 Blog 一邊研究的。文章都寫了一半了, 沒曾想完美翻車。
説起來經歷了不少坎坷。
移植了 Standard SDK 的 HAL 庫, 發現竟然全是從 lib 中 extern 來的符號,
而對於寄存器結構是一點説明都沒有, 所以猜測應該是 nda 的。其次就是因爲沒有 flash 驅動, 要自己從頭寫。所以沒辦法在 OpenOCD 中下載固件,
因爲上面 nda 的原因, 自己寫這條路幾乎也是堵死的。不過 GitHub 上倒是有一個參考, 但它不是很合我意。最後嘗試用 OpenOCD 寫 SRAM 試圖讓固件直接在 RAM 中跑,
但不幸的是, 它崩了。rust 有一個 sdk 庫。結果仔細一看它是 c binding, 實際上還是那個垃圾 Standard SDK。
算了算了, 翻車就翻車吧
最終鑒定: 沒救的電子垃圾。
以後有時間了再搞這個, 可以按第 3 步的方法繼續嘗試。
引用
[1] rtl8710 倉庫
https://bitbucket.org/rebane/rtl8710[2] rtl8710-openocd 倉庫
https://github.com/sandeepmistry/rtl8710-openocd[3] RTL8710AF Datasheet 技術資料
https://datasheetspdf.com/pdf-file/1304447/Realtek/RTL8710AF/1
嘗試移植 Micro Python 到 RTL-8710