summaryrefslogtreecommitdiffstatshomepage
path: root/esp8266/modules
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-05-12 17:58:50 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-05-12 17:58:50 +0300
commitddf0b7dbc3843f2025da5a4cc1b588340c4aad13 (patch)
tree9574b80b80f75064e1ac561fea10ffa2a29eebc7 /esp8266/modules
parente9308c189af388525becbcd42b81ea6d37738135 (diff)
downloadmicropython-ddf0b7dbc3843f2025da5a4cc1b588340c4aad13.tar.gz
micropython-ddf0b7dbc3843f2025da5a4cc1b588340c4aad13.zip
esp8266/scripts: Move initsetup & port_diag tools to modules/.
Diffstat (limited to 'esp8266/modules')
-rw-r--r--esp8266/modules/inisetup.py53
-rw-r--r--esp8266/modules/port_diag.py33
2 files changed, 86 insertions, 0 deletions
diff --git a/esp8266/modules/inisetup.py b/esp8266/modules/inisetup.py
new file mode 100644
index 0000000000..29421e7923
--- /dev/null
+++ b/esp8266/modules/inisetup.py
@@ -0,0 +1,53 @@
+import uos
+import network
+from flashbdev import bdev
+
+def wifi():
+ import ubinascii
+ ap_if = network.WLAN(network.AP_IF)
+ essid = b"MicroPython-%s" % ubinascii.hexlify(ap_if.config("mac")[-3:])
+ ap_if.config(essid=essid, authmode=network.AUTH_WPA_WPA2_PSK, password=b"micropythoN")
+
+def check_bootsec():
+ buf = bytearray(bdev.SEC_SIZE)
+ bdev.readblocks(0, buf)
+ empty = True
+ for b in buf:
+ if b != 0xff:
+ empty = False
+ break
+ if empty:
+ return True
+ fs_corrupted()
+
+def fs_corrupted():
+ import time
+ while 1:
+ print("""\
+The FAT filesystem starting at sector %d with size %d sectors appears to
+be corrupted. If you had important data there, you may want to make a flash
+snapshot to try to recover it. Otherwise, perform factory reprogramming
+of MicroPython firmware (completely erase flash, followed by firmware
+programming).
+""" % (bdev.START_SEC, bdev.blocks))
+ time.sleep(3)
+
+def setup():
+ check_bootsec()
+ print("Performing initial setup")
+ wifi()
+ uos.VfsFat.mkfs(bdev)
+ vfs = uos.VfsFat(bdev)
+ uos.mount(vfs, '/flash')
+ uos.chdir('/flash')
+ with open("boot.py", "w") as f:
+ f.write("""\
+# This file is executed on every boot (including wake-boot from deepsleep)
+#import esp
+#esp.osdebug(None)
+import gc
+#import webrepl
+#webrepl.start()
+gc.collect()
+""")
+ return vfs
diff --git a/esp8266/modules/port_diag.py b/esp8266/modules/port_diag.py
new file mode 100644
index 0000000000..ef8800355a
--- /dev/null
+++ b/esp8266/modules/port_diag.py
@@ -0,0 +1,33 @@
+import esp
+import uctypes
+import network
+import lwip
+
+
+def main():
+
+ ROM = uctypes.bytearray_at(0x40200000, 16)
+ fid = esp.flash_id()
+
+ print("FlashROM:")
+ print("Flash ID: %x (Vendor: %x Device: %x)" % (fid, fid & 0xff, fid & 0xff00 | fid >> 16))
+
+ print("Flash bootloader data:")
+ SZ_MAP = {0: "512KB", 1: "256KB", 2: "1MB", 3: "2MB", 4: "4MB"}
+ FREQ_MAP = {0: "40MHZ", 1: "26MHZ", 2: "20MHz", 0xf: "80MHz"}
+ print("Byte @2: %02x" % ROM[2])
+ print("Byte @3: %02x (Flash size: %s Flash freq: %s)" % (ROM[3], SZ_MAP.get(ROM[3] >> 4, "?"), FREQ_MAP.get(ROM[3] & 0xf)))
+ print("Firmware checksum:")
+ print(esp.check_fw())
+
+ print("\nNetworking:")
+ print("STA ifconfig:", network.WLAN(network.STA_IF).ifconfig())
+ print("AP ifconfig:", network.WLAN(network.AP_IF).ifconfig())
+ print("Free WiFi driver buffers of type:")
+ for i, comm in enumerate(("1,2 TX", "4 Mngmt TX(len: 0x41-0x100)", "5 Mngmt TX (len: 0-0x40)", "7", "8 RX")):
+ print("%d: %d (%s)" % (i, esp.esf_free_bufs(i), comm))
+ print("lwIP PCBs:")
+ lwip.print_pcbs()
+
+
+main()