|
【MicroPython】MicroPython升级到了v1.8
[复制链接]
本帖最后由 dcexpert 于 2016-5-8 23:45 编辑
MicroPython再次默默升级到了v1.8,大家可以升级一下了。
https://micropython.org/download/
主要升级如下:
- Tue, 3 May 2016 17:32:32 +0100
- v1.8 First general release of ESP8266 port, and support for frozen bytecode
-
- This release marks the first general release of official ESP8266 support
- within the MicroPython code base. The ESP8266 port has many improvements
- and additions, including: websocket and webrepl modules, deep-sleep mode,
- reading on UART, enhanced I2C support, enhanced network configuration,
- full sequence of start-up scripts (built-in _boot.py, boot.py and
- main.py), improved filesystem support with automatic flash-size detection
- as well as documentation and a tutorial.
-
- Known issues with ESP8266 port are:
- - Basic SSL support is available but it works only with relatively short
- data lengths (a few kilobytes).
- - WebREPL over SSL is not supported.
- - Only 5 or so WebREPL sessions in succession can be started (including
- file transfer sessions), after that the board requires a hard reset.
- - File transfer over WebREPL has issues with large files (above a few
- tens of kilobytes).
- - By design, only one concurrent WebREPL connection is supported.
- - Soft reset doesn't reset the network stack.
-
- In addition to ESP8266 support, this release brings frozen bytecode
- which allows to compile bytecode offline and link it into the firmware,
- completely eliminating the need for compilation (and the associated
- RAM usage) at runtime. Basic async/await syntax is now supported, and
- qstrs are now auto-generated in the build system.
-
- A detailed list of changes is given below.
-
- README:
- - explicitly point to required dependencies section
- - promote "docs" and "tests" to "major components"
- - mention support "async" keyword from Python 3.5
-
- ACKNOWLEDGEMENTS:
- - add list of 842 backers from the ESP8266 campaign
-
- py core:
- - modbuiltins: add comment about setting "_" special var
- - add async/await/async for/async with syntax
- - fix constant folding and inline-asm to work with new async grammar
- - emitglue: move typedef of mp_raw_code_t from .c to .h file
- - emitglue: make mp_raw_code_t* arguments constant pointers
- - makeqstrdata: factor out some code to functions that can be reused
- - add ability to have frozen persistent bytecode from .mpy files
- - makeqstrdata: add more names for escaped chars and esc non-printable
- - simplify "and" action within parser by making ident-rules explicit
- - makeqstrdata: fix rendering of qstrs that have non-printable ASCII
- - makeqstrdata: add special case to handle \n qstr
- - declare help, input, open builtins in core
- - map: change hash-table allocation policy to be less aggressive
- - makeqstrdefs: add script to automate extraction of qstr from sources
- - frozenmod: pass the source name of the frozen module to the lexer
- - rework QSTR extraction to work in simple and obvious way
- - divide "split" and "cat" phases of qstr extraction for better efficiency
- - fix bug passing a string as a keyword arg in a dict
- - move call_function_*_protected() functions to py/ for reuse
- - makeqstrdefs.py: windows compatibility
- - obj.h: when constructing a small-int cast to mp_uint_t for bit-shift
- - emitnative: use MP_OBJ_NEW_SMALL_INT instead of manual bit shifting
- - vm: "yield from" didn't handle MP_OBJ_STOP_ITERATION optimization
- - modio: rename module name to "uio" for consistency with other modules
- - modcollections: rename module name have "u" prefix for consistency
-
- extmod:
- - add initial framebuf module
- - add generic machine.I2C class, with bit-bang I2C
- - machine_i2c: fix I2C reading by sending ack/nack at end of byte
- - machine_i2c: implement I2C memory reading/writing
- - moduos_dupterm: don't swallow exceptions in dupterm's read()/write()
- - modlwip: lwip_tcp_receive(): Properly handle EOF for non-blocking sock
- - modlwip: more debug messages for various edge conditions
- - fsusermount: in mount/mkfs, deregister VFS object on error
- - modlwip: lwip_tcp_send(): full error handling
- - modlwip: lwip_tcp_receive(): full error handling
- - modlwip: add ability to run callback on "recv" and "accept" events
- - machine_i2c: allow mp_hal_pin_obj_t to be any type, not a ptr
- - modlwip: protect recv/accept Python callback against exceptions
- - modlwip: workaround esp8266 sendto issue where 1 is returned
- - modlwip: add print_pcbs() debug function
- - modwebsocket: handle CLOSE control frame
- - modussl: throw Python exceptions in case of errors
- - modussl: support server-side SSL sockets
- - modussl: SSL_OK from ssl_read() means "no user data so far"
- - modwebrepl: module to handle WebREPL protocol
- - modwebrepl: initial implementation of "get file" operation
- - modwebrepl: keep reading data when there's something to read
- - modwebrepl: GET_FILE: Send length-prefix chunk with one write()
- - modwebrepl: add rate-limiting workaround for broken network drivers
- - modwebrepl: set debugging by default to off
- - modwebrepl: add support for password
- - modlwip: implement sendall() method for TCP sockets
- - fix typo of macro that detects if float is enabled
-
- lib:
- - utils/printf: rework overriding printer of DEBUG_printf()
- - utils/pyexec: condition-out GC calls from pyexec
- - utils/pyhelp: extract implementation of help(obj) to a library function
- - axtls: update to the latest upstream, fix reported MacOSX build issue
-
- drivers:
- - add SSD1306 OLED driver, with I2C and SPI interfaces
-
- tools:
- - mpy-tool.py: new tool to work with .mpy files; currently it can freeze them
- - mpy-tool.py: add support for Python 2.7
-
- tests:
- - add 6 tests for async await/for/with
- - add .exp files for async tests, so they can run with Python 3.4
- - fix dict1.py so it doesn't rely on the order of dict elems
- - extmod: move split-on-empty-match tests to a separate test file
- - add testcase for yielding from a stopped generator
- - run-bench-tests: process tests in alphabetical order
- - update for _io/_collections module having been renamed
-
- minimal port:
- - add example of frozen persistent bytecode (.mpy file)
- - disable async/await syntax
-
- unix port:
- - build with MICROPY_PY_UHASHLIB_SHA1 if already building with axTLS
- - make sure build dir exists before accessing it for freezing upip
- - Makefile: make install more compatible (BSD, etc.)
-
- windows port:
- - msvc: implement automatic qstr generation using makeqstrdefs
-
- stmhal port:
- - implement basic C-level pin HAL
- - use new generic I2C object in machine module
- - enable framebuf module
- - properly handle RTS/CTS flow control for buf/unbuf transfers
- - add Makefile option FROZEN_MPY_DIR to support frozen bytecode
- - for frozen bytecode generation, add dependency of qstr file
- - l4: add CMSIS files to support STM32L476
- - l4: add basic STM32L4xx HAL files
- - l4: adapt UART HAL to avoid 64-bit integer division
- - update HALCOMMITS due to change to hal
- - l4: add board definition files for STM32L476DISC
- - l4: add line to Makefile for building L4 series
- - l4: modify adc.c to add support for STM32L4 series
- - l4: modify uart.c to support L4 MCU
- - l4: modify usbd_conf.c to support L4 MCU
- - l4: modify rtc.c to support L4 MCU
- - l4: modify timer.c to support L4 MCU
- - fix machine.unique_id() function to work for all MCUs
- - l4: modify mphalport to support L4 MCU
- - l4: modify flash.c and storage.c to support L4 MCU
- - l4: add support for external interrupts/events
- - accel: raise an exception if the accel couldn't be initialised
- - use pyhelp_print_obj function
- - change i2c.scan() method to scan addresses 0x08-0x77
- - fix typo of macro that detects if float is enabled
-
- cc3200 port:
- - use pyhelp_print_obj function
- - change i2c.scan() method to scan addresses 0x08-0x77
- - disable async/await syntax
-
- esp8266 port:
- - enable websocket module
- - modnetwork: .config(): Check interface whose config is requested
- - modnetwork: .config(): Add "authmode" param
- - modnetwork: .config(): Add "password" param (W/O)
- - add Python modules for initial configuration
- - scripts/inisetup.py: set WPA/WPA2 AP mode with a predefined password
- - protect modpyb.h header file from multiple inclusions
- - implement basic C-level pin HAL
- - switch from using custom I2C driver to generic extmod one
- - enable framebuf module
- - in callback helpers, pop nlr_buf on successful call
- - esp_mphal: don't swallow exceptions in dupterm's read()/write()
- - esp_mphal: call_dupterm_read(): Fix order of deactivating on EOF
- - remove pin_id field from C pin object
- - add dummy entries for non-existing pins to simplify pin logic
- - add hard IRQ callbacks for pin change on GPIO0-15
- - separate 1-wire timing funcs from Python module to save iRAM
- - switch integer arith routines to BootROM
- - scripts/port_diag.py: module to collect diagnostic info
- - enable input() builtin
- - scripts/_boot: mount block device on "" instead of "/"
- - moduos: add uos.mkdir function
- - modmachine: add reset_cause() function
- - adapt port to use new auto-qstr generation
- - moduos: add dupterm_notify() function
- - esp_mphal: protect dupterm_task_handler() from recursive exec
- - README.md: update feature list for current state of affairs
- - modesp: allow esp.deepsleep to take 2nd arg for RF wake opt
- - scripts/flashbdev: use all available space in 1MB FlashROM for FS
- - modesp: add flash_size() function
- - scripts: don't try to create filesystem on 512KB devices or less
- - modnetwork: .config(): Add "channel" param
- - scripts/flashbdev: disable debug output/checks
- - scripts/_boot: print notice when initial setup is executed
- - scripts/flashbdev: correct bootloader flash size to match real size
- - modnetwork: .config(): Add "hidden ESSID" param
- - implement basic deep-sleep capabilities
- - add uart_rx_wait and uart_rx_char functions
- - implement UART.read functionality
- - uart: remove obsolete UART rx buffering code
- - esp_mphal: remove mp_hal_feed_watchdog
- - convert mp_hal_pin_obj_t from pin ptr to simple integer
- - allow GPIO16 to be used as a pin in the uPy pin HAL
- - change software SPI driver to use general pin HAL
- - scripts/websocket_helper: module encapsulating handshake sequences
- - scripts/websocket_helper: disable debug output
- - scripts/webrepl: webREPL based on C-level websocket object
- - scripts/webrepl: convert to persistent daemon
- - scripts/webrepl: don't start on import
- - scripts/webrepl: allow to override port
- - scripts/webrepl: print connection address
- - scripts/webrepl: print client address for incoming connections
- - scripts/flashbdev: use all available Flash for filesystem
- - scripts/webrepl: add "ws://" to "daemon started at" message
- - Makefile: add target to build axTLS
- - esp8266.ld: put axTLS to FlashROM
- - Makefile: override abort() when building axtls
- - axtls_helpers: helper/wrapper functions for axTLS
- - tests/onewire.py: don't run test on import
- - Makefile: support linking with axTLS built from source
- - Makefile: enable "ussl" module; axTLS should be built first using "make axtls"
- - move pyb.info() function to esp module and remove pyb module
- - move onewire.py, neopixel.py drivers from tests/ to scripts/
- - scripts/onewire.py: simplify and improve 1-wire driver
- - scripts/neopixel.py: remove test function from neopixel driver
- - set suitable values for axtls's RT_MAX_PLAIN_LENGTH & RT_EXTRA
- - README: add recently required step of 'make axtls'
- - modnetwork: make WLAN.ifconfig() read/write
- - help: implement help() builtin
- - help: add cheatsheet for basic WiFi configuration
- - enable WebREPL file transfer rate limiting
- - enable webrepl module
- - scripts: move all of initial setup to inisetup module
- - scripts/inisetup: create default boot.py in filesystem
- - scripts/webrepl: connection ack prompt is now printed by modwebrepl
- - scripts/webrepl: switch to using _webrepl object wrapper
- - scripts/webrepl: add "first connection" mode to setup password
- - README: mention WebREPL
- - Makefile: be sure to pass cross-compiling AR when building axtls
- - scripts/webrepl_setup: reject too short passwords
- - change platform name from ESP8266 to esp8266
- - modnetwork: remove deprecated wifi_mode()
- - esp_mphal: add ets_esf_free_bufs(), etc. functions
- - modesp: add esf_free_bufs() debugging function
- - modesp: add malloc() and free() functions
- - scripts/inisetup: enable WebREPL auto-start on boot
- - modnetwork: remove .mac() method, move to .config("mac")
- - scripts/inisetup: update for nic.mac() method being gone
- - scripts/neopixel.py: swap red and green in pixel accessor
- - modpybpin: use enum+array instead of struct for parsing args
- - modpybpin: use None instead of PULL_NONE for no-pull config
- - modpybpin: make pin.irq() methods take keyword args
- - tutorial: mention that esptool is available via pip
- - scripts/ntptime: add simple NTP client
-
- docs:
- - esp: enumerate flash access functions
- - machine: start to update for esp8266 port
- - speed_python: clarify/generalize "Buffers" subsection
- - speed_python: generalize "Floating point" subsection
- - speed_python: add many more details on memoryviews
- - machine: reset_cause() has been implemented for esp8266
- - topindex.html: esp8266: Enable quickref/general on the main page
- - esp8266/general: start "General information" for esp8266
- - esp8266: add info about using deep-sleep mode to quickref
- - esp8266/tutorial: add tutorial placeholder page
- - ustruct: there's no complete "struct" module, only "ustruct" subset
- - esp8266: include usocket module reference
- - library/usocket: add link to CPython's socket module
- - usocket: socket-specific exceptions are for WiPy only
- - usocket: socket.IPPROTO_SEC is WiPy-specific
- - usocket: describe address format once at the beginning
- - network: esp8266: scan(): add note that bssid is bytes object
- - library: group MicroPython-specific modules under separate heading
- - library/index: move WiPy "micro-libraries" under corresponding heading
- - library/index: esp8266 has the same set of stdlibs as pyboard/unix
- - module "time" is actually "utime"
- - library/index: make single section for "micro-ified" modules
- - library/index: order sections from the most to least standard modules
- - Makefile: default BUILDDIR based on MICROPY_PORT
- - library: "os" module is actually "uos"
- - fix uos and utime heading underlines to be the correct length
- - library/utime: add more time functions for unix and esp8266 ports
- - utime: describe time() peculiarities in MicroPython
- - utime: describe sleep() peculiarities in MicroPython
- - library: consistently use admonitions for CPython differences
- - ubinascii: clean up grammar
- - network: esp8266: Add wlan.ifconfig() method
- - network: esp8266: Describe wlan.config() method
- - make the short port names in the port/version sidebar lowercase
- - esp8266: update quickref to reflect changes to 1-wire and NeoPixel
- - library/utime: elaborate on epochs and calendar time maintenance
- - esp8266/quickref: add info about WebREPL
- - ustruct: document pack_into(), unpack_from()
- - sys: document sys.modules
- - ustruct: fix argument formatting
- - sys: remove port-specific details from description of stdin/out/err
- - sys: clarify description of sys.exit()
- - sys: clean up print_exception() description
- - sys: describe sys.implementation
- - sys: describe sys.maxsize
- - sys: describe sys.platform is port-neutral manner
- - add _collections module reference
- - add _io module reference
- - _io and _collections were renamed to have standard "u" prefix
- - library/machine.I2C: update to reflect ESP8266 implementation
- - esp8266/general: webREPL is described in quickref for now
- - esp8266/general: add more points to "Multitude of boards" section
- - esp8266/general: fix list formatting
- - esp8266/general: add techspec section
- - esp8266/general: add "Boot process" section
- - esp8266_contents: reference general and tutorial docs
- - network: esp8266: MAC address is set via .config() method
- - esp8266: add ESP8266 tutorial
- - machine: generalize docs from just WiPy to other ports
- - machine: move WiPy-specific hardware details to its general reference
- - machine: more generic description of sleep's, WiPy details to its genref
- - machine: idle() description generalization
- - library/machine.Pin: update pin docs to reflect ESP8266 support
- - esp8266/tutorial: update pins tutorial to reflect changes in API
-
- examples:
- - http_server_ssl.py: add HTTPS server example
复制代码
|
|