2019年2月17日 星期日

MicroPython 釋出 v1.10 韌體

今天查詢 MicroPython 官網赫然發現已經於 2019-02-07 釋出 v1.10 新版韌體, 我有持續在追蹤其發展動態, 一直在等待何時發布 v.1.9.5, 沒想到是直接從 v1.9.4 跳躍至 v1.10, 參考 :

http://micropython.org/download/#esp8266

相較於前一版本, 新版韌體大幅增加了許多功能與效能提升, 例如 :
  1. 新增 VsfPosix 檔案系統元件
  2. 新增 ucryptolib 模組 (支援 AES)
  3. 新增 ure.sub() 函數
  4. 新增 uhashlib.md5 模組
  5. 新增 lwIP socket 支援 TCP listen/accept backlog
  6. 核心程式碼大小減少 2.2%
  7. 新增 uio.IOBase 類別支援 user defined streams
對於我使用的 ESP8266 板子則有如下改變 :
  1. 每個 port 的 heap 增加 2K Bytes
  2. WLAN 連線沒有在用 (inactive) 時ㄧ無線模組會進入休眠
  3. UART 可與 REPL 斷開 (disconnected)
  4. 軟開機 (soft reset) 時 sockets 會被清空
參考 :
http://micropython.org/resources/micropython-ChangeLog.txt

下載韌體後參考下列兩篇使用 D1 mini 用 ESP8266Flasher 軟體以 115200 速率燒錄到 4MB 的 Flash 中 :

# MicroPython on ESP8266 (一) : 燒錄韌體
# WeMOS D1 Mini 開發板測試
將 ESP-01 或 D1 Mini 連接到筆電 USB 埠進行燒錄之前, 須先將 ESP8266 的GPIO 0 接地, 這在 D1 Mini 板子是 D3 腳; 而在 ESP-01 模組則為 D0 腳, 參考 :

MicroPython 1.9.4 版釋出

燒錄完成後拔掉 USB 連線, 去除 GPIO 0 的接地後再重新將測試板接上 USB 連接到筆電, 這時查詢裝置管理員的連接埠會出現 USB-SERIAL-CH340 (D1 Mini 使用 CH340 晶片), 若無則需安裝驅動程式, 在 Win10 可用自動搜尋網路進行安裝 :




安裝完成用 Putty 連線板子, 設定如下 :




這樣就可順利連線 D1 mini 板了.

1. 檢視檔案系統 :

▒▒▒#▒cbd#▒OSError: [Errno 2] ENOENT

MicroPython v1.10-8-g8b7039d7d on 2019-01-26; ESP module with ESP8266
Type "help()" for more information.

>>> import os
>>> os.listdir()
['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()


2. 開啟 Web REPL 功能 :

>>> import webrepl_setup
WebREPL daemon auto-start status: disabled

Would you like to (E)nable or (D)isable it running on boot?
(Empty line to quit)
> E
To enable WebREPL, you must set password for it
New password (4-9 chars): 123456
Confirm password: 123456
Changes will be activated after reboot
Would you like to reboot now? (y/n) y

重開機後再次查詢檔案系統, 多了一個 webrepl_cfg.py 檔, 檢視其內容可知裡面只有一列資料 PASS='123456' 即 REPL 密碼 :

>>> import os
>>> os.listdir()
['boot.py', 'webrepl_cfg.py']
>>> f=open('webrepl_cfg.py','r') 
>>>
>>> lines=f.readlines()
>>> for line in lines:
...     print(line)
...
...
...
PASS = '123456'


3. 檢視韌體版本 :

>>> import esp 
>>> esp.check_fw() 
size: 615372
md5: 7a71fb7238ce227f23450783b1389443
True
>>>
>>> import os
>>> os.uname()
(sysname='esp8266', nodename='esp8266', release='2.2.0-dev(9422289)', version='v1.10-8-g8b7039d7d on 2019-01-26', machine='ESP module with ESP8266')
>>>

4. 檢視硬體設定 :

>>> import port_diag  
FlashROM:
Flash ID: 1640ef (Vendor: ef Device: 4016)
Flash bootloader data:
Byte @2: 02
Byte @3: 40 (Flash size: 4MB Flash freq: 40MHZ)
Firmware checksum:
size: 615372
md5: 7a71fb7238ce227f23450783b1389443
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:

5. 測試 SDT :

MicroPython v1.10-8-g8b7039d7d on 2019-01-26; ESP module with ESP8266
Type "help()" for more information.
>>> from machine import WDT 
>>> dir(WDT)
['__class__', '__name__', 'deinit', 'feed']
>>> wdt = WDT(timeout=2000) 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: function doesn't take keyword arguments
>>> wdt = WDT(id=0, timeout=10000) 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: function doesn't take keyword arguments

可見 WDT 還是不支援 ESP8266.

沒有留言 :