Commit graph

254 commits

Author SHA1 Message Date
Our Air Quality
acaf6f0799 Load/store exception handler: handle re-entry via a NMI.
The NMI can asynchronously interrupt the load/store exception handler. This
does occur frequently as the NMI handler code does invoke load/store
exceptions, and the load/store exception handler is heavly used. This was
corrupting the load/store exception handler saved state and thus randomly
corrupting registers a0 to a6 of the interruptee.
2018-06-27 20:53:53 +10:00
Our Air Quality
cc4bd3c58f Malloc support for allocating to DRAM and/or IRAM. 2018-06-27 20:53:53 +10:00
Our Air Quality
9d57176d8e Suport disabling the lower half of the instruction cache. 2018-06-27 20:53:53 +10:00
Our Air Quality
8ea1774e1d I-RAM memory store support for 8 and 16 stores 2018-06-27 20:53:52 +10:00
Ruslan V. Uss
07772c643d
Merge pull request #587 from ourairquality/newlib-locks-nmi
newlib: skip locking when within the NMI Irq.
2018-06-17 13:08:41 +05:00
Our Air Quality
090db8da5e sysparam: always create the semaphore on init.
Otherwise when initialization was not successful it may fail with an
assertion in FreeRTOS rather than returning SYSPARAM_ERR_NOINIT.
2018-06-05 22:24:48 +10:00
Zaltora
4dc7d825bc Initial HW PWM (Delta-Sigma) (#609) 2018-05-20 02:47:29 +05:00
Joost Nieuwenhuijse
2985d1d11e Make operator new / delete weak
so you can implement your own, e.g. if you need a throwing operator new.
2018-05-16 17:56:15 +02:00
Our Air Quality
46559496c6 Recognise some new flash size codes.
This at least recognises the 2MB-c1, 4MB-c1, 8MB, and 16MB flash
size codes.
2018-04-25 23:06:28 +10:00
Ruslan V. Uss
524a98ed1a
Merge pull request #583 from ourairquality/global-stdio-streams
newlib: rebuild with the global stdio streams enabled.
2018-04-02 11:22:48 +05:00
Jean-Nicolas Graux
8cb769d55d uart: add ability to configure byte length
Signed-off-by: Jean-Nicolas Graux <nicogrx@gmail.com>
2018-03-29 13:24:06 +02:00
tkremeyer
5c18d42c8d UART: Add ability to configure stopbits and parity bit (#590) 2018-03-13 18:31:19 +05:00
Our Air Quality
4bc6032fa6 newlib: skip locking when within the NMI Irq.
NMI Irq error paths call into printf which will use the newlib locks
but these can not be used within the NMI, a task switch can not occur
here. This case would be a terminal error path that is attempting to
write some debug message in the process, so just bail out of the
locking in this case. As a warning a ':' character is emitted and this
will typically prefix lines emitted in this context - it would be an
error for this path to be take in normal operation.
2018-03-03 09:52:47 +11:00
Our Air Quality
f9ae521710 newlib: rebuild with the global stdio streams enabled.
This change means that there is only one set of global stdin, stdout, and stderr
FILE streams shared by all the threads. This reduces memory usage and avoids
having to close these streams before threads exit. These streams still have a
lock to synchronise access.
2018-02-28 23:44:27 +11:00
Our Air Quality
dccf3fc7b9 newlib lock support: uses a separate mutex and recursive mutex.
In trying to save memory had incorrectly shared a non-recursive mutex
with recursive mutex uses. Initialize one non-recursive mutex too.
2018-02-23 23:00:08 +11:00
Our Air Quality
875aaabebe Newlib: update to version 3.0.0 2018-02-17 01:11:54 +11:00
Our Air Quality
3c81f7d587 lwip update
* The mdns responder has been reworked to lower stack and memory usage. This is
  a variation on the upstream code, it use malloc whereas the upstream code uses
  pools. The high stack usage of the mdns responder was problem for
  esp-open-rtos, so we might have to maintain the differences for now.

* Improved lwip core locking, and lock checking. Upstream improvements, that
  need some added support from esp-open-rtos specific code. More core lock is
  performed when calling from the esp-open-rtos code now, so a little safer. The
  checking is not enforced, but projects might see warning messages and might
  want to look into them.

* The esp-open-rtos lwip support has been sync'ed with the new freertos port
  included with lwip. There are still some minor differences.

* A few lwip timer bugs have been resolved. This might help resolve some issues.

* Plus it picks up all the other upstream fixes and improvements.

* The default lwip stack has been lowered from 768 words to 480 words,
  due to the reduced stack usage by the mdns responder.
2018-02-09 20:26:02 +11:00
Our Air Quality
c3dbac37ef Change the netif default to the station in STATIONAP mode.
It seems most common for the connection to the wider internet to be
via the station netif even if there is also an AP netif, so set the
default to the station netif. The lwip ipv4 route logic will still use
the AP netif if the destination is to that subnet.
2017-12-30 20:51:53 +11:00
Ruslan V. Uss
4ec3659a04
Merge pull request #529 from ourairquality/newlib-locks-combine
newlib: add an option to combine some locks.
2017-12-28 06:48:28 +05:00
Ruslan V. Uss
e5e902589c
Merge pull request #523 from ourairquality/reclaim-wdev-bss
Reclaim a chunk of unused dram in the wdev bss area, 8000 bytes.
2017-12-28 06:48:16 +05:00
Our Air Quality
3b2e0773ca newlib: add an option to combine some locks.
The locks are using a bit of the limited ram. It's probably fine to combine some
of these to use the same mutex, and this patch does so for the set initialized
early. The file locks will still be separate, and dynamically created, so a
thread blocking on them will not deadlock all uses of newlib that need a lock.
2017-12-27 13:55:07 +11:00
Ruslan V. Uss
126fbc20a7
Merge pull request #528 from UncleRus/extras/f-ram
Driver for Cypress serial F-RAM
2017-12-27 00:24:42 +05:00
Ruslan V. Uss
a922ea0383
Merge pull request #519 from ourairquality/heap-end-use-startup-stack
Reuse the startup stack for the dynamic heap.
2017-12-25 22:00:35 +05:00
UncleRus
543b4198b2 Driver for Cypress serial F-RAM 2017-12-24 18:49:52 +05:00
Our Air Quality
aa0b7f5005 Reclaim a chunk of unused dram in the wdev bss area, 8000 bytes. 2017-12-19 14:12:02 +11:00
Our Air Quality
724bf797b1 Reuse the startup stack for the dynamic heap.
Once scheduling has started, the startup stack is no longer usable, control can
never return to that stack. So bump up the heap end in the first task that runs
after scheduling has started. This gives back about 1k.
2017-12-14 07:48:25 +11:00
Our Air Quality
e9d9201527 Newlib: implement locks
* Dynamically allocate arc4random data. Saves about 1k off the bss.
2017-12-13 11:29:43 +11:00
Zaltora
a0f846013c pwm fix (#485)
* pwm fix special state + debug print + IRAM interupt
* Special state = don't set timer, safer
* fix timer crash, cant divide by 0
* pwm dont start when duty is set
* reverse option
* fix low duty crash + comments
2017-12-02 11:54:04 +05:00
dora38
d36e9d65a0 Fix a printf issue. (#474)
Added missing return statements to stdio
2017-10-23 23:55:11 +02:00
Ruslan V. Uss
5fa48d0298 Code formatted, minor fixes (#466) 2017-10-18 21:25:48 +02:00
Our Air Quality
ebdd2f983b lwip: define LWIP_POSIX_SOCKETS_IO_NAMES as zero (#457)
This patch gets the newlib standard stream descriptors playing well with the
lwip socket descriptors and the spiffs file descriptors. The LWIP_SOCKET_OFFSET
is now defined to be 3, rather than zero, to avoid clashing with the standard
stream descriptors, and the SPIFFS_FILEHDL_OFFSET is bumped up to start after
the lwip descriptors.
2017-10-18 19:33:32 +02:00
Ruslan V. Uss
546cc47121 Merge pull request #437 from ourairquality/oaq-merge-1
* bmp180: comment typo
* ds3231: minor code style fixes. Comment, on the week day start.
* Reverse engineered ets_timers.o Switch from FreeRTOS queue to task notification. Removed unknown/unused code. Rename sdk_ets_handler_isr to process_pending_timers. Add function for microseconds Simplify time to ticks conversion
* ets_timer: code for using the FreeRTOS timers, and remove from libs.
* libc: update to a recent newlib version.
* LwIP v2 support
* spi_write: use uint32_t for the page iteration counter. The page counter was using an uint8_t which seems unnecessary and might wrap.
* sysparam_get_bool: memcpy the binary values out.
* FreeRTOS 9.0.1
* Add an argument to ISRs. Disable interrupts while masking them.
* sysparam: reserve one more flash sector before placing the sysparams. This is to help work with recent SDKs that add a RF cal sector by default in the fifth last sector - just so the sysparam sectors do not jump around when using different SDK versions.
* upnp example: strip down the lwipopts.h file
* sysparam editor: accept newline to end a line of input.
* Add Wificfg. Uses the sysparam store to save the wifi configuration. Adds a basic http server for configuration.
* lwip: disable the tcpip_core_locking_input option. With this option enabled some lwip input processing occurs in the pp task which works well for some uses but some code uses a lot of stack (e.g. mdns) and will overflow the pp task stask, or might unnecessarily slow the critical pp task,
so disable this by default and if not already defined.
* sdk_cnx_add_rc: fix overflow of the table, when no match is found. Also adds source code for sdk_cnx_rc_search, adding a null pointer dereference. Check (that is not expected to be seen), and source code for sdk_cnx_remove_rc.
* http_get example: fix compilation with ipv6 disabled.
* lwip: update to master branch.
* wificfg: allow the AP channel to be 1.
* lwip: rework the tcp ooseq handling. It now accounts for the number of rx pool buffers used and the
available memory when deciding the number of ooseq buffers to retain. Enable the TCP Selective ACK support which appears to help a lot on lossy wifi when using the OOSEQ option.
* Update lwip, fixes losses of pcbs and associated problems.
* lwip: revise the tcp ooseq limit calulations. Was making a mess of the calculation sign. Also added a COPY_PP_RX_PBUFS define to include appropriate limits for this option.
* lwip: ooseq_max_bytes() - set a practical target memory size.
* lwip: revise ooseq handling. Modified for lwip backwards compatibility based on upstream feedback.
* lwip: update to the 2.0.3 release
* lwip: merge upstream master.
* libc: update to upstream master.
* lwip: fix building without TCP_QUEUE_OOSEQ
2017-10-02 04:50:35 +05:00
Our Air Quality
29da4e9279 sdk_cnx_add_rc: fix overflow of the table, when no match is found.
Also adds source code for sdk_cnx_rc_search, adding a null pointer dereference
check (that is not expected to be seen), and source code for sdk_cnx_remove_rc.
2017-08-30 13:51:32 +10:00
Our Air Quality
55958b8bc3 sysparam_get_bool: memcpy the binary values out. 2017-08-30 13:51:32 +10:00
Our Air Quality
b6fc58b743 spi_write: use uint32_t for the page iteration counter.
The page counter was using an uint8_t which seems unnecessary and might wrap.
2017-08-30 13:51:32 +10:00
Our Air Quality
af4ac44cb5 libc: update to a recent newlib version. 2017-08-30 13:51:32 +10:00
Our Air Quality
cd23acaa4a LwIP v2 support 2017-08-30 13:51:32 +10:00
Our Air Quality
5583543f14 Add an argument to ISRs. Disable interrupts while masking them. 2017-08-30 13:51:32 +10:00
Our Air Quality
ec5dabd237 sysparam: reserve one more flash sector before placing the sysparams
This is to help work with recent SDKs that add a RF cal sector by
default in the fifth last sector - just so the sysparam sectors do not
jump around when using different SDK versions.
2017-08-30 13:51:32 +10:00
Sakari Kapanen
4838072ecf Added an API for user exception handlers 2017-08-29 09:51:23 +03:00
Our Air Quality
6a0da03809 Use hwrand for the sdk uses of rand, in particular with the NMI.
The fiq NMI calls rand() from lmac:lmac.a:sdk_lmacTxFrame and the NMI
must not touch the newlib reent structure or enter critical regions
etc, so just use the simple and safe hwrand implementation as a
substitute.
2017-07-20 16:24:45 +10:00
UncleRus
852ed2f1ad Fixes unaligned writes to SPI data register 2017-04-20 01:49:46 +05:00
UncleRus
31ef50c9a9 Revert SPI memcpy() 2017-03-22 10:50:54 +05:00
sheinz
a91ec6eb61 sysparam fixes, tests, spi flash refactoring (#299)
Original work by @ourairquality
* Sysparam threadsafe and SPI access
* Sysparam test cases
* Fix for negative int8
* Sysparam getting bool without memory allocation. Bool tests.
* SPI flash refactoring.
* Extract common spiflash.c into core.
* Use spiflash.c in sysparam.
* Use memcpy in spiflash.c insted of hand-written version.
* Tests for spiflash.c
2017-03-22 02:18:04 +05:00
Andrew Clink
03597d9162 Make FreeRTOS hooks weak; Add example 2017-03-20 12:56:17 -07:00
Ruslan V. Uss
1457a3ed19 Fixed error of writing to SPI registers with memcpy (#352)
fixed memcpy() writing registers bug
2017-03-15 18:18:32 +05:00
Tuan PM
2b915c11c7 add some missing include & fixed display output on sh1104 (#319)
* add some missing include

* Fixed display on SH1106
2017-01-03 00:40:54 +02:00
otopetrik
8f5d49de81 Allow changing write function of stdout (#304)
* Allow changing write function of stdout.

Required for stdout redirection.
Works on blocks, not chars - does _not_ use sdk_os_putc !
Should work even when linking with SPIFFS.
2016-12-19 20:55:26 +05:00
Ruslan V. Uss
61c3d509e5 Merge pull request #302 from Zaltora/spi_fixes
Fixes SPI Bug(s)
2016-12-05 19:08:17 +06:00
lilian
8767a8a0a9 Readable option 2016-12-05 12:45:40 +01:00