2022年2月7日 星期一

MicroPython v1.18 釋出 (以 Witty Cloud ESP8266 開發板測試)

今日追蹤發現 v1.18 已在 2022-01-17 發布, 映像檔下載位址如下 : 

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 模組. 

沒有留言 :