Commit graph

33 commits

Author SHA1 Message Date
Angus Gratton
89c481c606 Simplify interrupt and RTOS timer tick handlers
RTOS Timer tick handler is now the same as any other ISR.

This causes a few subtle behaviour changes that seem OK but are worth noting:

* RTOS tick handler sdk__xt_timer_int() is now called from one stack
  frame deeper (inside _xt_isr_handler()), whereas before it was called
  from the level above in UserHandleInterrupt. I can't see any way that
  the extra ~40 bytes of stack use here hurt, though.

* sdk__xt_timer_int() was previous called after all other interrupts
  flagged in the handler, now it's called before the TIMER FRC1 & FRC2
  handlers. The tick handler doesn't appear to do anything particularly
  timing intensive, though.

* GPIO interrupt (value 3) is now lower priority than the SPI
  interrupt (value 2), whereas before it would have been called before
  SPI if both interrupts triggered at once.
2015-09-29 13:21:04 +10:00
Angus Gratton
ed8470631f Consolidate interrupt management in core as esp/interrupts.h & esp_interrupts.c 2015-09-28 22:15:40 +10:00
Alex Stewart
ba7492756c Merge branch 'master' into open-startup 2015-09-20 14:05:54 -07:00
Alex Stewart
43a712572c Don't rename FreeRTOS hook symbols 2015-08-28 18:53:43 -07:00
Angus Gratton
424dc0f3b0 Add C++ support to Makefile, and proof-of-concept simple.cpp example
This is a work in progress based on @mikejac's work.

Missing:
* No 'new' operator.
* I don't think STL is currently supported.
2015-08-10 16:14:30 +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
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
4217a1029e xtensa_interrupts: Add _xt_disable_interrupts/_xt_restore_interrupts inline functions 2015-06-18 11:30:13 +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
Angus Gratton
f0b5bc324c Implement xPortGetFreeHeapSize when using libc memory management 2015-06-16 14:20:52 +10:00
Angus Gratton
49268a33e1 Link against newlib from esp-open-sdk's libcirom, replace FreeRTOS heap management.
Compiles and runs, expects xtensa lock.c patch in newlib (will still run
otherwise but malloc/free and other functions will be non-memory-safe...)
2015-06-16 14:20:24 +10:00
Angus Gratton
822533fd92 Interrupt support refactor
Write inline versions for SDK-based interrupt convenience functions.
2015-06-08 18:20:29 +10:00
Angus Gratton
0dbb6d31a5 Add IRAM attribute for IRAM loaded symbols, add to common FreeRTOS functions
Closes #7.

It'd be nice to change the linker script so .text is always linked to
IROM instead of needing to objcopy each compiled file. The sticking
point for this is libgcc & libhal, which have symbols in .text that need
to be loaded to IRAM.
2015-06-08 18:19:59 +10:00
Angus Gratton
2c46be9825 Basic support for GPIOs 0-15.
Start new 'core' component for low-level parts

Progress towards #8
2015-06-08 12:09:34 +10:00
Angus Gratton
81afe58334 Change symbol extraction to use objdump not nm
nm outputs warnings to stderr so hard to clean output.

Also now picks up global variables, like NMIIrqOn.
2015-06-02 17:57:33 +10:00
Angus Gratton
c126fa6430 Add README, 'make help', header comments, Copyright notices 2015-06-02 17:12:20 +10:00
Angus Gratton
3fcec6106f Swap binary axTLS libssl for direct compiled version 2015-06-02 17:12:20 +10:00
Angus Gratton
e743d03a78 Preprocess all binary SDK symbols to add an sdk_ prefix
* This fixes the problem of axTLS symbols hmac_md5/hmac_sha1 having same
  name as symbols in libwpa (which have incompatible signatures)

* Also allows for easier identification and piece-by-piece removal of
  binary functions.

* Some libc symbols are not renamed, list is in lib/symbols_norename.txt
2015-06-02 15:08:35 +10:00
Angus Gratton
b8576dd554 Fix errno 2015-06-02 15:08:35 +10:00
Angus Gratton
dc4ca6861f Remove udhcp (DHCP server support) as it's a GPL violation :( 2015-06-02 15:08:35 +10:00
Angus Gratton
8e174aa518 Comment vPortEnterCritical/vPortExitCritical functions 2015-06-02 15:08:35 +10:00
Angus Gratton
806962d5c7 Replace lwip SDK blob with lwip 1.4.1 upstream source
Compiles but won't work yet
2015-06-02 15:08:26 +10:00
Angus Gratton
1e15cc266f Comment some parts of portmacro.h 2015-05-07 14:23:24 +10:00
Angus Gratton
c636adf42c Clean up portmacro.h 2015-05-07 14:23:24 +10:00
Angus Gratton
3a5b46a09a Xtensa interrupt management function prototypes 2015-05-07 14:23:24 +10:00
Angus Gratton
6369b4cefa Clean up rest of port.c function 2015-05-07 14:23:24 +10:00
Angus Gratton
ee95fde5ec Change PendSV function signature to use enum 2015-05-07 14:23:24 +10:00
Angus Gratton
c3c531240e Remove pending sv posted flag, double-setting int bit doesn't matter 2015-05-07 14:23:24 +10:00
Angus Gratton
e95a93bdd9 Clean up PendSV/SV ISR 2015-05-07 14:23:24 +10:00
Angus Gratton
ddd88dbe59 Misc port.c cleanup, remove now-unused PortxxxInt_NoNest, comment misc bits of blob interface 2015-05-07 14:23:24 +10:00
Angus Gratton
de4855b86c First half of moving custom synchronisation primitive API to standard FreeRTOS 2015-05-07 14:23:24 +10:00
Angus Gratton
b3c674d89d Swap memory management to FreeRTOS-style, fixed heap size 2015-05-07 14:23:24 +10:00
Angus Gratton
1ffbc303ff Working variant of esp_iot_rtos_sdk (files from commit ec75c85f9ef53) 2015-05-07 14:22:25 +10:00