Commit Graph

28 Commits

Author SHA1 Message Date
Graham Sanderson
a540ca905a
Add new async_context abstraction and refactor cyw43_arch to use it (#1177)
* Extract all poll/threadsafe_background/freertos from cyw43_arch into new abstraction async_context:
* provides support for asynchronous events (timers/IRQ notifications) to be handled in a safe context.
* now guarantees all callbacks happen on a single core.
* is reusable by multiple different libraries (stdio_usb can now be ported to this but hasn't been yet).
* supports multiple independent instances (independent instances will not block each other).
* cyw43_arch libraries cleaned up to use the new abstraction. Note each distinct cyw43_arch type is now a very thin layer that creates the right type of context and adds cyw43_driver and lwip support as appropriate.

Additionally,

* Add new pico_time and hardware_alarm APIs
* Add from_us_since_boot()
* Add alarm_pool_create_with_unused_hardware_alarm()
* Add alarm_pool_add_alarm_at_force_in_context()
* Add hardware_alarm_claim_unused()
* Add hardware_alarm_force_irq()
* Added panic_compact() and some minor comment cleanup; moved FIRST_USER_IRQ define to platform_defs.h
2023-01-24 12:01:24 -06:00
Graham Sanderson
a66ba7a942
user_irqs should be claimed globally not per core, since vector tabes are shared (#1183) 2023-01-24 08:58:01 -06:00
Andrew Scheller
13a171a971
Small doxygen fixes (#1092) 2023-01-19 16:38:14 -06:00
Graham Sanderson
88bc4f974c
cleanup header guard names to be consistent (#1179) 2023-01-18 08:40:10 -06:00
Graham Sanderson
00780f0de9
Make sure stack is 8 byte aligned in shared IRQ handlers (#971) 2022-08-17 10:25:23 -05:00
Graham Sanderson
7858601a58
stdio_usb improvements (#871)
Use shared IRQ if available to avoid 1ms timer. Allow use of stdio_usb with user's tinyusb setup if it has CDC
2022-06-20 09:51:51 -05:00
Graham Sanderson
d3dcbb8292
Add new user_irq claim APIs to make it easier for independent code using them to interoperate (#854) 2022-06-07 14:27:38 -05:00
Graham Sanderson
159d552150
Fix bug in irq_remove_shared_handler and add test #823 (#825)
* Fix bug in irq_remove_shared_handler and add test #823

* Add comments to irq_handler_chain.S

Co-authored-by: Luke Wren <wren6991@gmail.com>
2022-05-16 13:44:15 -05:00
Andrew Scheller
3a3d5fe6c4
Small IRQ doxygen tweaks (#824) 2022-05-15 15:02:13 -05:00
Graham Sanderson
5a427fbf1f
irq_add_shared_handler assertion fix #724 (#747) 2022-04-29 14:34:20 -05:00
Graham Sanderson
541f93541c
improve comment (#658) 2022-04-04 16:08:12 -05:00
Graham Sanderson
e850214938
Platform updates (#611)
* Platform updates
 - Add PICO_RP2040=1 to rp2040 builds
 - Add new PICO_RP2040_B0/1/2_SUPPORTED macros and retailer chip specific code to use
 - Add doxygen to platform.h
 - Make pico.h includable from assembly (because header order is important and tricky) - split out platform_asm.h
 - Switch to using PICO_RP2040_B0_SUPPORTED in board headers
2021-10-25 12:26:06 -05:00
Graham Sanderson
30673fb6d0
move inline assembly constant out into C code so it doesn't get out of range in a large function (#602) 2021-10-12 09:07:06 -05:00
Graham Sanderson
9f1c37318b
add irq_get_priority method - improve efficiency of irq_init_priorities (#609) 2021-10-12 09:04:04 -05:00
Matias Silva
3c53029c24
Fix some typos (#517) 2021-10-04 13:29:22 -05:00
Matias Silva
ae6e574f53
Improve wording of comments in irq.h (#509) 2021-07-15 09:32:45 +01:00
Graham Sanderson
cefe5c5b2a
Better support for PICO_DISABLE_SHARED_IRQ_HANDLERS (#496)
* use PICO_DISABLE_SHARED_IRQ_HANDLERS exclusively as config for no shared handler support (rather than also PICO_MAX_SHARED_IRQ_HANDLERS == 0)
additionally make irq_add_shared_irq_handler() call irq_set_exclusive_handler() so that single usage of an IRQ still works

* Comment typo

Co-authored-by: Luke Wren <wren6991@gmail.com>
2021-06-29 11:55:35 -05:00
Andrew Scheller
f16ccfa1ff Small comment typos 2021-06-29 10:57:21 +01:00
Andrew Scheller
114dc5a80d
Fixup IRQ_PRIORITY #define values (#393)
Related to #245
2021-05-10 08:46:53 -05:00
Graham Sanderson
53f1915a6b
Add hardware_exception for setting exception handlers at runtime (#380) 2021-05-05 11:45:39 -05:00
Luke Wren
6c1150f3f4
Fix back-to-front description of IRQ priority in doxygen (#245) 2021-03-13 18:08:04 -06:00
Andrew Scheller
fc17f880fd Lots of Doxygen tweaks and fixes (#212)
* Add documentation for gpio_irq_callback_t and rtc_callback_t (fixes #175)
 * Hook up pico_binary_info and pico_bootsel_via_double_reset to the Doxygen index
 * Add link to new Raspberry Pi Pico FAQ
 * Consistently add parentheses for \sa or \see links to function-names
 * Use consistent capitalisation for 'GitHub'
 * Small typos and markup errors
2021-03-04 21:22:48 -06:00
graham sanderson
aca685ceae panic in debug mode if sleep methods are called in an exception handler (unless PICO_ALLOW_SLEEP_IN_EXCEPTION is set) 2021-03-04 21:22:48 -06:00
graham sanderson
debef7471e Change _U to _u as _U exists in ctype.h 2021-03-04 21:22:48 -06:00
graham sanderson
503bc8b385 Fixup another level of compiler warnings, add _U() definition 2021-03-04 21:22:48 -06:00
Graham Sanderson
6f94f6a3d7 Add -Wuninitialized -Wunused -Wcast-align to warnings checked by kitchen_sink (and fixup warnings) (#125) 2021-03-04 21:22:48 -06:00
Brian Swetland
a362925eda Clean up various C source and headers to appease -Wstrict-prototypes
In C, func() is a function taking an unspecified number of arguments,
vs func(void) a function taking no arguments. In C++ both forms indicate
"no arguments."

Update these headers to use the (void) form, which is correct in both
languages and avoids complaints when -Wstrict-prototypes is specified.
2021-03-04 21:22:47 -06:00
graham sanderson
26653ea81e Initial Release 2021-01-20 10:44:27 -06:00