Commit Graph

643 Commits

Author SHA1 Message Date
andygpz11
b70f984f2a
Add pico_rand library (#1111)
Add a general purpose random number generator via pico_rand library. which tries to use as much real entropy as possible mixed into a PRNG

Co-authored-by: graham sanderson <graham.sanderson@raspberrypi.com>
2023-01-26 13:25:27 -06:00
Peter Harper
67af83f069
Fix compile issue with clock_t conversion (#1200)
We don't enable -Wconversion on the kitchen-sink build. But it's
enabled for some tinyusb examples.
2023-01-26 13:11:42 -06:00
Peter Harper
b979395c5e
Keep retrying if cyw43_wifi_join fails (#1195)
Currently, if the network can't be found we fail almost immediately.
Also fix error codes.

Fixes #1054
2023-01-26 11:28:04 -06:00
Graham Sanderson
78d7a2522f
elf2uf2: Use LMA (instead of VMA) of entry_point to determine whether binary is flash/RAM (#1187) 2023-01-26 10:04:48 -06:00
P33M
260df95e44
tinyusb: enable workaround for RP2040-E15 (#1137)
This sets the compile-time flag for tinyusb's dcd_rp2040 driver by
default. Applications that won't ever be plugged into a Pi 4 or Pi 400
can optionally disable this.
2023-01-25 17:19:23 -06:00
Graham Sanderson
b8bd8ac702
update multi-gcc action to be on push to develop or main (#1197)
* make multi-gcc workflow on-demand only

* actually run multi-gcc after merge

* update yml generator for Multi GCC too
2023-01-25 17:14:16 -06:00
Graham Sanderson
60016e2cf2
update multi-gcc workflow (#1194)
* make multi-gcc workflow on-demand only
* actually run multi-gcc after merge into develop/master
2023-01-25 11:55:57 -06:00
Graham Sanderson
9a5eae111b
fix compiler warning (#1193) 2023-01-25 11:41:45 -06:00
Liam Fraser
0cfeec253a
CI Improvements. Add multi-gcc workflow that tests each ARM GCC available (#1192) 2023-01-25 10:48:35 -06:00
Graham Sanderson
248fc72f96
Remove (legacy) direct inclusion of 'pico/platform.h' and 'pico/config.h' (#1190)
* Remove (legacy) direct inclusion of 'pico/platform.h' which potentially skip config/board setup
* also fix direct use of pico/config.h which predated pico.h being assembly includable
2023-01-24 12:03:48 -06:00
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
Liam Fraser
c578422528
Remove PLL postdiv assert. Fixes #1047 (#1189) 2023-01-24 09:10:05 -06:00
Graham Sanderson
177b0303dd
SYS funcs and GCC12 fixes (#1186)
* SYS functions and GCC 12 fixes

* Add implementation of _gettimeofday and settimeofday, _times
* Remove some GCC warnings about unimplemented SYS functions (e.g. _open) by making weak implementations that return errors.
* Removed _exit from crt0.S since we have a weak version in runtime.c and we don't want two weak impls since the linker can't pick. If the user omits runtime.c then they'll need to provide _exit or get the error
* Add sys/time.h to arch/cc.h for lwIP as it seems under GCC12 this is not getting included
2023-01-24 09:00:26 -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
Graham Sanderson
8b8778c59b
compile issue seems to have snuck thru (#1184) 2023-01-20 16:47:23 -06:00
Howard Su
aaf0828250
change clock_gpio_init to take float and add clock_gpio_init_int_frac (#1178) 2023-01-20 15:45:18 -06:00
Peter Harper
021a1b6bad
Update cyw43-driver (#1181)
Update to the latest version. Matching Micropython.
2023-01-20 09:11:18 -06:00
andygpz11
2e45d8ec65
Update source code to use the correct bit - fixes #993 (#1180) 2023-01-20 09:10:01 -06:00
Mr. Green's Workshop
885bd922cf
Ability to set USB device as self powered device (#1105) 2023-01-19 16:49:00 -06:00
Andrew Scheller
05c3f22879
Update documentation-links (remove FAQ and add the two Pico W books) (#1123) 2023-01-19 16:47:21 -06:00
Andrew Scheller
4215d4a793
Latest updates to the autogenerated headers (#1122) 2023-01-19 16:41:34 -06:00
DipSwitch
35787255af
Avoid generating garbage input due to initialization (#1125)
First mapping the GPIO pins to the UART peripheral before enabling the UART peripheral avoids generation of garbage character on the UART's input.
2023-01-19 16:39:19 -06:00
Andrew Scheller
13a171a971
Small doxygen fixes (#1092) 2023-01-19 16:38:14 -06:00
KafCoppelia
73dcbec837
Improved code format (#1146) 2023-01-19 16:24:26 -06:00
Graham Sanderson
88bc4f974c
cleanup header guard names to be consistent (#1179) 2023-01-18 08:40:10 -06:00
Jay Greco
99ee33ad25
Add nullbits Bit-C PRO (#1149) 2023-01-18 07:20:37 -06:00
Peter Harper
419eb739c2
Disable linker warning (#1114)
In arm-gnu-toolchain-12.2 we see this warning, that's not relevant to
pico. Disable it.

warning: blink.elf has a LOAD segment with RWX permissions

Fixes #1029
2023-01-17 16:46:02 -06:00
ryanjsims
488bd66eb3
Fix conflicting C++ linkage for pico_lwip panic() (#1167) 2023-01-09 09:49:25 -06:00
Graham Sanderson
605e21ae6f
pairing heap free link list gets orphaned when fully depleted (#1120) (#1121)
add some more asserts, and fix test case for debug which was broken by all the assserts slowing it down
2022-12-08 11:14:53 -06:00
Peter Harper
0b52603667
Fix build issues with spaces and parentheses (#1136)
Add VERBATIM to add_custom_command

Fixes #1043
2022-12-06 18:45:57 -05:00
Stargirl Flowers
56594e75af
Allow changing the USB VID, PID, manufacturer, and product via CMake (#1130) 2022-12-03 05:39:01 +00:00
David Greaves
616e120558
Add information on targetting the Pico W. Fixes #895 (#896)
* Add information on targetting the Pico W

Based on comments in https://github.com/raspberrypi/pico-sdk/issues/895 which pointed here:
https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf

I didn't add the pdf link as there are no links to other pdfs.

* Rewording

* stray comma

Co-authored-by: Graham Sanderson <graham.sanderson@gmail.com>
2022-11-30 13:08:04 -06:00
Radoslav Gerganov
0ef07e5215
Fix the description of stdio_flush() (#1095)
Closes #1094
2022-11-24 09:05:00 -06:00
envirocoder
887c0b8443
IRQ on CYW43_PIN_WL_HOST_WAKE not gpio13 (#1069)
fix bug #1068 where the raw irq handler that was added masked on IO_IRQ_BANK0 (defined as 13) and not the gpio connected to the CYW43 i.e.  CYW43_PIN_WL_HOST_WAKE

Co-authored-by: andrew arm <armdev@openlx.org.uk>
2022-11-24 08:42:25 -06:00
Peter Harper
6cc9394c5c
Update cyw43-driver to latest version (#1115)
Fixes #900
2022-11-24 08:40:29 -06:00
Nicolas Pouillon
586850e66f
binary_info/structure.h: Fix pins_with_func format comment (#1070) 2022-11-22 18:26:16 -06:00
andygpz11
5258ee640b
Add new DMA sniffer's API (#887) 2022-11-02 09:25:27 -05:00
Lord-Lucan
e4da37cf0c
Fix for cyw43 driver working with SMs other than 0 (#1080) 2022-10-27 16:06:33 -05:00
Daniel Treffenstädt
a88baafc16
Implemented ARCHIVE_OUTPUT_DIRECTORY for uf2 output in CMake. Fixes #1012 (#1036)
* Added ARCHIVE_OUTPUT_DIRECTORY to uf2 output in CMake

This Commit enables the use of the ARCHIVE_OUTPUT_DIRECTORY target
properties in CMake for the generation of uf2 files.

The changeset in lines 47..51 is necessary due to CMake not
automatically creating the ARCHIVE_OUTPUT_DIRECTORY if no archive target
is present.

* rework cmake changes to make it friendler for non absolute paths

Co-authored-by: Graham Sanderson <graham.sanderson@raspberrypi.com>
2022-10-21 09:01:55 -05:00
Engineer_Will
6d15974e96
Add some definition files for waveshare board. (#984)
* src/boards/include: Change the default I2C interface of RP2040_lcd_0.96.

* src/boards/include: Add some definition files for waveshare board.
2022-10-21 09:01:10 -05:00
Timo Kokkonen
e50e107d91
Fix unexpected (CMake) behavior with PICO_BOARD variable. (#1050)
* Fix unexpected (CMake) behaviour with PICO_BOARD variable.

Changing PICO_BOARD value from "pico_w" to "pico" did not
unset PICO_CYW43_SUPPORTED variable. Which could lead
CYW43 driver included in builds for "pico".

solution: make PICO_CYW43_SUPPORTED a non cache variable

Co-authored-by: Graham Sanderson <graham.sanderson@raspberrypi.com>
2022-10-21 08:59:02 -05:00
James Peach
16ab2b21ba
Remove incorrect override for LWIP_PLATFORM_ASSERT (#1064)
* Remove incorrect override for LWIP_PLATFORM_ASSERT

LWIP_PLATFORM_ASSERT macro is used by lwip driver implementations to specify the behavior of the assertions in lwip code.

The previous override of this macro incorrectly assumed that the parameter to the function macro was the condition to check. However this is incorrect. The parameter is actually a message string defining what failed. 

This mistake caused all assertions to be ignored. ( and myself to loose many hours of debugging time )

By removing this, we restore the default behavior specified by lwip which is to use `printf` to log the message.

* I think i prefer to use panic (which doesn't pull in fflush etc)

Co-authored-by: Graham Sanderson <graham.sanderson@gmail.com>
2022-10-21 08:57:21 -05:00
Graham Sanderson
b0294d6bf4
fix build without mbedtls submodule initialized, and fix deoptimized debug build (#1067) 2022-10-17 11:34:10 -05:00
Peter Pettersson
3bd7a829db
Some optimizations for the hardware divider (#1033)
* Remove unnecessary wait in pico_divider.

There is no need to wait if there is more than 8 cycles between setup and result readout.
Dividend/divisor readout should be correct without delay. Update comment to reflect that.

* Optimize hw_divider_save_state/hw_divider_restore_state.

Doing multiple pushes to avoid stack usage is faster.
The wait loop in hw_divider_save_state had an incorrect branch in the wait loop.
This didn't matter since the wait wasn't necessary to begin with.

* Remove pointless aligns in hardware_divider.

The regular_func_with_section inserts a new section so if aligning
is desired it should be placed in the macro after section start.

* Save a few bytes in hardware_divider.

Signed and unsigned code can use the same exit code.
Branching to the common code is free since we need the 8 cycle
delay anyway.
2022-10-16 17:40:22 -05:00
Pedro Tôrres
2d4e3baa82
Set CMAKE_MAKE_PROGRAM when building ELF2UF2 and PIOASM (#935) 2022-10-16 17:31:58 -05:00
Jonathan Reichelt Gjertsen
587ac803c5
Avoid compound assignment with volatile left operand as described in #1017 (#1018)
also move to use of hw_set_bits where appropriate
2022-10-16 17:24:23 -05:00
Koji KITAYAMA
e22807bc2e
Add a compile option to suppress fopen deprecated warning (#1035) 2022-10-16 17:22:25 -05:00
Koji KITAYAMA
8c6963d7ed
Fix compile errors when building with clang x86_64-pc-windows-msvc (#1038) 2022-10-16 17:22:06 -05:00
Peter Harper
719d5e41a2
Add mbedtls to pico-sdk (#894)
* Add mbedtls as a submodule

Checked out on branch mbedtls-2.28

* Add mbedtls to pico-sdk

Link your code to pico_lwip_mbedtls and pico_mbedtls.
See tls_client example in pico-examples

Fixes https://github.com/raspberrypi/pico-sdk/issues/893
2022-10-16 16:41:21 -05:00
Jan Niehusmann
8e014e6b5d
Make sure OUT_STICKY is not set when setting pins / pindirs (#989) 2022-10-16 16:39:44 -05:00