Commit graph

124 commits

Author SHA1 Message Date
Angus Gratton
e3b24df043 Unaligned load: Shave a few more instructions off 2015-08-11 16:25:11 +10:00
Angus Gratton
3b3f5ea771 Unaligned loads: Only save working registers, use jump table to load non-working registers 2015-08-11 15:29:53 +10:00
Angus Gratton
8ea4ae27e2 Unaligned loader: Support l16si 2015-08-11 15:03:53 +10:00
Angus Gratton
773a046dc3 Unaligned loader: clean up, reduce number of registers 2015-08-11 14:23:41 +10:00
Angus Gratton
bfd38cd1e2 Experimental support for storing const strings in SPI flash or IRAM
As discussed in #11

Known limitations:
- Only supports l8ui/l16ui
- Unoptimised load routine
- Not called from DoubleExceptionHandler but should be
- Doesn't restore state properly when falling through to fatal exception handler
2015-08-10 12:03:03 +10:00
Angus Gratton
25e124a612 ld: Link memmove into IRAM (used by sprintf, etc.) 2015-08-10 11:54:30 +10:00
Angus Gratton
d685581829 Syscall hander: Fix a3 save address
(SDK doesn't use syscall exception so bug probably never hit?)
2015-08-10 11:54:30 +10:00
Angus Gratton
1cb2de5b96 spi_flash.h: Correct comment regarding flashchip structure
From ed0a079d9b
2015-08-07 18:19:09 +10:00
Angus Gratton
e7460de0a1 esp_system.h: Fix return type of sdk_system_get_rst_info 2015-08-06 16:35:20 +10:00
Angus Gratton
ed0a079d9b Expose SDK flashchip parameter
More thanks due to @foogod's RE work for this.
2015-08-06 11:40:44 +10:00
Angus Gratton
d703f8eae0 esptool.py: Ensure flash size args are passed at each step
('esptool.py write_image' will override the flash size in your binaries with the
default, given the chance)
2015-08-06 11:40:44 +10:00
Angus Gratton
bed6907d22 Exception vector address must be 256 byte aligned
Not actually a problem with the current linker script as the address is
predetermined there at start of IRAM, but might as well be accurate
about it.

As per advice from @foogod on esp8266-re mailing list:
https://groups.google.com/d/msg/esp8266-re/1ljIY3Zttbo/HvzHSWOLCgAJ
2015-08-06 09:54:46 +10:00
Angus Gratton
5f82b3c27f Merge branch 'master' of github.com:SuperHouse/esp-open-rtos 2015-08-05 14:24:10 +10:00
Angus Gratton
19b8383069 Working TFTP server based OTA updates
Tested with 16MBit flash configuration, two rboot update slots.

Closes #10
2015-08-05 14:10:14 +10:00
Angus Gratton
6887a8119a Simple example: Fix printf modifier 2015-08-05 14:04:12 +10:00
Angus Gratton
dd538b2889 Makefile: Pass flash size & speed flags to both esptool.py & esptool2 2015-08-05 14:04:12 +10:00
Angus Gratton
6bbd6736a4 Add SDK set_sleep_type/get_sleep_time functions (undocumented in 0.9.9, may not workas expected) 2015-08-03 12:52:42 +10:00
Angus Gratton
aed843fc14 exception_vectors: Remove some cruft some the symbol table 2015-07-30 10:10:37 +10:00
Angus Gratton
147257efa4 Almost functional OTA support
ota_basic example can receive new image via TCP.

However - writing to flash with interrupts disabled causes data loss,
and the TCP flow is very slow to recover. Linux sender quickly ramps up
RTT timer to very long retry intervals, crippling performance &
throughput.

Running the update without the flash writes causes the data to be
received quickly, so this is definitely an issue with the time taken for
the erase cycle.

Progress towards #10
2015-07-29 16:50:23 +10:00
Angus Gratton
3797cf5357 lwip: Ignore some compiler warnings when debugging is on 2015-07-29 16:50:23 +10:00
Angus Gratton
efc454035c Move all code paths touched by NMI to IRAM
Prerequisite for calling Cache_Read_Disable() for OTA updates.

Massive thanks due to @foogod and their xtobjdis tool, creating the call
graph of where the wDev_ProcessFiq touched (including in newlib, etc.)
would have otherwise been very painful:
https://bitbucket.org/foogod/xtobjdis
2015-07-29 16:47:33 +10:00
Angus Gratton
28fdebee92 gpio: Change gpio_write argument to bool 2015-07-29 10:35:15 +10:00
Angus Gratton
9c7c94f96d Makefile: When assembling, add the source dir to the assembler include path 2015-07-28 11:42:56 +10:00
Angus Gratton
30877f4ef0 Makefile: Assemble any .s files files found in SRC_DIRs 2015-07-28 11:27:41 +10:00
Angus Gratton
2440ba526a Makefiles: Allow for EXTRA_COMPONENTS and EXTRA_LDFLAGS to append to either variable 2015-07-28 11:20:18 +10:00
Angus Gratton
265cef7e00 Add some LED debugging assembler macros
Not used directly in esp-open-rtos but useful to keep around.
2015-07-28 11:19:01 +10:00
Angus Gratton
ed7ba52c9a Add exception vectors & low-level handlers
At the moment these are almost bit-for-bit copies of the vector
behaviour in the RTOS SDK, but hopefully that will start to change.

Progress towards #2
2015-07-28 11:01:57 +10:00
Angus Gratton
4d91d4432e Merge pull request #14 from kanflo/master
Changed flashing order
2015-07-24 09:57:10 +10:00
Johan Kanflo
d4873379a9 Changed flashing order
Workaround for a ESP8266 ROM bug that cuases SPI flash erase
to sometimes erase an extra sector. See
https://github.com/themadinventor/esptool/issues/33
2015-07-23 14:13:07 +02:00
Angus Gratton
d4a503f320 Fix bug with blank OTA binary file name 2015-07-23 15:19:30 +10:00
Angus Gratton
87dc2317f5 Support building an OTA-compatible flash image
Image is suitable for SDK v1.2 bootloader or rBoot.
2015-07-21 15:27:19 +10:00
Angus Gratton
5bbbc1f144 Run linker scripts via C preprocessor 2015-07-21 15:27:19 +10:00
Angus Gratton
c95369e86c emacs dir-locals.el: Only disable tabs in c-mode (Makefiles need tabs) 2015-07-21 15:26:11 +10:00
Angus Gratton
e0e7814856 Update README, including removing references to esp8266-wiki
Closes #9
2015-07-15 16:15:35 +10:00
Angus Gratton
86188c01fd Merge branch 'newlib' 2015-07-15 16:01:18 +10:00
Angus Gratton
689cf874b2 Provide our own newlib libc
Newlib 2.2.0 w/ nan ofeatures, xtensa patches, locking
implementation.

Built from https://github.com/projectgus/newlib-xtensa
branch xtensa-2_2_0-lock
commit daa6ae40cdc8099f54c3e68a586fc1b906169c5a

For more details, see:
https://github.com/SuperHouse/esp-open-rtos/wiki/libc-configuration

Closes #1
2015-07-15 15:17:59 +10:00
Angus Gratton
a566a51c09 Use linker scripts rather than libcirom/objcopy tricks to arrange
IRAM/IROM sections.

esp-open-rtos compiled code: .text goes into irom by default, symbols
explicitly marked with IRAM attribute go into iram.

SDK code: .text goes into iram by default, symbols marked with
ICACHE_FLASH_ATTR go into irom.

libgcc functions also go into iram by default.
2015-07-09 13:58:41 +10:00
Angus Gratton
1d72ed3f70 Hardware timer support 2015-07-09 12:29:40 +10:00
Angus Gratton
4217a1029e xtensa_interrupts: Add _xt_disable_interrupts/_xt_restore_interrupts inline functions 2015-06-18 11:30:13 +10:00
Angus Gratton
5151ccc3b2 xtensa_interrupts: Add esync after writing intenable/intclear, add comment about non-interrupt-safe mask/unmask 2015-06-18 09:04:45 +10:00
Angus Gratton
2c1b1ab141 Minor core header cleanups 2015-06-18 09:04:45 +10:00
Angus Gratton
ad37abda8b blink examplpe: Fix FreeRTOSConfig mistake 2015-06-17 08:07:26 +10:00
Angus Gratton
72b61b17f8 Create a default FreeRTOSConfig.h, can override on a per-program basis
Closes #12
2015-06-16 17:28:32 +10:00
Angus Gratton
8478dfd92f Examples: Rename main.c files to more descriptive file names 2015-06-16 16:59:32 +10:00
Angus Gratton
f0db6f2b98 WiFi Examples: Load SSID & password from a common local.h file instead
of coding into program
2015-06-16 16:58:27 +10:00
Angus Gratton
a3c4469b1f Add a linker script comment for all the patched newlib _lock_xxx symbols 2015-06-16 16:34:13 +10:00
Angus Gratton
b7b16de429 Alias ets_printf directly to printf at link time
I thought maybe ets_printf had some special properties, but it doesn't
seem to have any so far.
2015-06-16 16:22:55 +10:00
Angus Gratton
2e51f7b164 http_get_ssl example: Fix name of output elf file 2015-06-16 14:23:48 +10:00
Angus Gratton
93dc7edead Grow linker script irom section for 512KB flash chip
Necessary to fit http_get_ssl example, newlib string functions are
larger than espressif SDK implementations.
2015-06-16 14:23:47 +10:00
Angus Gratton
aaef4b0644 Replace all binary SDK libc functions with newlib
Adds a new build step to remove the SDK object files listed in
<libname>.remove.

Closes #1.
2015-06-16 14:21:24 +10:00