To make stdio logging quicker it's probably a good idea to set the default
uart speed 921600, but it's only configurable by adding this define to
your project. Make it configurable from the cmake command line.
* Add script to automatically validate board header files
* Fix small automatically-found inconsistencies in various board header files
* Tweak and add board header file from abandoned PR #1174
* Add host Bazel build
Updates target_compatible_with across the repo to ensure that wildcard
builds for both host and rp2040 succeed.
* Get unit tests building
* Add Python script to identify build system differences
Uses the build system tags to make it easier to identify differences
between the CMake and Bazel builds.
* Temporarily disable pico divider test
* Support PICO_BARE_METAL in Bazel
* Support PICO_NO_GC_SECTIONS in Bazel
* Support boot2 configuration in Bazel
Adds support for PICO_DEFAULT_BOOT_STAGE2 and
PICO_DEFAULT_BOOT_STAGE2_FILE in the Bazel build.
* Allowlist some CMake-only options
* Support CXX configuration options in Bazel
* Move multiple_choice_flag.bzl
* Support all pico boards
* Support linking multiple stdio implementations
Changes the Bazel build so stdio implementations are no longer mutually
exclusive.
* Add PICO_BOOT_STAGE2_LINK_IMAGE
* Support PICO_CMSIS_PATH in Bazel
* Support PICO_USE_DEFAULT_MAX_PAGE_SIZE in Bazel
* Silence PICO_CMSIS_VENDOR and PICO_CMSIS_DEVICE differences
* Support PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS in Bazel
* Properly support version defines
* Support embedding binary info in Bazel
* Embed build type in binary
* Support different linker scripts in Bazel build
* Finish out missing PICO_BUILD_DEFINE in Bazel build
* Support PICO_NO_TARGET_NAME
* Reorganize initial configuration options in Bazel
Cleans up and reorganizes some of the initial configuration options
added to the Bazel build so everything is consistent.
* Add builds for pioasm and elf2uf2
* Use Python rules from rules_python
* Actually link in output formats in pioasm tool
* Make tools have public visibility
* Add UF2 Bazel aspect
* Add TODOs for pioasm/uf2 helpers
* Fix compile flag typo
* Update Bazel SDK configuration strings to match recent CMake changes
* Fix pico_divider test
* Clean up straggling TODOs
* Clarify pico_stdio_test compatibility
* Initial Bazel Pico W support
* Add new files from develop
* Clean up compatibility expressions in Bazel build
* Clean up rp2 constraint handling in Bazel
* More Bazel docs cleanup
* Format Bazel build files
* Consolidate transitions in the Pico SDK
* Make every _allowlist_function_transition explicit
* More docs cleanup
* Add a few missing defines
* Improve PICO_CONFIG_HEADER correctness in Bazel
* Minor docs clarifications
with this change we can use PICO_SDK_FETCH_GIT_TAG to specify a release tag for the Pico SDK to download.
example usage:
```
set(PICO_SDK_FETCH_FROM_GIT true)
set(PICO_SDK_FETCH_FROM_GIT_TAG "1.5.1")
include(pico_sdk_import.cmake)
```
* Build boot_stage2 with Bazel
Introduces the initial foundations of a Bazel build, including a
toolchain, critical generated headers, platform patterns, and enough
BUILD files to build boot_stage2.
* Bazel libraries to support picotool
* Move SDK defines to toolchain
* Switch to `archive_override` in MODULE.bazel
Uses archive_override where applicable to allow transitive bzlmod deps
to propagate.
* Multiplatform objcopy selection in Bazel build
Makes an objcopy alias that redirects to the objcopy tool for the
current exec platform, which allows boot_stage2 to build on Linux,
macOS, and Windows.
* Generate Bazel build files
Adds initial set of generated Bazel build files. Note that these do not
yet build, as dependency cycles are present.
* Fix dependency cycles in Bazel build
Fixes many dependency cycles, some were unintentionally created by the
build file generator, others are true dependency cycles that require
manual workarounds.
* Silence warning in pico_stdio Bazel build
Silences a stray warning in the Bazel build.
* Fix wildcard Bazel build
This makes `bazel build //...` succeed, and also prevents the fetching
of toolchains that aren't compatible with the current execution
environment (i.e. Windows computers will no longer try to download macOS
toolchains).
* Get the SDK working
Finishes out the remainder of the work required to successfully compile
a working blinky example.
* Fix UART stdio dependencies in Bazel build
Fixes some dependencies around pico_stdlib so that pico_stdlib links
properly and UART stdio works.
* Add linux support to Bazel build
* Get Bazel deps from registry
Adds external an external registry for resolving Bazel module
dependencies.
* Fix host configuration for picotool
Provides the appropriate defines for host builds to support the picotool
build.
* Remove -ffreestanding from Bazel toolchain
The -ffreestanding toolchain flag is quite strict, so remove it from the
Bazel toolchain.
* Remove unused .bzl file
* Reduce Bazel compiler flags
Cuts out most of the Bazel toolchain flags and only specifies the
bare-minimum set of flags. Also, adds wrapper linker flags for functions
the SDK wraps.
* Get USB serial working
Adds initial TinyUSB support and enough integration to get USB serial
working.
* Remove "Generated build file"
Removes comments that indicates BUILD.bazel files are generated. This
was used during initial bringup to indicate hand-crafted vs
automatically generated BUILD.bazel files.
* Do not build USB libraries unless configured
Prevents USB libraries from being built unless the build is properly
configured to use them.
* Switch to rules_cc toolchains
Moves toolchain configuration to use the new rules in rules_cc.
* Minor cleanup in parse_version.py
Cleans up trailing whitespace and runs the black formatter on
parse_version.py.
* Simplify constraint dimensions in Bazel build
Consolidates the class/chip constraint settings to be a single
constraint_setting with a config_setting that represents the rp2 class.
* Update pin of rules_cc in Bazel build
Includes a necessary fix for the target_compatible_with expression in
the cc_toolchain to work as intended.
* Move toolchains from pico.bzl to BUILD.bazel
Moves toolchain definitions from pico.bzl to BUILD.bazel to make them
easier to find and read.
* Run buildifier on Bazel build files
Fix trivial formatting issues by running buildifier on all BUILD.bazel
files.
* Make objcopy rule
Makes a simple objcopy rule to remove direct references to the ARM
toolchains.
* Fix link flags in Bazel build
Critical flags were not being applied to link steps. This applies -mcpu
and -mthumb to the link steps to make the produced binaries work again.
* Mention missing host build support
* Fix various Bazel library rules
* pico_bit_ops was incomplete.
* pico_double and pico_float were trying to link in the "none"
implementation.
* Extend Bazel build documentation
Improves documentation and comments across the Bazel build.
* Clean up auxilary tools in Bazel build
Switches genrules to use skylib rules to simplify things. Reworks
version header generation to use the Bazel module version rather than
parsing CMake.
* Update boot_stage2 Bazel build file
Moves `includes` to be enumerated on the correct library.
* Add WORKSPACE version fallback
WORKSPACE Bazel projects don't support querying module version, so add a
fallback of '0.0.1-WORKSPACE' so the build can succeed.
* Fix malloc handling in Bazel build
* Fix Bazel dependency cycle in pico_malloc
* Prevent malloc from being linked into boot_stage2
Prevents Bazel from ever trying to link malloc into the boot_stage2
binary.
* Remove custom bootloader platform
A dedicated boot_stage2 platform introduces a lot of complexity that
needs to be more thought-through.
When you get a callback to tell you a character is available, you should
be able to call getchar_timeout_us, but it's not working for USB
Fixes#1603
Co-authored-by: Andrew Gordon <arg@gordondesign.ltd.uk>
* fix feature request #1442
* Do not require -I before each addtional path
* Fix pico_btstack_make_gatt_header warning
gatt header files are always made into the "generated" folder so you get
a warning if you have more than one target generating a gatt header with
the same name.
Also, simplify the expansion of ARGN
* Improve pico_btstack_make_gatt_header description
---------
Co-authored-by: Peter Harper <peter.harper@raspberrypi.com>
It would be helpful to be able to use the lwip httpd server, but it
generates the content using a tool written in C. This is problematic as
it requires a native compiler to build the tools.
Add a python tool to generate the httpd content and a cmake function to
make use of it.
* USB descriptor string length.
Implement a mechanism to set the maximum string length used in
tud_descriptor_string_cb() by defining USBD_DESC_STR_MAX. If
USBD_DESC_STR_MAX is not defined, the behavior remains unchanged and the
previous default value of 20 is used. A compile time error is produced
if USBD_DESC_STR_MAX is higher than 127 since the length of the string
plus header is returned in a single byte as (2 * len + 2). Similarly, a
compile time error is generated if the length is defined as less than 17
in order to ensure that there is enough room for the 16-character serial
number plus header.
* Fix spelling mistake.
Renamed irq_hander_chain_free_slot_head to irq_handler_chain_free_slot_head
(added missing l).
* Add documentation for gpio_add_raw_irq_handler functions.
Added a note that irq_add_shared_handler() is used internally and that
the function will assert if the maximum number of shared handlers would
be exceeded.
The resulting elf binaries contained an unusual section that leads to an error
when objcopy attempts to update a section (e.g. when using the picowota
combined build mechanism).
This seemed to be due to the order of sections, where two RAM-only sections
were split by a RAM/FLASH section. By moving the RAM-only sections together,
this issue disappeared.
* Fixes shadowing of a global declaration
Required for GCC 12.2.1
* Change other function pointers to be _func to be consistent
---------
Co-authored-by: Andre Zeps <andre.zeps@googlemail.com>
Co-authored-by: Graham Sanderson <graham.sanderson@gmail.com>
The fix for the following issue adds some macros to configure default
ip addresses. These are expressed in hex which is a bit non-obvious to
set. So add a macro to convert from a string to the hex representation.
https://github.com/georgerobotics/cyw43-driver/issues/41
If LWIP_IPV6=1 a request to update the multicast list occurs in a
callback in the low priority interrupt.
This makes an ioctl call into the driver, at the end of which is a call
to cyw43_await_background_or_timeout_us (see CYW43_DO_IOCTL_WAIT).
It is attempting to delay until there's "some work to do".
For Freertos this fails an assertion as an attempt is made to acquire a
semaphore in interrupt context.
Fixes#1590
* Add ...3.27 to the cmake_minimum_required, and make minimum 3.13 everywhere
Signed-off-by: Ghorban M. Tavakoly <gmt3141@gmail.com>
Co-authored-by: Graham Sanderson <graham.sanderson@raspberrypi.com>
Some RP2040-Zero boards from WaveShare can only be recognized via USB
after flashing UF2 into it, and if you unplug and replug it, nothing
happens on both USB host and device, RP2040-Zero seems just not booting.
According to @ArkBrj, it seems that setting `PICO_FLASH_SPI_CLKDIV` to
`2` makes the clock chip exceed the spec, setting it to `4` fixes this
bug.
I tested it with the blink program in pico-examples, this does fix the
bug for me.
Fixes <https://github.com/raspberrypi/pico-sdk/issues/1304>.