v1.18 版的最大亮點為提升虛擬機器 (VM) 與執行環境 (runtime) 的執行效能, 這是針對在 ESP32, STM3, RP2 以及 MIMXRT 等開發板而設的功能, 在 ESP32 板可提升約 2~3 倍效能, MIMXRT 則達 6 倍, 這主要是透過兩個措施來達成的 :
- 添加額外的快取 (cache) 來提升雜湊表的搜尋速度
- 在執行環境中添加一個快速路徑來加速物件實例運算碼 (op code) 的提取
參考 :
以下就以去年 11 月底在 Aliexpress 上面買的 Witty Cloud ESP8266 板子來燒錄韌體吧! 參考 :
ESP8266 可用 ESP8266Flasher.exe, Thonny 編輯器, 或 esptools.py 來燒錄韌體.
第一種方法是使用 Windows 軟體 ESP8266Flasher, 可從 GitHub 下載 :
這塊 Witty Cloud ESP8266 開發板與 D1 mini 或 NodeMCU 一樣都是 4MB Flash, 設定方式完全相同, ESP8266Flasher.exe 的設定如下 :
然後按住右下角底板 (USB 下載板) 上的 Flash 按鈕後, 再按 ESP8266Flasher.exe 的 Flash 鈕開始燒錄, 只要燒錄開始進行就可以放開底板的 Flash 鈕了. 燒錄完畢用裝置管理員確認 COM 埠後開啟 Putty 連線, 按板上的 Reset 鈕即可看到 MicroPython v1.18 的提示號出現 (若無就按 Ctrl + B 或再 Reset 一次) :
燒錄韌體的第二種方法是使用 Thonny 編輯器內建的映像檔燒錄功能, 參考 :
第三種燒錄 ESP8266 韌體的方法是使用 esptool.py, 其功能最豐富, 包含檢視 Flash 記憶體大小與抹除記憶體內容等功能, 指令如下 :
- 檢查 Flash 記憶體 :
esptool.py --port COM8 flash_id - 抹除 Flash 記憶體
esptool.py --chip esp8266 --port COM8 erase_flash - 燒錄韌體 :
esptool.py --port COM8 --baud 115200 write_flash --flash_size=detect -fm dio 0 esp8266-20220117-v1.18.bin
參考 :
以下進行系統檢查 :
1. 查詢韌體版本 :
MicroPython v1.18 on 2022-01-17; ESP module with ESP8266
Type "help()" for more information.
>>> print('Hello World!')
Hello World!
>>> import os
>>> os.uname()
(sysname='esp8266', nodename='esp8266', release='2.2.0-dev(9422289)', version='v1.18 on 2022-01-17', machine='ESP module with ESP8266')
2. 系統診斷 :
>>> import port_diag
FlashROM:
Flash ID: 164054 (Vendor: 54 Device: 4016)
Flash bootloader data:
Byte @2: 02
Byte @3: 40 (Flash size: 4MB Flash freq: 40MHZ) # Flash 容量
Firmware checksum:
size: 635976 # 韌體大小約 636 KB
md5: 40b5ad861d83667d6c8ea59fd38c7ff9
True # 韌體完好無損
Networking:
STA ifconfig: ('0.0.0.0', '0.0.0.0', '0.0.0.0', '208.67.222.222')
AP ifconfig: ('192.168.4.1', '255.255.255.0', '192.168.4.1', '208.67.222.222')
Free WiFi driver buffers of type:
0: 8 (1,2 TX)
1: 0 (4 Mngmt TX(len: 0x41-0x100))
2: 8 (5 Mngmt TX (len: 0-0x40))
3: 4 (7)
4: 7 (8 RX)
lwIP PCBs:
Active PCB states:
Listen PCB states:
TIME-WAIT PCB states:
如果只是檢查韌體可直接呼叫 esp.check_fw() :
>>> import esp
>>> esp.check_fw()
size: 635976
md5: 40b5ad861d83667d6c8ea59fd38c7ff9
True
3. 檢查 SRAM 記憶體 :
>>> import micropython
>>> micropython.mem_info()
stack: 2096 out of 8192
GC: total: 37952, used: 1392, free: 36560
No. of 1-blocks: 16, 2-blocks: 10, max blk sz: 18, max free sz: 2270
可見 Witty Cloud ESP8266 開發板的 SRAM 記憶體大小約 38 KB (與 D1 mini 一樣).
4. 檢查檔案系統 :
>>> import os
>>> os.listdir()
['boot.py']
可見根目錄下只有 boot.py 一個檔案. 用 open() 開啟 boot.py 後列印檔案內容 :
>>> f=open('boot.py','r') # 開啟檔案
>>> lines=f.readlines() # 以列為單位讀取檔案內容
>>> for line in lines: # 列印檔案
... print(line)
...
...
...
# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
import uos, machine
#uos.dupterm(None, 1) # disable REPL on UART(0)
import gc
#import webrepl
#webrepl.start()
gc.collect()
>>> f.close() # 關閉檔案
可見 boot.py 預設已匯入 os, machine, 以及 gc 模組.
沒有留言 :
張貼留言