Commit Graph

279 Commits

Author SHA1 Message Date
Liam Fraser
33818dd0bd
Increase PLL min VCO from 400MHz to 750MHz for improved stability across operating conditions (#869)
Co-authored-by: graham sanderson <graham.sanderson@raspberrypi.com>
2022-06-20 10:28:03 -05:00
Graham Sanderson
9644399993
Suppress new GCC 12 warning (#842) 2022-06-20 09:52:25 -05:00
Graham Sanderson
b3c56e7169
Add stderr support and remove 1us timeout for timeouts of 0us (#858) 2022-06-20 09:52:06 -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
Earle F. Philhower, III
705b5cedcd
Wrap realloc() call with malloc_mutex in multicore (#864)
Protect against heap corruption by mutex-protecting the realloc() call
(like malloc/free are already).

Fixes #863
Fixes https://github.com/maxgerhardt/platform-raspberrypi/issues/7
Fixes https://github.com/earlephilhower/arduino-pico/issues/614
2022-06-17 09:50:53 -05:00
Luke Wren
bdd9746635
Don't copy .data for NO_FLASH binaries, as it's loaded in-place (#859) 2022-06-17 09:50:12 -05:00
Graham Sanderson
ef47dfeeaf
Add new GPIO APIs for adding shared GPIO handlers, and improve docs (#850)
Co-authored-by: Adam Nielsen <malvineous@shikadi.net>
2022-06-08 13:03:11 -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
f3c446ae14
move get_core_num() into platform.h (#852) 2022-06-06 08:20:00 -05:00
Andrew Scheller
7880405292
Doxygen typo (#835) 2022-05-17 19:26:00 -05:00
Andrew Scheller
530204ec0c
Small tweak to busy_wait_at_least_cycles doxygen (#834) 2022-05-17 19:24:52 -05:00
Graham Sanderson
b2ad632c24
Minor additions to PIO documentation (#831) 2022-05-17 13:04:38 -05:00
Graham Sanderson
658a21b946
Update rtc_set_datetime docs to point out that the written value may not be immediately visible (#832) 2022-05-17 12:59:00 -05:00
Graham Sanderson
e44d2c0010
Add busy_wait_at_least_cycles method (#830) 2022-05-16 16:45:39 -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
5e22c09660
convert unlikely panic to hard_assert to not waste space for string (#826) 2022-05-15 15:01:44 -05:00
Graham Sanderson
4e62c26a2c
Add documentation to dma_channel_abort regarding errata RP2040-E13 (#816)
Co-authored-by: Luke Wren <wren6991@gmail.com>
2022-05-11 19:24:42 -05:00
Graham Sanderson
5a927792ef
Suppress false GCC 11 warning on TinyUSB (#819) 2022-05-11 14:49:57 -05:00
Graham Sanderson
60a6fea534
Fix list management in stdio_set_driver_enabled so drivers can be freely added and removed (#822) 2022-05-11 10:44:41 -05:00
eskimo-software
f260477802
Adapt assembler syntax to eliminate Clang errors. (LLVM 14.0.0) (#798)
Co-authored-by: jeremyd <>
2022-05-09 15:11:59 -05:00
Graham Sanderson
e1c5fd34e4
PLL setup check bug (#796) (#806) 2022-05-09 14:52:38 -05:00
Graham Sanderson
259da19660
Include structs/iobank0.h from hardware/gpio.h (#733) (#807) 2022-05-04 16:34:11 -05:00
Andrew Scheller
510ca47c92
Additional PWM validation and small tidy-up (#801)
See #768 for discussion / inspiration
2022-05-04 15:29:26 -05:00
Andrew Scheller
3c450011da
Additional param-validation for PIO (#805)
The RP2040 datasheet says "If INT is 0, FRAC must also be 0."
2022-05-04 15:25:43 -05:00
ZodiusInfuser
01290c4cb3
Added int_frac function for configuring PWM (#768) 2022-05-03 11:54:46 -05:00
Andrew Scheller
8d43364cfb
Small typos (#776) 2022-05-03 11:47:48 -05:00
bruelltuete
76c1830aeb
Add gpio_deinit (#793) 2022-05-03 11:46:27 -05:00
Andrew Scheller
c66a2c1c3b
Remove implicit grouping for PIO defines (#779) 2022-05-03 11:46:10 -05:00
Andrew Scheller
fc86203f49
comment typo (#794) 2022-05-03 11:41:10 -05:00
Andrew Scheller
6619a2d329
Typo (#799)
Remove superfluous apostrophes in Doxygen comments
2022-05-03 11:34:46 -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
Andrew Scheller
17d53af105
Allow 252-byte binaries to be checksummed (#764)
Fixes #740
2022-04-04 15:46:34 -05:00
Doug Rabson
1896b1491b
fix __ctzdi2 for values with non-zero low 32 bits (fixes #765) (#766) 2022-04-04 15:45:01 -05:00
Stefan Kerkmann
bc3484e793
Mark __aeabi_lmul section as allocatable and executable (#722)
When using a linker script which does not provide a .time_critical.
section that is marked "ax" and wrongly define
PICO_INT64_OPS_IN_RAM=1 this would generate a malformed
executable with strange runtime bugs in the worst case.
2022-03-22 17:51:24 -05:00
Akiyuki Okayasu
ae7ef546a6
Fix typo in Doxygen comment (#731) 2022-02-14 12:03:47 -06:00
bobsayshilol
25a3b36793
Fix assert in adc_set_round_robin() (#698)
The mask passed in shouldn't already be shifted by ADC_CS_RROBIN_LSB
(16) otherwise the shift in the call to hw_write_masked() would shift
all of the bits off the end of the mask, hence we should be asserting
not against ADC_CS_RROBIN_BITS (0x1f0000) but against the number of ADC
channels available.
2022-01-19 09:34:18 -06:00
Andrew Scheller
5bcf4ed83a
Clarify header-comments about pico_enable_stdio_ CMake-functions (#705) 2022-01-19 09:30:21 -06:00
Jonathan Reichelt Gjertsen
91462e430a
Add __attribute__((noreturn)) to _exit (#707)
Fixes the following compiler warning

```
.../vendor/pico-sdk/src/rp2_common/pico_runtime/runtime.c: In function 'panic':
.../pico-sdk/src/rp2_common/pico_runtime/runtime.c:284:1: warning: 'noreturn' function does return
  284 | }
      | ^
```
2022-01-19 09:25:40 -06:00
Graham Sanderson
0562089fab
fixup __forceinline for cpp code and add kitchen_sink cpp test (#670)
* fix __force_inline for different GCC versions in cpp mode (the affected versions are different from c mode), and build kitchsink.c as a cpp file too for testing
* silly bug in host platform.h
2021-12-08 12:05:49 -06:00
Maarten Vanraes
a8fa19a74d
pio_set_irqn_source_mask_enabled() sets wrong irq (#655)
if irq_index == 0, irq_index evaluates to false; which uses pio_set_irq1_source_mask_enabled() ; and vice versa
2021-11-12 07:51:29 -06:00
Graham Sanderson
da476610e2
allow override of XOSC_MHZ (#644)
* And increased assertion limit to 50 as 15 was the limit for the oscillator but not for XIN
2021-11-01 08:11:21 -05:00
Andrew Scheller
d0c7642369
Update ADC ENOB comment to match (measured) value in RP2040 datasheet (#643) 2021-10-30 08:29:58 -05:00
Andrew Scheller
da7c39bc23
Fix some of the (simpler) errors reported by the doxygen command (#617) 2021-10-26 16:09:06 -05:00
Graham Sanderson
b04a09110f
revert additional assertion check which breaks used of hw_alias macro outside of functions (#635)
* revert additional assertion check which breaks used of hw_alias macros outside of functions
2021-10-26 16:07:21 -05:00
Graham Sanderson
5641cd0a4a
__aeabi_memset* were switching the wrong arguments (#634) 2021-10-26 13:47:46 -05:00
Graham Sanderson
e5110dfce1
add docs for pio_instructions.h (#624)
Co-authored-by: Andrew Scheller <andrew.scheller@raspberrypi.com>
2021-10-26 13:45:32 -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
723dfd04ff
add more/better documentation to pico/multicore (#620) 2021-10-25 12:23:41 -05:00
Graham Sanderson
0ccd0db163
Update to TinyUSB 0.12.0 (#622)
Update kitchent_sink compilation test to include TinyUSB to catch warnings
Fix warnings in stdio_usb and stdio_semihosting caught by above
2021-10-25 08:33:42 -05:00
Graham Sanderson
3c72e753b6
Split recursive mutex into their own functions (was Reduce performance hit of recursive mutex) (#495)
mutex_t and mutex_ are reverted to non recursive versions (pre SDK1.2.0) and new recursive_mutex_t and recursive_mutex_ functions have been added

PICO_MUTEX_ENABLE_SDK120_COMPATIBILITY flag has been added to allow old SDK1.2.0 compatibility (i.e. mutex_t can be used recursively or not) but this is slower (and is will be removed in a future version)
2021-10-20 18:27:59 -05:00
Graham Sanderson
9320d192c3
add watchdog_enable_caused_reboot (minor compatibility issue) (#594)
add watchdog_enable_caused_reboot. Note there is a small backwards incompatibility in so far as watchdog_enable sets scratch[4] to a magic value not 0 now, however this behavior was not documented before.
2021-10-20 17:30:24 -05:00
Robert Pafford
3c94bc8137
Change _watchdog_enable to trigger immediate reboot when no delay set (#561) 2021-10-14 11:30:16 -05:00
Graham Sanderson
f808b5f2dc
Add DREQ methods for PWM/SPI/UART/I2C (#603) 2021-10-12 16:04:16 -05:00
Graham Sanderson
2f2e62968d
Use auto-generated hardware/structs/ headers (based off SVD) SVD errors fixed. 2021-10-12 09:15:19 -05:00
Graham Sanderson
ec4036181f
tweak info message for TinyUSB support (#590) 2021-10-12 09:09:09 -05:00
Graham Sanderson
a0d4bdf731
fix pico_set_printf_implementation(TARGET compiler) (#593) 2021-10-12 09:08:15 -05:00
Graham Sanderson
d50e743e0e
make type punning of floating point/int in float_math and double_math use union to avoid warnings (#600) 2021-10-12 09:07:36 -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
e76d5a9008
add dma_timer related methods (#604) 2021-10-12 09:04:59 -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
Graham Sanderson
0fa58ed219
Adding/propage macros/signature typedefs for ROM functions. Make rom_func_lookup non-flash safe for flash functions (#586)
* add typedef signatures and ROM code defines for bootrom functions. Propogate uses thru SDK code. Add _inline version of rom_func_lookup
2021-10-08 09:02:19 -05:00
Graham Sanderson
13be546dc3
pico_stdio improvements (#598)
* add stdio_usb_connected() method
* add PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS to allow waiting for CDC connection during init(* 
* add puts_raw and putchar_raw to skip any CR/LF translation
2021-10-08 09:01:30 -05:00
Graham Sanderson
9319ab11d9
Add xip window alias macros (#566) (#585) 2021-10-07 08:18:02 -05:00
Graham Sanderson
62854f5eff
shrink max-page-size for linker to more sensible 4096 by default (#587) 2021-10-07 08:17:32 -05:00
Graham Sanderson
13ed99df0d
split out usb_reset_interface header into its own library for consumption by picotool or others (#589) 2021-10-07 08:17:13 -05:00
Matias Silva
3c53029c24
Fix some typos (#517) 2021-10-04 13:29:22 -05:00
Brian Starkey
a119b5bd9f
Fix semihosting_putc (#530)
Per the Arm semihosting protocol documentation[1], the SYS_WRITEC command
expects *a pointer to* the character to be printed in r1, not the
character itself.

[1] https://developer.arm.com/documentation/dui0471/g/Semihosting/SYS-WRITEC--0x03-?lang=en
2021-10-04 13:24:50 -05:00
Andrew Scheller
f63a14e9ee
Change PWM_CH1_DIV_INT_LSB to PWM_CH0_DIV_INT_LSB (#560)
For consistency with all the other PWM_...._LSB constants
2021-10-04 13:21:55 -05:00
Brian Starkey
46d8597d35
Add hardware_divider to pico_divider dependencies (#571)
Fixes build when pico_stdlib isn't included in the target libraries:
  pico-sdk/src/rp2_common/pico_divider/divider.S:8:10: fatal error: hardware/divider_helper.S: No such file or directory

Also fixes the same error in pico_double, though I'm not sure how/why:
  pico-sdk/src/rp2_common/pico_double/double_aeabi.S:9:10: fatal error: hardware/divider_helper.S: No such file or directory
2021-10-04 13:09:43 -05:00
Mahyar Koshkouei
d7feac1495
Fix syntax error in cmake when using custom stage2 (#580)
Signed-off-by: Mahyar Koshkouei <mk@deltabeard.com>
2021-10-04 13:09:23 -05:00
dp111
c08136b696
Move ret_dzero to the same section as it get used (#513) 2021-08-11 09:24:23 -05:00
Luke Wren
2622e9bc29 Enable UART RX timeout IRQ, as well as RX IRQ, so that individual characters can be received. 2021-07-22 14:46:29 +01:00
Luke Wren
9a586371db
Add doxygen clarifying PWM behaviour when enabled/disabled, and advice for controlling the pin state when disabled (#521) 2021-07-19 10:21:12 -05:00
Matias Silva
7e90980118
Add explanatory note on 7-bit I2C addresses (#520) 2021-07-19 12:02:19 +01:00
Matias Silva
ae6e574f53
Improve wording of comments in irq.h (#509) 2021-07-15 09:32:45 +01:00
Graham Sanderson
35b4965054
make sure PICO_DEFAULT_BOOT_STAGE2_FILE is defined in parent CMake file (#491) 2021-07-06 16:56:17 +01:00
graham sanderson
e02c6b327d Allow one of float/double to have 'none' impl but not the other - previously caused a link error 2021-07-06 16:24:46 +01:00
graham sanderson
f4ab723eb5 compile failure with PICO_STDOUT_MUTEX=0 2021-07-06 16:06:52 +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
Luke Wren
edcb65c916
Enable I2C FIFO full hold in slave mode (stretch clock when RX full), fixes #456 (#494) 2021-06-29 11:55:01 -05:00
Andrew Scheller
f16ccfa1ff Small comment typos 2021-06-29 10:57:21 +01:00
graham sanderson
44feae4caf set DIVISOR for each use of h/w divider 2021-06-29 10:55:14 +01:00
Zapta
61b7cbdc54
Using ' inline __always_inline' also for GNUC 7. (#484)
Per the discussion at https://www.raspberrypi.org/forums/viewtopic.php?f=145&t=313961
2021-06-28 16:07:48 -05:00
graham sanderson
979045dc12 removed CMSIS from SDK doxygen 2021-06-03 16:46:19 -05:00
Brian Cooke
d42e6a9d10
include pico.h so that uint is defined (#475) 2021-06-03 15:22:28 -05:00
graham sanderson
fdf695b8d8 remove incorrect default from PICO_PANIC_FUNCTION PICO_CONFIG entry 2021-06-03 10:42:31 -05:00
Luke Wren
bba0420c76
Add gpio_set_irqover to match inover/outover/oeover (fixes #265) (#470) 2021-06-03 08:37:06 -05:00
Graham Sanderson
5afa3636d6
Small API additions and minor fixes (#406)
* Add missing DREQ_s

* store actual clock frequency in clock_configure (fixes #368)

* use dma DREQ values defined in dreqs/dma.h

* Fix hw_is_claimed, and add xxx_is_claimed APIs

* Add some PIO irq helper methods

* Add DMA channel IRQ status getter and clear methods

* Implement the correct PIO IRQ status/clear methods (good to have methods here as the h/w interrupt registers are super confusing)

* fix pico_multicore dependencies

* add missing wrapper func __aeabi_f2d

* Further DMA/PIO IRQ API cleanup (and review fixes)

* add PICO_INT64_OPS_IN_RAM flag
2021-06-02 13:12:27 -05:00
Graham Sanderson
91e9327ff1
Add PICO_PANIC_FUNCTION define to allow replacement of the default panic function (#463) 2021-06-02 13:04:38 -05:00
Graham Sanderson
561502c2da
Move to Tinyusb 0.10.0 (still with RP patches) (#462)
Most build related items have moved into <tinyusb>/hw/bsp/rp2040/family.cmake which is now the source of truth

force merging as same code save submodule was already reviewed
2021-06-02 13:04:08 -05:00
graham sanderson
496ff66d19 Make PICO_CONFIG descriptions unique 2021-06-02 16:14:11 +01:00
graham sanderson
66c54d807b fix PICO_CONFIG entry 2021-06-02 16:14:11 +01:00
graham sanderson
27c1a89b3d review fixes 2021-06-02 16:14:11 +01:00
graham sanderson
895bad790e Add some spin lock related doxygen 2021-06-02 16:14:11 +01:00
Luke Wren
30041d8513
Add hardware_gpio accessors for Schmitt, slew rate, drive strength (fixes #290) (#464) 2021-06-01 14:25:11 -05:00
Dan Halbert
d026118499
Allow lengthening xosc startup delay with a compile option (#457) 2021-06-01 14:24:40 -05:00
Rene
42cbdcb13a
added spi_get_baudrate() + some consistency changes (#395)
* added spi_get_baudrate()
2021-06-01 11:12:15 -05:00
geurtv
1996a21e3a
dma_channel_transfer_[from/to]_buffer_now: added const volatile to read_addr and volatile to write_addr (#449) 2021-05-27 12:12:39 -05:00