1
0
mirror of https://github.com/raspberrypi/pico-sdk.git synced 2025-08-09 04:22:44 +03:00

Merge style and grammar updates

* Update mainpage.md

Re-wrote to be in line with style guidance and to be easier to read.

* Changed "adjust" to "refine" (previously "fine-tune").

* Updated first paragraph of the "SDK design" section.

* Minor fixes

* Minor grammatical updates

* Changed "adjust and refine" to "tweak"
This commit is contained in:
Jeunese
2025-07-18 10:27:41 +01:00
committed by GitHub
parent f5e0371ad5
commit 4003a64789

View File

@@ -1,28 +1,28 @@
# Raspberry Pi Pico SDK
The Raspberry Pi Pico SDK (Software Development Kit), henceforth SDK, provides the headers, libraries and build system necessary to write programs for RP-series microcontroller devices such as the Raspberry Pi Pico in C, C++ or assembly language. The SDK is designed to provide an API (Application Programming Interface) and programming environment that is familiar both to non-embedded C developers and embedded C developers alike.
The Raspberry Pi Pico Software Development Kit, hereafter **SDK**, provides the headers, libraries, and build system necessary to write programs for RP-series microcontroller devices such as the Raspberry Pi Pico in C, C++, or assembly language. The SDK is designed to provide an API (Application Programming Interface) and programming environment that's familiar both to both non-embedded and embedded C developers.
A single program runs on the device at a time with a conventional `main()` method. Standard C/C++ libraries are supported along with APIs for accessing the microcontroller's hardware, including DMA, IRQs, and the wide variety of fixed-function peripherals and PIO (Programmable IO).
A single program runs on the device at a time, with a conventional `main()` method. Standard C and C++ libraries are supported, along with APIs for accessing a microcontroller's hardware, including DMA, IRQs, and wide variety of fixed-function peripherals and PIO (Programmable IO).
Additionally the SDK provides higher-level libraries for dealing with timers, USB, synchronization and multi-core programming, along with additional high-level functionality built using PIO, such as audio. The SDK can be used to build anything from simple applications, or full-fledged runtime environments such as MicroPython, to low-level software such as the microcontroller's on-chip bootrom itself.
Additionally, the SDK provides higher-level libraries for dealing with timers, USB, synchronisation, and multi-core programming, along with high-level functionality built using PIO (such as audio). The SDK can be used to build anything from simple applications to full-fledged runtime environments such as MicroPython, or even low-level software, such as the microcontroller's on-chip boot ROM.
This documentation is generated from the SDK source tree using Doxygen. It provides basic information on the APIs used for each library, but does not provide usage information. Please refer to the Databooks for usage and more technical information.
This documentation is generated from the SDK source tree using Doxygen. It provides basic information on the APIs used for each library, but doesn't provide usage information. For more technical information and usage guidance, refer to the Raspberry Pi datasheets.
## SDK Design
The RP-series microcontroller range are powerful chips, however they are used in an embedded environment, so both RAM and program space are at premium. Additionally the trade-offs between performance and other factors (e.g. edge-case error handling, runtime vs compile-time configuration) are necessarily much more visible to the developer than they might be on other higher-level platforms.
The RP-series microcontrollers are powerful chips designed for embedded systems; these chips operate in environments with limited memory (RAM) and storage (program space). As a result, trade-offs between performance and other factors (such as edge-case error handling, runtime versus compile time configuration, and so on) are more apparent than they might be on higher-level platforms (like desktop systems).
The intention within the SDK has been for features to just work out of the box, with sensible defaults, but also to give the developer as much control and power as possible (if they want it) to fine-tune every aspect of the application they are building and the libraries used.
The SDK is designed to be both beginner-friendly and powerful for more experienced users. Its features work out-of-the-box with sensible defaults that cover most use cases. At the same time, it gives developers as much control as possible to tweak the application they're building and the libraries they use, if they choose to.
## The Build System
The SDK uses CMake to manage the build. CMake is widely supported by IDEs (Integrated Development Environments), and allows a simple specification of the build (via `CMakeLists.txt` files), from which CMake can generate a build system (for use by `make`, `ninja` or other build tools) customized for the platform and by any configuration variables the developer chooses.
The SDK uses **CMake** to manage the build process. CMake is a widely used build system for C and C++ development, and is supported by many IDEs (Integrated Development Environments). It allows developers to specify build instructions using `CMakeLists.txt` files, from which CMake can generate platform-specific build systems for tools like `make` and `ninja`. These builds can be customised for the intended platform and configuration variables defined by the developer.
Apart from being a widely-used build system for C/C++ development, CMake is fundamental to the way the SDK is structured, and how applications are configured and built.
Apart from its popularity, CMake is fundamental to how the SDK is structured, and how applications are configured and built. It enables consistent builds across platforms while providing flexibility for more complex embedded projects.
The SDK builds an executable which is bare-metal, i.e. it includes the entirety of the code needed to run on the device (other than device specific floating-point and other optimized code contained in the bootrom within the microcontroller).
The SDK builds a bare-metal executable, which is a standalone binary that includes all the code needed to run directly on a microcontroller, excluding device-specific low-level functionality, such as floating-point routines and other optimized code contained in a microcontroller's boot ROM.
## Examples
This SDK documentation contains a number of example code fragments. An index of these examples can be found [here](@ref examples_page). These examples, and any other source code included in this documentation, is Copyright © 2020 Raspberry Pi Ltd and licensed under the [3-Clause BSD](https://opensource.org/licenses/BSD-3-Clause) license.
This SDK documentation contains example code fragments. An index of these examples can be found in the [examples page](@ref examples_page). These examples, and any other source code included in this documentation, are Copyright © 2020 Raspberry Pi Ltd and licensed under the [3-Clause BSD](https://opensource.org/licenses/BSD-3-Clause) license.