summaryrefslogtreecommitdiff
path: root/stmhal
AgeCommit message (Collapse)Author
2015-02-07py: Protect mp_parse and mp_compile with nlr push/pop block.Damien George
To enable parsing constants more efficiently, mp_parse should be allowed to raise an exception, and mp_compile can already raise a MemoryError. So these functions need to be protected by an nlr push/pop block. This patch adds that feature in all places. This allows to simplify how mp_parse and mp_compile are called: they now raise an exception if they have an error and so explicit checking is not needed anymore.
2015-02-06stmhal/adc.c: Fix calculation of read_core_vref()blmorris
There was a stray factor of 2 (VBAT_DIV) that looks like it was copied incorrectly from the read_core_vbat() function. The factor exists in read_core_vbat() because VBAT is measured through a 2:1 voltage divider. read_core_vref now returns values around 1.21V (assuming that external reference voltage is 3.3V) which is in line with the datasheet values. See comment at http://forum.micropython.org/viewtopic.php?f=6&t=533&p=2991#p2991
2015-01-29py: Change vstr_null_terminate -> vstr_null_terminated_str, returns str.Damien George
2015-01-28py: Change vstr so that it doesn't null terminate buffer by default.Damien George
This cleans up vstr so that it's a pure "variable buffer", and the user can decide whether they need to add a terminating null byte. In most places where vstr is used, the vstr did not need to be null terminated and so this patch saves code size, a tiny bit of RAM, and makes vstr usage more efficient. When null termination is needed it must be done explicitly using vstr_null_terminate.
2015-01-28stmhal: Remove unnecessary #include "systick.h" from pyexec.c.Damien George
Makes pyexec.c more re-usable for other ports.
2015-01-24stmhal: Disable MICROPY_OPT_CACHE_MAP_LOOKUP_IN_BYTECODE.Damien George
It uses RAM and on pyboard we are generally tight on RAM, so disable this optimisation for general builds. If users need the speed then they can build their own version. Maybe in the future we can have different versions of pyboard firmware built with different tradeoffs.
2015-01-24stmhal: Bug fix for usocket's accept and setsockopt methods.Damien George
accept might raise an exception, in which case the new socket is not fully created. It has a finaliser so will run close() method when GC'd. Before this patch close would try to close an invalid socket. Now fixed. setsockopt took address of stack value which became out of scope. Now fixed.
2015-01-22lib/libm: Add frexp and modf functions; use in stmhal; add tests.Damien George
Addresses issue #1081.
2015-01-22stmhal: Make CC3K object static, so it's only registered once as NIC.Damien George
2015-01-22stmhal: Put mod_network_nic_list in global root-pointer state.Damien George
It needs to be scanned by GC. Thanks to Daniel Campora.
2015-01-21py: Remove mp_obj_str_builder and use vstr instead.Damien George
With this patch str/bytes construction is streamlined. Always use a vstr to build a str/bytes object. If the size is known beforehand then use vstr_init_len to allocate only required memory. Otherwise use vstr_init and the vstr will grow as needed. Then use mp_obj_new_str_from_vstr to create a str/bytes object using the vstr memory. Saves code ROM: 68 bytes on stmhal, 108 bytes on bare-arm, and 336 bytes on unix x64.
2015-01-21stmhal: Add support for FEZ Cerb40 II board from ghielectronics.com.Dave Hylands
2015-01-20py, unix, stmhal: Allow to compile with -Wshadow.Damien George
See issue #699.
2015-01-16pyexec: Add event-driven variant pyexec_friendly_repl().Paul Sokolovsky
pyexec_friendly_repl_process_char() and friends, useful for ports which integrate into existing cooperative multitasking system. Unlike readline() refactor before, this was implemented in less formal, trial&error process, minor functionality regressions are still known (like soft&hard reset support). So, original loop-based pyexec_friendly_repl() is left intact, specific implementation selectable by config setting.
2015-01-12py: Can compile with -Wmissing-declarations and -Wmissing-prototypes.Damien George
2015-01-12stmhal: Add MICROPY_HW_USB_OTG_ID_PIN config, set for relevant boards.Damien George
This config option is for the USB OTG pin, pin A10. This is used on some boards but not others. Eg PYBv3 uses PA10 for LED(2), so it shouldn't be used for OTG ID (actually PA10 is multiplexed on this board, but defaults to LED(2)). Partially addresses issue #1059.
2015-01-12stmhal: Move readline code to lib/mp-readline/.Paul Sokolovsky
2015-01-10py: Add config option MICROPY_COMP_MODULE_CONST for module consts.Damien George
Compiler optimises lookup of module.CONST when enabled (an existing feature). Disabled by default; enabled for unix, windows, stmhal. Costs about 100 bytes ROM on stmhal.
2015-01-09stmhal: Reclaim 72 bytes of stack by factoring out flash init code.Damien George
2015-01-09py: Add MICROPY_PY_MICROPYTHON_MEM_INFO to enable mem-info funcs.Damien George
This allows to enable mem-info functions in micropython module, even if MICROPY_MEM_STATS is not enabled. In this case, you get mem_info and qstr_info but not mem_{total,current,peak}.
2015-01-09py: Disable stack checking by default; enable on most ports.Damien George
2015-01-08stmhal: Allow to build without float support if wanted.Damien George
2015-01-07stmhal: Add MICROPY_HW_USB_VBUS_DETECT_PIN option, for boards without itDamien George
Since all currently supported boards use pin A9 for this function, the value of the macro MICROPY_HW_USB_VBUS_DETECT_PIN is not actually used, just the fact that it is defined. Addresses issue #1048.
2015-01-07stmhal: Collect all root pointers together in 1 place.Damien George
A GC in stmhal port now only scans true root pointers, not entire BSS. This reduces base GC time from 1700ms to 900ms.
2015-01-07py: Add option to cache map lookup results in bytecode.Damien George
This is a simple optimisation inspired by JITing technology: we cache in the bytecode (using 1 byte) the offset of the last successful lookup in a map. This allows us next time round to check in that location in the hash table (mp_map_t) for the desired entry, and if it's there use that entry straight away. Otherwise fallback to a normal map lookup. Works for LOAD_NAME, LOAD_GLOBAL, LOAD_ATTR and STORE_ATTR opcodes. On a few tests it gives >90% cache hit and greatly improves speed of code. Disabled by default. Enabled for unix and stmhal ports.
2015-01-07py: Put all global state together in state structures.Damien George
This patch consolidates all global variables in py/ core into one place, in a global structure. Root pointers are all located together to make GC tracing easier and more efficient.
2015-01-01teensy: Prefix includes with py/; remove need for -I../py.Damien George
2015-01-01stmhal: Prefix includes with py/; remove need for -I../py.Damien George
2014-12-29py: Add include guards to mpconfig,misc,qstr,obj,runtime,parsehelper.Damien George
2014-12-27stmhal: Add ability to mount custom block device.Damien George
2014-12-27stmhal: Upgrade to latest fatfs driver.Damien George
2014-12-27Makefiles: Support py/*.h includes per #1022.Paul Sokolovsky
2014-12-24stmhal: Enable ubinascii module, weak link to binascii.Damien George
2014-12-21stmhal: gccollect.h is superfluous in many places.Paul Sokolovsky
2014-12-21stmhal: Use gc_dump_info() function instead of adhoc code.Paul Sokolovsky
2014-12-20stmhal: Include MICROPY_HAL_H only if defined.Paul Sokolovsky
Helps other ports.
2014-12-19py: Add execfile function (from Python 2); enable in stmhal port.Damien George
Adds just 60 bytes to stmhal binary. Addresses issue #362.
2014-12-18lib/libm: Add acosh, asinh, atanh, tan; get working with stmhal.Damien George
acoshf, asinhf, atanhf were added from musl. mathsincos.c was split up into its original, separate files (from newlibe-nano-2). tan was added. All of the important missing float functions are now implemented, and pyboard now passes tests/float/math_fun.py (finally!).
2014-12-09py: Allow builtins to be overridden.Damien George
This patch adds a configuration option (MICROPY_CAN_OVERRIDE_BUILTINS) which, when enabled, allows to override all names within the builtins module. A builtins override dict is created the first time the user assigns to a name in the builtins model, and then that dict is searched first on subsequent lookups. Note that this implementation doesn't allow deleting of names. This patch also does some refactoring of builtins code, creating the modbuiltins.c file. Addresses issue #959.
2014-12-08stmhal: Allow SPI.init to specify prescaler directly; improve SPI docs.Damien George
2014-12-08stmhal: Enhance pyb.freq to configure bus (AHB, APB1, APB2) freqs.Damien George
This is useful if you need precise control over the speed of peripherals (eg SPI clock).
2014-12-08modsys: Add sys.print_exception(exc, file=sys.stdout) function.Paul Sokolovsky
The function is modeled after traceback.print_exception(), but unbloated, and put into existing module to save overhead on adding another module. Compliant traceback.print_exception() is intended to be implemented in micropython-lib in terms of sys.print_exception(). This change required refactoring mp_obj_print_exception() to take pfenv_t interface arguments. Addresses #751.
2014-12-07stmhal: Allow network, uselect, usocket mods to be used by other ports.Damien George
Remove include of stm32f4xx_hal.h, replace by include of MICROPY_HAL_H where needed, and make it compile without float support. This makes these 3 modules much more generic and usable by other ports.
2014-12-06stmhal: Make SPI bus use DMA for transfers.Damien George
Uses DMA if interrupts are enabled, polling if they are disabled.
2014-12-05py: Rename mp_obj_int_get to mp_obj_int_get_truncated; fix struct.pack.Damien George
mp_obj_int_get_truncated is used as a "fast path" int accessor that doesn't check for overflow and returns the int truncated to the machine word size, ie mp_int_t. Use mp_obj_int_get_truncated to fix struct.pack when packing maximum word sized values. Addresses issues #779 and #998.
2014-12-05py: Optimise lexer by exposing lexer type.Damien George
mp_lexer_t type is exposed, mp_token_t type is removed, and simple lexer functions (like checking current token kind) are now inlined. This saves 784 bytes ROM on 32-bit unix, 348 bytes on stmhal, and 460 bytes on bare-arm. It also saves a tiny bit of RAM since mp_lexer_t is a bit smaller. Also will run a bit more efficiently.
2014-12-04stmhal: Overhaul network drivers; has generic network protocol in C.Damien George
This patch overhauls the network driver interface. A generic NIC must provide a set of C-level functions to implement low-level socket control (eg socket, bind, connect, send, recv). Doing this, the network and usocket modules can then use such a NIC to implement proper socket control at the Python level. This patch also updates the CC3K and WIZNET5K drivers to conform to the new interface, and fixes some bugs in the drivers. They now work reasonably well.
2014-12-02stmhal: Move RTC HAL init functions to rtc.c, where they belong.Damien George
So can remove unnecessary stm32f4xx_hal_msp.c file.
2014-11-30stmhal: Make pyb.[u]delay use systick with IRQs, busy loop otherwise.Damien George
pyb.delay and pyb.udelay now use systick if IRQs are enabled, otherwise they use a busy loop. Thus they work correctly when IRQs are disabled. The busy loop is computed from the current CPU frequency, so works no matter the CPU frequency.
2014-11-29stmhal: Add USB_VCP.setinterrupt method, to disable CTRL-C.Damien George