mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-29 17:22:56 +08:00
remove pico-dev
This commit is contained in:
parent
6454fd8343
commit
366c696643
Binary file not shown.
@ -1,9 +0,0 @@
|
||||
## License of pico-debug
|
||||
|
||||
TinyUSB and code specific to pico-debug is licensed under the [MIT license](https://opensource.org/licenses/MIT).
|
||||
|
||||
ARM's CMSIS_5 code is licensed under the [Apache 2.0 license](https://opensource.org/licenses/Apache-2.0).
|
||||
|
||||
## License of pico_template
|
||||
|
||||
https://github.com/GorgonMeducer/Pico_Template/blob/main/LICENSE
|
@ -1,5 +0,0 @@
|
||||
SET PATH=C:\Keil_v5\ARM\ARMCLANG\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\dotnet\;C:\Program Files\PuTTY\;C:\Program Files (x86)\GNU Arm Embedded Toolchain\10 2021.10\bin;C:\Users\liang\AppData\Local\Programs\Python\Python310\Scripts\;C:\Users\liang\AppData\Local\Programs\Python\Python310\;C:\Users\liang\AppData\Local\Microsoft\WindowsApps;C:\Users\liang\AppData\Local\Programs\Microsoft VS Code\bin;C:\texlive\2021\bin\win32;C:\Users\liang\.dotnet\tools
|
||||
SET CPU_TYPE=ARMCM0P_MPU
|
||||
SET CPU_VENDOR=ARM
|
||||
SET UV2_TARGET=AC6-flash
|
||||
SET CPU_CLOCK=0x00B71B00
|
@ -1,69 +0,0 @@
|
||||
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
|
||||
; command above MUST be in first line (no comment above!)
|
||||
; *************************************************************
|
||||
; *** Scatter-Loading Description File generated by uVision ***
|
||||
; *************************************************************
|
||||
|
||||
#define FLASH_SIZE 0x00200000
|
||||
#define SRAM_SIZE (1024*248)
|
||||
|
||||
#define STACK_0_SIZE (1024*4)
|
||||
#define STACK_1_SIZE (1024*1)
|
||||
|
||||
#define HEAP_0_SIZE (1024*32)
|
||||
#define HEAP_1_SIZE (1024*1)
|
||||
|
||||
#define RAMSIZE_VALID (SRAM_SIZE - \
|
||||
STACK_1_SIZE - HEAP_1_SIZE - \
|
||||
STACK_0_SIZE - HEAP_0_SIZE - 0x100)
|
||||
|
||||
LR_STAGE2_BOOT 0x10000000 0x100 {
|
||||
ER_STAGE2_BOOT +0 0x100 {
|
||||
compile_time_choice.o (+RO)
|
||||
}
|
||||
ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
|
||||
}
|
||||
}
|
||||
|
||||
LR_IROM1 0x10000100 FLASH_SIZE - ImageLength(LR_STAGE2_BOOT) { ; load region size_region
|
||||
|
||||
ER_FLASH +0 0x00200000 { ; load address = execution address
|
||||
*.o (RESET, +First)
|
||||
*(InRoot$$Sections)
|
||||
* (+RO-DATA)
|
||||
|
||||
startup_RP2040.o (+RO)
|
||||
* (+RO-CODE)
|
||||
* (+XO)
|
||||
}
|
||||
|
||||
ER_RAM_VECTOR_TABLE 0x20000000 {
|
||||
* (.ram_vector_table)
|
||||
}
|
||||
|
||||
ARM_LIB_STACK +0 ALIGN 8 EMPTY STACK_0_SIZE {
|
||||
}
|
||||
|
||||
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY STACK_1_SIZE {
|
||||
}
|
||||
ARM_LIB_HEAP +0 ALIGN 8 EMPTY HEAP_0_SIZE {
|
||||
}
|
||||
ARM_LIB_HEAP_ONE +0 ALIGN 8 EMPTY HEAP_1_SIZE {
|
||||
}
|
||||
|
||||
ER_MUTEX_ARRAY +0 {
|
||||
* (.mutex_array.*)
|
||||
* (.mutex_array)
|
||||
}
|
||||
|
||||
;ER_PREINIT_ARRAY +0 {
|
||||
; * (.preinit_array.*)
|
||||
; * (.preinit_array)
|
||||
;}
|
||||
|
||||
RW_IRAM +0 RAMSIZE_VALID { ; RW data
|
||||
* (+RW +ZI)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,86 +0,0 @@
|
||||
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
|
||||
; command above MUST be in first line (no comment above!)
|
||||
; *************************************************************
|
||||
; *** Scatter-Loading Description File generated by uVision ***
|
||||
; *************************************************************
|
||||
|
||||
#define FLASH_SIZE 0x00200000
|
||||
#define SRAM_SIZE (1024*248)
|
||||
|
||||
#define STACK_0_SIZE (1024*4)
|
||||
#define STACK_1_SIZE (1024*1)
|
||||
|
||||
#define HEAP_0_SIZE (1024*32)
|
||||
#define HEAP_1_SIZE (1024*1)
|
||||
|
||||
#define RAMSIZE_VALID (SRAM_SIZE - \
|
||||
STACK_1_SIZE - HEAP_1_SIZE - \
|
||||
STACK_0_SIZE - HEAP_0_SIZE - 0x100)
|
||||
|
||||
;LR_STAGE2_BOOT 0x10000000 0x100 {
|
||||
; ER_STAGE2_BOOT +0 0x100 {
|
||||
; compile_time_choice.o (+RO)
|
||||
; }
|
||||
; ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
|
||||
; }
|
||||
;}
|
||||
|
||||
LR_IROM1 0x20000000 SRAM_SIZE { ; load region size_region
|
||||
|
||||
ER_BINRAY_INFO +0 {
|
||||
* (:gdef:Reset_Handler) //!< please always make sure that Reset_Handler is placed here.
|
||||
* (.binary_info_header)
|
||||
}
|
||||
|
||||
;ER_RAM_VECTOR_TABLE +0 ALIGN 256 {
|
||||
; * (.ram_vector_table)
|
||||
;}
|
||||
|
||||
|
||||
ER_FLASH +0 { ; load address = execution address
|
||||
*.o (RESET, +First)
|
||||
*(InRoot$$Sections)
|
||||
* (+RO-DATA)
|
||||
startup_RP2040.o (+RO)
|
||||
}
|
||||
|
||||
ER_MUTEX_ARRAY +0 {
|
||||
* (.mutex_array.*)
|
||||
* (.mutex_array)
|
||||
}
|
||||
|
||||
RW_IRAM_CODE +0 {
|
||||
* (+RO-CODE)
|
||||
* (+XO)
|
||||
}
|
||||
|
||||
ARM_LIB_STACK +0 ALIGN 8 EMPTY STACK_0_SIZE {
|
||||
}
|
||||
|
||||
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY STACK_1_SIZE {
|
||||
}
|
||||
ARM_LIB_HEAP +0 ALIGN 8 EMPTY HEAP_0_SIZE {
|
||||
}
|
||||
ARM_LIB_HEAP_ONE +0 ALIGN 8 EMPTY HEAP_1_SIZE {
|
||||
}
|
||||
|
||||
|
||||
|
||||
;ER_PREINIT_ARRAY +0 {
|
||||
; * (.preinit_array.*)
|
||||
; * (.preinit_array)
|
||||
;}
|
||||
|
||||
RW_IRAM +0 { ; RW data
|
||||
* (+RW +ZI)
|
||||
}
|
||||
|
||||
RW_IRAM_UNINIT +0 UNINIT {
|
||||
*(.uninitialized_data*)
|
||||
*(.bss.noinit)
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,68 +0,0 @@
|
||||
#! armclang -E --target=arm-arm-none-eabi -mcpu=cortex-m0 -xc
|
||||
; command above MUST be in first line (no comment above!)
|
||||
; *************************************************************
|
||||
; *** Scatter-Loading Description File generated by uVision ***
|
||||
; *************************************************************
|
||||
|
||||
#define FLASH_SIZE 0x00200000
|
||||
#define SRAM_SIZE (1024*248)
|
||||
|
||||
#define STACK_0_SIZE (1024*4)
|
||||
#define STACK_1_SIZE (1024*1)
|
||||
|
||||
#define HEAP_0_SIZE (1024*32)
|
||||
#define HEAP_1_SIZE (1024*1)
|
||||
|
||||
#define RAMSIZE_VALID (SRAM_SIZE - \
|
||||
STACK_1_SIZE - HEAP_1_SIZE - \
|
||||
STACK_0_SIZE - HEAP_0_SIZE - 0x100)
|
||||
|
||||
LR_STAGE2_BOOT 0x10000000 0x100 {
|
||||
ER_STAGE2_BOOT +0 0x100 {
|
||||
compile_time_choice.o (+RO)
|
||||
}
|
||||
ER_FILL ImageLimit(ER_STAGE2_BOOT) FILL 0xDEADBEEF 0x100 - ImageLength(ER_STAGE2_BOOT) {
|
||||
}
|
||||
}
|
||||
|
||||
LR_IROM1 0x10000100 FLASH_SIZE - ImageLength(LR_STAGE2_BOOT) { ; load region size_region
|
||||
|
||||
ER_FLASH +0 0x00200000 { ; load address = execution address
|
||||
*.o (RESET, +First)
|
||||
*(InRoot$$Sections)
|
||||
* (+RO-DATA)
|
||||
startup_RP2040.o (+RO)
|
||||
}
|
||||
|
||||
ER_RAM_VECTOR_TABLE 0x20000000 {
|
||||
* (.ram_vector_table)
|
||||
}
|
||||
|
||||
ARM_LIB_STACK +0 ALIGN 8 EMPTY STACK_0_SIZE {
|
||||
}
|
||||
|
||||
ARM_LIB_STACK_ONE +0 ALIGN 8 EMPTY STACK_1_SIZE {
|
||||
}
|
||||
ARM_LIB_HEAP +0 ALIGN 8 EMPTY HEAP_0_SIZE {
|
||||
}
|
||||
ARM_LIB_HEAP_ONE +0 ALIGN 8 EMPTY HEAP_1_SIZE {
|
||||
}
|
||||
|
||||
ER_MUTEX_ARRAY +0 {
|
||||
* (.mutex_array.*)
|
||||
* (.mutex_array)
|
||||
}
|
||||
|
||||
;ER_PREINIT_ARRAY +0 {
|
||||
; * (.preinit_array.*)
|
||||
; * (.preinit_array)
|
||||
;}
|
||||
|
||||
RW_IRAM +0 RAMSIZE_VALID { ; RW data
|
||||
* (+RW +ZI)
|
||||
* (+RO-CODE)
|
||||
* (+XO)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,34 +0,0 @@
|
||||
/*------------------------------------------------------------------------------
|
||||
* MDK - Component ::Event Recorder
|
||||
* Copyright (c) 2016-2018 ARM Germany GmbH. All rights reserved.
|
||||
*------------------------------------------------------------------------------
|
||||
* Name: EventRecorderConf.h
|
||||
* Purpose: Event Recorder Configuration
|
||||
* Rev.: V1.1.0
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
//-------- <<< Use Configuration Wizard in Context Menu >>> --------------------
|
||||
|
||||
// <h>Event Recorder
|
||||
|
||||
// <o>Number of Records
|
||||
// <8=>8 <16=>16 <32=>32 <64=>64 <128=>128 <256=>256 <512=>512 <1024=>1024
|
||||
// <2048=>2048 <4096=>4096 <8192=>8192 <16384=>16384 <32768=>32768
|
||||
// <65536=>65536
|
||||
// <i>Configures size of Event Record Buffer (each record is 16 bytes)
|
||||
// <i>Must be 2^n (min=8, max=65536)
|
||||
#define EVENT_RECORD_COUNT 64U
|
||||
|
||||
// <o>Time Stamp Source
|
||||
// <0=> DWT Cycle Counter <1=> SysTick <2=> CMSIS-RTOS2 System Timer
|
||||
// <3=> User Timer (Normal Reset) <4=> User Timer (Power-On Reset)
|
||||
// <i>Selects source for 32-bit time stamp
|
||||
#define EVENT_TIMESTAMP_SOURCE 3
|
||||
|
||||
// <o>Time Stamp Clock Frequency [Hz] <0-1000000000>
|
||||
// <i>Defines initial time stamp clock frequency (0 when not used)
|
||||
#define EVENT_TIMESTAMP_FREQ 125000000U
|
||||
|
||||
// </h>
|
||||
|
||||
//------------- <<< end of configuration section >>> ---------------------------
|
@ -1 +0,0 @@
|
||||
"..\..\tool\elf2uf2.exe" .\Objects\template.axf .\template.uf2
|
@ -1,10 +0,0 @@
|
||||
|
||||
FUNC void reset_pico(void)
|
||||
{
|
||||
exec("RESET");
|
||||
exec("G, Reset_Handler");
|
||||
}
|
||||
|
||||
DEFINE BUTTON "Reset Pico", "reset_pico()"
|
||||
|
||||
reset_pico();
|
@ -1,36 +0,0 @@
|
||||
|
||||
|
||||
|
||||
FUNC void debug_from_ram(void)
|
||||
{
|
||||
//extern unsigned int Image$$ARM_LIB_STACK$$ZI$$Limit;
|
||||
|
||||
printf("Entry Point: %08x\r\n", Reset_Handler);
|
||||
printf("Main Stack Pointer: %08x\r\n", Image$$ARM_LIB_STACK$$ZI$$Limit);
|
||||
|
||||
/*
|
||||
typedef struct {
|
||||
unsigned int ctrl;
|
||||
unsigned int load;
|
||||
unsigned int reason;
|
||||
unsigned int scratch[8];
|
||||
unsigned int tick;
|
||||
} watchdog_hw_t;
|
||||
|
||||
#define watchdog_hw ((watchdog_hw_t *const)0x40058000)
|
||||
*/
|
||||
|
||||
_WWORD(0x4005801C ,0xb007c0d3); //! scratch 4
|
||||
_WWORD(0x40058020 ,-0xb007c0d3 ^ (Reset_Handler | 0x01)); //! scratch 5
|
||||
_WWORD(0x40058024 ,Image$$ARM_LIB_STACK$$ZI$$Limit); //! scratch 6
|
||||
_WWORD(0x40058028 ,Reset_Handler | 0x01); //! scratch 7
|
||||
|
||||
exec("RESET");
|
||||
//exec("BS main");
|
||||
//exec("G, Reset_Handler");
|
||||
exec("G, main");
|
||||
}
|
||||
|
||||
DEFINE BUTTON "Reset Pico", "debug_from_ram()"
|
||||
|
||||
debug_from_ram();
|
@ -1,192 +0,0 @@
|
||||
/******************************************************************************
|
||||
* @file startup_ARMCM0plus.c
|
||||
* @brief CMSIS-Core(M) Device Startup File for a Cortex-M0+ Device
|
||||
* @version V2.0.3
|
||||
* @date 31. March 2020
|
||||
******************************************************************************/
|
||||
/*
|
||||
* Copyright (c) 2009-2020 Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the License); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "RP2040.h"
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
External References
|
||||
*----------------------------------------------------------------------------*/
|
||||
extern uint32_t __INITIAL_SP;
|
||||
|
||||
extern __NO_RETURN void __PROGRAM_START(void);
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
Internal References
|
||||
*----------------------------------------------------------------------------*/
|
||||
__NO_RETURN void Reset_Handler (void);
|
||||
void Default_Handler(void);
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
Exception / Interrupt Handler
|
||||
*----------------------------------------------------------------------------*/
|
||||
/* Exceptions */
|
||||
void NMI_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void HardFault_Handler (void) __attribute__ ((weak));
|
||||
void SVC_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PendSV_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SysTick_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
|
||||
|
||||
void TIMER_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void TIMER_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void TIMER_IRQ_2_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void TIMER_IRQ_3_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PWM_IRQ_WRAP_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void USBCTRL_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void XIP_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PIO0_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PIO0_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PIO1_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void PIO1_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMA_IRQ_0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void DMA_IRQ_1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void IO_IRQ_BANK0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void IO_IRQ_QSPI_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SIO_IRQ_PROC0_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SIO_IRQ_PROC1_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void CLOCKS_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SPI0_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void SPI1_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void UART0_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void UART1_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void ADC_IRQ_FIFO_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void I2C0_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void I2C1_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
void RTC_IRQ_Handler (void) __attribute__ ((weak, alias("Default_Handler")));
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
Exception / Interrupt Vector table
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#if defined ( __GNUC__ )
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wpedantic"
|
||||
#endif
|
||||
|
||||
extern const VECTOR_TABLE_Type __VECTOR_TABLE[48];
|
||||
__attribute__((aligned(256)))
|
||||
const VECTOR_TABLE_Type __VECTOR_TABLE[48] __VECTOR_TABLE_ATTRIBUTE = {
|
||||
(VECTOR_TABLE_Type)(&__INITIAL_SP), /* Initial Stack Pointer */
|
||||
Reset_Handler, /* Reset Handler */
|
||||
NMI_Handler, /* -14 NMI Handler */
|
||||
HardFault_Handler, /* -13 Hard Fault Handler */
|
||||
0, /* Reserved */
|
||||
0, /* Reserved */
|
||||
0, /* Reserved */
|
||||
0, /* Reserved */
|
||||
0, /* Reserved */
|
||||
0, /* Reserved */
|
||||
0, /* Reserved */
|
||||
SVC_Handler, /* -5 SVCall Handler */
|
||||
0, /* Reserved */
|
||||
0, /* Reserved */
|
||||
PendSV_Handler, /* -2 PendSV Handler */
|
||||
SysTick_Handler, /* -1 SysTick Handler */
|
||||
|
||||
/* Interrupts */
|
||||
TIMER_IRQ_0_Handler,
|
||||
TIMER_IRQ_1_Handler,
|
||||
TIMER_IRQ_2_Handler,
|
||||
TIMER_IRQ_3_Handler,
|
||||
PWM_IRQ_WRAP_Handler,
|
||||
USBCTRL_IRQ_Handler,
|
||||
XIP_IRQ_Handler,
|
||||
PIO0_IRQ_0_Handler,
|
||||
PIO0_IRQ_1_Handler,
|
||||
PIO1_IRQ_0_Handler,
|
||||
PIO1_IRQ_1_Handler,
|
||||
DMA_IRQ_0_Handler,
|
||||
DMA_IRQ_1_Handler,
|
||||
IO_IRQ_BANK0_Handler,
|
||||
IO_IRQ_QSPI_Handler,
|
||||
SIO_IRQ_PROC0_Handler,
|
||||
SIO_IRQ_PROC1_Handler,
|
||||
CLOCKS_IRQ_Handler,
|
||||
SPI0_IRQ_Handler,
|
||||
SPI1_IRQ_Handler,
|
||||
UART0_IRQ_Handler,
|
||||
UART1_IRQ_Handler,
|
||||
ADC_IRQ_FIFO_Handler,
|
||||
I2C0_IRQ_Handler,
|
||||
I2C1_IRQ_Handler,
|
||||
RTC_IRQ_Handler,
|
||||
|
||||
Default_Handler,
|
||||
Default_Handler,
|
||||
Default_Handler,
|
||||
Default_Handler,
|
||||
Default_Handler,
|
||||
Default_Handler,
|
||||
/* Interrupts 10..31 are left out */
|
||||
};
|
||||
|
||||
#if defined ( __GNUC__ )
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
Reset Handler called on controller reset
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
__attribute__((constructor(255), used))
|
||||
void __pico_entry(void)
|
||||
{
|
||||
extern void runtime_init(void);
|
||||
runtime_init();
|
||||
}
|
||||
|
||||
__NO_RETURN void Reset_Handler(void)
|
||||
{
|
||||
SCB->VTOR = (uintptr_t)__VECTOR_TABLE;
|
||||
__set_MSP((uintptr_t)(&__INITIAL_SP));
|
||||
//SystemInit(); /* CMSIS System Initialization */
|
||||
__PROGRAM_START(); /* Enter PreMain (C library entry point) */
|
||||
}
|
||||
|
||||
|
||||
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Wmissing-noreturn"
|
||||
#endif
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
Hard Fault Handler
|
||||
*----------------------------------------------------------------------------*/
|
||||
void HardFault_Handler(void)
|
||||
{
|
||||
while(1);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------
|
||||
Default Handler for Exceptions / Interrupts
|
||||
*----------------------------------------------------------------------------*/
|
||||
void Default_Handler(void)
|
||||
{
|
||||
while(1);
|
||||
}
|
||||
|
||||
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,187 +0,0 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2021 Gorgon Meducer (Email:embedded_zhuoran@hotmail.com) *
|
||||
* *
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); *
|
||||
* you may not use this file except in compliance with the License. *
|
||||
* You may obtain a copy of the License at *
|
||||
* *
|
||||
* http://www.apache.org/licenses/LICENSE-2.0 *
|
||||
* *
|
||||
* Unless required by applicable law or agreed to in writing, software *
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, *
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
|
||||
* See the License for the specific language governing permissions and *
|
||||
* limitations under the License. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
/*============================ INCLUDES ======================================*/
|
||||
#include "cmsis_compiler.h"
|
||||
#include "RTE_Components.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#include "perf_counter.h"
|
||||
|
||||
#ifdef RTE_Compiler_EventRecorder
|
||||
# include <EventRecorder.h>
|
||||
#endif
|
||||
|
||||
/*============================ MACROS ========================================*/
|
||||
/*============================ MACROFIED FUNCTIONS ===========================*/
|
||||
/*============================ TYPES =========================================*/
|
||||
/*============================ GLOBAL VARIABLES ==============================*/
|
||||
/*============================ LOCAL VARIABLES ===============================*/
|
||||
/*============================ PROTOTYPES ====================================*/
|
||||
extern int _read(int handle, char *buffer, int length);
|
||||
extern int _write(int handle, char *buffer, int length);
|
||||
|
||||
/*============================ IMPLEMENTATION ================================*/
|
||||
int __real_vprintf(const char *format, __va_list va)
|
||||
{
|
||||
extern int $Super$$vprintf(const char *format, __va_list va);
|
||||
|
||||
return $Super$$vprintf(format, va);
|
||||
}
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------------*
|
||||
* bridge the Arm Compiler's stdio and the pico-sdk's stdio *
|
||||
*----------------------------------------------------------------------------*/
|
||||
|
||||
#if !defined(LIB_PICO_STDIO_SEMIHOSTING) \
|
||||
|| (defined(LIB_PICO_STDIO_SEMIHOSTING) && !LIB_PICO_STDIO_SEMIHOSTING)
|
||||
__attribute__((weak))
|
||||
int stdin_getchar(void)
|
||||
{
|
||||
/*! \note If you don't want to use pico-sdk stdio, then you can implement
|
||||
*! function by yourself in other c source code. Your scanf will work
|
||||
*! directly.
|
||||
*! by default, we use this function to bridge the _read implemented
|
||||
*! in stdio.c of pico-sdk
|
||||
*/
|
||||
|
||||
int byte;
|
||||
_read(0, (char *)&byte, 1);
|
||||
return byte;
|
||||
}
|
||||
|
||||
#if defined(RTE_Compiler_EventRecorder) && defined(USE_EVR_FOR_STDOUR)
|
||||
static int stdout_putchar (int ch) {
|
||||
static uint32_t index = 0U;
|
||||
static uint8_t buffer[8];
|
||||
|
||||
assert(index < sizeof(buffer));
|
||||
|
||||
buffer[index++] = (uint8_t)ch;
|
||||
if ((index == sizeof(buffer)) || (ch == '\n')) {
|
||||
EventRecordData(EventID(EventLevelOp, 0xFE, 0x00), buffer, index);
|
||||
index = 0U;
|
||||
}
|
||||
return (ch);
|
||||
}
|
||||
#else
|
||||
__attribute__((weak))
|
||||
int stdout_putchar(int ch)
|
||||
{
|
||||
/*! \note If you don't want to use pico-sdk stdio, then you can implement
|
||||
*! function by yourself in other c source code. Your printf will work
|
||||
*! directly.
|
||||
*! by default, we use this function to bridge the _write implemented
|
||||
*! in stdio.c of pico-sdk
|
||||
*/
|
||||
|
||||
return _write(1, (char *)&ch, 1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
int fputc (int c, FILE * stream)
|
||||
{
|
||||
#if (!defined(RTE_Compiler_IO_STDOUT) && !defined(RTE_Compiler_IO_STDERR))
|
||||
(void)c;
|
||||
(void)stream;
|
||||
#endif
|
||||
|
||||
|
||||
return stdout_putchar(c);
|
||||
}
|
||||
|
||||
#else
|
||||
/*! \note If you want to use semihosting (currently only Arm-DS supports it),
|
||||
*! pleae open the RTE configuration and unselect the Compiler->I/O->STDIN
|
||||
*! and Compiler->I/O->STDOUT
|
||||
*/
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#if defined(__IS_COMPILER_ARM_COMPILER_6__) \
|
||||
&& ( !defined(LIB_PICO_STDIO_SEMIHOSTING) \
|
||||
|| (defined(LIB_PICO_STDIO_SEMIHOSTING) && !LIB_PICO_STDIO_SEMIHOSTING))
|
||||
__asm(".global __use_no_semihosting\n\t");
|
||||
# ifndef __MICROLIB
|
||||
__asm(".global __ARM_use_no_argv\n\t");
|
||||
# endif
|
||||
|
||||
#if !defined(RTE_Compiler_IO_STDOUT)
|
||||
#if defined(__MICROLIB)
|
||||
_ARMABI_NORETURN
|
||||
void __aeabi_assert(const char *chCond, const char *chLine, int wErrCode)
|
||||
{
|
||||
UNUSED_PARAM(chCond);
|
||||
UNUSED_PARAM(chLine);
|
||||
UNUSED_PARAM(wErrCode);
|
||||
while(1) {
|
||||
__NOP();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
void _ttywrch(int ch)
|
||||
{
|
||||
UNUSED_PARAM(ch);
|
||||
}
|
||||
|
||||
#if !defined(RETARGET_SYS)
|
||||
#include <rt_sys.h>
|
||||
|
||||
FILEHANDLE $Sub$$_sys_open(const char *name, int openmode)
|
||||
{
|
||||
UNUSED_PARAM(name);
|
||||
UNUSED_PARAM(openmode);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
__NO_RETURN
|
||||
void _sys_exit(int ret)
|
||||
{
|
||||
UNUSED_PARAM(ret);
|
||||
while(1) {}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(RTE_Compiler_EventRecorder)
|
||||
|
||||
uint32_t EventRecorderTimerSetup(void)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
uint32_t EventRecorderTimerGetCount(void)
|
||||
{
|
||||
return get_system_ticks();
|
||||
}
|
||||
|
||||
uint32_t EventRecorderTimerGetFreq (void)
|
||||
{
|
||||
extern uint32_t SystemCoreClock;
|
||||
return SystemCoreClock;
|
||||
}
|
||||
|
||||
#endif
|
@ -1,186 +0,0 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2021 Gorgon Meducer (Email:embedded_zhuoran@hotmail.com) *
|
||||
* *
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); *
|
||||
* you may not use this file except in compliance with the License. *
|
||||
* You may obtain a copy of the License at *
|
||||
* *
|
||||
* http://www.apache.org/licenses/LICENSE-2.0 *
|
||||
* *
|
||||
* Unless required by applicable law or agreed to in writing, software *
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, *
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
|
||||
* See the License for the specific language governing permissions and *
|
||||
* limitations under the License. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
/*============================ INCLUDES ======================================*/
|
||||
#include "cmsis_compiler.h"
|
||||
|
||||
|
||||
/*============================ MACROS ========================================*/
|
||||
/*============================ MACROFIED FUNCTIONS ===========================*/
|
||||
/*============================ TYPES =========================================*/
|
||||
/*============================ GLOBAL VARIABLES ==============================*/
|
||||
/*============================ LOCAL VARIABLES ===============================*/
|
||||
/*============================ PROTOTYPES ====================================*/
|
||||
/*============================ IMPLEMENTATION ================================*/
|
||||
|
||||
#ifndef __ENV_WRAPPER_H__
|
||||
# define __ENV_WRAPPER_H__ 1
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
|
||||
//! \name The macros to identify the compiler
|
||||
//! @{
|
||||
|
||||
//! \note for IAR
|
||||
#ifdef __IS_COMPILER_IAR__
|
||||
# undef __IS_COMPILER_IAR__
|
||||
#endif
|
||||
#if defined(__IAR_SYSTEMS_ICC__)
|
||||
# define __IS_COMPILER_IAR__ 1
|
||||
#endif
|
||||
|
||||
//! \note for arm compiler 5
|
||||
#ifdef __IS_COMPILER_ARM_COMPILER_5__
|
||||
# undef __IS_COMPILER_ARM_COMPILER_5__
|
||||
#endif
|
||||
#if ((__ARMCC_VERSION >= 5000000) && (__ARMCC_VERSION < 6000000))
|
||||
# define __IS_COMPILER_ARM_COMPILER_5__ 1
|
||||
#endif
|
||||
//! @}
|
||||
|
||||
//! \note for arm compiler 6
|
||||
#ifdef __IS_COMPILER_ARM_COMPILER_6__
|
||||
# undef __IS_COMPILER_ARM_COMPILER_6__
|
||||
#endif
|
||||
#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
|
||||
# define __IS_COMPILER_ARM_COMPILER_6__ 1
|
||||
#endif
|
||||
|
||||
#ifdef __IS_COMPILER_LLVM__
|
||||
# undef __IS_COMPILER_LLVM__
|
||||
#endif
|
||||
#if defined(__clang__) && !__IS_COMPILER_ARM_COMPILER_6__
|
||||
# define __IS_COMPILER_LLVM__ 1
|
||||
#else
|
||||
//! \note for gcc
|
||||
# ifdef __IS_COMPILER_GCC__
|
||||
# undef __IS_COMPILER_GCC__
|
||||
# endif
|
||||
# if defined(__GNUC__) && !( defined(__IS_COMPILER_ARM_COMPILER_5__) \
|
||||
|| defined(__IS_COMPILER_ARM_COMPILER_6__) \
|
||||
|| defined(__IS_COMPILER_LLVM__))
|
||||
# define __IS_COMPILER_GCC__ 1
|
||||
# endif
|
||||
//! @}
|
||||
#endif
|
||||
//! @}
|
||||
|
||||
|
||||
#if defined(__IS_COMPILER_ARM_COMPILER_6__)
|
||||
# pragma clang diagnostic ignored "-Wformat-extra-args"
|
||||
#endif
|
||||
|
||||
#ifndef __ASM
|
||||
#define __ASM __asm
|
||||
#endif
|
||||
|
||||
|
||||
#if defined(__clang__) || defined(__IS_COMPILER_ARM_COMPILER_5__)
|
||||
# undef __force_inline
|
||||
# define __force_inline __attribute__((always_inline))
|
||||
|
||||
# undef __always_inline
|
||||
# define __always_inline __attribute__((always_inline))
|
||||
|
||||
# undef __unused
|
||||
# define __unused __attribute__((unused))
|
||||
|
||||
# undef __used
|
||||
# define __used __USED
|
||||
|
||||
# undef __packed_aligned
|
||||
# define __packed_aligned __attribute__((packed, aligned(4)))
|
||||
|
||||
# undef __printflike
|
||||
# define __printflike(...) __attribute__((format(printf, __VA_ARGS__)))
|
||||
|
||||
#endif
|
||||
|
||||
#undef __STRING
|
||||
# define __STRING(__S) #__S
|
||||
|
||||
|
||||
#undef offsetof
|
||||
#if defined(__clang__) || defined(__IS_COMPILER_GCC__)
|
||||
# define offsetof(st, m) __builtin_offsetof(st, m)
|
||||
#else
|
||||
# undef static_assert
|
||||
# define static_assert(...)
|
||||
# define offsetof(st, m) ((size_t)((char *)&((st *)0)->m - (char *)0))
|
||||
#endif
|
||||
|
||||
typedef unsigned int uint;
|
||||
|
||||
#undef UNUSED_PARAM
|
||||
#define UNUSED_PARAM(__VAR) __VAR = __VAR
|
||||
|
||||
#ifndef __CONCAT
|
||||
# define ____CONCAT(a,b) a##b
|
||||
# define __CONCAT(a,b) ____CONCAT(a,b)
|
||||
#endif
|
||||
|
||||
/**
|
||||
\brief Get Control Register
|
||||
\details Returns the content of the Control Register.
|
||||
\return Control Register value
|
||||
*/
|
||||
static __force_inline uint32_t __get_current_exception(void)
|
||||
{
|
||||
uint32_t result;
|
||||
|
||||
__ASM volatile ("MRS %0, ipsr" : "=r" (result) );
|
||||
return(result);
|
||||
}
|
||||
|
||||
#define __unhandled_user_irq Default_Handler
|
||||
|
||||
#define __StackOneBottom Image$$ARM_LIB_STACK_ONE$$ZI$$Base
|
||||
|
||||
#define __mutex_array_start Image$$ER_MUTEX_ARRAY$$ZI$$Base
|
||||
#define __mutex_array_end Image$$ER_MUTEX_ARRAY$$ZI$$Limit
|
||||
|
||||
#define __preinit_array_start Image$$ER_PREINIT_ARRAY$$ZI$$Base
|
||||
#define __preinit_array_end Image$$ER_PREINIT_ARRAY$$ZI$$Limit
|
||||
|
||||
#define PROGRAM_STATUS_REG
|
||||
#define LIB_CMSIS_CORE 1
|
||||
#define PICO_CMSIS_RENAME_EXCEPTIONS 1
|
||||
#define PICO_ON_DEVICE 1
|
||||
|
||||
enum {
|
||||
PICO_ERROR_NO_DATA = -3,
|
||||
PICO_ERROR_GENERIC = -2,
|
||||
PICO_ERROR_TIMEOUT = -1,
|
||||
};
|
||||
|
||||
|
||||
#undef __sev
|
||||
#undef __wfe
|
||||
#undef __dmb
|
||||
#undef __dsb
|
||||
#undef __isb
|
||||
|
||||
#define __sev __SEV
|
||||
#define __wfe __WFE
|
||||
#define __dmb __DMB
|
||||
#define __dsb __DSB
|
||||
#define __isb __ISB
|
||||
|
||||
#include "pico/platform.h"
|
||||
|
||||
#endif
|
@ -1,408 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _HARDWARE_SYNC_H
|
||||
#define _HARDWARE_SYNC_H
|
||||
|
||||
#include "pico.h"
|
||||
#include "hardware/address_mapped.h"
|
||||
#include "hardware/regs/sio.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** \file hardware/sync.h
|
||||
* \defgroup hardware_sync hardware_sync
|
||||
*
|
||||
* Low level hardware spin locks, barrier and processor event APIs
|
||||
*
|
||||
* Spin Locks
|
||||
* ----------
|
||||
*
|
||||
* The RP2040 provides 32 hardware spin locks, which can be used to manage mutually-exclusive access to shared software
|
||||
* and hardware resources.
|
||||
*
|
||||
* Generally each spin lock itself is a shared resource,
|
||||
* i.e. the same hardware spin lock can be used by multiple higher level primitives (as long as the spin locks are neither held for long periods, nor
|
||||
* held concurrently with other spin locks by the same core - which could lead to deadlock). A hardware spin lock that is exclusively owned can be used
|
||||
* individually without more flexibility and without regard to other software. Note that no hardware spin lock may
|
||||
* be acquired re-entrantly (i.e. hardware spin locks are not on their own safe for use by both thread code and IRQs) however the default spinlock related
|
||||
* methods here (e.g. \ref spin_lock_blocking) always disable interrupts while the lock is held as use by IRQ handlers and user code is common/desirable,
|
||||
* and spin locks are only expected to be held for brief periods.
|
||||
*
|
||||
* The SDK uses the following default spin lock assignments, classifying which spin locks are reserved for exclusive/special purposes
|
||||
* vs those suitable for more general shared use:
|
||||
*
|
||||
* Number (ID) | Description
|
||||
* :---------: | -----------
|
||||
* 0-13 | Currently reserved for exclusive use by the SDK and other libraries. If you use these spin locks, you risk breaking SDK or other library functionality. Each reserved spin lock used individually has its own PICO_SPINLOCK_ID so you can search for those.
|
||||
* 14,15 | (\ref PICO_SPINLOCK_ID_OS1 and \ref PICO_SPINLOCK_ID_OS2). Currently reserved for exclusive use by an operating system (or other system level software) co-existing with the SDK.
|
||||
* 16-23 | (\ref PICO_SPINLOCK_ID_STRIPED_FIRST - \ref PICO_SPINLOCK_ID_STRIPED_LAST). Spin locks from this range are assigned in a round-robin fashion via \ref next_striped_spin_lock_num(). These spin locks are shared, but assigning numbers from a range reduces the probability that two higher level locking primitives using _striped_ spin locks will actually be using the same spin lock.
|
||||
* 24-31 | (\ref PICO_SPINLOCK_ID_CLAIM_FREE_FIRST - \ref PICO_SPINLOCK_ID_CLAIM_FREE_LAST). These are reserved for exclusive use and are allocated on a first come first served basis at runtime via \ref spin_lock_claim_unused()
|
||||
*/
|
||||
|
||||
// PICO_CONFIG: PARAM_ASSERTIONS_ENABLED_SYNC, Enable/disable assertions in the HW sync module, type=bool, default=0, group=hardware_sync
|
||||
#ifndef PARAM_ASSERTIONS_ENABLED_SYNC
|
||||
#define PARAM_ASSERTIONS_ENABLED_SYNC 0
|
||||
#endif
|
||||
|
||||
/** \brief A spin lock identifier
|
||||
* \ingroup hardware_sync
|
||||
*/
|
||||
typedef volatile uint32_t spin_lock_t;
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_IRQ, Spinlock ID for IRQ protection, min=0, max=31, default=9, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_IRQ
|
||||
#define PICO_SPINLOCK_ID_IRQ 9
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_TIMER, Spinlock ID for Timer protection, min=0, max=31, default=10, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_TIMER
|
||||
#define PICO_SPINLOCK_ID_TIMER 10
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_HARDWARE_CLAIM, Spinlock ID for Hardware claim protection, min=0, max=31, default=11, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_HARDWARE_CLAIM
|
||||
#define PICO_SPINLOCK_ID_HARDWARE_CLAIM 11
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_OS1, First Spinlock ID reserved for use by low level OS style software, min=0, max=31, default=14, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_OS1
|
||||
#define PICO_SPINLOCK_ID_OS1 14
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_OS2, Second Spinlock ID reserved for use by low level OS style software, min=0, max=31, default=15, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_OS2
|
||||
#define PICO_SPINLOCK_ID_OS2 15
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_STRIPED_FIRST, Lowest Spinlock ID in the 'striped' range, min=0, max=31, default=16, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_STRIPED_FIRST
|
||||
#define PICO_SPINLOCK_ID_STRIPED_FIRST 16
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_STRIPED_LAST, Highest Spinlock ID in the 'striped' range, min=0, max=31, default=23, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_STRIPED_LAST
|
||||
#define PICO_SPINLOCK_ID_STRIPED_LAST 23
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_CLAIM_FREE_FIRST, Lowest Spinlock ID in the 'claim free' range, min=0, max=31, default=24, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_CLAIM_FREE_FIRST
|
||||
#define PICO_SPINLOCK_ID_CLAIM_FREE_FIRST 24
|
||||
#endif
|
||||
|
||||
#ifdef PICO_SPINLOCK_ID_CLAIM_FREE_END
|
||||
#warning PICO_SPINLOCK_ID_CLAIM_FREE_END has been renamed to PICO_SPINLOCK_ID_CLAIM_FREE_LAST
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PICO_SPINLOCK_ID_CLAIM_FREE_LAST, Highest Spinlock ID in the 'claim free' range, min=0, max=31, default=31, group=hardware_sync
|
||||
#ifndef PICO_SPINLOCK_ID_CLAIM_FREE_LAST
|
||||
#define PICO_SPINLOCK_ID_CLAIM_FREE_LAST 31
|
||||
#endif
|
||||
|
||||
#if !defined(__IS_COMPILER_ARM_COMPILER_6__)
|
||||
/*! \brief Insert a SEV instruction in to the code path.
|
||||
* \ingroup hardware_sync
|
||||
|
||||
* The SEV (send event) instruction sends an event to both cores.
|
||||
*/
|
||||
__force_inline static void __sev(void) {
|
||||
__asm volatile ("sev");
|
||||
}
|
||||
|
||||
/*! \brief Insert a WFE instruction in to the code path.
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* The WFE (wait for event) instruction waits until one of a number of
|
||||
* events occurs, including events signalled by the SEV instruction on either core.
|
||||
*/
|
||||
__force_inline static void __wfe(void) {
|
||||
__asm volatile ("wfe");
|
||||
}
|
||||
|
||||
/*! \brief Insert a WFI instruction in to the code path.
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* The WFI (wait for interrupt) instruction waits for a interrupt to wake up the core.
|
||||
*/
|
||||
__force_inline static void __wfi(void) {
|
||||
__asm volatile ("wfi");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*! \brief Insert a DMB instruction in to the code path.
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* The DMB (data memory barrier) acts as a memory barrier, all memory accesses prior to this
|
||||
* instruction will be observed before any explicit access after the instruction.
|
||||
*/
|
||||
__force_inline static void __dmb(void) {
|
||||
__asm volatile ("dmb" : : : "memory");
|
||||
}
|
||||
|
||||
/*! \brief Insert a DSB instruction in to the code path.
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* The DSB (data synchronization barrier) acts as a special kind of data
|
||||
* memory barrier (DMB). The DSB operation completes when all explicit memory
|
||||
* accesses before this instruction complete.
|
||||
*/
|
||||
__force_inline static void __dsb(void) {
|
||||
__asm volatile ("dsb" : : : "memory");
|
||||
}
|
||||
|
||||
/*! \brief Insert a ISB instruction in to the code path.
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* ISB acts as an instruction synchronization barrier. It flushes the pipeline of the processor,
|
||||
* so that all instructions following the ISB are fetched from cache or memory again, after
|
||||
* the ISB instruction has been completed.
|
||||
*/
|
||||
__force_inline static void __isb(void) {
|
||||
__asm volatile ("isb");
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*! \brief Acquire a memory fence
|
||||
* \ingroup hardware_sync
|
||||
*/
|
||||
__force_inline static void __mem_fence_acquire(void) {
|
||||
// the original code below makes it hard for us to be included from C++ via a header
|
||||
// which itself is in an extern "C", so just use __dmb instead, which is what
|
||||
// is required on Cortex M0+
|
||||
__dmb();
|
||||
//#ifndef __cplusplus
|
||||
// atomic_thread_fence(memory_order_acquire);
|
||||
//#else
|
||||
// std::atomic_thread_fence(std::memory_order_acquire);
|
||||
//#endif
|
||||
}
|
||||
|
||||
/*! \brief Release a memory fence
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
*/
|
||||
__force_inline static void __mem_fence_release(void) {
|
||||
// the original code below makes it hard for us to be included from C++ via a header
|
||||
// which itself is in an extern "C", so just use __dmb instead, which is what
|
||||
// is required on Cortex M0+
|
||||
__dmb();
|
||||
//#ifndef __cplusplus
|
||||
// atomic_thread_fence(memory_order_release);
|
||||
//#else
|
||||
// std::atomic_thread_fence(std::memory_order_release);
|
||||
//#endif
|
||||
}
|
||||
|
||||
/*! \brief Save and disable interrupts
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \return The prior interrupt enable status for restoration later via restore_interrupts()
|
||||
*/
|
||||
__force_inline static uint32_t save_and_disable_interrupts(void) {
|
||||
uint32_t status;
|
||||
__asm volatile ("mrs %0, PRIMASK" : "=r" (status)::);
|
||||
__asm volatile ("cpsid i");
|
||||
return status;
|
||||
}
|
||||
|
||||
/*! \brief Restore interrupts to a specified state
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param status Previous interrupt status from save_and_disable_interrupts()
|
||||
*/
|
||||
__force_inline static void restore_interrupts(uint32_t status) {
|
||||
__asm volatile ("msr PRIMASK,%0"::"r" (status) : );
|
||||
}
|
||||
|
||||
/*! \brief Get HW Spinlock instance from number
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param lock_num Spinlock ID
|
||||
* \return The spinlock instance
|
||||
*/
|
||||
__force_inline static spin_lock_t *spin_lock_instance(uint lock_num) {
|
||||
invalid_params_if(SYNC, lock_num >= NUM_SPIN_LOCKS);
|
||||
return (spin_lock_t *) (SIO_BASE + SIO_SPINLOCK0_OFFSET + lock_num * 4);
|
||||
}
|
||||
|
||||
/*! \brief Get HW Spinlock number from instance
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param lock The Spinlock instance
|
||||
* \return The Spinlock ID
|
||||
*/
|
||||
__force_inline static uint spin_lock_get_num(spin_lock_t *lock) {
|
||||
invalid_params_if(SYNC, (uint) lock < SIO_BASE + SIO_SPINLOCK0_OFFSET ||
|
||||
(uint) lock >= NUM_SPIN_LOCKS * sizeof(spin_lock_t) + SIO_BASE + SIO_SPINLOCK0_OFFSET ||
|
||||
((uint) lock - SIO_BASE + SIO_SPINLOCK0_OFFSET) % sizeof(spin_lock_t) != 0);
|
||||
return (uint) (lock - (spin_lock_t *) (SIO_BASE + SIO_SPINLOCK0_OFFSET));
|
||||
}
|
||||
|
||||
/*! \brief Acquire a spin lock without disabling interrupts (hence unsafe)
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param lock Spinlock instance
|
||||
*/
|
||||
__force_inline static void spin_lock_unsafe_blocking(spin_lock_t *lock) {
|
||||
// Note we don't do a wfe or anything, because by convention these spin_locks are VERY SHORT LIVED and NEVER BLOCK and run
|
||||
// with INTERRUPTS disabled (to ensure that)... therefore nothing on our core could be blocking us, so we just need to wait on another core
|
||||
// anyway which should be finished soon
|
||||
while (__builtin_expect(!*lock, 0));
|
||||
__mem_fence_acquire();
|
||||
}
|
||||
|
||||
/*! \brief Release a spin lock without re-enabling interrupts
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param lock Spinlock instance
|
||||
*/
|
||||
__force_inline static void spin_unlock_unsafe(spin_lock_t *lock) {
|
||||
__mem_fence_release();
|
||||
*lock = 0;
|
||||
}
|
||||
|
||||
/*! \brief Acquire a spin lock safely
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* This function will disable interrupts prior to acquiring the spinlock
|
||||
*
|
||||
* \param lock Spinlock instance
|
||||
* \return interrupt status to be used when unlocking, to restore to original state
|
||||
*/
|
||||
__force_inline static uint32_t spin_lock_blocking(spin_lock_t *lock) {
|
||||
uint32_t save = save_and_disable_interrupts();
|
||||
spin_lock_unsafe_blocking(lock);
|
||||
return save;
|
||||
}
|
||||
|
||||
/*! \brief Check to see if a spinlock is currently acquired elsewhere.
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param lock Spinlock instance
|
||||
*/
|
||||
inline static bool is_spin_locked(spin_lock_t *lock) {
|
||||
check_hw_size(spin_lock_t, 4);
|
||||
uint lock_num = spin_lock_get_num(lock);
|
||||
return 0 != (*(io_ro_32 *) (SIO_BASE + SIO_SPINLOCK_ST_OFFSET) & (1u << lock_num));
|
||||
}
|
||||
|
||||
/*! \brief Release a spin lock safely
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* This function will re-enable interrupts according to the parameters.
|
||||
*
|
||||
* \param lock Spinlock instance
|
||||
* \param saved_irq Return value from the \ref spin_lock_blocking() function.
|
||||
* \return interrupt status to be used when unlocking, to restore to original state
|
||||
*
|
||||
* \sa spin_lock_blocking()
|
||||
*/
|
||||
__force_inline static void spin_unlock(spin_lock_t *lock, uint32_t saved_irq) {
|
||||
spin_unlock_unsafe(lock);
|
||||
restore_interrupts(saved_irq);
|
||||
}
|
||||
|
||||
/*! \brief Get the current core number
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \return The core number the call was made from
|
||||
*/
|
||||
__force_inline static uint get_core_num(void) {
|
||||
return (*(uint32_t *) (SIO_BASE + SIO_CPUID_OFFSET));
|
||||
}
|
||||
|
||||
/*! \brief Initialise a spin lock
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* The spin lock is initially unlocked
|
||||
*
|
||||
* \param lock_num The spin lock number
|
||||
* \return The spin lock instance
|
||||
*/
|
||||
spin_lock_t *spin_lock_init(uint lock_num);
|
||||
|
||||
/*! \brief Release all spin locks
|
||||
* \ingroup hardware_sync
|
||||
*/
|
||||
void spin_locks_reset(void);
|
||||
|
||||
/*! \brief Return a spin lock number from the _striped_ range
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* Returns a spin lock number in the range PICO_SPINLOCK_ID_STRIPED_FIRST to PICO_SPINLOCK_ID_STRIPED_LAST
|
||||
* in a round robin fashion. This does not grant the caller exclusive access to the spin lock, so the caller
|
||||
* must:
|
||||
*
|
||||
* -# Abide (with other callers) by the contract of only holding this spin lock briefly (and with IRQs disabled - the default via \ref spin_lock_blocking()),
|
||||
* and not whilst holding other spin locks.
|
||||
* -# Be OK with any contention caused by the - brief due to the above requirement - contention with other possible users of the spin lock.
|
||||
*
|
||||
* \return lock_num a spin lock number the caller may use (non exclusively)
|
||||
* \see PICO_SPINLOCK_ID_STRIPED_FIRST
|
||||
* \see PICO_SPINLOCK_ID_STRIPED_LAST
|
||||
*/
|
||||
uint next_striped_spin_lock_num(void);
|
||||
|
||||
/*! \brief Mark a spin lock as used
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* Method for cooperative claiming of hardware. Will cause a panic if the spin lock
|
||||
* is already claimed. Use of this method by libraries detects accidental
|
||||
* configurations that would fail in unpredictable ways.
|
||||
*
|
||||
* \param lock_num the spin lock number
|
||||
*/
|
||||
void spin_lock_claim(uint lock_num);
|
||||
|
||||
/*! \brief Mark multiple spin locks as used
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* Method for cooperative claiming of hardware. Will cause a panic if any of the spin locks
|
||||
* are already claimed. Use of this method by libraries detects accidental
|
||||
* configurations that would fail in unpredictable ways.
|
||||
*
|
||||
* \param lock_num_mask Bitfield of all required spin locks to claim (bit 0 == spin lock 0, bit 1 == spin lock 1 etc)
|
||||
*/
|
||||
void spin_lock_claim_mask(uint32_t lock_num_mask);
|
||||
|
||||
/*! \brief Mark a spin lock as no longer used
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* Method for cooperative claiming of hardware.
|
||||
*
|
||||
* \param lock_num the spin lock number to release
|
||||
*/
|
||||
void spin_lock_unclaim(uint lock_num);
|
||||
|
||||
/*! \brief Claim a free spin lock
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param required if true the function will panic if none are available
|
||||
* \return the spin lock number or -1 if required was false, and none were free
|
||||
*/
|
||||
int spin_lock_claim_unused(bool required);
|
||||
|
||||
/*! \brief Determine if a spin lock is claimed
|
||||
* \ingroup hardware_sync
|
||||
*
|
||||
* \param lock_num the spin lock number
|
||||
* \return true if claimed, false otherwise
|
||||
* \see spin_lock_claim
|
||||
* \see spin_lock_claim_mask
|
||||
*/
|
||||
bool spin_lock_is_claimed(uint lock_num);
|
||||
|
||||
#define remove_volatile_cast(t, x) ({__mem_fence_acquire(); (t)(x); })
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,196 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _PICO_PLATFORM_H_
|
||||
#define _PICO_PLATFORM_H_
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
#include "pico/types.h"
|
||||
#include "hardware/platform_defs.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** \file platform.h
|
||||
* \defgroup pico_platform pico_platform
|
||||
* Compiler definitions for the selected PICO_PLATFORM
|
||||
*/
|
||||
|
||||
#define __isr
|
||||
|
||||
// Section naming macros
|
||||
#define __after_data(group) __attribute__((section(".after_data." group)))
|
||||
#define __not_in_flash(group) __attribute__((section(".time_critical." group)))
|
||||
#define __scratch_x(group) __attribute__((section(".scratch_x." group)))
|
||||
#define __scratch_y(group) __attribute__((section(".scratch_y." group)))
|
||||
#define __uninitialized_ram(group) __attribute__((section(".uninitialized_ram." #group))) group
|
||||
// For use with PICO_COPY_TO_RAM:
|
||||
#define __in_flash(group) __attribute__((section(".flashdata" group)))
|
||||
|
||||
/**
|
||||
* Decorates a function name, such that the function will execute from RAM (assuming it is not inlined
|
||||
* into a flash function by the compiler)
|
||||
*/
|
||||
#define __not_in_flash_func(func_name) __not_in_flash(__STRING(func_name)) func_name
|
||||
/**
|
||||
* Historical synonym for __not_in_flash_func()
|
||||
*/
|
||||
#define __time_critical_func(func_name) __not_in_flash_func(func_name)
|
||||
|
||||
/**
|
||||
* Decorates a function name, such that the function will execute from RAM, explicitly marking it as
|
||||
* noinline to prevent it being inlined into a flash function by the compiler
|
||||
*/
|
||||
#define __no_inline_not_in_flash_func(func_name) __noinline __not_in_flash_func(func_name)
|
||||
|
||||
#if !defined(__IS_COMPILER_ARM_COMPILER_6__)
|
||||
#define __packed_aligned __packed __aligned(4)
|
||||
|
||||
|
||||
#if defined(__GNUC__) && __GNUC__ < 7
|
||||
#define __force_inline inline __always_inline
|
||||
#else
|
||||
#define __force_inline __always_inline
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef count_of
|
||||
#define count_of(a) (sizeof(a)/sizeof((a)[0]))
|
||||
#endif
|
||||
|
||||
#ifndef MAX
|
||||
#define MAX(a, b) ((a)>(b)?(a):(b))
|
||||
#endif
|
||||
|
||||
#ifndef MIN
|
||||
#define MIN(a, b) ((b)>(a)?(a):(b))
|
||||
#endif
|
||||
|
||||
#ifndef offsetof
|
||||
#define offsetof(__type, __member) (uintptr_t)(&(((__type *)0)->__member))
|
||||
#endif
|
||||
|
||||
#if !defined(__IS_COMPILER_ARM_COMPILER_6__)
|
||||
/**
|
||||
* Execute a breakpoint instruction
|
||||
*/
|
||||
static inline void __breakpoint(void) {
|
||||
__asm__("bkpt #0");
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Ensure that the compiler does not move memory access across this method call
|
||||
*/
|
||||
__force_inline static void __compiler_memory_barrier(void) {
|
||||
__asm__ volatile ("" : : : "memory");
|
||||
}
|
||||
|
||||
// return a 32 bit handle for a raw ptr; DMA chaining for example embeds pointers in 32 bit values
|
||||
// which of course does not work if we're running the code natively on a 64 bit platforms. Therefore
|
||||
// we provide this macro which allows that code to provide a 64->32 bit mapping in host mode
|
||||
#define host_safe_hw_ptr(x) ((uintptr_t)(x))
|
||||
|
||||
/**
|
||||
* Panic (see panic()) with the message "Unsupported".
|
||||
*/
|
||||
void __attribute__((noreturn)) panic_unsupported(void);
|
||||
|
||||
/**
|
||||
* Panic with a message. An attempt is made to output the message to all registered STDOUT drivers
|
||||
* after which this method executes a BKPT instruction.
|
||||
*
|
||||
* @param fmt format string (printf-like)
|
||||
* @param ... printf-like arguments
|
||||
*/
|
||||
void __attribute__((noreturn)) panic(const char *fmt, ...);
|
||||
|
||||
// PICO_CONFIG: PICO_NO_FPGA_CHECK, Remove the FPGA platform check for small code size reduction, type=bool, default=0, advanced=true, group=pico_runtime
|
||||
#ifndef PICO_NO_FPGA_CHECK
|
||||
#define PICO_NO_FPGA_CHECK 0
|
||||
#endif
|
||||
|
||||
#if PICO_NO_FPGA_CHECK
|
||||
static inline bool running_on_fpga(void) {return false;}
|
||||
#else
|
||||
bool running_on_fpga(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @return the RP2040 chip revision number
|
||||
*/
|
||||
uint8_t rp2040_chip_version(void);
|
||||
|
||||
/**
|
||||
* @return the RP2040 rom version number
|
||||
*/
|
||||
static inline uint8_t rp2040_rom_version(void) {
|
||||
return *(uint8_t*)0x13;
|
||||
}
|
||||
|
||||
/**
|
||||
* Empty function intended to be called by any tight hardware polling loop. using this ubiquitously
|
||||
* makes it much easier to find tight loops, but also in the future \#ifdef-ed support for lockup
|
||||
* debugging might be added
|
||||
*/
|
||||
static inline void tight_loop_contents(void) {}
|
||||
|
||||
/**
|
||||
* Helper macro for making chain DMA code portable to PICO_PLATFORM=host. The problem here is
|
||||
* that embedded pointers in the data are only 32 bit, which is a problem if the host
|
||||
* system is 64 bit. This macro is zero cost on the actual device, but in host mode
|
||||
* it provides a 64->32 bit mapping
|
||||
*/
|
||||
#define native_safe_hw_ptr(x) ((uintptr_t)(x))
|
||||
|
||||
/**
|
||||
* Multiplies a by b using multiply instruction using the ARM mul instruction regardless of values;
|
||||
* i.e. this is a 1 cycle operation.
|
||||
*
|
||||
* \param a the first operand
|
||||
* \param b the second operand
|
||||
* \return a * b
|
||||
*/
|
||||
__force_inline static int32_t __mul_instruction(int32_t a, int32_t b) {
|
||||
asm ("mul %0, %1" : "+l" (a) : "l" (b) : );
|
||||
return a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Efficiently Multiplies value a by possibly constant value b.
|
||||
* If b is known to be constant and not zero or a power of 2, then a mul instruction is used rather than gcc's default
|
||||
* which is often a slow combination of shifts and adds
|
||||
*
|
||||
* \param a the first operand
|
||||
* \param b the second operand
|
||||
* \return a * b
|
||||
*/
|
||||
#define __fast_mul(a, b) __builtin_choose_expr(__builtin_constant_p(b) && !__builtin_constant_p(a), \
|
||||
(__builtin_popcount(b) >= 2 ? __mul_instruction(a,b) : (a)*(b)), \
|
||||
(a)*(b))
|
||||
|
||||
|
||||
#if defined(__IS_COMPILER_ARM_COMPILER_6__)
|
||||
# define WRAPPER_FUNC(__FUNC) $Sub$$##__FUNC
|
||||
# define REAL_FUNC(__FUNC) $Super$$## __FUNC
|
||||
#else
|
||||
# define WRAPPER_FUNC(x) __wrap_ ## x
|
||||
# define REAL_FUNC(x) __real_ ## x
|
||||
#endif
|
||||
#define __check_type_compatible(type_a, type_b) static_assert(__builtin_types_compatible_p(type_a, type_b), __STRING(type_a) " is not compatible with " __STRING(type_b));
|
||||
|
||||
/**
|
||||
* Get the current exception level on this core
|
||||
* \return the exception number if the CPU is handling an exception, or 0 otherwise
|
||||
*/
|
||||
uint __get_current_exception(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
@ -1,8 +0,0 @@
|
||||
// AUTOGENERATED FROM PICO_CONFIG_HEADER_FILES and then PICO_<PLATFORM>_CONFIG_HEADER_FILES
|
||||
// DO NOT EDIT!
|
||||
|
||||
// based on PICO_CONFIG_HEADER_FILES:
|
||||
#include "..\..\..\..\..\pico-sdk\src\boards\include\boards\pico.h"
|
||||
|
||||
// based on PICO_RP2040_CONFIG_HEADER_FILES:
|
||||
#include "..\..\..\..\..\pico-sdk\src\rp2_common\cmsis\include\cmsis\rename_exceptions.h"
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// ---------------------------------------
|
||||
// THIS FILE IS AUTOGENERATED; DO NOT EDIT
|
||||
// ---------------------------------------
|
||||
|
||||
#ifndef _PICO_VERSION_H
|
||||
#define _PICO_VERSION_H
|
||||
|
||||
#define PICO_SDK_VERSION_MAJOR 1
|
||||
#define PICO_SDK_VERSION_MINOR 2
|
||||
#define PICO_SDK_VERSION_REVISION 0
|
||||
#define PICO_SDK_VERSION_STRING "1.2.0"
|
||||
|
||||
#endif
|
@ -1,304 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
#include "pico.h"
|
||||
|
||||
#include "hardware/regs/m0plus.h"
|
||||
#include "hardware/regs/resets.h"
|
||||
#include "hardware/structs/mpu.h"
|
||||
#include "hardware/structs/scb.h"
|
||||
#include "hardware/structs/padsbank0.h"
|
||||
|
||||
#include "hardware/clocks.h"
|
||||
#include "hardware/irq.h"
|
||||
#include "hardware/resets.h"
|
||||
|
||||
#include "pico/mutex.h"
|
||||
#include "pico/time.h"
|
||||
|
||||
#if LIB_PICO_PRINTF_PICO
|
||||
#include "pico/printf.h"
|
||||
#else
|
||||
#define weak_raw_printf printf
|
||||
#define weak_raw_vprintf vprintf
|
||||
#endif
|
||||
|
||||
#if PICO_ENTER_USB_BOOT_ON_EXIT
|
||||
#include "pico/bootrom.h"
|
||||
#endif
|
||||
|
||||
#if defined(__IS_COMPILER_ARM_COMPILER_6__)
|
||||
# undef __breakpoint
|
||||
# define __breakpoint(...) __BKPT(0)
|
||||
#endif
|
||||
|
||||
|
||||
extern char __StackLimit; /* Set by linker. */
|
||||
|
||||
uint32_t __attribute__((section(".ram_vector_table"))) ram_vector_table[48];
|
||||
|
||||
// this is called for each thread since they have their own MPU
|
||||
void runtime_install_stack_guard(void *stack_bottom) {
|
||||
// this is called b4 runtime_init is complete, so beware printf or assert
|
||||
|
||||
// make sure no one is using the MPU yet
|
||||
if (mpu_hw->ctrl) {
|
||||
// Note that it would be tempting to change this to a panic, but it happens so early, printing is not a good idea
|
||||
__breakpoint();
|
||||
}
|
||||
|
||||
uintptr_t addr = (uintptr_t) stack_bottom;
|
||||
// the minimum we can protect is 32 bytes on a 32 byte boundary, so round up which will
|
||||
// just shorten the valid stack range a tad
|
||||
addr = (addr + 31u) & ~31u;
|
||||
|
||||
// mask is 1 bit per 32 bytes of the 256 byte range... clear the bit for the segment we want
|
||||
uint32_t subregion_select = 0xffu ^ (1u << ((addr >> 5u) & 7u));
|
||||
mpu_hw->ctrl = 5; // enable mpu with background default map
|
||||
mpu_hw->rbar = (addr & (uint)~0xff) | 0x8 | 0;
|
||||
mpu_hw->rasr = 1 // enable region
|
||||
| (0x7 << 1) // size 2^(7 + 1) = 256
|
||||
| (subregion_select << 8)
|
||||
| 0x10000000; // XN = disable instruction fetch; no other bits means no permissions
|
||||
}
|
||||
|
||||
void runtime_init(void) {
|
||||
// Reset all peripherals to put system into a known state,
|
||||
// - except for QSPI pads and the XIP IO bank, as this is fatal if running from flash
|
||||
// - and the PLLs, as this is fatal if clock muxing has not been reset on this boot
|
||||
// - and USB, syscfg, as this disturbs USB-to-SWD on core 1
|
||||
reset_block(~(
|
||||
RESETS_RESET_IO_QSPI_BITS |
|
||||
RESETS_RESET_PADS_QSPI_BITS |
|
||||
RESETS_RESET_PLL_USB_BITS |
|
||||
RESETS_RESET_USBCTRL_BITS |
|
||||
RESETS_RESET_SYSCFG_BITS |
|
||||
RESETS_RESET_PLL_SYS_BITS
|
||||
));
|
||||
|
||||
// Remove reset from peripherals which are clocked only by clk_sys and
|
||||
// clk_ref. Other peripherals stay in reset until we've configured clocks.
|
||||
unreset_block_wait(RESETS_RESET_BITS & ~(
|
||||
RESETS_RESET_ADC_BITS |
|
||||
RESETS_RESET_RTC_BITS |
|
||||
RESETS_RESET_SPI0_BITS |
|
||||
RESETS_RESET_SPI1_BITS |
|
||||
RESETS_RESET_UART0_BITS |
|
||||
RESETS_RESET_UART1_BITS |
|
||||
RESETS_RESET_USBCTRL_BITS
|
||||
));
|
||||
|
||||
#if defined(__IS_COMPILER_GCC__)
|
||||
// pre-init runs really early since we need it even for memcpy and divide!
|
||||
// (basically anything in aeabi that uses bootrom)
|
||||
|
||||
// Start and end points of the constructor list,
|
||||
// defined by the linker script.
|
||||
extern void (*__preinit_array_start)(void);
|
||||
extern void (*__preinit_array_end)(void);
|
||||
|
||||
// Call each function in the list.
|
||||
// We have to take the address of the symbols, as __preinit_array_start *is*
|
||||
// the first function pointer, not the address of it.
|
||||
for (void (**p)(void) = &__preinit_array_start; p < &__preinit_array_end; ++p) {
|
||||
(*p)();
|
||||
}
|
||||
#endif
|
||||
|
||||
// After calling preinit we have enough runtime to do the exciting maths
|
||||
// in clocks_init
|
||||
clocks_init();
|
||||
|
||||
// Peripheral clocks should now all be running
|
||||
unreset_block_wait(RESETS_RESET_BITS);
|
||||
|
||||
#if !PICO_IE_26_29_UNCHANGED_ON_RESET
|
||||
// after resetting BANK0 we should disable IE on 26-29
|
||||
hw_clear_alias(padsbank0_hw)->io[26] = hw_clear_alias(padsbank0_hw)->io[27] =
|
||||
hw_clear_alias(padsbank0_hw)->io[28] = hw_clear_alias(padsbank0_hw)->io[29] = PADS_BANK0_GPIO0_IE_BITS;
|
||||
#endif
|
||||
|
||||
// this is an array of either mutex_t or recursive_mutex_t (i.e. not necessarily the same size)
|
||||
// however each starts with a lock_core_t, and the spin_lock is initialized to address 1 for a recursive
|
||||
// spinlock and 0 for a regular one.
|
||||
|
||||
static_assert(!(sizeof(mutex_t)&3), "");
|
||||
static_assert(!(sizeof(recursive_mutex_t)&3), "");
|
||||
static_assert(!offsetof(mutex_t, core), "");
|
||||
static_assert(!offsetof(recursive_mutex_t, core), "");
|
||||
extern lock_core_t __mutex_array_start;
|
||||
extern lock_core_t __mutex_array_end;
|
||||
|
||||
for (lock_core_t *l = &__mutex_array_start; l < &__mutex_array_end; ) {
|
||||
if (l->spin_lock) {
|
||||
assert(1 == (uintptr_t)l->spin_lock); // indicator for a recursive mutex
|
||||
recursive_mutex_t *rm = (recursive_mutex_t *)l;
|
||||
recursive_mutex_init(rm);
|
||||
l = &rm[1].core; // next
|
||||
} else {
|
||||
mutex_t *m = (mutex_t *)l;
|
||||
mutex_init(m);
|
||||
l = &m[1].core; // next
|
||||
}
|
||||
}
|
||||
|
||||
#if !(PICO_NO_RAM_VECTOR_TABLE || PICO_NO_FLASH)
|
||||
__builtin_memcpy(ram_vector_table, (uint32_t *) scb_hw->vtor, sizeof(ram_vector_table));
|
||||
scb_hw->vtor = (uintptr_t) ram_vector_table;
|
||||
#endif
|
||||
|
||||
#ifndef NDEBUG
|
||||
if (__get_current_exception()) {
|
||||
// crap; started in exception handler
|
||||
__asm ("bkpt #0");
|
||||
}
|
||||
#endif
|
||||
|
||||
#if PICO_USE_STACK_GUARDS
|
||||
// install core0 stack guard
|
||||
extern char __StackBottom;
|
||||
runtime_install_stack_guard(&__StackBottom);
|
||||
#endif
|
||||
|
||||
spin_locks_reset();
|
||||
irq_init_priorities();
|
||||
alarm_pool_init_default();
|
||||
|
||||
#if defined(__IS_COMPILER_GCC__)
|
||||
// Start and end points of the constructor list,
|
||||
// defined by the linker script.
|
||||
extern void (*__init_array_start)(void);
|
||||
extern void (*__init_array_end)(void);
|
||||
|
||||
// Call each function in the list.
|
||||
// We have to take the address of the symbols, as __init_array_start *is*
|
||||
// the first function pointer, not the address of it.
|
||||
for (void (**p)(void) = &__init_array_start; p < &__init_array_end; ++p) {
|
||||
(*p)();
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void _exit(__unused int status) {
|
||||
#if PICO_ENTER_USB_BOOT_ON_EXIT
|
||||
reset_usb_boot(0,0);
|
||||
#else
|
||||
while (1) {
|
||||
__breakpoint();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(__IS_COMPILER_GCC__)
|
||||
void *_sbrk(int incr) {
|
||||
extern char end; /* Set by linker. */
|
||||
static char *heap_end;
|
||||
char *prev_heap_end;
|
||||
|
||||
if (heap_end == 0)
|
||||
heap_end = &end;
|
||||
|
||||
prev_heap_end = heap_end;
|
||||
char *next_heap_end = heap_end + incr;
|
||||
|
||||
if (__builtin_expect(next_heap_end > (&__StackLimit), false)) {
|
||||
#if PICO_USE_OPTIMISTIC_SBRK
|
||||
if (heap_end == &__StackLimit) {
|
||||
// errno = ENOMEM;
|
||||
return (char *) -1;
|
||||
}
|
||||
next_heap_end = &__StackLimit;
|
||||
#else
|
||||
return (char *) -1;
|
||||
#endif
|
||||
}
|
||||
|
||||
heap_end = next_heap_end;
|
||||
return (void *) prev_heap_end;
|
||||
}
|
||||
|
||||
// exit is not useful... no desire to pull in __call_exitprocs
|
||||
void exit(int status) {
|
||||
_exit(status);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(__IS_COMPILER_GCC__)
|
||||
// incorrect warning from GCC 6
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wsuggest-attribute=format"
|
||||
#endif
|
||||
void __assert_func(const char *file, int line, const char *func, const char *failedexpr) {
|
||||
weak_raw_printf("assertion \"%s\" failed: file \"%s\", line %d%s%s\n",
|
||||
failedexpr, file, line, func ? ", function: " : "",
|
||||
func ? func : "");
|
||||
|
||||
_exit(1);
|
||||
}
|
||||
|
||||
#if defined(__IS_COMPILER_GCC__)
|
||||
#pragma GCC diagnostic pop
|
||||
#endif
|
||||
void __attribute__((noreturn)) panic_unsupported() {
|
||||
panic("not supported");
|
||||
}
|
||||
|
||||
// PICO_CONFIG: PICO_PANIC_FUNCTION, Name of a function to use in place of the stock panic function or empty string to simply breakpoint on panic, group=pico_runtime
|
||||
// note the default is not "panic" it is undefined
|
||||
#ifdef PICO_PANIC_FUNCTION
|
||||
#define PICO_PANIC_FUNCTION_EMPTY (__CONCAT(PICO_PANIC_FUNCTION, 1) == 1)
|
||||
#if !PICO_PANIC_FUNCTION_EMPTY
|
||||
extern void __attribute__((noreturn)) __printflike(1, 0) PICO_PANIC_FUNCTION(__unused const char *fmt, ...);
|
||||
#endif
|
||||
// Use a forwarding method here as it is a little simpler than renaming the symbol as it is used from assembler
|
||||
void __attribute__((naked, noreturn)) __printflike(1, 0) panic(__unused const char *fmt, ...) {
|
||||
// if you get an undefined reference here, you didn't define your PICO_PANIC_FUNCTION!
|
||||
__asm (
|
||||
"push {lr}\n"
|
||||
#if !PICO_PANIC_FUNCTION_EMPTY
|
||||
"bl " __XSTRING(PICO_PANIC_FUNCTION) "\n"
|
||||
#endif
|
||||
"bkpt #0\n"
|
||||
"1: b 1b\n" // loop for ever as we are no return
|
||||
:
|
||||
:
|
||||
:
|
||||
);
|
||||
}
|
||||
#else
|
||||
// todo consider making this try harder to output if we panic early
|
||||
// right now, print mutex may be uninitialised (in which case it deadlocks - although after printing "PANIC")
|
||||
// more importantly there may be no stdout/UART initialized yet
|
||||
// todo we may want to think about where we print panic messages to; writing to USB appears to work
|
||||
// though it doesn't seem like we can expect it to... fine for now
|
||||
void __attribute__((noreturn)) __printflike(1, 0) panic(const char *fmt, ...) {
|
||||
puts("\n*** PANIC ***\n");
|
||||
if (fmt) {
|
||||
#if LIB_PICO_PRINTF_NONE
|
||||
puts(fmt);
|
||||
#else
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
#if PICO_PRINTF_ALWAYS_INCLUDED
|
||||
vprintf(fmt, args);
|
||||
#else
|
||||
weak_raw_vprintf(fmt, args);
|
||||
#endif
|
||||
va_end(args);
|
||||
puts("\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
_exit(1);
|
||||
}
|
||||
#endif
|
||||
|
||||
void hard_assertion_failure(void) {
|
||||
panic("Hard assert");
|
||||
}
|
@ -1,312 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "pico.h"
|
||||
#include "pico/mutex.h"
|
||||
#if LIB_PICO_PRINTF_PICO
|
||||
#include "pico/printf.h"
|
||||
#endif
|
||||
#include "pico/stdio.h"
|
||||
#include "pico/stdio/driver.h"
|
||||
#include "pico/time.h"
|
||||
|
||||
#if LIB_PICO_STDIO_UART
|
||||
#include "pico/stdio_uart.h"
|
||||
#endif
|
||||
|
||||
#if LIB_PICO_STDIO_USB
|
||||
#include "pico/stdio_usb.h"
|
||||
#endif
|
||||
|
||||
#if LIB_PICO_STDIO_SEMIHOSTING
|
||||
#include "pico/stdio_semihosting.h"
|
||||
#endif
|
||||
|
||||
static stdio_driver_t *drivers;
|
||||
static stdio_driver_t *filter;
|
||||
|
||||
#if PICO_STDOUT_MUTEX
|
||||
auto_init_mutex(print_mutex);
|
||||
|
||||
bool stdout_serialize_begin(void) {
|
||||
lock_owner_id_t caller = lock_get_caller_owner_id();
|
||||
// not using lock_owner_id_t to avoid backwards incompatibility change to mutex_try_enter API
|
||||
static_assert(sizeof(lock_owner_id_t) <= 4, "");
|
||||
uint32_t owner;
|
||||
if (!mutex_try_enter(&print_mutex, &owner)) {
|
||||
if (owner == (uint32_t)caller) {
|
||||
return false;
|
||||
}
|
||||
// we are not a nested call, so lets wait
|
||||
mutex_enter_blocking(&print_mutex);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void stdout_serialize_end(void) {
|
||||
mutex_exit(&print_mutex);
|
||||
}
|
||||
|
||||
#else
|
||||
static bool stdout_serialize_begin(void) {
|
||||
return true;
|
||||
}
|
||||
static void stdout_serialize_end(void) {
|
||||
}
|
||||
#endif
|
||||
static void stdio_out_chars_no_crlf(stdio_driver_t *driver, const char *s, int len) {
|
||||
driver->out_chars(s, len);
|
||||
}
|
||||
|
||||
static void stdio_out_chars_crlf(stdio_driver_t *driver, const char *s, int len) {
|
||||
#if PICO_STDIO_ENABLE_CRLF_SUPPORT
|
||||
if (!driver->crlf_enabled) {
|
||||
driver->out_chars(s, len);
|
||||
return;
|
||||
}
|
||||
int first_of_chunk = 0;
|
||||
static const char crlf_str[] = {'\r', '\n'};
|
||||
for (int i = 0; i < len; i++) {
|
||||
bool prev_char_was_cr = i > 0 ? s[i - 1] == '\r' : driver->last_ended_with_cr;
|
||||
if (s[i] == '\n' && !prev_char_was_cr) {
|
||||
if (i > first_of_chunk) {
|
||||
driver->out_chars(&s[first_of_chunk], i - first_of_chunk);
|
||||
}
|
||||
driver->out_chars(crlf_str, 2);
|
||||
first_of_chunk = i + 1;
|
||||
}
|
||||
}
|
||||
if (first_of_chunk < len) {
|
||||
driver->out_chars(&s[first_of_chunk], len - first_of_chunk);
|
||||
}
|
||||
if (len > 0) {
|
||||
driver->last_ended_with_cr = s[len - 1] == '\r';
|
||||
}
|
||||
#else
|
||||
driver->out_chars(s, len);
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool stdio_put_string(const char *s, int len, bool newline, bool no_cr) {
|
||||
bool serialized = stdout_serialize_begin();
|
||||
if (!serialized) {
|
||||
#if PICO_STDIO_IGNORE_NESTED_STDOUT
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
if (len == -1) len = (int)strlen(s);
|
||||
void (*out_func)(stdio_driver_t *, const char *, int) = no_cr ? stdio_out_chars_no_crlf : stdio_out_chars_crlf;
|
||||
for (stdio_driver_t *driver = drivers; driver; driver = driver->next) {
|
||||
if (!driver->out_chars) continue;
|
||||
if (filter && filter != driver) continue;
|
||||
out_func(driver, s, len);
|
||||
if (newline) {
|
||||
const char c = '\n';
|
||||
out_func(driver, &c, 1);
|
||||
}
|
||||
}
|
||||
if (serialized) {
|
||||
stdout_serialize_end();
|
||||
}
|
||||
return len;
|
||||
}
|
||||
|
||||
static int stdio_get_until(char *buf, int len, absolute_time_t until) {
|
||||
do {
|
||||
// todo round robin might be nice on each call, but then again hopefully
|
||||
// no source will starve the others
|
||||
for (stdio_driver_t *driver = drivers; driver; driver = driver->next) {
|
||||
if (filter && filter != driver) continue;
|
||||
if (driver->in_chars) {
|
||||
int read = driver->in_chars(buf, len);
|
||||
if (read > 0) {
|
||||
return read;
|
||||
}
|
||||
}
|
||||
}
|
||||
// we sleep here in case the in_chars methods acquire mutexes or disable IRQs and
|
||||
// potentially starve out what they are waiting on (have seen this with USB)
|
||||
busy_wait_us(1);
|
||||
} while (!time_reached(until));
|
||||
return PICO_ERROR_TIMEOUT;
|
||||
}
|
||||
|
||||
#if __IS_COMPILER_GCC__
|
||||
int WRAPPER_FUNC(putchar)(int c) {
|
||||
char cc = (char)c;
|
||||
stdio_put_string(&cc, 1, false, false);
|
||||
return c;
|
||||
}
|
||||
|
||||
int WRAPPER_FUNC(puts)(const char *s) {
|
||||
int len = (int)strlen(s);
|
||||
stdio_put_string(s, len, true, false);
|
||||
stdio_flush();
|
||||
return len;
|
||||
}
|
||||
#endif
|
||||
|
||||
int putchar_raw(int c) {
|
||||
char cc = (char)c;
|
||||
stdio_put_string(&cc, 1, false, true);
|
||||
return c;
|
||||
}
|
||||
|
||||
int puts_raw(const char *s) {
|
||||
int len = (int)strlen(s);
|
||||
stdio_put_string(s, len, true, true);
|
||||
stdio_flush();
|
||||
return len;
|
||||
}
|
||||
|
||||
int _read(int handle, char *buffer, int length) {
|
||||
if (handle == 0) {
|
||||
return stdio_get_until(buffer, length, at_the_end_of_time);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int _write(int handle, char *buffer, int length) {
|
||||
if (handle == 1) {
|
||||
stdio_put_string(buffer, length, false, false);
|
||||
return length;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
void stdio_set_driver_enabled(stdio_driver_t *driver, bool enable) {
|
||||
stdio_driver_t *prev = drivers;
|
||||
for (stdio_driver_t *d = drivers; d; d = d->next) {
|
||||
if (d == driver) {
|
||||
if (!enable) {
|
||||
prev->next = d->next;
|
||||
driver->next = NULL;
|
||||
}
|
||||
return;
|
||||
}
|
||||
prev = d;
|
||||
}
|
||||
if (enable) {
|
||||
if (prev) prev->next = driver;
|
||||
else drivers = driver;
|
||||
}
|
||||
}
|
||||
|
||||
void stdio_flush() {
|
||||
for (stdio_driver_t *d = drivers; d; d = d->next) {
|
||||
if (d->out_flush) d->out_flush();
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct stdio_stack_buffer {
|
||||
int used;
|
||||
char buf[PICO_STDIO_STACK_BUFFER_SIZE];
|
||||
} stdio_stack_buffer_t;
|
||||
|
||||
static void stdio_stack_buffer_flush(stdio_stack_buffer_t *buffer) {
|
||||
if (buffer->used) {
|
||||
for (stdio_driver_t *d = drivers; d; d = d->next) {
|
||||
if (!d->out_chars) continue;
|
||||
if (filter && filter != d) continue;
|
||||
stdio_out_chars_crlf(d, buffer->buf, buffer->used);
|
||||
}
|
||||
buffer->used = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void stdio_buffered_printer(char c, void *arg) {
|
||||
stdio_stack_buffer_t *buffer = (stdio_stack_buffer_t *)arg;
|
||||
if (buffer->used == PICO_STDIO_STACK_BUFFER_SIZE) {
|
||||
stdio_stack_buffer_flush(buffer);
|
||||
}
|
||||
buffer->buf[buffer->used++] = c;
|
||||
}
|
||||
|
||||
int WRAPPER_FUNC(vprintf)(const char *format, va_list va) {
|
||||
bool serialzed = stdout_serialize_begin();
|
||||
if (!serialzed) {
|
||||
#if PICO_STDIO_IGNORE_NESTED_STDOUT
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
int ret;
|
||||
#if LIB_PICO_PRINTF_PICO
|
||||
struct stdio_stack_buffer buffer = {.used = 0};
|
||||
ret = vfctprintf(stdio_buffered_printer, &buffer, format, va);
|
||||
stdio_stack_buffer_flush(&buffer);
|
||||
stdio_flush();
|
||||
#elif LIB_PICO_PRINTF_NONE
|
||||
extern void printf_none_assert();
|
||||
printf_none_assert();
|
||||
#else
|
||||
extern int REAL_FUNC(vprintf)(const char *format, va_list va);
|
||||
ret = REAL_FUNC(vprintf)(format, va);
|
||||
#endif
|
||||
if (serialzed) {
|
||||
stdout_serialize_end();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __printflike(1, 0) WRAPPER_FUNC(printf)(const char* format, ...)
|
||||
{
|
||||
va_list va;
|
||||
va_start(va, format);
|
||||
int ret = vprintf(format, va);
|
||||
va_end(va);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void stdio_init_all(void) {
|
||||
// todo add explicit custom, or registered although you can call stdio_enable_driver explicitly anyway
|
||||
// These are well known ones
|
||||
#if LIB_PICO_STDIO_UART
|
||||
stdio_uart_init();
|
||||
#endif
|
||||
|
||||
#if LIB_PICO_STDIO_SEMIHOSTING
|
||||
stdio_semihosting_init();
|
||||
#endif
|
||||
|
||||
#if LIB_PICO_STDIO_USB
|
||||
stdio_usb_init();
|
||||
#endif
|
||||
}
|
||||
|
||||
int WRAPPER_FUNC(getchar)(void) {
|
||||
char buf[1];
|
||||
int len = stdio_get_until(buf, 1, at_the_end_of_time);
|
||||
if (len < 0) return len;
|
||||
assert(len == 1);
|
||||
return (uint8_t)buf[0];
|
||||
}
|
||||
|
||||
int getchar_timeout_us(uint32_t timeout_us) {
|
||||
char buf[1];
|
||||
int rc = stdio_get_until(buf, sizeof(buf), make_timeout_time_us(timeout_us));
|
||||
if (rc < 0) return rc;
|
||||
assert(rc);
|
||||
return (uint8_t)buf[0];
|
||||
}
|
||||
|
||||
void stdio_filter_driver(stdio_driver_t *driver) {
|
||||
filter = driver;
|
||||
}
|
||||
|
||||
void stdio_set_translate_crlf(stdio_driver_t *driver, bool enabled) {
|
||||
#if PICO_STDIO_ENABLE_CRLF_SUPPORT
|
||||
if (enabled && !driver->crlf_enabled) {
|
||||
driver->last_ended_with_cr = false;
|
||||
}
|
||||
driver->crlf_enabled = enabled;
|
||||
#else
|
||||
panic_unsupported();
|
||||
#endif
|
||||
}
|
@ -1 +0,0 @@
|
||||
//! a fake header file
|
@ -1,24 +0,0 @@
|
||||
# pikascript in pico
|
||||
|
||||
This bsp is based on https://github.com/GorgonMeducer/Pico_Template.
|
||||
|
||||
and https://github.com/majbthrd/pico-debug
|
||||
|
||||
To see the [LICENSE](../../../../blob/master/bsp/pico/LECENSE.md)
|
||||
|
||||
And this bsp is an **MDK-keil** project.
|
||||
|
||||
## Usage
|
||||
1. Run and install the GorgonMeducer.perf_counter.1.7.6.pack
|
||||
|
||||
2. Boot the Pico with the BOOTSEL button pressed.
|
||||
|
||||
3. Drag and drop **pico-debug-gimmecache.uf2** to RPI-RP2 mass-storage driver in the explorer. It immediately reboots as a CMSIS-DAP adapter. Pico-debug loads as a RAM only .uf2 image, meaning that it is never written to flash and doesn't replace existing user code.
|
||||
|
||||
4. Open the MDK/mdk projcet.
|
||||
|
||||
5. Compile and Debug
|
||||
|
||||
6. The **printf** is connected to usart debug viewer.
|
||||
|
||||
![image](https://user-images.githubusercontent.com/88232613/148212737-4f4938fa-e895-4549-8901-01d3b594bb4e.png)
|
@ -1,219 +0,0 @@
|
||||
/****************************************************************************
|
||||
* Copyright 2021 Gorgon Meducer (Email:embedded_zhuoran@hotmail.com) *
|
||||
* *
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); *
|
||||
* you may not use this file except in compliance with the License. *
|
||||
* You may obtain a copy of the License at *
|
||||
* *
|
||||
* http://www.apache.org/licenses/LICENSE-2.0 *
|
||||
* *
|
||||
* Unless required by applicable law or agreed to in writing, software *
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, *
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
|
||||
* See the License for the specific language governing permissions and *
|
||||
* limitations under the License. *
|
||||
* *
|
||||
****************************************************************************/
|
||||
/*============================ INCLUDES ======================================*/
|
||||
#include "pico/stdlib.h"
|
||||
#include "perf_counter.h"
|
||||
#include "pikaScript.h"
|
||||
#include "PikaParser.h"
|
||||
#include "PikaVM.h"
|
||||
#include "dataStrs.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#include "RTE_Components.h"
|
||||
#if defined(RTE_Compiler_EventRecorder) && defined(USE_EVR_FOR_STDOUR)
|
||||
# include <EventRecorder.h>
|
||||
#endif
|
||||
|
||||
/*============================ MACROS ========================================*/
|
||||
#define TOP (0x1FFF)
|
||||
|
||||
/*============================ MACROFIED FUNCTIONS ===========================*/
|
||||
#define ABS(__N) ((__N) < 0 ? -(__N) : (__N))
|
||||
#define _BV(__N) ((uint32_t)1<<(__N))
|
||||
|
||||
|
||||
|
||||
/*============================ TYPES =========================================*/
|
||||
/*============================ GLOBAL VARIABLES ==============================*/
|
||||
/*============================ LOCAL VARIABLES ===============================*/
|
||||
/*============================ PROTOTYPES ====================================*/
|
||||
/*============================ IMPLEMENTATION ================================*/
|
||||
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/*! \brief set the 16-level led gradation
|
||||
*! \param hwLevel gradation
|
||||
*! \return none
|
||||
*/
|
||||
static void set_led_gradation(uint16_t hwLevel)
|
||||
{
|
||||
static uint16_t s_hwCounter = 0;
|
||||
|
||||
if (hwLevel >= s_hwCounter) {
|
||||
gpio_put(PICO_DEFAULT_LED_PIN, 1);
|
||||
} else {
|
||||
gpio_put(PICO_DEFAULT_LED_PIN, 0);
|
||||
}
|
||||
|
||||
s_hwCounter++;
|
||||
s_hwCounter &= TOP;
|
||||
}
|
||||
|
||||
static void breath_led(void)
|
||||
{
|
||||
static uint16_t s_hwCounter = 0;
|
||||
static int16_t s_nGray = (TOP >> 1);
|
||||
|
||||
s_hwCounter++;
|
||||
if (!(s_hwCounter & (_BV(10)-1))) {
|
||||
s_nGray++;
|
||||
if (s_nGray == TOP) {
|
||||
s_nGray = 0;
|
||||
}
|
||||
}
|
||||
|
||||
set_led_gradation(ABS(s_nGray - (TOP >> 1)));
|
||||
}
|
||||
|
||||
static void system_init(void)
|
||||
{
|
||||
extern void SystemCoreClockUpdate();
|
||||
|
||||
SystemCoreClockUpdate();
|
||||
/*! \note if you do want to use SysTick in your application, please use
|
||||
*! init_cycle_counter(true);
|
||||
*! instead of
|
||||
*! init_cycle_counter(false);
|
||||
*/
|
||||
init_cycle_counter(false);
|
||||
|
||||
#if defined(RTE_Compiler_EventRecorder) && defined(USE_EVR_FOR_STDOUR)
|
||||
EventRecorderInitialize(0, 1);
|
||||
#endif
|
||||
|
||||
gpio_init(PICO_DEFAULT_LED_PIN);
|
||||
gpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);
|
||||
|
||||
}
|
||||
|
||||
static void prime_number_100_c(void) {
|
||||
volatile int num = 0;
|
||||
/* run */
|
||||
for (volatile int i = 2; i < 100; i++) {
|
||||
volatile int is_prime = 1;
|
||||
for (volatile int j = 2; j < i; j++) {
|
||||
if (i % j == 0) {
|
||||
is_prime = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (is_prime) {
|
||||
num = num + i;
|
||||
}
|
||||
}
|
||||
if ( num != 1060){
|
||||
printf("[error] in benchmark prime_number_100_c \r\n");
|
||||
}
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
system_init();
|
||||
|
||||
printf("Hello Pico-Template\r\n");
|
||||
uint32_t n = 0;
|
||||
/* run unit test */
|
||||
obj_deinit(pikaScriptInit());
|
||||
|
||||
/* benchmark */
|
||||
uint64_t nCycleUsed_c,nCycleUsed_pika = 0;
|
||||
printf("[----------benchmark----------]\r\n");
|
||||
__cycleof__("", {
|
||||
nCycleUsed_c = _;
|
||||
printf("[prime_number_100_c] Cycle Used %lld\r\n", _);
|
||||
|
||||
}) {
|
||||
prime_number_100_c();
|
||||
}
|
||||
|
||||
/* create pikaMain root obj */
|
||||
PikaObj* pikaMain = newRootObj((char*)"pikaMain", New_PikaMain);
|
||||
/* clang-format off */
|
||||
PIKA_PYTHON(
|
||||
num = 0
|
||||
i = 2
|
||||
for i in range(2,100):
|
||||
j=2
|
||||
is_prime = 1
|
||||
for j in range(2,i):
|
||||
if i%j==0 :
|
||||
is_prime = 0
|
||||
break
|
||||
if is_prime:
|
||||
num = num + i
|
||||
|
||||
|
||||
)
|
||||
/* clang-format on */
|
||||
const uint8_t bytes[] = {
|
||||
0xb4, 0x00, 0x00, 0x00, /* instruct array size */
|
||||
0x00, 0x85, 0x01, 0x00, 0x00, 0x04, 0x03, 0x00, 0x00, 0x85, 0x07, 0x00,
|
||||
0x00, 0x04, 0x09, 0x00, 0x20, 0x85, 0x07, 0x00, 0x20, 0x05, 0x0b, 0x00,
|
||||
0x10, 0x02, 0x0f, 0x00, 0x00, 0x02, 0x15, 0x00, 0x00, 0x04, 0x1a, 0x00,
|
||||
0x00, 0x82, 0x1e, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x0d, 0x09, 0x00,
|
||||
0x00, 0x07, 0x07, 0x00, 0x01, 0x85, 0x07, 0x00, 0x01, 0x04, 0x2b, 0x00,
|
||||
0x01, 0x85, 0x2d, 0x00, 0x01, 0x04, 0x2f, 0x00, 0x21, 0x85, 0x07, 0x00,
|
||||
0x21, 0x01, 0x09, 0x00, 0x11, 0x02, 0x0f, 0x00, 0x01, 0x02, 0x15, 0x00,
|
||||
0x01, 0x04, 0x38, 0x00, 0x01, 0x82, 0x3c, 0x00, 0x01, 0x04, 0x2b, 0x00,
|
||||
0x01, 0x0d, 0x2b, 0x00, 0x01, 0x07, 0x07, 0x00, 0x22, 0x81, 0x09, 0x00,
|
||||
0x22, 0x01, 0x2b, 0x00, 0x12, 0x08, 0x49, 0x00, 0x12, 0x05, 0x01, 0x00,
|
||||
0x02, 0x08, 0x4b, 0x00, 0x02, 0x07, 0x2d, 0x00, 0x03, 0x85, 0x01, 0x00,
|
||||
0x03, 0x04, 0x2f, 0x00, 0x03, 0x8e, 0x00, 0x00, 0x01, 0x86, 0x4e, 0x00,
|
||||
0x01, 0x8c, 0x38, 0x00, 0x01, 0x81, 0x2f, 0x00, 0x01, 0x07, 0x2d, 0x00,
|
||||
0x12, 0x81, 0x03, 0x00, 0x12, 0x01, 0x09, 0x00, 0x02, 0x08, 0x51, 0x00,
|
||||
0x02, 0x04, 0x03, 0x00, 0x00, 0x86, 0x4e, 0x00, 0x00, 0x8c, 0x1a, 0x00,
|
||||
/* instruct array */
|
||||
0x53, 0x00, 0x00, 0x00, /* const pool size */
|
||||
0x00, 0x30, 0x00, 0x6e, 0x75, 0x6d, 0x00, 0x32, 0x00, 0x69, 0x00, 0x31, 0x30,
|
||||
0x30, 0x00, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x00, 0x69, 0x74, 0x65, 0x72,
|
||||
0x00, 0x24, 0x6c, 0x30, 0x00, 0x24, 0x6c, 0x30, 0x2e, 0x5f, 0x5f, 0x6e,
|
||||
0x65, 0x78, 0x74, 0x5f, 0x5f, 0x00, 0x6a, 0x00, 0x31, 0x00, 0x69, 0x73,
|
||||
0x5f, 0x70, 0x72, 0x69, 0x6d, 0x65, 0x00, 0x24, 0x6c, 0x31, 0x00, 0x24,
|
||||
0x6c, 0x31, 0x2e, 0x5f, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x5f, 0x00,
|
||||
0x25, 0x00, 0x3d, 0x3d, 0x00, 0x2d, 0x31, 0x00, 0x2b, 0x00, /* const pool */
|
||||
};
|
||||
__cycleof__("", {
|
||||
nCycleUsed_pika = _;
|
||||
printf("[prime_number_100_pika] Cycle Used %lld\r\n", _);
|
||||
}) {
|
||||
/* run pika ByteCode */
|
||||
pikaVM_runByteCode(pikaMain, (uint8_t*)bytes);
|
||||
}
|
||||
int num = obj_getInt(pikaMain, "num");
|
||||
if ( num != 1060){
|
||||
printf("[error] in benchmark prime_number_100_pika \r\n");
|
||||
}
|
||||
/* free the pikaMain obj */
|
||||
obj_deinit(pikaMain);
|
||||
|
||||
uint64_t benchmark_result = ((double) nCycleUsed_c / (double)nCycleUsed_pika) * 100 * 100000;
|
||||
|
||||
printf("\r\n[------benchmark finished ---------]\r\n");
|
||||
printf("benchmakr result :%lld\r\n", benchmark_result);
|
||||
|
||||
while (true) {
|
||||
breath_led();
|
||||
//gpio_put(PICO_DEFAULT_LED_PIN, 1);
|
||||
//sleep_ms(500);
|
||||
//gpio_put(PICO_DEFAULT_LED_PIN, 0);
|
||||
//sleep_ms(500);
|
||||
}
|
||||
//return 0;
|
||||
}
|
Binary file not shown.
@ -1,4 +0,0 @@
|
||||
_Instructions: (please delete)_
|
||||
- _please do not submit against `master`, use `develop` instead_
|
||||
- _please make sure there is an associated issue for your PR, and reference it via "Fixes #num" in the description_
|
||||
- _please enter a detailed description_
|
@ -1,49 +0,0 @@
|
||||
name: CMake
|
||||
on: [push, pull_request]
|
||||
|
||||
env:
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
build:
|
||||
if: github.repository_owner == 'raspberrypi'
|
||||
runs-on: [self-hosted, Linux, X64]
|
||||
|
||||
steps:
|
||||
- name: Clean workspace
|
||||
run: |
|
||||
echo "Cleaning up previous run"
|
||||
rm -rf "${{ github.workspace }}"
|
||||
mkdir -p "${{ github.workspace }}"
|
||||
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Checkout submodules
|
||||
run: git submodule update --init
|
||||
|
||||
- name: Create Build Environment
|
||||
# Some projects don't allow in-source building, so create a separate build directory
|
||||
# We'll use this as our working directory for all subsequent commands
|
||||
run: cmake -E make_directory ${{github.workspace}}/build
|
||||
|
||||
- name: Configure CMake
|
||||
# Use a bash shell so we can use the same syntax for environment variable
|
||||
# access regardless of the host operating system
|
||||
shell: bash
|
||||
working-directory: ${{github.workspace}}/build
|
||||
# Note the current convention is to use the -S and -B options here to specify source
|
||||
# and build directories, but this is only available with CMake 3.13 and higher.
|
||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12
|
||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE
|
||||
|
||||
- name: Get core count
|
||||
id: core_count
|
||||
run : cat /proc/cpuinfo | grep processor | wc -l
|
||||
|
||||
- name: Build
|
||||
working-directory: ${{github.workspace}}/build
|
||||
shell: bash
|
||||
# Execute the build. You can specify a specific target with "--target <NAME>"
|
||||
run: cmake --build . --config $BUILD_TYPE --parallel ${{steps.core_count.outputs.output}}
|
5
bsp/pico-dev/pico-sdk/.gitignore
vendored
5
bsp/pico-dev/pico-sdk/.gitignore
vendored
@ -1,5 +0,0 @@
|
||||
.idea
|
||||
.vscode
|
||||
cmake-*
|
||||
.DS_Store
|
||||
build
|
3
bsp/pico-dev/pico-sdk/.gitmodules
vendored
3
bsp/pico-dev/pico-sdk/.gitmodules
vendored
@ -1,3 +0,0 @@
|
||||
[submodule "tinyusb"]
|
||||
path = lib/tinyusb
|
||||
url = https://github.com/hathach/tinyusb.git
|
@ -1,25 +0,0 @@
|
||||
# Contributing to Raspberry Pi Pico C/C++ SDK
|
||||
|
||||
## How to Report a Bug
|
||||
|
||||
We use GitHub to host code, track [issues](https://github.com/raspberrypi/pico-sdk/issues) and feature requests, and to accept [pull requests](https://github.com/raspberrypi/pico-sdk/pulls). If you find think you have found a bug in the SDK please report it by [opening a new issue](https://github.com/raspberrypi/pico-sdk/issues/new). Please include as much detail as possible, and ideally some code to reproduce the problem.
|
||||
|
||||
## How to Contribute Code
|
||||
|
||||
In order to contribute new or updated code, you must first create a GitHub account and fork the original repository to your own account. You can make changes, save them in your repository, then [make a pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request-from-a-fork) against this repository. The pull request will appear [in the repository](https://github.com/raspberrypi/pico-sdk/pulls) where it can be assessed by the maintainers, and if appropriate, merged with the official repository.
|
||||
|
||||
**NOTE:** Development takes place on the `develop` branch in this repository. Please open your https://github.com/raspberrypi/pico-sdk/pulls[pull request] (PR) against the [`develop`](https://github.com/raspberrypi/pico-sdk/tree/develop) branch, pull requests against the `master` branch will automatically CI fail checks and will not be accepted. You will be asked to rebase your PR against `develop` and if you do not do so, your PR will be closed.
|
||||
|
||||
While we are happy to take contributions, big or small, changes in the SDK may have knock-on effects in other places so it is possible that apparently benign pull requests that make seemingly small changes could be refused.
|
||||
|
||||
### Code Style
|
||||
|
||||
If you are contributing new or updated code please match the existing code style, particularly:
|
||||
|
||||
* Use 4 spaces for indentation rather than tabs.
|
||||
* Braces are required for everything except single line `if` statements.
|
||||
* Opening braces should not be placed on a new line.
|
||||
|
||||
### Licensing
|
||||
|
||||
Code in this repository is lisensed under the [BSD-3 License](LICENSE.TXT). By contributing content to this repository you are agreeing to place your contributions under this licence.
|
@ -1,21 +0,0 @@
|
||||
Copyright 2020 (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the
|
||||
following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following
|
||||
disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,158 +0,0 @@
|
||||
# Raspberry Pi Pico SDK
|
||||
|
||||
The Raspberry Pi Pico SDK (henceforth the SDK) provides the headers, libraries and build system
|
||||
necessary to write programs for the RP2040-based devices such as the Raspberry Pi Pico
|
||||
in C, C++ or assembly language.
|
||||
|
||||
The SDK is designed to provide an API and programming environment that is familiar both to non-embedded C developers and embedded C developers alike.
|
||||
A single program runs on the device at a time and starts with a conventional `main()` method. Standard C/C++ libraries are supported along with
|
||||
C level libraries/APIs for accessing all of the RP2040's hardware include PIO (Programmable IO).
|
||||
|
||||
Additionally the SDK provides higher level libraries for dealing with timers, synchronization, USB (TinyUSB) and multi-core programming
|
||||
along with various utilities.
|
||||
|
||||
The SDK can be used to build anything from simple applications, to fully fledged runtime environments such as MicroPython, to low level software
|
||||
such as RP2040's on-chip bootrom itself.
|
||||
|
||||
Additional libraries/APIs that are not yet ready for inclusion in the SDK can be found in [pico-extras](https://github.com/raspberrypi/pico-extras).
|
||||
|
||||
# Documentation
|
||||
|
||||
See [Getting Started with the Raspberry Pi Pico](https://rptl.io/pico-get-started) for information on how to setup your
|
||||
hardware, IDE/environment and for how to build and debug software for the Raspberry Pi Pico
|
||||
and other RP2040-based devices.
|
||||
|
||||
See [Raspberry Pi Pico C/C++ SDK](https://rptl.io/pico-c-sdk) to learn more about programming using the
|
||||
SDK, to explore more advanced features, and for complete PDF-based API documentation.
|
||||
|
||||
See [Online Raspberry Pi Pico SDK API docs](https://rptl.io/pico-doxygen) for HTML-based API documentation.
|
||||
|
||||
# Example code
|
||||
|
||||
See [pico-examples](https://github.com/raspberrypi/pico-examples) for example code you can build.
|
||||
|
||||
# Quick-start your own project
|
||||
|
||||
These instructions are extremely terse, and Linux-based only. For detailed steps,
|
||||
instructions for other platforms, and just in general, we recommend you see [Raspberry Pi Pico C/C++ SDK](https://rptl.io/pico-c-sdk)
|
||||
|
||||
1. Install CMake (at least version 3.13), and GCC cross compiler
|
||||
```
|
||||
sudo apt install cmake gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib
|
||||
```
|
||||
1. Set up your project to point to use the Raspberry Pi Pico SDK
|
||||
|
||||
* Either by cloning the SDK locally (most common) :
|
||||
1. `git clone` this Raspberry Pi Pico SDK repository
|
||||
1. Copy [pico_sdk_import.cmake](https://github.com/raspberrypi/pico-sdk/blob/master/external/pico_sdk_import.cmake)
|
||||
from the SDK into your project directory
|
||||
2. Set `PICO_SDK_PATH` to the SDK location in your environment, or pass it (`-DPICO_SDK_PATH=`) to cmake later.
|
||||
3. Setup a `CMakeLists.txt` like:
|
||||
|
||||
```cmake
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
# initialize the SDK based on PICO_SDK_PATH
|
||||
# note: this must happen before project()
|
||||
include(pico_sdk_import.cmake)
|
||||
|
||||
project(my_project)
|
||||
|
||||
# initialize the Raspberry Pi Pico SDK
|
||||
pico_sdk_init()
|
||||
|
||||
# rest of your project
|
||||
|
||||
```
|
||||
|
||||
* Or with the Raspberry Pi Pico SDK as a submodule :
|
||||
1. Clone the SDK as a submodule called `pico-sdk`
|
||||
1. Setup a `CMakeLists.txt` like:
|
||||
|
||||
```cmake
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
# initialize pico-sdk from submodule
|
||||
# note: this must happen before project()
|
||||
include(pico-sdk/pico_sdk_init.cmake)
|
||||
|
||||
project(my_project)
|
||||
|
||||
# initialize the Raspberry Pi Pico SDK
|
||||
pico_sdk_init()
|
||||
|
||||
# rest of your project
|
||||
|
||||
```
|
||||
|
||||
* Or with automatic download from GitHub :
|
||||
1. Copy [pico_sdk_import.cmake](https://github.com/raspberrypi/pico-sdk/blob/master/external/pico_sdk_import.cmake)
|
||||
from the SDK into your project directory
|
||||
1. Setup a `CMakeLists.txt` like:
|
||||
|
||||
```cmake
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
# initialize pico-sdk from GIT
|
||||
# (note this can come from environment, CMake cache etc)
|
||||
set(PICO_SDK_FETCH_FROM_GIT on)
|
||||
|
||||
# pico_sdk_import.cmake is a single file copied from this SDK
|
||||
# note: this must happen before project()
|
||||
include(pico_sdk_import.cmake)
|
||||
|
||||
project(my_project)
|
||||
|
||||
# initialize the Raspberry Pi Pico SDK
|
||||
pico_sdk_init()
|
||||
|
||||
# rest of your project
|
||||
|
||||
```
|
||||
|
||||
1. Write your code (see [pico-examples](https://github.com/raspberrypi/pico-examples) or the [Raspberry Pi Pico C/C++ SDK](https://rptl.io/pico-c-sdk) documentation for more information)
|
||||
|
||||
About the simplest you can do is a single source file (e.g. hello_world.c)
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include "pico/stdlib.h"
|
||||
|
||||
int main() {
|
||||
setup_default_uart();
|
||||
printf("Hello, world!\n");
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
And add the following to your `CMakeLists.txt`:
|
||||
|
||||
```cmake
|
||||
add_executable(hello_world
|
||||
hello_world.c
|
||||
)
|
||||
|
||||
# Add pico_stdlib library which aggregates commonly used features
|
||||
target_link_libraries(hello_world pico_stdlib)
|
||||
|
||||
# create map/bin/hex/uf2 file in addition to ELF.
|
||||
pico_add_extra_outputs(hello_world)
|
||||
```
|
||||
|
||||
Note this example uses the default UART for _stdout_;
|
||||
if you want to use the default USB see the [hello-usb](https://github.com/raspberrypi/pico-examples/tree/master/hello_world/usb) example.
|
||||
|
||||
|
||||
1. Setup a CMake build directory.
|
||||
For example, if not using an IDE:
|
||||
```
|
||||
$ mkdir build
|
||||
$ cd build
|
||||
$ cmake ..
|
||||
```
|
||||
|
||||
1. Make your target from the build directory you created.
|
||||
```sh
|
||||
$ make hello_world
|
||||
```
|
||||
|
||||
1. You now have `hello_world.elf` to load via a debugger, or `hello_world.uf2` that can be installed and run on your Raspberry Pi Pico via drag and drop.
|
@ -1,4 +0,0 @@
|
||||
# this is included because toolchain file sets SYSTEM_NAME=PICO
|
||||
|
||||
set_property(GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS FALSE)
|
||||
set(CMAKE_EXECUTABLE_SUFFIX .elf)
|
@ -1,29 +0,0 @@
|
||||
# PICO_CMAKE_CONFIG: PICO_PLATFORM, platform to build for e.g. rp2040/host, default=rp2040 or environment value, group=build
|
||||
if (DEFINED ENV{PICO_PLATFORM} AND (NOT PICO_PLATFORM))
|
||||
set(PICO_PLATFORM $ENV{PICO_PLATFORM})
|
||||
message("Using PICO_PLATFORM from environment ('${PICO_PLATFORM}')")
|
||||
else()
|
||||
if (NOT PICO_PLATFORM)
|
||||
set(PICO_PLATFORM "rp2040")
|
||||
pico_message("Defaulting PICO_PLATFORM to ${PICO_PLATFORM} since not specified.")
|
||||
else()
|
||||
message("PICO platform is ${PICO_PLATFORM}.")
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
set(PICO_PLATFORM ${PICO_PLATFORM} CACHE STRING "PICO Build platform (e.g. rp2040, host)")
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_CMAKE_RELOAD_PLATFORM_FILE, custom CMake file to use to set up the platform environment, default=none, group=build
|
||||
set(PICO_CMAKE_PRELOAD_PLATFORM_FILE "" CACHE INTERNAL "")
|
||||
set(PICO_CMAKE_PRELOAD_PLATFORM_DIR "${CMAKE_CURRENT_LIST_DIR}/preload/platforms" CACHE INTERNAL "")
|
||||
|
||||
if (NOT PICO_CMAKE_PRELOAD_PLATFORM_FILE)
|
||||
set(PICO_CMAKE_PRELOAD_PLATFORM_FILE ${PICO_CMAKE_PRELOAD_PLATFORM_DIR}/${PICO_PLATFORM}.cmake CACHE INTERNAL "")
|
||||
endif ()
|
||||
|
||||
if (NOT EXISTS "${PICO_CMAKE_PRELOAD_PLATFORM_FILE}")
|
||||
message(FATAL_ERROR "${PICO_CMAKE_PRELOAD_PLATFORM_FILE} does not exist. \
|
||||
Either specify a valid PICO_PLATFORM (or PICO_CMAKE_PRELOAD_PLATFORM_FILE).")
|
||||
endif ()
|
||||
|
||||
include(${PICO_CMAKE_PRELOAD_PLATFORM_FILE})
|
@ -1,43 +0,0 @@
|
||||
# PICO_CMAKE_CONFIG: PICO_TOOLCHAIN_PATH, Path to search for compiler, default=none (i.e. search system paths), group=build
|
||||
set(PICO_TOOLCHAIN_PATH "${PICO_TOOLCHAIN_PATH}" CACHE INTERNAL "")
|
||||
|
||||
# Set a default build type if none was specified
|
||||
set(default_build_type "Release")
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
||||
message(STATUS "Defaulting build type to '${default_build_type}' since not specified.")
|
||||
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING "Choose the type of build, options are: 'Debug', 'Release', 'MinSizeRel', 'RelWithDebInfo'." FORCE)
|
||||
# Set the possible values of build type for cmake-gui
|
||||
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
|
||||
"Debug" "Release" "MinSizeRel" "RelWithDebInfo")
|
||||
endif()
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Default")
|
||||
error("Default build type is NOT supported")
|
||||
endif()
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_COMPILER, Optionally specifies a different compiler (other than pico_arm_gcc.cmake) - this is not yet fully supported, default=none, group=build
|
||||
# If PICO_COMPILER is specified, set toolchain file to ${PICO_COMPILER}.cmake.
|
||||
if (DEFINED PICO_COMPILER)
|
||||
if (DEFINED CMAKE_TOOLCHAIN_FILE)
|
||||
get_filename_component(toolchain "${CMAKE_TOOLCHAIN_FILE}" NAME_WE)
|
||||
if (NOT "${PICO_COMPILER}" STREQUAL "${toolchain}")
|
||||
message(WARNING "CMAKE_TOOLCHAIN_FILE is already defined to ${toolchain}.cmake, you\
|
||||
need to delete cache and reconfigure if you want to switch compiler.")
|
||||
endif ()
|
||||
else ()
|
||||
set(toolchain_dir "${CMAKE_CURRENT_LIST_DIR}/preload/toolchains")
|
||||
set(toolchain_file "${toolchain_dir}/${PICO_COMPILER}.cmake")
|
||||
if (EXISTS "${toolchain_file}")
|
||||
set(CMAKE_TOOLCHAIN_FILE "${toolchain_file}" CACHE INTERNAL "")
|
||||
else ()
|
||||
# todo improve message
|
||||
message(FATAL_ERROR "Toolchain file \"${PICO_COMPILER}.cmake\" does not exist, please\
|
||||
select one from \"cmake/toolchains\" folder.")
|
||||
endif ()
|
||||
endif ()
|
||||
message("PICO compiler is ${PICO_COMPILER}")
|
||||
endif ()
|
||||
|
||||
unset(PICO_COMPILER CACHE)
|
||||
|
@ -1,28 +0,0 @@
|
||||
function(pico_message param)
|
||||
if (${ARGC} EQUAL 1)
|
||||
message("${param}")
|
||||
return()
|
||||
endif ()
|
||||
|
||||
if (NOT ${ARGC} EQUAL 2)
|
||||
message(FATAL_ERROR "Expect at most 2 arguments")
|
||||
endif ()
|
||||
message("${param}" "${ARGV1}")
|
||||
endfunction()
|
||||
|
||||
macro(assert VAR MSG)
|
||||
if (NOT ${VAR})
|
||||
message(FATAL_ERROR "${MSG}")
|
||||
endif ()
|
||||
endmacro()
|
||||
|
||||
function(pico_find_in_paths OUT PATHS NAME)
|
||||
foreach(PATH IN LISTS ${PATHS})
|
||||
if (EXISTS ${PATH}/${NAME})
|
||||
get_filename_component(FULLNAME ${PATH}/${NAME} ABSOLUTE)
|
||||
set(${OUT} ${FULLNAME} PARENT_SCOPE)
|
||||
return()
|
||||
endif()
|
||||
endforeach()
|
||||
set(${OUT} "" PARENT_SCOPE)
|
||||
endfunction()
|
@ -1,7 +0,0 @@
|
||||
if (NOT (DEFINED PICO_COMPILER OR DEFINED CMAKE_TOOLCHAIN_FILE))
|
||||
pico_message("Defaulting PICO platform compiler to pico_arm_gcc since not specified.")
|
||||
set(PICO_COMPILER "pico_arm_gcc")
|
||||
endif ()
|
||||
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/pico/pico.cmake)
|
@ -1,31 +0,0 @@
|
||||
# Toolchain file is processed multiple times, however, it cannot access CMake cache on some runs.
|
||||
# We store the search path in an environment variable so that we can always access it.
|
||||
if (NOT "${PICO_TOOLCHAIN_PATH}" STREQUAL "")
|
||||
set(ENV{PICO_TOOLCHAIN_PATH} "${PICO_TOOLCHAIN_PATH}")
|
||||
endif ()
|
||||
|
||||
# Find the compiler executable and store its path in a cache entry ${compiler_path}.
|
||||
# If not found, issue a fatal message and stop processing. PICO_TOOLCHAIN_PATH can be provided from
|
||||
# commandline as additional search path.
|
||||
function(pico_find_compiler compiler_path compiler_exe)
|
||||
# Search user provided path first.
|
||||
find_program(
|
||||
${compiler_path} ${compiler_exe}
|
||||
PATHS ENV PICO_TOOLCHAIN_PATH
|
||||
PATH_SUFFIXES bin
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
|
||||
# If not then search system paths.
|
||||
if ("${${compiler_path}}" STREQUAL "${compiler_path}-NOTFOUND")
|
||||
if (DEFINED ENV{PICO_TOOLCHAIN_PATH})
|
||||
message(WARNING "PICO_TOOLCHAIN_PATH specified ($ENV{PICO_TOOLCHAIN_PATH}), but ${compiler_exe} not found there")
|
||||
endif()
|
||||
find_program(${compiler_path} ${compiler_exe})
|
||||
endif ()
|
||||
if ("${${compiler_path}}" STREQUAL "${compiler_path}-NOTFOUND")
|
||||
set(PICO_TOOLCHAIN_PATH "" CACHE PATH "Path to search for compiler.")
|
||||
message(FATAL_ERROR "Compiler '${compiler_exe}' not found, you can specify search path with\
|
||||
\"PICO_TOOLCHAIN_PATH\".")
|
||||
endif ()
|
||||
endfunction()
|
@ -1,53 +0,0 @@
|
||||
# NOTE: THIS IS A WIP ONLY PICO_ARM_GCC IS CURRENTLY SUPPORTED
|
||||
# todo there is probably a more "cmake" way of doing this going thru the standard path with our "PICO" platform
|
||||
# i.e. CMake<Lang>Information and whatnot
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake)
|
||||
|
||||
# include our Platform/pico.cmake
|
||||
set(CMAKE_SYSTEM_NAME PICO)
|
||||
set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus)
|
||||
|
||||
# Find CLANG
|
||||
pico_find_compiler(PICO_COMPILER_CC clang)
|
||||
pico_find_compiler(PICO_COMPILER_CXX clang)
|
||||
#pico_find_compiler(PICO_COMPILER_ASM armasm)
|
||||
set(PICO_COMPILER_ASM "${PICO_COMPILER_CC}" CACHE INTERNAL "")
|
||||
pico_find_compiler(PICO_OBJCOPY llvm-objcopy)
|
||||
pico_find_compiler(PICO_OBJDUMP llvm-objdump)
|
||||
|
||||
# Specify the cross compiler.
|
||||
set(CMAKE_C_COMPILER ${PICO_COMPILER_CC} CACHE FILEPATH "C compiler")
|
||||
set(CMAKE_CXX_COMPILER ${PICO_COMPILER_CXX} CACHE FILEPATH "C++ compiler")
|
||||
set(CMAKE_C_OUTPUT_EXTENSION .o)
|
||||
|
||||
# todo should we be including CMakeASMInformation anyway - i guess that is host side
|
||||
set(CMAKE_ASM_COMPILER ${PICO_COMPILER_ASM} CACHE FILEPATH "ASM compiler")
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
|
||||
set(CMAKE_INCLUDE_FLAG_ASM "-I")
|
||||
set(CMAKE_OBJCOPY ${PICO_OBJCOPY} CACHE FILEPATH "")
|
||||
set(CMAKE_OBJDUMP ${PICO_OBJDUMP} CACHE FILEPATH "")
|
||||
|
||||
# Disable compiler checks.
|
||||
set(CMAKE_C_COMPILER_FORCED TRUE)
|
||||
set(CMAKE_CXX_COMPILER_FORCED TRUE)
|
||||
|
||||
# Add target system root to cmake find path.
|
||||
get_filename_component(PICO_COMPILER_DIR "${PICO_COMPILER_CC}" DIRECTORY)
|
||||
get_filename_component(CMAKE_FIND_ROOT_PATH "${PICO_COMPILER_DIR}" DIRECTORY)
|
||||
|
||||
# Look for includes and libraries only in the target system prefix.
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
|
||||
include_directories(/usr/include/newlib)
|
||||
|
||||
# todo move to platform/Generix-xxx
|
||||
set(ARM_CLANG_COMMON_FLAGS " --target=arm-none-eabi -mcpu=cortex-m0plus -mthumb")
|
||||
set(CMAKE_C_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
|
||||
set(CMAKE_ASM_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
|
||||
set(CMAKE_C_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")
|
||||
|
@ -1,52 +0,0 @@
|
||||
# NOTE: THIS IS A WIP ONLY PICO_ARM_GCC IS CURRENTLY SUPPORTED
|
||||
# todo there is probably a more "cmake" way of doing this going thru the standard path with our "PICO" platform
|
||||
# i.e. CMake<Lang>Information and whatnot
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake)
|
||||
|
||||
# include our Platform/PICO.cmake
|
||||
set(CMAKE_SYSTEM_NAME PICO)
|
||||
set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus)
|
||||
|
||||
# Find ARMClang.
|
||||
pico_find_compiler(PICO_COMPILER_CC armclang)
|
||||
pico_find_compiler(PICO_COMPILER_CXX armclang)
|
||||
pico_find_compiler(PICO_COMPILER_ASM armasm)
|
||||
set(PICO_COMPILER_ASM "${PICO_COMPILER_ASM}" CACHE INTERNAL "")
|
||||
pico_find_compiler(PICO_OBJCOPY llvm-objcopy)
|
||||
pico_find_compiler(PICO_OBJDUMP llvm-objdump)
|
||||
|
||||
# Specify the cross compiler.
|
||||
set(CMAKE_C_COMPILER ${PICO_COMPILER_CC} CACHE FILEPATH "C compiler")
|
||||
set(CMAKE_CXX_COMPILER ${PICO_COMPILER_CXX} CACHE FILEPATH "C++ compiler")
|
||||
set(CMAKE_C_OUTPUT_EXTENSION .o)
|
||||
|
||||
# todo should we be including CMakeASMInformation anyway - i guess that is host side
|
||||
set(CMAKE_ASM_COMPILER ${PICO_COMPILER_ASM} CACHE FILEPATH "ASM compiler")
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
|
||||
set(CMAKE_INCLUDE_FLAG_ASM "-I")
|
||||
set(CMAKE_OBJCOPY ${PICO_OBJCOPY} CACHE FILEPATH "")
|
||||
set(CMAKE_OBJDUMP ${PICO_OBJDUMP} CACHE FILEPATH "")
|
||||
|
||||
# Disable compiler checks.
|
||||
set(CMAKE_C_COMPILER_FORCED TRUE)
|
||||
set(CMAKE_CXX_COMPILER_FORCED TRUE)
|
||||
|
||||
# Add target system root to cmake find path.
|
||||
get_filename_component(PICO_COMPILER_DIR "${PICO_COMPILER_CC}" DIRECTORY)
|
||||
get_filename_component(CMAKE_FIND_ROOT_PATH "${PICO_COMPILER_DIR}" DIRECTORY)
|
||||
|
||||
# Look for includes and libraries only in the target system prefix.
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
|
||||
# todo move to platform/Generix-xxx
|
||||
set(ARM_CLANG_COMMON_FLAGS " --cpu=Cortex-M0plus")
|
||||
string(APPEND CMAKE_C_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
|
||||
string(APPEND CMAKE_CXX_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
|
||||
string(APPEND CMAKE_ASM_FLAGS_INIT "${ARM_CLANG_COMMON_FLAGS}")
|
||||
string(APPEND CMAKE_C_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")
|
||||
string(APPEND CMAKE_CXX_FLAGS_DEBUG_INIT "${ARM_CLANG_COMMON_FLAGS} -Og")
|
||||
|
||||
|
@ -1,67 +0,0 @@
|
||||
# todo there is probably a more "cmake" way of doing this going thru the standard path with our "PICO" platform
|
||||
# i.e. CMake<Lang>Information and whatnot
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/find_compiler.cmake)
|
||||
|
||||
# include our Platform/PICO.cmake
|
||||
set(CMAKE_SYSTEM_NAME PICO)
|
||||
set(CMAKE_SYSTEM_PROCESSOR cortex-m0plus)
|
||||
|
||||
if (NOT PICO_GCC_TRIPLE)
|
||||
if (DEFINED ENV{PICO_GCC_TRIPLE})
|
||||
set(PICO_GCC_TRIPLE $ENV{PICO_GCC_TRIPLE})
|
||||
message("PICO_GCC_TRIPLE set from environment: $ENV{PICO_GCC_TRIPLE}")
|
||||
else()
|
||||
set(PICO_GCC_TRIPLE arm-none-eabi)
|
||||
#pico_message_debug("PICO_GCC_TRIPLE defaulted to arm-none-eabi")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Find GCC for ARM.
|
||||
pico_find_compiler(PICO_COMPILER_CC ${PICO_GCC_TRIPLE}-gcc)
|
||||
pico_find_compiler(PICO_COMPILER_CXX ${PICO_GCC_TRIPLE}-g++)
|
||||
set(PICO_COMPILER_ASM "${PICO_COMPILER_CC}" CACHE INTERNAL "")
|
||||
pico_find_compiler(PICO_OBJCOPY ${PICO_GCC_TRIPLE}-objcopy)
|
||||
pico_find_compiler(PICO_OBJDUMP ${PICO_GCC_TRIPLE}-objdump)
|
||||
|
||||
# Specify the cross compiler.
|
||||
set(CMAKE_C_COMPILER ${PICO_COMPILER_CC} CACHE FILEPATH "C compiler")
|
||||
set(CMAKE_CXX_COMPILER ${PICO_COMPILER_CXX} CACHE FILEPATH "C++ compiler")
|
||||
set(CMAKE_C_OUTPUT_EXTENSION .o)
|
||||
|
||||
# todo should we be including CMakeASMInformation anyway - i guess that is host side
|
||||
set(CMAKE_ASM_COMPILER ${PICO_COMPILER_ASM} CACHE FILEPATH "ASM compiler")
|
||||
set(CMAKE_ASM_COMPILE_OBJECT "<CMAKE_ASM_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -o <OBJECT> -c <SOURCE>")
|
||||
set(CMAKE_INCLUDE_FLAG_ASM "-I")
|
||||
set(CMAKE_OBJCOPY ${PICO_OBJCOPY} CACHE FILEPATH "")
|
||||
set(CMAKE_OBJDUMP ${PICO_OBJDUMP} CACHE FILEPATH "")
|
||||
|
||||
# Disable compiler checks.
|
||||
set(CMAKE_C_COMPILER_FORCED TRUE)
|
||||
set(CMAKE_CXX_COMPILER_FORCED TRUE)
|
||||
|
||||
# Add target system root to cmake find path.
|
||||
get_filename_component(PICO_COMPILER_DIR "${PICO_COMPILER_CC}" DIRECTORY)
|
||||
get_filename_component(CMAKE_FIND_ROOT_PATH "${PICO_COMPILER_DIR}" DIRECTORY)
|
||||
|
||||
# Look for includes and libraries only in the target system prefix.
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
|
||||
option(PICO_DEOPTIMIZED_DEBUG "Build debug builds with -O0" 0)
|
||||
|
||||
# todo move to platform/Generix-xxx
|
||||
|
||||
# on ARM -mcpu should not be mixed with -march
|
||||
set(ARM_GCC_COMMON_FLAGS " -mcpu=cortex-m0plus -mthumb")
|
||||
foreach(LANG IN ITEMS C CXX ASM)
|
||||
set(CMAKE_${LANG}_FLAGS_INIT "${ARM_GCC_COMMON_FLAGS}")
|
||||
if (PICO_DEOPTIMIZED_DEBUG)
|
||||
set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-O0")
|
||||
else()
|
||||
set(CMAKE_${LANG}_FLAGS_DEBUG_INIT "-Og")
|
||||
endif()
|
||||
set(CMAKE_${LANG}_LINK_FLAGS "-Wl,--build-id=none")
|
||||
endforeach()
|
||||
|
@ -1,63 +0,0 @@
|
||||
PROJECT_NAME = "Raspberry Pi Pico SDK"
|
||||
PROJECT_BRIEF = "Raspberry Pi Pico SDK documentation"
|
||||
PROJECT_NUMBER = @PICO_SDK_VERSION_STRING@
|
||||
|
||||
#STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@
|
||||
STRIP_FROM_PATH = @DOXY_INPUT_DIRS@
|
||||
# @PROJECT_BINARY_DIR@
|
||||
#INPUT = @doxy_main_page@ \
|
||||
# @PROJECT_SOURCE_DIR@ \
|
||||
# @PROJECT_BINARY_DIR@
|
||||
|
||||
FILE_PATTERNS = *.h \
|
||||
*.cpp \
|
||||
*.c \
|
||||
*.S \
|
||||
*.s \
|
||||
*.md
|
||||
|
||||
USE_MDFILE_AS_MAINPAGE = @PROJECT_SOURCE_DIR@/docs/mainpage.md
|
||||
LAYOUT_FILE = @PROJECT_SOURCE_DIR@/docs/DoxygenLayout.xml
|
||||
HTML_FOOTER = @PROJECT_SOURCE_DIR@/docs/footer.html
|
||||
HTML_HEADER = @PROJECT_SOURCE_DIR@/docs/header.html
|
||||
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
# HTML_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/docs/customdoxygen.css
|
||||
HTML_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/docs/normalise.css @PROJECT_SOURCE_DIR@/docs/main.css @PROJECT_SOURCE_DIR@/docs/styles.css
|
||||
HTML_EXTRA_FILES = @PROJECT_SOURCE_DIR@/docs/logo-mobile.svg @PROJECT_SOURCE_DIR@/docs/logo.svg @PROJECT_SOURCE_DIR@/docs/search.svg \
|
||||
@PROJECT_SOURCE_DIR@/docs/main.js @PROJECT_SOURCE_DIR@/docs/pico.jpg @PROJECT_SOURCE_DIR@/docs/rp2040.png
|
||||
GENERATE_TREEVIEW = YES # This is needed as it wraps the content area in an HTML tag that we need to use
|
||||
HTML_COLORSTYLE_HUE = 350
|
||||
HTML_COLORSTYLE_SAT = 200
|
||||
HTML_COLORSTYLE_GAMMA = 150
|
||||
GENERATE_LATEX = NO
|
||||
GENERATE_XML = YES
|
||||
GROUP_GRAPHS = NO
|
||||
|
||||
ALIASES += tag=@internal
|
||||
ALIASES += end=@internal
|
||||
|
||||
OUTPUT_DIRECTORY = @DOXY_OUTPUT_DIR@
|
||||
INPUT = @PROJECT_SOURCE_DIR@/docs/index.h @DOXY_INPUT_DIRS@ @PROJECT_SOURCE_DIR@/docs/
|
||||
|
||||
#EXCLUDE = @DOXY_EXCLUDE_DIRS@ @PROJECT_SOURCE_DIR@/src/rp2040
|
||||
EXCLUDE = @DOXY_EXCLUDE_DIRS@
|
||||
RECURSIVE = YES
|
||||
EXAMPLE_PATH = @PICO_EXAMPLES_PATH@
|
||||
|
||||
# This is needed as we have a number of static inline functions that need to be documented.
|
||||
EXTRACT_STATIC = YES
|
||||
|
||||
EXTRACT_ALL = NO
|
||||
ALWAYS_DETAILED_SEC = NO
|
||||
#REPEAT_BRIEF = NO
|
||||
|
||||
# Need these next options to ensure that functions with modifiers do not confuse the Doxygen parser.
|
||||
# And any further function modifiers here.
|
||||
MACRO_EXPANSION = YES
|
||||
|
||||
PREDEFINED = __not_in_flash_func(x) \
|
||||
__time_critical_func(x) \
|
||||
__not_in_flash(x)= \
|
||||
__no_inline_not_in_flash(x)= \
|
||||
__attribute__(x)=
|
@ -1,246 +0,0 @@
|
||||
<doxygenlayout version="1.0">
|
||||
<!-- Generated by doxygen 1.8.17 -->
|
||||
<!-- Navigation index tabs for HTML output -->
|
||||
<navindex>
|
||||
<tab type="mainpage" visible="yes" title="Introduction"></tab>
|
||||
<tab type="modules" visible="yes" title="API Documentation" intro="These are the libraries supplied in the Raspberry Pi Pico SDK"/>
|
||||
<tab type="user" url="@ref examples_page" visible="yes" title="Examples" intro="Links to SDK examples"/>
|
||||
<tab type="usergroup" url="@ref weblinks_page" visible="yes" title="Additional Documentation" intro="Links to datasheets and documentation">
|
||||
<tab type="user" url="https://rptl.io/pico-datasheet" visible="yes" title="Raspberry Pi Pico Datasheet" intro=""/>
|
||||
<tab type="user" url="https://rptl.io/rp2040-datasheet" visible="yes" title="RP2040 Datasheet" intro=""/>
|
||||
<tab type="user" url="https://rptl.io/rp2040-design" visible="yes" title="Hardware design with RP2040" intro=""/>
|
||||
<tab type="user" url="https://rptl.io/pico-c-sdk" visible="yes" title="Raspberry Pi Pico C/C++ SDK" intro=""/>
|
||||
<tab type="user" url="https://rptl.io/pico-micropython" visible="yes" title="Raspberry Pi Pico Python SDK" intro=""/>
|
||||
<tab type="user" url="https://rptl.io/pico-get-started" visible="yes" title="Getting started with Raspberry Pi Pico" intro=""/>
|
||||
<tab type="user" url="https://rptl.io/pico-faq" visible="yes" title="Raspberry Pi Pico FAQ" intro=""/>
|
||||
</tab>
|
||||
<tab type="usergroup" url="@ref weblinks_page" visible="yes" title="Web" intro="useful weblinks">
|
||||
<tab type="user" url="https://www.raspberrypi.com/" visible="yes" title="Raspberry Pi Site" intro=""/>
|
||||
<tab type="user" url="https://rptl.io/rp2040-get-started" visible="yes" title="Raspberry Pi Pico Page" intro=""/>
|
||||
<tab type="user" url="https://forums.raspberrypi.com/" visible="yes" title="Raspberry Pi Forums" intro=""/>
|
||||
<tab type="user" url="https://github.com/raspberrypi/pico-sdk" visible="yes" title="Raspberry Pi Pico SDK on GitHub" intro=""/>
|
||||
<tab type="user" url="https://github.com/raspberrypi/pico-examples" visible="yes" title="Pico Examples on GitHub" intro=""/>
|
||||
<tab type="user" url="https://github.com/raspberrypi/pico-extras" visible="yes" title="Pico Extras on GitHub" intro=""/>
|
||||
<tab type="user" url="https://github.com/raspberrypi/pico-playground" visible="yes" title="Pico Playground on GitHub" intro=""/>
|
||||
<tab type="user" url="https://github.com/raspberrypi/pico-bootrom" visible="yes" title="Pico Bootrom on GitHub" intro=""/>
|
||||
</tab>
|
||||
<tab type="pages" visible="no" title="" intro=""/>
|
||||
<tab type="namespaces" visible="yes" title="">
|
||||
<tab type="namespacelist" visible="yes" title="" intro=""/>
|
||||
<tab type="namespacemembers" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="interfaces" visible="yes" title="">
|
||||
<tab type="interfacelist" visible="yes" title="" intro=""/>
|
||||
<tab type="interfaceindex" visible="$ALPHABETICAL_INDEX" title=""/>
|
||||
<tab type="interfacehierarchy" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="classes" visible="no" title="">
|
||||
<tab type="classlist" visible="yes" title="" intro=""/>
|
||||
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
|
||||
<tab type="hierarchy" visible="yes" title="" intro=""/>
|
||||
<tab type="classmembers" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="structs" visible="yes" title="">
|
||||
<tab type="structlist" visible="yes" title="" intro=""/>
|
||||
<tab type="structindex" visible="$ALPHABETICAL_INDEX" title=""/>
|
||||
</tab>
|
||||
<tab type="exceptions" visible="yes" title="">
|
||||
<tab type="exceptionlist" visible="yes" title="" intro=""/>
|
||||
<tab type="exceptionindex" visible="$ALPHABETICAL_INDEX" title=""/>
|
||||
<tab type="exceptionhierarchy" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="files" visible="no" title="">
|
||||
<tab type="filelist" visible="yes" title="" intro=""/>
|
||||
<tab type="globals" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="examples" visible="yes" title="" intro=""/>
|
||||
</navindex>
|
||||
|
||||
<!-- Layout definition for a class page -->
|
||||
<class>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<inheritancegraph visible="$CLASS_GRAPH"/>
|
||||
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
|
||||
<memberdecl>
|
||||
<nestedclasses visible="yes" title=""/>
|
||||
<publictypes title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<publicslots title=""/>
|
||||
<signals title=""/>
|
||||
<publicmethods title=""/>
|
||||
<publicstaticmethods title=""/>
|
||||
<publicattributes title=""/>
|
||||
<publicstaticattributes title=""/>
|
||||
<protectedtypes title=""/>
|
||||
<protectedslots title=""/>
|
||||
<protectedmethods title=""/>
|
||||
<protectedstaticmethods title=""/>
|
||||
<protectedattributes title=""/>
|
||||
<protectedstaticattributes title=""/>
|
||||
<packagetypes title=""/>
|
||||
<packagemethods title=""/>
|
||||
<packagestaticmethods title=""/>
|
||||
<packageattributes title=""/>
|
||||
<packagestaticattributes title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
<privatetypes title=""/>
|
||||
<privateslots title=""/>
|
||||
<privatemethods title=""/>
|
||||
<privatestaticmethods title=""/>
|
||||
<privateattributes title=""/>
|
||||
<privatestaticattributes title=""/>
|
||||
<friends title=""/>
|
||||
<related title="" subtitle=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<constructors title=""/>
|
||||
<functions title=""/>
|
||||
<related title=""/>
|
||||
<variables title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
</memberdef>
|
||||
<allmemberslink visible="yes"/>
|
||||
<usedfiles visible="$SHOW_USED_FILES"/>
|
||||
<authorsection visible="yes"/>
|
||||
</class>
|
||||
|
||||
<!-- Layout definition for a namespace page -->
|
||||
<namespace>
|
||||
<briefdescription visible="yes"/>
|
||||
<memberdecl>
|
||||
<nestednamespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<interfaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<structs visible="yes" title=""/>
|
||||
<exceptions visible="yes" title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</namespace>
|
||||
|
||||
<!-- Layout definition for a file page -->
|
||||
<file>
|
||||
<briefdescription visible="yes"/>
|
||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||
<includegraph visible="$INCLUDE_GRAPH"/>
|
||||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
|
||||
<sourcelink visible="yes"/>
|
||||
<memberdecl>
|
||||
<interfaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<structs visible="yes" title=""/>
|
||||
<exceptions visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection/>
|
||||
</file>
|
||||
|
||||
<!-- Layout definition for a group page -->
|
||||
<group>
|
||||
<briefdescription visible="yes"/>
|
||||
<groupgraph visible="$GROUP_GRAPHS"/>
|
||||
<memberdecl>
|
||||
<nestedgroups visible="yes" title=""/>
|
||||
<dirs visible="yes" title=""/>
|
||||
<files visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<pagedocs/>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<sequences title=""/>
|
||||
<dictionaries title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</group>
|
||||
|
||||
<!-- Layout definition for a directory page -->
|
||||
<directory>
|
||||
<briefdescription visible="yes"/>
|
||||
<directorygraph visible="yes"/>
|
||||
<memberdecl>
|
||||
<dirs visible="yes"/>
|
||||
<files visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
</directory>
|
||||
</doxygenlayout>
|
@ -1,21 +0,0 @@
|
||||
## Examples Index {#examples_page}
|
||||
|
||||
This page links to the various example code fragments in this documentation. For more complete examples, please see the [pico-examples](https://github.com/raspberrypi/pico-examples) repository, which contains complete buildable projects.
|
||||
|
||||
- [RTC example](@ref rtc_example)
|
||||
- [UART example](@ref uart_example)
|
||||
- [ADC example](@ref adc_example)
|
||||
- [I2C example](@ref i2c_example)
|
||||
- [Clock example](@ref clock_example)
|
||||
- [Timer example](@ref timer_example)
|
||||
- [Flash programming example](@ref flash_example)
|
||||
- [Watchdog example](@ref watchdog_example)
|
||||
- [Divider example](@ref divider_example)
|
||||
- [PWM example](@ref pwm_example)
|
||||
- [Multicore example](@ref multicore_example)
|
||||
- [Reset example](@ref reset_example)
|
||||
|
||||
|
||||
All examples are "Copyright (c) 2020 Raspberry Pi (Trading) Ltd", and are released under a 3-Clause BSD licence. Briefly, this means you are free to use the example code
|
||||
as long as you retain the copyright notice. Full details on the licence can be found [here](https://opensource.org/licenses/BSD-3-Clause).
|
||||
|
@ -1,5 +0,0 @@
|
||||
|
||||
<script src="main.js"></script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,64 +0,0 @@
|
||||
<!-- HTML header for doxygen 1.8.20-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
|
||||
<meta name="generator" content="Doxygen $doxygenversion"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
||||
|
||||
<!--BEGIN PROJECT_NAME--><title>$projectname: $title</title><!--END PROJECT_NAME-->
|
||||
<!--BEGIN !PROJECT_NAME--><title>$title</title><!--END !PROJECT_NAME-->
|
||||
|
||||
<!-- <link href="$relpath^tabs.css" rel="stylesheet" type="text/css"/> -->
|
||||
<script type="text/javascript" src="$relpath^jquery.js"></script>
|
||||
<script type="text/javascript" src="$relpath^dynsections.js"></script>
|
||||
$treeview
|
||||
$search
|
||||
$mathjax
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500&display=swap" rel="stylesheet">
|
||||
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
|
||||
$extrastylesheet
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<div class="navigation-mobile">
|
||||
<div class="logo--mobile">
|
||||
<a href="/"><img src="logo-mobile.svg" alt="Raspberry Pi"></a>
|
||||
</div>
|
||||
<div class="navigation-toggle">
|
||||
<span class="line-1"></span>
|
||||
<span class="line-2">
|
||||
<p>Menu Toggle</p>
|
||||
</span>
|
||||
<span class="line-3"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
|
||||
|
||||
<div class="logo">
|
||||
<a href="$relpath^index.html"> <img src="logo.svg" alt="Raspberry Pi"></a>
|
||||
<span style="display: inline-block; margin-top: 10px;">
|
||||
v$projectnumber
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="navigation-footer">
|
||||
<img src="logo-mobile.svg" alt="Raspberry Pi">
|
||||
<a href="https://www.raspberrypi.com/" target="_blank">By Raspberry Pi (Trading) Ltd</a>
|
||||
</div>
|
||||
<!-- <div class="search">
|
||||
<form>
|
||||
<input type="search" name="search" id="search" placeholder="Search">
|
||||
<input type="submit" value="Search">
|
||||
</form>
|
||||
</div> -->
|
@ -1,90 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// Here to organize documentation order
|
||||
|
||||
/**
|
||||
* \defgroup hardware Hardware APIs
|
||||
* This group of libraries provides a thin and efficient C API / abstractions to access the RP2040 hardware without having to read and write
|
||||
* hardware registers directly.
|
||||
* @{
|
||||
* \defgroup hardware_adc hardware_adc
|
||||
* \defgroup hardware_base hardware_base
|
||||
* \defgroup hardware_claim hardware_claim
|
||||
* \defgroup hardware_clocks hardware_clocks
|
||||
* \defgroup hardware_divider hardware_divider
|
||||
* \defgroup hardware_dma hardware_dma
|
||||
* \defgroup hardware_exception hardware_exception
|
||||
* \defgroup hardware_flash hardware_flash
|
||||
* \defgroup hardware_gpio hardware_gpio
|
||||
* \defgroup hardware_i2c hardware_i2c
|
||||
* \defgroup hardware_interp hardware_interp
|
||||
* \defgroup hardware_irq hardware_irq
|
||||
* \defgroup hardware_pio hardware_pio
|
||||
* \defgroup hardware_pll hardware_pll
|
||||
* \defgroup hardware_pwm hardware_pwm
|
||||
* \defgroup hardware_resets hardware_resets
|
||||
* \defgroup hardware_rtc hardware_rtc
|
||||
* \defgroup hardware_spi hardware_spi
|
||||
* \defgroup hardware_sync hardware_sync
|
||||
* \defgroup hardware_timer hardware_timer
|
||||
* \defgroup hardware_uart hardware_uart
|
||||
* \defgroup hardware_vreg hardware_vreg
|
||||
* \defgroup hardware_watchdog hardware_watchdog
|
||||
* \defgroup hardware_xosc hardware_xosc
|
||||
* @}
|
||||
*
|
||||
* \defgroup high_level High Level APIs
|
||||
* This group of libraries provide higher level functionality that isn't hardware related or provides a richer
|
||||
* set of functionality above the basic hardware interfaces
|
||||
* @{
|
||||
* \defgroup pico_multicore pico_multicore
|
||||
* \defgroup pico_stdlib pico_stdlib
|
||||
* \defgroup pico_sync pico_sync
|
||||
* \defgroup pico_time pico_time
|
||||
* \defgroup pico_unique_id pico_unique_id
|
||||
* \defgroup pico_util pico_util
|
||||
* @}
|
||||
*
|
||||
* \defgroup third_party Third-party Libraries
|
||||
* Third party libraries for implementing high level functionality.
|
||||
* @{
|
||||
* \defgroup tinyusb_device tinyusb_device
|
||||
* \defgroup tinyusb_host tinyusb_host
|
||||
* @}
|
||||
*
|
||||
* \defgroup runtime Runtime Infrastructure
|
||||
* Libraries that are used to provide efficient implementation of certain
|
||||
* language level and C library functions, as well as CMake INTERFACE libraries
|
||||
* abstracting the compilation and link steps in the SDK
|
||||
* @{
|
||||
* \defgroup boot_stage2 boot_stage2
|
||||
* \defgroup pico_base pico_base
|
||||
* \defgroup pico_binary_info pico_binary_info
|
||||
* \defgroup pico_bit_ops pico_bit_ops
|
||||
* \defgroup pico_bootrom pico_bootrom
|
||||
* \defgroup pico_bootsel_via_double_reset pico_bootsel_via_double_reset
|
||||
* \defgroup pico_cxx_options pico_cxx_options
|
||||
* \defgroup pico_divider pico_divider
|
||||
* \defgroup pico_double pico_double
|
||||
* \defgroup pico_float pico_float
|
||||
* \defgroup pico_int64_ops pico_int64_ops
|
||||
* \defgroup pico_malloc pico_malloc
|
||||
* \defgroup pico_mem_ops pico_mem_ops
|
||||
* \defgroup pico_platform pico_platform
|
||||
* \defgroup pico_printf pico_printf
|
||||
* \defgroup pico_runtime pico_runtime
|
||||
* \defgroup pico_stdio pico_stdio
|
||||
* \defgroup pico_standard_link pico_standard_link
|
||||
* @}
|
||||
*
|
||||
* \defgroup misc External API Headers
|
||||
* Headers for interfaces that are shared with code outside of the SDK
|
||||
* @{
|
||||
* \defgroup boot_picoboot boot_picoboot
|
||||
* \defgroup boot_uf2 boot_uf2
|
||||
* @}
|
||||
*/
|
@ -1,17 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="570" height="720">
|
||||
<path d="m 158.375,1.65625 c -3.6193,0.1123192 -7.51715,1.4493266 -11.9375,4.9375 C 135.61054,2.4174496 125.11041,0.9665612 115.71875,9.46875 101.22489,7.5879922 96.508461,11.469494 92.9375,16 89.754953,15.934135 69.118652,12.72793 59.65625,26.84375 35.874602,24.030329 28.359472,40.831625 36.875,56.5 c -4.856911,7.518955 -9.889503,14.947226 1.46875,29.28125 -4.018006,7.983514 -1.527431,16.64403 7.9375,27.125 -2.497857,11.2226 2.412077,19.14086 11.21875,25.3125 -1.64709,15.35756 14.083505,24.28743 18.78125,27.46875 1.803677,8.94868 5.56291,17.3927 23.53125,22.0625 2.96323,13.3361 13.76206,15.63906 24.21875,18.4375 -34.561929,20.08954 -64.20067,46.52266 -64,111.375 l -5.0625,9.03125 C 15.337882,350.69604 -20.316547,428.16001 35.4375,491.125 c 3.641871,19.70838 9.749589,33.86396 15.1875,49.53125 8.133834,63.13058 61.21763,92.69161 75.21875,96.1875 20.51653,15.62812 42.36818,30.45672 71.9375,40.84375 27.87515,28.74946 58.07388,39.7064 88.4375,39.6875 0.44515,-2.8e-4 0.89853,0.005 1.34375,0 30.36363,0.0189 60.56235,-10.93804 88.4375,-39.6875 29.56932,-10.38703 51.42097,-25.21563 71.9375,-40.84375 14.00112,-3.49589 67.08492,-33.05692 75.21875,-96.1875 5.43791,-15.66729 11.54562,-29.82287 15.1875,-49.53125 55.75404,-62.96499 20.09961,-140.42896 -19.53125,-164.53125 L 513.75,317.5625 c 0.20067,-64.85234 -29.43807,-91.28546 -64,-111.375 10.45669,-2.79844 21.25552,-5.1014 24.21875,-18.4375 17.96834,-4.6698 21.72758,-13.11382 23.53125,-22.0625 4.69775,-3.18132 20.42834,-12.11119 18.78125,-27.46875 8.80668,-6.17164 13.71661,-14.0899 11.21875,-25.3125 9.46494,-10.48097 11.9555,-19.141487 7.9375,-27.125 C 546.79575,71.447226 541.76316,64.018955 536.90625,56.5 545.42178,40.831625 537.90665,24.030329 514.125,26.84375 504.6626,12.72793 484.0263,15.934135 480.84375,16 477.27279,11.469494 472.55636,7.587992 458.0625,9.46875 448.67084,0.96656132 438.17071,2.41745 427.34375,6.59375 414.48455,-3.5536631 405.97149,4.580454 396.25,7.65625 380.67615,2.568472 377.11698,9.5371578 369.46875,12.375 352.4935,8.7869238 347.33315,16.598532 339.1875,24.84375 l -9.46875,-0.1875 c -25.61054,15.093115 -38.33378,45.825501 -42.84375,61.625 -4.51206,-15.801979 -17.20647,-46.534542 -42.8125,-61.625 l -9.46875,0.1875 C 226.4481,16.598532 221.28775,8.7869235 204.3125,12.375 196.66427,9.5371583 193.1051,2.5684729 177.53125,7.65625 c -6.37973,-2.0184911 -12.24667,-6.2144276 -19.15625,-6 z" style="fill:#000000" />
|
||||
<path d="m 107.39184,68.055583 c 67.94767,35.031357 107.44689,63.368967 129.08717,87.504467 -11.08235,44.41759 -68.89638,46.44464 -90.03559,45.19858 4.32842,-2.01474 7.93988,-4.42778 9.22051,-8.13574 -5.30449,-3.76981 -24.11289,-0.39719 -37.24363,-7.77416 5.04407,-1.04499 7.40348,-2.06302 9.76289,-5.78542 -12.40571,-3.9567 -25.76862,-7.36642 -33.627746,-13.92116 4.241253,0.0524 8.201156,0.9488 13.740366,-2.89271 -11.111694,-5.98819 -22.969108,-10.73351 -32.18139,-19.88738 5.745213,-0.14063 11.939452,-0.0568 13.740371,-2.16953 -10.17044,-6.30068 -18.751242,-13.30787 -25.853592,-20.97215 8.039979,0.97052 11.435284,0.13478 13.378782,-1.26556 -7.687795,-7.87419 -17.417559,-14.52319 -22.056911,-24.22644 5.969606,2.057484 11.431249,2.84506 15.36752,-0.180795 -2.612365,-5.893453 -13.805413,-9.369618 -20.248967,-23.141676 6.284359,0.609377 12.949606,1.371108 14.282753,0 C 61.802068,58.517346 56.796919,51.835885 51.887978,44.913906 65.338021,44.714177 85.715734,44.966253 84.792549,43.82914 l -8.31654,-8.497335 c 13.137617,-3.537241 26.580651,0.568164 36.339661,3.615887 4.38186,-3.457681 -0.0776,-7.82998 -5.42383,-12.294015 11.16496,1.490646 21.25382,4.057389 30.37345,7.593362 4.87238,-4.399329 -3.16389,-8.798658 -7.05098,-13.197987 17.24936,3.272568 24.55716,7.87068 31.81981,12.47481 5.26935,-5.050799 0.30166,-9.343299 -3.2543,-13.740371 13.00566,4.817048 19.70478,11.035551 26.75756,17.175463 2.39119,-3.227053 6.07494,-5.592408 1.62715,-13.378781 9.23416,5.322725 16.18926,11.59506 21.33374,18.621817 5.71336,-3.637941 3.40387,-8.613023 3.43509,-13.197987 9.59665,7.806516 15.68687,16.11395 23.14168,24.226443 1.50169,-1.093437 2.81661,-4.80171 3.97747,-10.666867 22.89539,22.211815 55.24591,78.158241 8.31654,100.340861 C 207.95028,109.95728 160.25292,86.016909 107.39184,68.055583 z" style="fill:#75a928" />
|
||||
<path d="M 467.92487,68.055583 C 399.9772,103.08694 360.47798,131.42455 338.8377,155.56005 c 11.08235,44.41759 68.89638,46.44464 90.03559,45.19858 -4.32842,-2.01474 -7.93988,-4.42778 -9.22051,-8.13574 5.30449,-3.76981 24.11289,-0.39719 37.24363,-7.77416 -5.04407,-1.04499 -7.40348,-2.06302 -9.76289,-5.78542 12.40571,-3.9567 25.76862,-7.36642 33.62775,-13.92116 -4.24126,0.0524 -8.20116,0.9488 -13.74037,-2.89271 11.11169,-5.98819 22.96911,-10.73351 32.18139,-19.88738 -5.74521,-0.14063 -11.93945,-0.0568 -13.74037,-2.16953 10.17044,-6.30068 18.75124,-13.30787 25.85359,-20.97215 -8.03998,0.97052 -11.43528,0.13478 -13.37878,-1.26556 7.68779,-7.87419 17.41756,-14.52319 22.05691,-24.22644 -5.96961,2.057484 -11.43125,2.84506 -15.36752,-0.180795 2.61237,-5.893453 13.80541,-9.369618 20.24897,-23.141676 -6.28436,0.609377 -12.94961,1.371108 -14.28276,0 2.92231,-11.888563 7.92746,-18.570024 12.8364,-25.492003 -13.45004,-0.199729 -33.82775,0.05235 -32.90457,-1.084766 l 8.31654,-8.497335 c -13.13762,-3.537241 -26.58065,0.568164 -36.33966,3.615887 -4.38186,-3.457681 0.0776,-7.82998 5.42383,-12.294015 -11.16496,1.490646 -21.25382,4.057389 -30.37345,7.593362 -4.87238,-4.399329 3.16389,-8.798658 7.05098,-13.197987 -17.24936,3.272568 -24.55716,7.87068 -31.81981,12.47481 -5.26935,-5.050799 -0.30166,-9.343299 3.2543,-13.740371 -13.00566,4.817048 -19.70478,11.035551 -26.75756,17.175463 -2.39119,-3.227053 -6.07494,-5.592408 -1.62715,-13.378781 -9.23416,5.322725 -16.18926,11.59506 -21.33374,18.621817 -5.71336,-3.637941 -3.40387,-8.613023 -3.43509,-13.197987 -9.59665,7.806516 -15.68687,16.11395 -23.14168,24.226443 -1.50169,-1.093437 -2.81661,-4.80171 -3.97747,-10.666867 -22.89539,22.211815 -55.24591,78.158241 -8.31654,100.340861 39.91877,-32.94716 87.61613,-56.887531 140.47721,-74.848857 z" style="fill:#75a928" />
|
||||
<path d="m 365.2046,521.84937 a 71.956154,66.532318 0 1 1 -143.91231,0 71.956154,66.532318 0 1 1 143.91231,0 z" transform="matrix(1.131107,0,0,1.1280497,-43.139135,-68.310983)" style="fill:#bc1142" />
|
||||
<path d="m 262.84091,276.64774 a 61.875,28.125 0 1 1 -123.75,0 61.875,28.125 0 1 1 123.75,0 z" transform="matrix(0.76741684,-1.1613112,2.171115,1.4224368,-560.88858,217.68859)" style="fill:#bc1142" />
|
||||
<path d="m 262.84091,276.64774 a 61.875,28.125 0 1 1 -123.75,0 61.875,28.125 0 1 1 123.75,0 z" transform="matrix(-0.76741684,-1.1613112,-2.171115,1.4224368,1134.8288,213.68859)" style="fill:#bc1142" />
|
||||
<path d="M 72.910253,342.0878 C 109.32447,332.33088 85.201845,492.72431 55.576871,479.56357 22.990103,453.35089 12.493801,376.58814 72.910253,342.0878 z" style="fill:#bc1142" />
|
||||
<path d="m 493.67828,340.0878 c -36.41422,-9.75692 -12.2916,150.63651 17.33338,137.47577 32.58677,-26.21268 43.08307,-102.97543 -17.33338,-137.47577 z" style="fill:#bc1142" />
|
||||
<path d="m 369.97158,220.6534 c 62.83486,-10.61013 115.11594,26.72229 113.01138,94.85796 -2.06693,26.12112 -136.15872,-90.96907 -113.01138,-94.85796 z" style="fill:#bc1142" />
|
||||
<path d="M 196.35975,218.6534 C 133.52489,208.04327 81.24381,245.37569 83.34837,313.51136 85.4153,339.63248 219.50709,222.54229 196.35975,218.6534 z" style="fill:#bc1142" />
|
||||
<path d="m 286.61932,202.75568 c -37.50259,-0.97548 -73.49548,27.83418 -73.58158,44.54443 -0.10462,20.30426 29.6512,41.09266 73.83726,41.62035 45.12305,0.32321 73.91561,-16.64049 74.0611,-37.59409 0.16484,-23.73996 -41.03879,-48.93744 -74.31678,-48.57069 z" style="fill:#bc1142" />
|
||||
<path d="m 288.90937,619.11675 c 32.69744,-1.42711 76.57083,10.53196 76.6568,26.39598 0.5427,15.4052 -39.78969,50.21055 -78.82634,49.53765 -40.42729,1.74391 -80.06908,-33.11559 -79.54951,-45.19859 -0.60506,-17.71593 49.226,-31.54796 81.71905,-30.73504 z" style="fill:#bc1142" />
|
||||
<path d="m 168.13874,525.10369 c 23.2791,28.04573 33.89066,77.31899 14.46355,91.84353 -18.37917,11.08784 -63.01228,6.52162 -94.736237,-39.05157 -21.395052,-38.24168 -18.637584,-77.15663 -3.615887,-88.58924 22.464424,-13.68429 57.173424,4.79902 83.888574,35.79728 z" style="fill:#bc1142" />
|
||||
<path d="m 405.0209,516.21177 c -25.18682,29.50165 -39.21227,83.30951 -20.83785,100.6428 17.56828,13.46361 64.7292,11.58162 99.56566,-36.75574 25.29599,-32.46471 16.82013,-86.68225 2.37077,-101.07511 -21.46408,-16.60213 -52.27691,4.64489 -81.09858,37.18805 z" style="fill:#bc1142" />
|
||||
</svg>
|
Before Width: | Height: | Size: 8.7 KiB |
@ -1,213 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Generator: Adobe Illustrator 24.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
version="1.1"
|
||||
id="Layer_1"
|
||||
x="0px"
|
||||
y="0px"
|
||||
viewBox="0 0 231.43986 61.396812"
|
||||
xml:space="preserve"
|
||||
sodipodi:docname="logo.svg"
|
||||
width="231.43987"
|
||||
height="61.39682"
|
||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"><metadata
|
||||
id="metadata6202"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
|
||||
id="defs6200">
|
||||
|
||||
</defs><sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1081"
|
||||
id="namedview6198"
|
||||
showgrid="false"
|
||||
inkscape:zoom="3.1460265"
|
||||
inkscape:cx="146.61494"
|
||||
inkscape:cy="35.501241"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="32"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="Layer_1" />
|
||||
<style
|
||||
type="text/css"
|
||||
id="style6081">
|
||||
.st0{enable-background:new ;}
|
||||
.st1{fill:#1E1E1E;}
|
||||
.st2{fill:#C31C4A;}
|
||||
.st3{fill:#6ABF4B;}
|
||||
</style>
|
||||
<g
|
||||
id="g6332"
|
||||
transform="matrix(0.63209031,0,0,0.63209031,-0.16434348,-45.049552)"><g
|
||||
transform="translate(-73.51,57.850753)"
|
||||
style="enable-background:new"
|
||||
id="g6105"
|
||||
class="st0">
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6083"
|
||||
d="M 85.34,42.72 H 80.21 V 54.16 H 73.77 V 22.91 h 11.61 c 3.69,0 6.54,0.82 8.54,2.47 2,1.65 3.01,3.97 3.01,6.98 0,2.13 -0.46,3.91 -1.38,5.33 -0.92,1.42 -2.32,2.56 -4.2,3.4 l 6.76,12.77 v 0.3 H 91.2 Z M 80.21,37.5 h 5.2 c 1.62,0 2.87,-0.41 3.76,-1.23 0.89,-0.82 1.33,-1.96 1.33,-3.4 0,-1.47 -0.42,-2.63 -1.26,-3.48 -0.84,-0.84 -2.12,-1.27 -3.85,-1.27 h -5.17 v 9.38 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6085"
|
||||
d="m 114.88,54.16 c -0.29,-0.56 -0.49,-1.25 -0.62,-2.08 -1.5,1.67 -3.46,2.51 -5.86,2.51 -2.28,0 -4.16,-0.66 -5.66,-1.98 -1.5,-1.32 -2.24,-2.98 -2.24,-4.98 0,-2.46 0.91,-4.35 2.74,-5.67 1.83,-1.32 4.46,-1.98 7.91,-2 H 114 v -1.33 c 0,-1.07 -0.28,-1.93 -0.83,-2.58 -0.55,-0.64 -1.42,-0.97 -2.61,-0.97 -1.04,0 -1.86,0.25 -2.46,0.75 -0.59,0.5 -0.89,1.19 -0.89,2.06 h -6.2 c 0,-1.35 0.42,-2.59 1.25,-3.74 0.83,-1.15 2,-2.04 3.52,-2.69 1.52,-0.65 3.22,-0.98 5.11,-0.98 2.86,0 5.13,0.72 6.82,2.16 1.68,1.44 2.52,3.46 2.52,6.06 v 10.1 c 0.01,2.2 0.32,3.87 0.92,5 v 0.37 z m -5.13,-4.31 c 0.92,0 1.76,-0.2 2.53,-0.61 0.77,-0.41 1.35,-0.96 1.72,-1.64 v -4 h -2.32 c -3.11,0 -4.76,1.07 -4.96,3.22 l -0.02,0.36 c 0,0.77 0.27,1.41 0.82,1.91 0.54,0.51 1.29,0.76 2.23,0.76 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6087"
|
||||
d="m 137.57,47.74 c 0,-0.76 -0.38,-1.36 -1.13,-1.79 -0.75,-0.44 -1.96,-0.83 -3.62,-1.17 -5.52,-1.16 -8.29,-3.51 -8.29,-7.04 0,-2.06 0.85,-3.78 2.57,-5.16 1.71,-1.38 3.95,-2.07 6.71,-2.07 2.95,0 5.31,0.69 7.07,2.08 1.77,1.39 2.65,3.19 2.65,5.41 h -6.2 c 0,-0.89 -0.29,-1.62 -0.86,-2.2 -0.57,-0.58 -1.47,-0.87 -2.68,-0.87 -1.04,0 -1.85,0.24 -2.43,0.71 -0.57,0.47 -0.86,1.07 -0.86,1.8 0,0.69 0.33,1.24 0.98,1.66 0.65,0.42 1.75,0.79 3.3,1.09 1.55,0.3 2.85,0.65 3.91,1.04 3.28,1.2 4.92,3.28 4.92,6.25 0,2.12 -0.91,3.83 -2.73,5.14 -1.82,1.31 -4.17,1.96 -7.04,1.96 -1.95,0 -3.67,-0.35 -5.18,-1.04 -1.51,-0.69 -2.69,-1.65 -3.55,-2.85 -0.86,-1.21 -1.29,-2.52 -1.29,-3.92 h 5.88 c 0.06,1.1 0.46,1.95 1.22,2.53 0.76,0.59 1.77,0.88 3.05,0.88 1.19,0 2.09,-0.23 2.69,-0.68 0.61,-0.44 0.91,-1.03 0.91,-1.76 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6089"
|
||||
d="m 168.51,42.76 c 0,3.58 -0.81,6.44 -2.44,8.6 -1.62,2.15 -3.82,3.23 -6.58,3.23 -2.35,0 -4.24,-0.82 -5.69,-2.45 v 10.95 h -6.2 V 30.93 h 5.75 l 0.21,2.28 c 1.5,-1.8 3.46,-2.71 5.88,-2.71 2.86,0 5.09,1.06 6.68,3.18 1.59,2.12 2.38,5.04 2.38,8.76 z m -6.21,-0.45 c 0,-2.16 -0.38,-3.83 -1.15,-5 -0.77,-1.17 -1.88,-1.76 -3.34,-1.76 -1.95,0 -3.28,0.75 -4.01,2.23 v 9.51 c 0.76,1.53 2.11,2.3 4.06,2.3 2.96,0 4.44,-2.43 4.44,-7.28 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6091"
|
||||
d="m 193.28,42.76 c 0,3.72 -0.79,6.62 -2.38,8.71 -1.59,2.08 -3.81,3.12 -6.65,3.12 -2.52,0 -4.53,-0.97 -6.03,-2.9 l -0.28,2.47 h -5.58 V 21.19 h 6.2 v 11.83 c 1.43,-1.67 3.31,-2.51 5.65,-2.51 2.83,0 5.06,1.04 6.67,3.12 1.61,2.08 2.42,5.01 2.42,8.79 v 0.34 z m -6.2,-0.45 c 0,-2.35 -0.37,-4.06 -1.12,-5.14 -0.74,-1.08 -1.85,-1.62 -3.33,-1.62 -1.98,0 -3.33,0.81 -4.08,2.43 v 9.17 c 0.76,1.63 2.13,2.45 4.12,2.45 2,0 3.32,-0.99 3.95,-2.96 0.31,-0.96 0.46,-2.39 0.46,-4.33 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6093"
|
||||
d="m 207.8,54.59 c -3.41,0 -6.18,-1.04 -8.32,-3.13 -2.14,-2.09 -3.21,-4.87 -3.21,-8.35 v -0.6 c 0,-2.33 0.45,-4.42 1.35,-6.26 0.9,-1.84 2.18,-3.26 3.83,-4.25 1.65,-0.99 3.54,-1.49 5.66,-1.49 3.18,0 5.68,1 7.5,3.01 1.82,2.01 2.74,4.84 2.74,8.52 v 2.53 h -14.79 c 0.2,1.52 0.81,2.73 1.81,3.65 1,0.92 2.29,1.37 3.83,1.37 2.39,0 4.26,-0.87 5.6,-2.6 l 3.05,3.41 c -0.93,1.32 -2.19,2.34 -3.78,3.08 -1.58,0.74 -3.34,1.11 -5.27,1.11 z m -0.71,-19.08 c -1.23,0 -2.23,0.42 -3,1.25 -0.77,0.83 -1.26,2.03 -1.47,3.58 h 8.63 v -0.5 c -0.03,-1.38 -0.4,-2.45 -1.12,-3.2 -0.71,-0.76 -1.73,-1.13 -3.04,-1.13 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6095"
|
||||
d="m 233.92,36.75 c -0.84,-0.12 -1.59,-0.17 -2.23,-0.17 -2.35,0 -3.89,0.79 -4.62,2.38 v 15.2 h -6.21 V 30.93 h 5.86 l 0.17,2.77 c 1.25,-2.13 2.97,-3.2 5.17,-3.2 0.69,0 1.33,0.09 1.93,0.28 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6097"
|
||||
d="m 249.96,36.75 c -0.84,-0.12 -1.59,-0.17 -2.23,-0.17 -2.35,0 -3.88,0.79 -4.62,2.38 v 15.2 h -6.2 V 30.93 h 5.86 l 0.17,2.77 c 1.25,-2.13 2.97,-3.2 5.17,-3.2 0.69,0 1.33,0.09 1.93,0.28 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6099"
|
||||
d="m 262,45.38 4.29,-14.45 h 6.66 l -9.34,26.83 -0.51,1.22 c -1.39,3.03 -3.68,4.55 -6.87,4.55 -0.9,0 -1.82,-0.14 -2.75,-0.41 v -4.7 l 0.95,0.02 c 1.17,0 2.05,-0.18 2.63,-0.54 0.58,-0.36 1.03,-0.95 1.36,-1.78 l 0.73,-1.91 -8.14,-23.29 h 6.68 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6101"
|
||||
d="m 293.2,43.15 v 11.01 h -6.44 V 22.91 h 12.19 c 2.35,0 4.41,0.43 6.19,1.29 1.78,0.86 3.15,2.08 4.11,3.66 0.96,1.58 1.44,3.38 1.44,5.4 0,3.06 -1.05,5.48 -3.14,7.25 -2.09,1.77 -5,2.65 -8.71,2.65 h -5.64 z m 0,-5.22 h 5.75 c 1.7,0 3,-0.4 3.9,-1.2 0.89,-0.8 1.34,-1.95 1.34,-3.44 0,-1.53 -0.45,-2.77 -1.35,-3.71 -0.9,-0.94 -2.15,-1.43 -3.74,-1.46 h -5.9 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6103"
|
||||
d="m 314.66,24.92 c 0,-0.93 0.31,-1.7 0.93,-2.3 0.62,-0.6 1.47,-0.9 2.54,-0.9 1.06,0 1.9,0.3 2.53,0.9 0.63,0.6 0.94,1.37 0.94,2.3 0,0.94 -0.32,1.72 -0.96,2.32 -0.64,0.6 -1.48,0.9 -2.52,0.9 -1.04,0 -1.89,-0.3 -2.52,-0.9 -0.62,-0.6 -0.94,-1.37 -0.94,-2.32 z m 6.59,29.24 h -6.23 V 30.93 h 6.23 z"
|
||||
class="st1" />
|
||||
</g><g
|
||||
transform="translate(-73.51,57.850753)"
|
||||
style="enable-background:new"
|
||||
id="g6115"
|
||||
class="st0">
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6107"
|
||||
d="m 352.17,41.43 v 12.73 h -2.64 V 22.91 h 10.65 c 3.25,0 5.81,0.83 7.7,2.49 1.88,1.66 2.82,3.94 2.82,6.85 0,2.93 -0.91,5.2 -2.72,6.79 -1.81,1.59 -4.43,2.39 -7.87,2.39 z m 0,-2.23 h 8.01 c 2.56,0 4.52,-0.61 5.86,-1.83 1.35,-1.22 2.02,-2.92 2.02,-5.1 0,-2.16 -0.67,-3.89 -2.01,-5.17 -1.34,-1.28 -3.24,-1.94 -5.7,-1.97 h -8.18 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6109"
|
||||
d="m 375.85,24.23 c 0,-0.48 0.16,-0.89 0.47,-1.23 0.32,-0.33 0.74,-0.5 1.29,-0.5 0.55,0 0.98,0.17 1.3,0.5 0.32,0.33 0.48,0.74 0.48,1.23 0,0.48 -0.16,0.89 -0.48,1.22 -0.32,0.33 -0.75,0.49 -1.3,0.49 -0.55,0 -0.97,-0.16 -1.29,-0.49 -0.31,-0.33 -0.47,-0.74 -0.47,-1.22 z m 3.03,29.93 H 376.3 V 30.93 h 2.58 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6111"
|
||||
d="m 394.44,52.42 c 1.79,0 3.29,-0.5 4.5,-1.51 1.21,-1.01 1.86,-2.32 1.96,-3.92 h 2.47 c -0.07,1.42 -0.52,2.71 -1.33,3.88 -0.82,1.17 -1.9,2.08 -3.25,2.74 -1.35,0.66 -2.8,0.99 -4.35,0.99 -3.05,0 -5.46,-1.06 -7.25,-3.18 -1.79,-2.12 -2.67,-4.97 -2.67,-8.54 V 42.1 c 0,-2.29 0.4,-4.31 1.2,-6.08 0.8,-1.77 1.95,-3.12 3.45,-4.08 1.5,-0.96 3.24,-1.44 5.25,-1.44 2.55,0 4.65,0.76 6.3,2.28 1.65,1.52 2.54,3.51 2.65,5.99 h -2.47 c -0.11,-1.82 -0.77,-3.28 -1.96,-4.4 -1.2,-1.12 -2.7,-1.67 -4.52,-1.67 -2.32,0 -4.12,0.84 -5.4,2.51 -1.28,1.67 -1.92,4.02 -1.92,7.04 V 43 c 0,2.96 0.64,5.27 1.92,6.93 1.28,1.66 3.09,2.49 5.42,2.49 z"
|
||||
class="st1" />
|
||||
<path
|
||||
style="fill:#1e1e1e"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6113"
|
||||
d="m 407.08,42.21 c 0,-2.23 0.43,-4.24 1.3,-6.03 0.87,-1.79 2.09,-3.18 3.67,-4.18 1.58,-0.99 3.37,-1.49 5.38,-1.49 3.09,0 5.6,1.08 7.51,3.25 1.91,2.17 2.88,5.04 2.88,8.62 v 0.54 c 0,2.25 -0.43,4.27 -1.3,6.06 -0.87,1.79 -2.09,3.18 -3.66,4.15 -1.57,0.97 -3.37,1.46 -5.39,1.46 -3.08,0 -5.58,-1.08 -7.5,-3.25 -1.92,-2.17 -2.89,-5.04 -2.89,-8.62 z m 2.58,0.7 c 0,2.78 0.72,5.06 2.16,6.84 1.44,1.78 3.32,2.67 5.66,2.67 2.32,0 4.2,-0.89 5.64,-2.67 1.44,-1.78 2.16,-4.13 2.16,-7.05 v -0.49 c 0,-1.77 -0.33,-3.4 -0.99,-4.87 -0.66,-1.47 -1.58,-2.62 -2.77,-3.42 -1.19,-0.81 -2.55,-1.21 -4.08,-1.21 -2.29,0 -4.16,0.9 -5.6,2.69 -1.45,1.8 -2.17,4.15 -2.17,7.05 v 0.46 z"
|
||||
class="st1" />
|
||||
</g><path
|
||||
style="fill:#c31c4a"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6117"
|
||||
d="m 274.43,121.33075 c -6.39,0 -11.58,-5.2 -11.58,-11.58 V 82.850753 c 0,-6.39 5.2,-11.58 11.58,-11.58 h 80.4 c 6.39,0 11.58,5.2 11.58,11.58 v 26.799997 c 0,6.39 -5.2,11.58 -11.58,11.58 h -79.02 z m -1.33,-2.86 h 81.73 c 4.86,0 8.82,-3.96 8.82,-8.82 V 82.850753 c 0,-4.86 -3.96,-8.82 -8.82,-8.82 h -80.4 c -4.86,0 -8.82,3.96 -8.82,8.82 v 26.899997 c 0,4.41 3.25,8.07 7.49,8.72 z"
|
||||
class="st2" /></g><g
|
||||
id="g6350"
|
||||
transform="matrix(0.84770507,0,0,0.84770507,0.18908311,-61.910993)"><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6161"
|
||||
d="m 5.2185549,138.93075 c -1.61,-0.46 -2.78,-1.03 -3.51,-1.7 -0.73000003,-0.67 -1.10000003,-1.51 -1.10000003,-2.5 0,-1.12 0.45000003,-2.05 1.34000003,-2.78 0.89,-0.73 2.06,-1.1 3.49,-1.1 0.98,0 1.85,0.19 2.61,0.57 0.76,0.38 1.36,0.9 1.78,1.56 0.4200001,0.66 0.6300001,1.39 0.6300001,2.18 H 8.5785549 c 0,-0.86 -0.27,-1.54 -0.82,-2.03 -0.55,-0.49 -1.32,-0.74 -2.31,-0.74 -0.92,0 -1.65,0.2 -2.16,0.61 -0.52,0.41 -0.78,0.97 -0.78,1.7 0,0.58 0.25,1.07 0.74,1.47 0.49,0.4 1.33,0.77 2.51,1.1 1.18,0.33 2.11,0.7 2.77,1.1 0.66,0.4 1.16,0.87 1.4800001,1.4 0.32,0.53 0.48,1.16 0.48,1.88 0,1.15 -0.45,2.08 -1.3500001,2.77 -0.9,0.69 -2.1,1.04 -3.6,1.04 -0.98,0 -1.89,-0.19 -2.73,-0.56 -0.84,-0.37 -1.5,-0.89 -1.96000003,-1.54 -0.46,-0.65 -0.69,-1.39 -0.69,-2.22 H 2.0385549 c 0,0.86 0.32,1.54 0.95,2.04 0.63,0.5 1.48,0.75 2.54,0.75 0.99,0 1.75,-0.2 2.28,-0.61 0.53,-0.41 0.79,-0.95 0.79,-1.65 0,-0.7 -0.24,-1.24 -0.73,-1.62 -0.49,-0.38 -1.37,-0.75 -2.65,-1.12 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6163"
|
||||
d="m 12.898555,145.26075 v -14.22 h 4.01 c 1.24,0 2.33,0.27 3.28,0.82 0.95,0.55 1.68,1.33 2.2,2.33 0.52,1 0.78,2.17 0.79,3.48 v 0.91 c 0,1.34 -0.26,2.52 -0.78,3.53 -0.52,1.01 -1.26,1.78 -2.22,2.32 -0.96,0.54 -2.08,0.82 -3.35,0.83 z m 1.87,-12.68 v 11.15 h 1.97 c 1.45,0 2.57,-0.45 3.37,-1.35 0.8,-0.9 1.21,-2.18 1.21,-3.84 v -0.83 c 0,-1.62 -0.38,-2.87 -1.14,-3.77 -0.76,-0.9 -1.83,-1.35 -3.23,-1.36 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6165"
|
||||
d="m 29.618555,138.65075 -1.74,1.81 v 4.8 h -1.88 v -14.22 h 1.88 v 7.03 l 6.32,-7.03 h 2.27 l -5.6,6.28 6.04,7.94 h -2.25 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6167"
|
||||
d="m 43.498555,145.26075 v -14.22 h 4.01 c 1.24,0 2.33,0.27 3.28,0.82 0.95,0.55 1.68,1.33 2.2,2.33 0.52,1 0.78,2.17 0.79,3.48 v 0.91 c 0,1.34 -0.26,2.52 -0.78,3.53 -0.52,1.01 -1.26,1.78 -2.22,2.32 -0.96,0.54 -2.08,0.82 -3.35,0.83 z m 1.88,-12.68 v 11.15 h 1.97 c 1.45,0 2.57,-0.45 3.37,-1.35 0.8,-0.9 1.21,-2.18 1.21,-3.84 v -0.83 c 0,-1.62 -0.38,-2.87 -1.14,-3.77 -0.76,-0.9 -1.83,-1.35 -3.23,-1.36 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6169"
|
||||
d="m 55.858555,139.88075 c 0,-1.04 0.2,-1.97 0.61,-2.79 0.41,-0.82 0.97,-1.46 1.7,-1.91 0.73,-0.45 1.55,-0.67 2.49,-0.67 1.44,0 2.6,0.5 3.49,1.49 0.89,0.99 1.33,2.32 1.33,3.97 v 0.13 c 0,1.03 -0.2,1.95 -0.59,2.77 -0.39,0.82 -0.96,1.45 -1.69,1.91 -0.73,0.46 -1.57,0.68 -2.52,0.68 -1.43,0 -2.59,-0.5 -3.48,-1.49 -0.89,-0.99 -1.33,-2.31 -1.33,-3.96 v -0.13 z m 1.81,0.22 c 0,1.17 0.27,2.11 0.82,2.82 0.55,0.71 1.27,1.06 2.18,1.06 0.92,0 1.65,-0.36 2.19,-1.08 0.54,-0.72 0.81,-1.73 0.81,-3.02 0,-1.16 -0.27,-2.1 -0.83,-2.82 -0.56,-0.72 -1.28,-1.08 -2.19,-1.08 -0.89,0 -1.61,0.35 -2.16,1.06 -0.55,0.71 -0.82,1.74 -0.82,3.06 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6171"
|
||||
d="m 71.978555,143.98075 c 0.64,0 1.21,-0.2 1.69,-0.59 0.48,-0.39 0.75,-0.88 0.8,-1.46 h 1.71 c -0.03,0.61 -0.24,1.18 -0.62,1.73 -0.38,0.55 -0.9,0.98 -1.54,1.31 -0.64,0.33 -1.32,0.49 -2.04,0.49 -1.44,0 -2.58,-0.48 -3.43,-1.44 -0.85,-0.96 -1.27,-2.27 -1.27,-3.94 v -0.3 c 0,-1.03 0.19,-1.94 0.57,-2.74 0.38,-0.8 0.92,-1.42 1.63,-1.87 0.71,-0.45 1.54,-0.66 2.5,-0.66 1.19,0 2.17,0.35 2.95,1.06 0.78,0.71 1.2,1.63 1.25,2.76 h -1.71 c -0.05,-0.68 -0.31,-1.25 -0.78,-1.68 -0.47,-0.43 -1.04,-0.66 -1.72,-0.66 -0.92,0 -1.63,0.33 -2.13,0.99 -0.5,0.66 -0.76,1.62 -0.76,2.87 v 0.34 c 0,1.22 0.25,2.16 0.75,2.81 0.5,0.65 1.22,0.98 2.15,0.98 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6173"
|
||||
d="m 84.728555,144.22075 c -0.7,0.83 -1.73,1.24 -3.1,1.24 -1.13,0 -1.98,-0.33 -2.57,-0.98 -0.59,-0.65 -0.89,-1.62 -0.89,-2.91 v -6.88 h 1.81 v 6.83 c 0,1.6 0.65,2.4 1.95,2.4 1.38,0 2.3,-0.51 2.75,-1.54 v -7.69 h 1.81 v 10.57 h -1.72 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6175"
|
||||
d="m 90.928555,134.70075 0.05,1.17 c 0.77,-0.91 1.82,-1.37 3.13,-1.37 1.48,0 2.48,0.57 3.02,1.7 0.35,-0.51 0.81,-0.92 1.37,-1.23 0.56,-0.31 1.23,-0.47 1.999995,-0.47 2.32,0 3.5,1.23 3.53,3.68 v 7.08 h -1.81 v -6.97 c 0,-0.75 -0.17,-1.32 -0.52,-1.69 -0.35,-0.37 -0.92,-0.56 -1.739995,-0.56 -0.67,0 -1.23,0.2 -1.67,0.6 -0.44,0.4 -0.7,0.94 -0.77,1.62 v 7.01 h -1.82 v -6.92 c 0,-1.54 -0.75,-2.3 -2.26,-2.3 -1.19,0 -2,0.5 -2.43,1.51 v 7.71 h -1.79 v -10.57 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6177"
|
||||
d="m 111.14855,145.46075 c -1.43,0 -2.6,-0.47 -3.5,-1.41 -0.9,-0.94 -1.35,-2.2 -1.35,-3.77 v -0.33 c 0,-1.05 0.2,-1.98 0.6,-2.81 0.4,-0.83 0.96,-1.47 1.68,-1.93 0.72,-0.46 1.5,-0.7 2.34,-0.7 1.37,0 2.44,0.45 3.2,1.36 0.76,0.91 1.14,2.2 1.14,3.89 v 0.75 h -7.16 c 0.03,1.04 0.33,1.88 0.91,2.52 0.58,0.64 1.32,0.96 2.22,0.96 0.64,0 1.18,-0.13 1.62,-0.39 0.44,-0.26 0.83,-0.61 1.16,-1.04 l 1.1,0.86 c -0.86,1.36 -2.19,2.04 -3.96,2.04 z m -0.23,-9.47 c -0.73,0 -1.34,0.27 -1.84,0.8 -0.5,0.53 -0.8,1.27 -0.92,2.23 h 5.29 v -0.14 c -0.05,-0.92 -0.3,-1.63 -0.74,-2.13 -0.44,-0.5 -1.03,-0.76 -1.79,-0.76 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6179"
|
||||
d="m 119.06855,134.70075 0.06,1.33 c 0.81,-1.02 1.86,-1.52 3.16,-1.52 2.23,0 3.36,1.26 3.38,3.78 v 6.98 h -1.81 v -6.99 c -0.01,-0.76 -0.18,-1.33 -0.52,-1.69 -0.34,-0.36 -0.87,-0.55 -1.6,-0.55 -0.59,0 -1.1,0.16 -1.54,0.47 -0.44,0.31 -0.79,0.72 -1.04,1.23 v 7.53 h -1.81 v -10.57 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6181"
|
||||
d="m 130.84855,132.14075 v 2.56 h 1.97 v 1.4 h -1.97 v 6.56 c 0,0.42 0.09,0.74 0.26,0.95 0.17,0.21 0.48,0.32 0.9,0.32 0.21,0 0.5,-0.04 0.86,-0.12 v 1.46 c -0.48,0.13 -0.94,0.19 -1.39,0.19 -0.81,0 -1.42,-0.24 -1.83,-0.73 -0.41,-0.49 -0.62,-1.18 -0.62,-2.08 v -6.55 h -1.92 v -1.4 h 1.92 v -2.56 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6183"
|
||||
d="m 141.44855,145.26075 c -0.1,-0.21 -0.19,-0.58 -0.25,-1.11 -0.84,0.87 -1.84,1.31 -3.01,1.31 -1.04,0 -1.9,-0.29 -2.56,-0.88 -0.66,-0.59 -1,-1.34 -1,-2.24 0,-1.1 0.42,-1.96 1.25,-2.56 0.83,-0.6 2.01,-0.91 3.53,-0.91 h 1.76 v -0.83 c 0,-0.63 -0.19,-1.13 -0.57,-1.51 -0.38,-0.38 -0.93,-0.56 -1.67,-0.56 -0.64,0 -1.18,0.16 -1.62,0.49 -0.44,0.33 -0.65,0.72 -0.65,1.18 h -1.82 c 0,-0.53 0.19,-1.04 0.56,-1.53 0.37,-0.49 0.88,-0.88 1.52,-1.17 0.64,-0.29 1.35,-0.43 2.11,-0.43 1.22,0 2.17,0.3 2.86,0.91 0.69,0.61 1.05,1.45 1.07,2.51 v 4.86 c 0,0.97 0.12,1.74 0.37,2.31 v 0.16 z m -3,-1.37 c 0.57,0 1.1,-0.15 1.61,-0.44 0.51,-0.29 0.88,-0.67 1.1,-1.14 v -2.17 h -1.42 c -2.21,0 -3.32,0.65 -3.32,1.94 0,0.57 0.19,1.01 0.57,1.33 0.38,0.32 0.87,0.48 1.46,0.48 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6185"
|
||||
d="m 148.25855,132.14075 v 2.56 h 1.97 v 1.4 h -1.97 v 6.56 c 0,0.42 0.09,0.74 0.26,0.95 0.17,0.21 0.48,0.32 0.9,0.32 0.21,0 0.5,-0.04 0.86,-0.12 v 1.46 c -0.48,0.13 -0.94,0.19 -1.39,0.19 -0.81,0 -1.42,-0.24 -1.83,-0.73 -0.41,-0.49 -0.62,-1.18 -0.62,-2.08 v -6.55 h -1.92 v -1.4 h 1.92 v -2.56 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6187"
|
||||
d="m 152.34855,131.89075 c 0,-0.29 0.09,-0.54 0.27,-0.74 0.18,-0.2 0.44,-0.3 0.8,-0.3 0.36,0 0.62,0.1 0.8,0.3 0.18,0.2 0.27,0.45 0.27,0.74 0,0.29 -0.09,0.54 -0.27,0.73 -0.18,0.19 -0.45,0.29 -0.8,0.29 -0.35,0 -0.62,-0.1 -0.8,-0.29 -0.18,-0.19 -0.27,-0.43 -0.27,-0.73 z m 1.95,13.37 h -1.81 v -10.56 h 1.81 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6189"
|
||||
d="m 156.70855,139.88075 c 0,-1.04 0.2,-1.97 0.61,-2.79 0.41,-0.82 0.97,-1.46 1.7,-1.91 0.73,-0.45 1.55,-0.67 2.49,-0.67 1.44,0 2.6,0.5 3.49,1.49 0.89,0.99 1.33,2.32 1.33,3.97 v 0.13 c 0,1.03 -0.2,1.95 -0.59,2.77 -0.39,0.82 -0.96,1.45 -1.69,1.91 -0.73,0.46 -1.57,0.68 -2.52,0.68 -1.43,0 -2.59,-0.5 -3.48,-1.49 -0.89,-0.99 -1.33,-2.31 -1.33,-3.96 v -0.13 z m 1.82,0.22 c 0,1.17 0.27,2.11 0.82,2.82 0.55,0.71 1.27,1.06 2.18,1.06 0.92,0 1.65,-0.36 2.19,-1.08 0.54,-0.72 0.81,-1.73 0.81,-3.02 0,-1.16 -0.28,-2.1 -0.83,-2.82 -0.55,-0.72 -1.28,-1.08 -2.19,-1.08 -0.89,0 -1.61,0.35 -2.16,1.06 -0.55,0.71 -0.82,1.74 -0.82,3.06 z" /><path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path6191"
|
||||
d="m 170.30855,134.70075 0.06,1.33 c 0.81,-1.02 1.86,-1.52 3.16,-1.52 2.23,0 3.36,1.26 3.38,3.78 v 6.98 h -1.81 v -6.99 c -0.01,-0.76 -0.18,-1.33 -0.52,-1.69 -0.34,-0.36 -0.87,-0.55 -1.6,-0.55 -0.59,0 -1.1,0.16 -1.54,0.47 -0.44,0.31 -0.79,0.72 -1.04,1.23 v 7.53 h -1.81 v -10.57 z" /></g>
|
||||
</svg>
|
Before Width: | Height: | Size: 19 KiB |
@ -1,105 +0,0 @@
|
||||
/************************/
|
||||
/* GENERAL */
|
||||
/************************/
|
||||
|
||||
body {
|
||||
color: #1e1e1e;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6, p, a, li, span, blockquote, input, textarea, select, label {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
}
|
||||
|
||||
p {
|
||||
/* font-size: 16px;
|
||||
line-height: 25px;
|
||||
margin-bottom: 20px;*/
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
|
||||
/* Sidebar */
|
||||
#top {
|
||||
background-color: #F5F5F5;
|
||||
width: 275px;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height: auto !important;
|
||||
overflow: auto;
|
||||
padding: 25px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
#top {
|
||||
box-shadow: 5px 0px 10px 0px rgba(0,0,0,0.25);
|
||||
position: fixed;
|
||||
z-index: 9999;
|
||||
left: -100%;
|
||||
width: 450px;
|
||||
background-color: #F5F5F5;
|
||||
transition: 0.2s left;
|
||||
}
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
#top {
|
||||
width: calc(100% - 50px);
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
#top.open {
|
||||
left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Content */
|
||||
#doc-content {
|
||||
padding: 25px 50px 25px 290px;
|
||||
margin: 0 !important;
|
||||
height: auto !important;
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
#doc-content {
|
||||
padding: 110px 40px 40px 40px;
|
||||
}
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
#doc-content {
|
||||
padding: 90px 20px 50px 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Hide the default doxygen stuff that we dont want */
|
||||
.ui-resizable-handle {
|
||||
display: none !important;
|
||||
}
|
||||
#nav-sync {
|
||||
display: none !important;
|
||||
}
|
||||
#nav-tree {
|
||||
height: 100% !important;
|
||||
background: none;
|
||||
overflow: auto;
|
||||
padding: 35px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
#nav-path, #side-nav {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
div.line,
|
||||
div.line a,
|
||||
div.line span {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
$(document).ready(function() {
|
||||
|
||||
// Trigger the mobile navigation
|
||||
$(document).on('click', '.navigation-toggle', function (event) {
|
||||
event.preventDefault();
|
||||
$(this).toggleClass('clicked');
|
||||
$('#top').toggleClass('open');
|
||||
});
|
||||
|
||||
// Add a class to all <li>'s with children
|
||||
$('#main-nav ul li > ul').parent().addClass('hasChildren');
|
||||
$('#main-nav .has-submenu').removeClass('has-submenu');
|
||||
$('#main-nav .sm').removeClass('sm');
|
||||
$('#main-nav .sm-dox').removeClass('sm-dox');
|
||||
$('#main-nav #main-menu').removeAttr('data-smartmenus-id');
|
||||
$('#main-nav #main-menu').removeAttr('id');
|
||||
});
|
@ -1,30 +0,0 @@
|
||||
# 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 the RP2040 based devices such as the Raspberry Pi Pico in C, C++ or assembly language. The SDK is designed to provide an API and programming environment that is familiar both to non-embedded C developers and embedded C developers alike.
|
||||
|
||||
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 RP2040’s hardware, including DMA, IRQs, and the wide variety 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, full fledged runtime environments such as MicroPython, to low level software such as the RP2040’s on chip bootrom itself.
|
||||
|
||||
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.
|
||||
|
||||
## SDK Design
|
||||
|
||||
The RP2040 is a powerful chip, however it is 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 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 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 for a list of configuration variables).
|
||||
|
||||
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.
|
||||
|
||||
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 floating point and other optimized code contained in the bootrom within the RP2040).
|
||||
|
||||
## 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 (Trading) Ltd. and licensed under the [3-Clause BSD](https://opensource.org/licenses/BSD-3-Clause) license.
|
||||
|
||||
|
@ -1,447 +0,0 @@
|
||||
/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */
|
||||
|
||||
/* Document
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Correct the line height in all browsers.
|
||||
* 2. Prevent adjustments of font size after orientation changes in
|
||||
* IE on Windows Phone and in iOS.
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15; /* 1 */
|
||||
-ms-text-size-adjust: 100%; /* 2 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Remove the margin in all browsers (opinionated).
|
||||
*/
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 9-.
|
||||
*/
|
||||
|
||||
article,
|
||||
aside,
|
||||
footer,
|
||||
header,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the font size and margin on `h1` elements within `section` and
|
||||
* `article` contexts in Chrome, Firefox, and Safari.
|
||||
*/
|
||||
|
||||
h1 {
|
||||
font-size: 145%;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
/* Grouping content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 9-.
|
||||
* 1. Add the correct display in IE.
|
||||
*/
|
||||
|
||||
figcaption,
|
||||
figure,
|
||||
main { /* 1 */
|
||||
display: block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct margin in IE 8.
|
||||
*/
|
||||
|
||||
figure {
|
||||
margin: 1em 40px;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in Firefox.
|
||||
* 2. Show the overflow in Edge and IE.
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box; /* 1 */
|
||||
height: 0; /* 1 */
|
||||
overflow: visible; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Remove the gray background on active links in IE 10.
|
||||
* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
|
||||
*/
|
||||
|
||||
a {
|
||||
background-color: transparent; /* 1 */
|
||||
-webkit-text-decoration-skip: objects; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Remove the bottom border in Chrome 57- and Firefox 39-.
|
||||
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none; /* 1 */
|
||||
text-decoration: underline; /* 2 */
|
||||
text-decoration: underline dotted; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent the duplicate application of `bolder` by the next rule in Safari 6.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: inherit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font weight in Chrome, Edge, and Safari.
|
||||
*/
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inheritance and scaling of font size in all browsers.
|
||||
* 2. Correct the odd `em` font sizing in all browsers.
|
||||
*/
|
||||
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font style in Android 4.3-.
|
||||
*/
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct background and color in IE 9-.
|
||||
*/
|
||||
|
||||
mark {
|
||||
background-color: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct font size in all browsers.
|
||||
*/
|
||||
|
||||
small {
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent `sub` and `sup` elements from affecting the line height in
|
||||
* all browsers.
|
||||
*/
|
||||
|
||||
sub,
|
||||
sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
/* Embedded content
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 9-.
|
||||
*/
|
||||
|
||||
audio,
|
||||
video {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in iOS 4-7.
|
||||
*/
|
||||
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the border on images inside links in IE 10-.
|
||||
*/
|
||||
|
||||
img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide the overflow in IE.
|
||||
*/
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Forms
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* 1. Change the font styles in all browsers (opinionated).
|
||||
* 2. Remove the margin in Firefox and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: sans-serif; /* 1 */
|
||||
font-size: 100%; /* 1 */
|
||||
line-height: 1.15; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the overflow in IE.
|
||||
* 1. Show the overflow in Edge.
|
||||
*/
|
||||
|
||||
button,
|
||||
input { /* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inheritance of text transform in Edge, Firefox, and IE.
|
||||
* 1. Remove the inheritance of text transform in Firefox.
|
||||
*/
|
||||
|
||||
button,
|
||||
select { /* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
|
||||
* controls in Android 4.
|
||||
* 2. Correct the inability to style clickable types in iOS and Safari.
|
||||
*/
|
||||
|
||||
button,
|
||||
html [type="button"], /* 1 */
|
||||
[type="reset"],
|
||||
[type="submit"] {
|
||||
-webkit-appearance: button; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner border and padding in Firefox.
|
||||
*/
|
||||
|
||||
button::-moz-focus-inner,
|
||||
[type="button"]::-moz-focus-inner,
|
||||
[type="reset"]::-moz-focus-inner,
|
||||
[type="submit"]::-moz-focus-inner {
|
||||
border-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Restore the focus styles unset by the previous rule.
|
||||
*/
|
||||
|
||||
button:-moz-focusring,
|
||||
[type="button"]:-moz-focusring,
|
||||
[type="reset"]:-moz-focusring,
|
||||
[type="submit"]:-moz-focusring {
|
||||
outline: 1px dotted ButtonText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the padding in Firefox.
|
||||
*/
|
||||
|
||||
fieldset {
|
||||
padding: 0.35em 0.75em 0.625em;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the text wrapping in Edge and IE.
|
||||
* 2. Correct the color inheritance from `fieldset` elements in IE.
|
||||
* 3. Remove the padding so developers are not caught out when they zero out
|
||||
* `fieldset` elements in all browsers.
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box; /* 1 */
|
||||
color: inherit; /* 2 */
|
||||
display: table; /* 1 */
|
||||
max-width: 100%; /* 1 */
|
||||
padding: 0; /* 3 */
|
||||
white-space: normal; /* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct display in IE 9-.
|
||||
* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
|
||||
*/
|
||||
|
||||
progress {
|
||||
display: inline-block; /* 1 */
|
||||
vertical-align: baseline; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the default vertical scrollbar in IE.
|
||||
*/
|
||||
|
||||
textarea {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Add the correct box sizing in IE 10-.
|
||||
* 2. Remove the padding in IE 10-.
|
||||
*/
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Correct the cursor style of increment and decrement buttons in Chrome.
|
||||
*/
|
||||
|
||||
[type="number"]::-webkit-inner-spin-button,
|
||||
[type="number"]::-webkit-outer-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the odd appearance in Chrome and Safari.
|
||||
* 2. Correct the outline style in Safari.
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
outline-offset: -2px; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
|
||||
*/
|
||||
|
||||
[type="search"]::-webkit-search-cancel-button,
|
||||
[type="search"]::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
/**
|
||||
* 1. Correct the inability to style clickable types in iOS and Safari.
|
||||
* 2. Change font properties to `inherit` in Safari.
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Add the correct display in IE 9-.
|
||||
* 1. Add the correct display in Edge, IE, and Firefox.
|
||||
*/
|
||||
|
||||
details, /* 1 */
|
||||
menu {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/*
|
||||
* Add the correct display in all browsers.
|
||||
*/
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
}
|
||||
|
||||
/* Scripting
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 9-.
|
||||
*/
|
||||
|
||||
canvas {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the correct display in IE.
|
||||
*/
|
||||
|
||||
template {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Hidden
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Add the correct display in IE 10-.
|
||||
*/
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
Binary file not shown.
Before Width: | Height: | Size: 26 KiB |
Binary file not shown.
Before Width: | Height: | Size: 80 KiB |
@ -1 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 29 29" xml:space="preserve"><style type="text/css">.st0{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;} .st1{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;} .st2{fill:none;stroke:#000000;stroke-miterlimit:10;} .st3{fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10;stroke-dasharray:1.7411,1.7411;} .st4{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:2.0261,4.0522;}</style><circle class="st0" cx="11.854" cy="11.854" r="9" fill="none" stroke="#000" stroke-miterlimit="10" stroke-width="2"/><path class="st1" fill="none" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="2" d="M18.451 18.451l7.695 7.695"/><metadata><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description about="https://iconscout.com/legal#licenses" dc:title="search,find,magnifier,glass,magnify" dc:description="search,find,magnifier,glass,magnify" dc:publisher="Iconscout" dc:date="2017-10-04" dc:format="image/svg+xml" dc:language="en"><dc:creator><rdf:Bag><rdf:li>Jemis Mali</rdf:li></rdf:Bag></dc:creator></rdf:Description></rdf:RDF></metadata></svg>
|
Before Width: | Height: | Size: 1.5 KiB |
@ -1,703 +0,0 @@
|
||||
|
||||
.logo {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
.logo {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.logo--mobile {
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
.logo--mobile {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
max-width: 35px;
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
top: 50%;
|
||||
left: 40px;
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
.logo--mobile img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.logo--mobile {
|
||||
left: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.navigation-footer {
|
||||
margin-top: auto;
|
||||
order: 3;
|
||||
color: #CA4F62;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
.navigation-footer {
|
||||
margin-top: 50px;
|
||||
}
|
||||
}
|
||||
.navigation-footer img {
|
||||
height: 35px;
|
||||
}
|
||||
.navigation-footer a {
|
||||
font-size: .9em;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* Search Box */
|
||||
#MSearchBox {
|
||||
border-radius: 5px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 15px;
|
||||
background: none;
|
||||
background-color: white;
|
||||
position: relative;
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
width: 100%;
|
||||
}
|
||||
#MSearchBox .right {
|
||||
display: none;
|
||||
}
|
||||
#MSearchBox .left {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
left: 0;
|
||||
}
|
||||
#MSearchBox img {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
top: 4px;
|
||||
left: 0px;
|
||||
}
|
||||
#MSearchBox input[type=text] {
|
||||
position: inherit;
|
||||
padding: 16px 15px 14px 30px;
|
||||
border: 0;
|
||||
box-sizing: border-box;
|
||||
background: none;
|
||||
background-color: white;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
box-sizing: border-box;
|
||||
font-family: 'Roboto', sans-serif;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
#MSearchSelectWindow {
|
||||
position: fixed;
|
||||
top: 178px !important;
|
||||
left: 49px !important;
|
||||
border: solid 1px #d4d4d4;
|
||||
border-radius: 0;
|
||||
box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.25);
|
||||
background-color: white;
|
||||
}
|
||||
#MSearchSelectWindow .SelectItem {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
padding: 1px 25px 1px 6px;
|
||||
}
|
||||
#MSearchSelectWindow .SelectionMark {
|
||||
color: black;
|
||||
}
|
||||
#MSearchSelectWindow .SelectItem:hover {
|
||||
background-color: #CA4F62;
|
||||
}
|
||||
#MSearchResultsWindow {
|
||||
position: fixed;
|
||||
top: 178px !important;
|
||||
left: 49px !important;
|
||||
border: solid 1px #d4d4d4;
|
||||
border-radius: 0;
|
||||
box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.25);
|
||||
background-color: white;
|
||||
}
|
||||
.SRSymbol {
|
||||
color: #CA4F62;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Main Navigation */
|
||||
#main-nav ul {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
#main-nav > ul {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
#main-nav > ul > li > a {
|
||||
font-weight: normal;
|
||||
font-size: 18px;
|
||||
}
|
||||
#main-nav > ul > li {
|
||||
position: relative;
|
||||
padding-bottom: 20px;
|
||||
flex: 1;
|
||||
order: 2;
|
||||
}
|
||||
#main-nav > ul > li:last-child {
|
||||
order: 1;
|
||||
float: none !important;
|
||||
}
|
||||
#main-nav ul li a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
#main-nav ul li.hasChildren > a:hover[aria-expanded="false"] {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#main-nav ul li a:hover {
|
||||
text-decoration: underline;
|
||||
color: #CA4F62;
|
||||
}
|
||||
|
||||
#main-nav ul ul li {
|
||||
position: relative;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
#main-nav ul li.hasChildren > a[aria-expanded="false"]:after {
|
||||
position: absolute;
|
||||
content: "+";
|
||||
/*top: -1px;*/
|
||||
right: -2px;
|
||||
line-height: 20px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
#main-nav li ul {
|
||||
padding-left: 5px;
|
||||
display: none;
|
||||
padding-top: 15px;
|
||||
/*padding-bottom: 15px;*/
|
||||
}
|
||||
|
||||
@media (max-width: 1012px) {
|
||||
#main-nav > ul > li.hasChildren:after {
|
||||
top: 9px;
|
||||
}
|
||||
#main-nav > ul > li {
|
||||
padding-bottom: 0px;
|
||||
}
|
||||
#main-nav > ul > li:first-child {
|
||||
border-top: 1px solid rgba(0,0,0,0.2);
|
||||
}
|
||||
#main-nav > ul > li {
|
||||
padding: 10px 0;
|
||||
border-bottom: 1px solid rgba(0,0,0,0.2);
|
||||
}
|
||||
#main-nav > ul > li:last-child {
|
||||
padding: 10px 0;
|
||||
}
|
||||
#main-nav > ul > li ul {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Page Header */
|
||||
div.header {
|
||||
background: none;
|
||||
padding: 0px;
|
||||
margin-bottom: 20px;
|
||||
border-bottom: none;
|
||||
}
|
||||
div.header .headertitle {
|
||||
padding: 0;
|
||||
}
|
||||
div.header .title {
|
||||
margin: 0;
|
||||
}
|
||||
div.header .summary {
|
||||
font-size: 13px;
|
||||
padding: 9px 0 0 0;
|
||||
width: auto;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
div.header .summary {
|
||||
text-align: left;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
}
|
||||
div.header .summary a:hover {
|
||||
color: #CA4F62;
|
||||
}
|
||||
div.header .ingroups {
|
||||
font-size: 13px;
|
||||
width: auto;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
/* Floating labels */
|
||||
span.mlabels {
|
||||
margin: 0;
|
||||
margin-left: 10px;
|
||||
}
|
||||
span.mlabel {
|
||||
margin: 0;
|
||||
margin-left: 10px;
|
||||
border: solid 1px #CA4F62;
|
||||
background-color: #CA4F62;
|
||||
padding: 3px 5px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
|
||||
/* Content area */
|
||||
div.contents {
|
||||
padding: 0;
|
||||
margin: 0px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
div.contents ul li {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
div.contents ul li:last-child {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
div.toc {
|
||||
padding: 0;
|
||||
padding-bottom: 20px;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
box-sizing: border-box;
|
||||
float: none;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
div.toc {
|
||||
//
|
||||
}
|
||||
}
|
||||
div.toc h3 {
|
||||
margin: 0;
|
||||
margin-bottom: 5px;
|
||||
color: black;
|
||||
font: 400 14px/22px Roboto,sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
div.toc ul {
|
||||
margin: 0;
|
||||
}
|
||||
div.toc ul li {
|
||||
margin-left: 0 !important;
|
||||
padding-left: 15px !important;
|
||||
font: 400 14px/22px Roboto,sans-serif;
|
||||
}
|
||||
div.toc li ul {
|
||||
padding-left: 10px;
|
||||
padding-top: 7px;
|
||||
}
|
||||
|
||||
/* Group Headers */
|
||||
h2.groupheader {
|
||||
border-bottom: solid 1px #d4d4d4;
|
||||
color: black;
|
||||
margin: 0px;
|
||||
margin-top: 30px;
|
||||
padding: 10px 0;
|
||||
}
|
||||
tr.heading h2 {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
|
||||
/* Tables */
|
||||
table.memberdecls {
|
||||
margin-top: 30px;
|
||||
/*margin-bottom: 30px;*/
|
||||
}
|
||||
table.memberdecls td.memSeparator {
|
||||
line-height: 0;
|
||||
font-size: 0;
|
||||
border-bottom: 1px solid #d4d4d4;
|
||||
}
|
||||
table.memberdecls td.memItemLeft {
|
||||
padding: 7px 15px 4px 15px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
table.memberdecls td.memItemRight {
|
||||
padding: 7px 15px 4px 15px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
table.memberdecls td.mdescLeft {
|
||||
padding: 7px 15px 4px 15px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
table.memberdecls td.mdescRight {
|
||||
padding: 7px 15px 4px 15px;
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
|
||||
table.params .paramname {
|
||||
color: black;
|
||||
}
|
||||
|
||||
|
||||
table.markdownTable td, table.markdownTable th {
|
||||
border: 1px solid #d4d4d4;
|
||||
padding: 3px 7px;
|
||||
color: black;
|
||||
}
|
||||
|
||||
table.markdownTable th.markdownTableHeadLeft, table.markdownTable th.markdownTableHeadRight, table.markdownTable th.markdownTableHeadCenter, table.markdownTable th.markdownTableHeadNone {
|
||||
background-color: #f5f5f5;
|
||||
color: black;
|
||||
padding: 3px 7px;
|
||||
}
|
||||
|
||||
div.contents .fragment {
|
||||
border: solid 1px #CA4F62;
|
||||
padding: 20px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
div.contents .line {
|
||||
line-height: 15px;
|
||||
}
|
||||
|
||||
|
||||
.memtitle {
|
||||
margin-top: 10px;
|
||||
border-top: solid 1px #d4d4d4;
|
||||
border-left: solid 1px #d4d4d4;
|
||||
border-right: solid 1px #d4d4d4;
|
||||
background: none;
|
||||
background-color: #f5f5f5;
|
||||
padding: 8px 10px;
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
}
|
||||
.memtitle .permalink a, .memtitle .permalink a:visited {
|
||||
color: black;
|
||||
}
|
||||
.memtitle .permalink a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.memitem {
|
||||
margin: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
.memitem.glow {
|
||||
box-shadow: 0 0 15px #CA4F62;
|
||||
}
|
||||
.memitem .memproto {
|
||||
box-shadow: none;
|
||||
background: none;
|
||||
background-color: #f5f5f5;
|
||||
border-top: solid 1px #d4d4d4;
|
||||
border-left: solid 1px #d4d4d4;
|
||||
border-right: solid 1px #d4d4d4;
|
||||
color: black;
|
||||
padding: 8px 10px;
|
||||
}
|
||||
.memitem .memproto .memname {
|
||||
margin-left: 0;
|
||||
}
|
||||
.memitem .memdoc {
|
||||
box-shadow: none;
|
||||
background: none;
|
||||
border-bottom: solid 1px #d4d4d4;
|
||||
border-left: solid 1px #d4d4d4;
|
||||
border-right: solid 1px #d4d4d4;
|
||||
padding: 10px 12px;
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* General links? */
|
||||
a.el {
|
||||
font-weight: normal;
|
||||
}
|
||||
a.el {
|
||||
color: #CA4F62;
|
||||
}
|
||||
a.el:visited {
|
||||
color: #CA4F62;
|
||||
}
|
||||
a.el:hover {
|
||||
color: #CA4F62;
|
||||
}
|
||||
div.contents a {
|
||||
color: #CA4F62;
|
||||
}
|
||||
div.contents a:visited {
|
||||
color: #CA4F62;
|
||||
}
|
||||
div.contents a:hover {
|
||||
color: #CA4F62;
|
||||
}
|
||||
|
||||
|
||||
/* Highlighted effect */
|
||||
h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow {
|
||||
text-shadow: 0 0 15px #CA4F62;
|
||||
}
|
||||
|
||||
|
||||
/* Directory */
|
||||
div.directory {
|
||||
margin: 20px 0px;
|
||||
border-top: 1px solid #d4d4d4;
|
||||
border-bottom: 1px solid #d4d4d4;
|
||||
}
|
||||
div.directory .levels {
|
||||
font-size: 13px;
|
||||
padding: 8px 0;
|
||||
}
|
||||
div.directory .levels span:hover {
|
||||
color: #CA4F62;
|
||||
}
|
||||
table.directory {
|
||||
/*width: 100%;*/
|
||||
}
|
||||
table.directory tr.even {
|
||||
background-color: #f5f5f5;
|
||||
}
|
||||
table.directory td.entry {
|
||||
padding: 8px 6px;
|
||||
vertical-align: middle;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
table.directory td.desc {
|
||||
padding: 8px 6px;
|
||||
vertical-align: middle;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
|
||||
/* Icons */
|
||||
.iconfopen, .icondoc {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
dl.reflist dt {
|
||||
box-shadow: none;
|
||||
background-color: #F5F5F5;
|
||||
border-top: solid 1px #d4d4d4;
|
||||
border-left: solid 1px #d4d4d4;
|
||||
border-right: solid 1px #d4d4d4;
|
||||
padding: 10px;
|
||||
}
|
||||
dl.reflist dd {
|
||||
box-shadow: none;
|
||||
background: none;
|
||||
border-bottom: solid 1px #d4d4d4;
|
||||
border-left: solid 1px #d4d4d4;
|
||||
border-right: solid 1px #d4d4d4;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
|
||||
/* Standard arrow icon? */
|
||||
.arrow {
|
||||
color: #d4d4d4;
|
||||
width: auto;
|
||||
height: auto;
|
||||
margin: 0 5px;
|
||||
}
|
||||
|
||||
.icona {
|
||||
height: auto;
|
||||
width: auto;
|
||||
margin-right: 8px;
|
||||
}
|
||||
.icona .icon {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
margin: 0;
|
||||
background-color: #CA4F62;
|
||||
padding: 1px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* horizontal ruler */
|
||||
hr {
|
||||
border: none;
|
||||
border-top: 1px solid #d4d4d4;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
|
||||
/* Notes */
|
||||
dl.warning {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
dl.note {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
dl.attention {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
dl.todo {
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
dl dt, dl dt a.el {
|
||||
font-weight: bold;
|
||||
}
|
||||
dl dd {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
|
||||
table.fieldtable {
|
||||
box-shadow: none;
|
||||
border: 1px solid #d4d4d4;
|
||||
}
|
||||
table.fieldtable th {
|
||||
background: none;
|
||||
background-color: #F5F5F5;
|
||||
border-bottom: 1px solid #d4d4d4;
|
||||
color: black;
|
||||
font-size: 100%;
|
||||
font-weight: bold;
|
||||
}
|
||||
table.fieldtable td.fieldname, table.fieldtable td.fielddoc {
|
||||
border-bottom: 1px solid #d4d4d4;
|
||||
border-right: 1px solid #d4d4d4;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
div.qindex {
|
||||
background-color: #F5F5F5;
|
||||
border: none;
|
||||
text-align: center;
|
||||
padding: 8px 0;
|
||||
}
|
||||
table.classindex div.ah {
|
||||
font-family: 'Roboto', sans-serif;
|
||||
margin: 0;
|
||||
background: none;
|
||||
background-color: #CA4F62;
|
||||
padding: 1px;
|
||||
font-weight: normal;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
border-radius: 0;
|
||||
padding: 3px;
|
||||
}
|
||||
table.classindex td {
|
||||
padding: 3px 6px;
|
||||
vertical-align: middle;
|
||||
font-size: 14px;
|
||||
}
|
||||
table.classindex table td {
|
||||
padding: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
div.textblock h2 {
|
||||
border-bottom: solid 1px #d4d4d4;
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.navigation-mobile {
|
||||
display: none;
|
||||
background-color: #F5F5F5;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 70px;
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
.navigation-mobile {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.navigation-toggle {
|
||||
cursor: pointer;
|
||||
width: 44px;
|
||||
height: 44px;
|
||||
margin-right: 20px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
bottom: 5%;
|
||||
z-index: 50;
|
||||
display: none;
|
||||
}
|
||||
@media (max-width: 1012px) {
|
||||
.navigation-toggle {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.navigation-toggle {
|
||||
margin-right: 0px;
|
||||
}
|
||||
}
|
||||
.navigation-toggle span {
|
||||
display: block;
|
||||
text-indent: -9999px;
|
||||
position: absolute;
|
||||
height: 2px;
|
||||
left: 10px;
|
||||
right: 10px;
|
||||
background-color: #CA4F62;
|
||||
border-radius: 1px;
|
||||
transition: 0.15s all;
|
||||
}
|
||||
.line-1 {
|
||||
top: 14px;
|
||||
}
|
||||
.line-2 {
|
||||
top: 50%;
|
||||
margin-top: -1px;
|
||||
}
|
||||
.line-3 {
|
||||
bottom: 14px;
|
||||
}
|
||||
.navigation-toggle.clicked .line-1 {
|
||||
transform: rotate(45deg);
|
||||
top: 21px;
|
||||
}
|
||||
.navigation-toggle.clicked .line-2 {
|
||||
opacity: 0;
|
||||
}
|
||||
.navigation-toggle.clicked .line-3 {
|
||||
transform: rotate(-45deg);
|
||||
bottom: 21px;
|
||||
}
|
||||
|
@ -1,31 +0,0 @@
|
||||
## Documentation and datasheets {#weblinks_page}
|
||||
|
||||
The full documentation for the RP2040 and Raspberry Pi Pico board can be found at the following links
|
||||
|
||||
- [RP2040 Datasheet](https://rptl.io/rp2040-datasheet)
|
||||
- [Raspberry Pi Pico Datasheet](https://rptl.io/pico-datasheet)
|
||||
- [Hardware design with the RP2040](https://rptl.io/rp2040-design)
|
||||
- [Raspberry Pi Pico C/C++ SDK](https://rptl.io/pico-c-sdk)
|
||||
- [Raspberry Pi Pico Python SDK](https://rptl.io/pico-micropython)
|
||||
- [Getting started with Raspberry Pi Pico](https://rptl.io/pico-get-started)
|
||||
- [Raspberry Pi Pico FAQ](https://rptl.io/pico-faq)
|
||||
|
||||
### Weblinks
|
||||
|
||||
At Raspberry Pi we have a very community-based attitude to help. We run a very popular and busy forum where you can ask questions about any aspect of the Raspberry Pi ecosystem, including the Raspberry Pi Pico.
|
||||
|
||||
You can find our forums at the [following link](https://forums.raspberrypi.com/).
|
||||
|
||||
For the main Raspberry Pi website, [see here](https://www.raspberrypi.com)
|
||||
|
||||
For the Raspberry Pi Pico page, [see here](https://rptl.io/rp2040-get-started)
|
||||
|
||||
### GitHub
|
||||
|
||||
All the source code for the Raspberry Pi Pico SDK, examples and other libraries can be found on GitHub.
|
||||
|
||||
- [Raspberry Pi Pico SDK](https://github.com/raspberrypi/pico-sdk)
|
||||
- [Pico Examples](https://github.com/raspberrypi/pico-examples)
|
||||
- [Pico Extras - Libraries under development](https://github.com/raspberrypi/pico-extras)
|
||||
- [Pico Playground - Examples that use Pico Extras](https://github.com/raspberrypi/pico-playground)
|
||||
- [Pico Bootrom source code](https://github.com/raspberrypi/pico-bootrom)
|
@ -1,62 +0,0 @@
|
||||
# This is a copy of <PICO_SDK_PATH>/external/pico_sdk_import.cmake
|
||||
|
||||
# This can be dropped into an external project to help locate this SDK
|
||||
# It should be include()ed prior to project()
|
||||
|
||||
if (DEFINED ENV{PICO_SDK_PATH} AND (NOT PICO_SDK_PATH))
|
||||
set(PICO_SDK_PATH $ENV{PICO_SDK_PATH})
|
||||
message("Using PICO_SDK_PATH from environment ('${PICO_SDK_PATH}')")
|
||||
endif ()
|
||||
|
||||
if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT} AND (NOT PICO_SDK_FETCH_FROM_GIT))
|
||||
set(PICO_SDK_FETCH_FROM_GIT $ENV{PICO_SDK_FETCH_FROM_GIT})
|
||||
message("Using PICO_SDK_FETCH_FROM_GIT from environment ('${PICO_SDK_FETCH_FROM_GIT}')")
|
||||
endif ()
|
||||
|
||||
if (DEFINED ENV{PICO_SDK_FETCH_FROM_GIT_PATH} AND (NOT PICO_SDK_FETCH_FROM_GIT_PATH))
|
||||
set(PICO_SDK_FETCH_FROM_GIT_PATH $ENV{PICO_SDK_FETCH_FROM_GIT_PATH})
|
||||
message("Using PICO_SDK_FETCH_FROM_GIT_PATH from environment ('${PICO_SDK_FETCH_FROM_GIT_PATH}')")
|
||||
endif ()
|
||||
|
||||
set(PICO_SDK_PATH "${PICO_SDK_PATH}" CACHE PATH "Path to the Raspberry Pi Pico SDK")
|
||||
set(PICO_SDK_FETCH_FROM_GIT "${PICO_SDK_FETCH_FROM_GIT}" CACHE BOOL "Set to ON to fetch copy of SDK from git if not otherwise locatable")
|
||||
set(PICO_SDK_FETCH_FROM_GIT_PATH "${PICO_SDK_FETCH_FROM_GIT_PATH}" CACHE FILEPATH "location to download SDK")
|
||||
|
||||
if (NOT PICO_SDK_PATH)
|
||||
if (PICO_SDK_FETCH_FROM_GIT)
|
||||
include(FetchContent)
|
||||
set(FETCHCONTENT_BASE_DIR_SAVE ${FETCHCONTENT_BASE_DIR})
|
||||
if (PICO_SDK_FETCH_FROM_GIT_PATH)
|
||||
get_filename_component(FETCHCONTENT_BASE_DIR "${PICO_SDK_FETCH_FROM_GIT_PATH}" REALPATH BASE_DIR "${CMAKE_SOURCE_DIR}")
|
||||
endif ()
|
||||
FetchContent_Declare(
|
||||
pico_sdk
|
||||
GIT_REPOSITORY https://github.com/raspberrypi/pico-sdk
|
||||
GIT_TAG master
|
||||
)
|
||||
if (NOT pico_sdk)
|
||||
message("Downloading Raspberry Pi Pico SDK")
|
||||
FetchContent_Populate(pico_sdk)
|
||||
set(PICO_SDK_PATH ${pico_sdk_SOURCE_DIR})
|
||||
endif ()
|
||||
set(FETCHCONTENT_BASE_DIR ${FETCHCONTENT_BASE_DIR_SAVE})
|
||||
else ()
|
||||
message(FATAL_ERROR
|
||||
"SDK location was not specified. Please set PICO_SDK_PATH or set PICO_SDK_FETCH_FROM_GIT to on to fetch from git."
|
||||
)
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
|
||||
if (NOT EXISTS ${PICO_SDK_PATH})
|
||||
message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' not found")
|
||||
endif ()
|
||||
|
||||
set(PICO_SDK_INIT_CMAKE_FILE ${PICO_SDK_PATH}/pico_sdk_init.cmake)
|
||||
if (NOT EXISTS ${PICO_SDK_INIT_CMAKE_FILE})
|
||||
message(FATAL_ERROR "Directory '${PICO_SDK_PATH}' does not appear to contain the Raspberry Pi Pico SDK")
|
||||
endif ()
|
||||
|
||||
set(PICO_SDK_PATH ${PICO_SDK_PATH} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE)
|
||||
|
||||
include(${PICO_SDK_INIT_CMAKE_FILE})
|
@ -1,94 +0,0 @@
|
||||
# Pre-initialize the Raspberry Pi Pico SDK, setting up the platform and toolchain and some CMake utility functions
|
||||
# This file must be included prior to the project() call
|
||||
|
||||
# Note: this file is perhaps named badly, as it provides a method pico_sdk_init which
|
||||
# the enclosing project calls LATER to actually "initialize" the SDK (by including the CMakeLists.txt from this
|
||||
# same directory)
|
||||
|
||||
if (NOT TARGET _pico_sdk_pre_init_marker)
|
||||
add_library(_pico_sdk_pre_init_marker INTERFACE)
|
||||
|
||||
function(pico_is_top_level_project VAR)
|
||||
string(TOLOWER ${CMAKE_CURRENT_LIST_DIR} __list_dir)
|
||||
string(TOLOWER ${CMAKE_SOURCE_DIR} __source_dir)
|
||||
if (__source_dir STREQUAL __list_dir)
|
||||
set(${VAR} 1 PARENT_SCOPE)
|
||||
else()
|
||||
set(${VAR} 0 PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
function(pico_message_debug MESSAGE)
|
||||
# The log-level system was added in CMake 3.15.
|
||||
if(${CMAKE_VERSION} VERSION_LESS "3.15.0")
|
||||
message(${MESSAGE})
|
||||
else()
|
||||
message(DEBUG ${MESSAGE})
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
if (NOT PICO_SDK_PATH)
|
||||
set(PICO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR})
|
||||
endif ()
|
||||
|
||||
get_filename_component(PICO_SDK_PATH "${PICO_SDK_PATH}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
|
||||
|
||||
set(PICO_SDK_PATH ${CMAKE_CURRENT_LIST_DIR} CACHE PATH "Path to the Raspberry Pi Pico SDK" FORCE)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH ${PICO_SDK_PATH}/cmake)
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/pico_sdk_version.cmake)
|
||||
include(pico_utils)
|
||||
|
||||
message("PICO_SDK_PATH is ${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
include(pico_pre_load_platform)
|
||||
|
||||
# We want to configure correct toolchain prior to project load
|
||||
# todo perhaps this should be included by the platform instead?
|
||||
include(pico_pre_load_toolchain)
|
||||
|
||||
macro(pico_sdk_init)
|
||||
if (NOT CMAKE_PROJECT_NAME)
|
||||
message(WARNING "pico_sdk_init() should be called after the project is created (and languages added)")
|
||||
endif()
|
||||
add_subdirectory(${PICO_SDK_PATH} pico-sdk)
|
||||
pico_is_top_level_project(ISTOP)
|
||||
endmacro()
|
||||
|
||||
macro(add_sub_list_dirs var)
|
||||
foreach(LIST_DIR IN LISTS ${var})
|
||||
get_filename_component(SHORT_NAME "${LIST_DIR}" NAME)
|
||||
pico_message_debug("Including custom CMakeLists.txt ${SHORT_NAME}")
|
||||
add_subdirectory(${LIST_DIR} ${SHORT_NAME})
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(add_sub_list_files var)
|
||||
foreach(LIST_FILE IN LISTS ${var})
|
||||
pico_message_debug("Including custom CMake file ${LIST_FILE}")
|
||||
include(${LIST_FILE})
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
macro(pico_register_common_scope_var NAME)
|
||||
if (NOT ${NAME} IN_LIST PICO_PROMOTE_COMMON_SCOPE_VARS)
|
||||
list(APPEND PICO_PROMOTE_COMMON_SCOPE_VARS ${NAME})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
set(PICO_PROMOTE_COMMON_SCOPE_VARS
|
||||
PICO_INCLUDE_DIRS
|
||||
PICO_SDK_POST_LIST_DIRS
|
||||
PICO_SDK_POST_LIST_FILES
|
||||
PICO_CONFIG_HEADER_FILES
|
||||
PICO_RP2040_CONFIG_HEADER_FILES
|
||||
)
|
||||
|
||||
macro(pico_promote_common_scope_vars)
|
||||
set(PICO_PROMOTE_COMMON_SCOPE_VARS ${PICO_PROMOTE_COMMON_SCOPE_VARS} PARENT_SCOPE)
|
||||
foreach(VAR IN LISTS PICO_PROMOTE_COMMON_SCOPE_VARS)
|
||||
SET(${VAR} ${${VAR}} PARENT_SCOPE)
|
||||
endforeach()
|
||||
endmacro()
|
||||
endif()
|
@ -1,20 +0,0 @@
|
||||
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_MAJOR, SDK major version number, type=int, group=pico_base
|
||||
# PICO_CONFIG: PICO_SDK_VERSION_MAJOR, SDK major version number, type=int, group=pico_base
|
||||
set(PICO_SDK_VERSION_MAJOR 1)
|
||||
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_MINOR, SDK minor version number, type=int, group=pico_base
|
||||
# PICO_CONFIG: PICO_SDK_VERSION_MINOR, SDK minor version number, type=int, group=pico_base
|
||||
set(PICO_SDK_VERSION_MINOR 3)
|
||||
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, group=pico_base
|
||||
# PICO_CONFIG: PICO_SDK_VERSION_REVISION, SDK version revision, type=int, group=pico_base
|
||||
set(PICO_SDK_VERSION_REVISION 0)
|
||||
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_PRE_RELEASE_ID, optional SDK pre-release version identifier, type=string, group=pico_base
|
||||
# PICO_CONFIG: PICO_SDK_VERSION_PRE_RELEASE_ID, optional SDK pre-release version identifier, type=string, group=pico_base
|
||||
#set(PICO_SDK_VERSION_PRE_RELEASE_ID develop)
|
||||
|
||||
# PICO_BUILD_DEFINE: PICO_SDK_VERSION_STRING, SDK version, type=string, group=pico_base
|
||||
# PICO_CONFIG: PICO_SDK_VERSION_STRING, SDK version, type=string, group=pico_base
|
||||
set(PICO_SDK_VERSION_STRING "${PICO_SDK_VERSION_MAJOR}.${PICO_SDK_VERSION_MINOR}.${PICO_SDK_VERSION_REVISION}")
|
||||
|
||||
if (PICO_SDK_VERSION_PRE_RELEASE_ID)
|
||||
set(PICO_SDK_VERSION_STRING "${PICO_SDK_VERSION_STRING}-${PICO_SDK_VERSION_PRE_RELEASE_ID}")
|
||||
endif()
|
@ -1,31 +0,0 @@
|
||||
# PICO_CMAKE_CONFIG: PICO_BOARD, The board name being built for. This is overridable from the user environment, type=string, default=pico, group=build
|
||||
if (DEFINED ENV{PICO_BOARD})
|
||||
set(PICO_BOARD $ENV{PICO_BOARD})
|
||||
message("Using PICO_BOARD from environment ('${PICO_BOARD}')")
|
||||
else()
|
||||
if (NOT PICO_BOARD)
|
||||
set(PICO_BOARD "pico")
|
||||
pico_message("Defaulting PICO target board to ${PICO_BOARD} since not specified.")
|
||||
else()
|
||||
message("PICO target board is ${PICO_BOARD}.")
|
||||
endif()
|
||||
endif()
|
||||
set(PICO_BOARD ${PICO_BOARD} CACHE STRING "PICO target board (e.g. pico)")
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_BOARD_CMAKE_DIRS, Directories to look for <PICO_BOARD>.cmake in. This is overridable from the user environment, type=list, default="", group=build
|
||||
if (DEFINED ENV{PICO_BOARD_CMAKE_DIRS})
|
||||
set(PICO_BOARD_CMAKE_DIRS $ENV{PICO_BOARD_CMAKE_DIRS})
|
||||
message("Using PICO_BOARD_CMAKE_DIRS from environment ('${PICO_BOARD_CMAKE_DIRS}')")
|
||||
endif()
|
||||
|
||||
list(APPEND PICO_BOARD_CMAKE_DIRS ${CMAKE_CURRENT_LIST_DIR}/boards)
|
||||
|
||||
pico_find_in_paths(PICO_BOARD_CMAKE_FILE PICO_BOARD_CMAKE_DIRS ${PICO_BOARD}.cmake)
|
||||
if (EXISTS "${PICO_BOARD_CMAKE_FILE}")
|
||||
message("Using CMake board configuration from ${PICO_BOARD_CMAKE_FILE}")
|
||||
include(${PICO_BOARD_CMAKE_FILE} board_config)
|
||||
else()
|
||||
include(boards/generic_board.cmake)
|
||||
endif()
|
||||
|
||||
list(APPEND PICO_INCLUDE_DIRS ${CMAKE_CURRENT_LIST_DIR}/boards/include) # so boards/foo.h can be explicitly included
|
@ -1,23 +0,0 @@
|
||||
# For boards without their own cmake file, simply include a header
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_BOARD_HEADER_DIRS, Directories to look for <PICO_BOARD>.h in. This is overridable from the user environment, type=list, default="", group=build
|
||||
if (DEFINED ENV{PICO_BOARD_HEADER_DIRS})
|
||||
set(PICO_BOARD_HEADER_DIRS $ENV{PICO_BOARD_HEADER_DIRS})
|
||||
message("Using PICO_BOARD_HEADER_DIRS from environment ('${PICO_BOARD_HEADER_DIRS}')")
|
||||
endif()
|
||||
set(PICO_BOARD_HEADER_DIRS ${PICO_BOARD_HEADER_DIRS} CACHE STRING "PICO board header directories")
|
||||
|
||||
list(APPEND PICO_BOARD_HEADER_DIRS ${CMAKE_CURRENT_LIST_DIR}/include/boards)
|
||||
pico_find_in_paths(PICO_BOARD_HEADER_FILE PICO_BOARD_HEADER_DIRS ${PICO_BOARD}.h)
|
||||
|
||||
if (EXISTS ${PICO_BOARD_HEADER_FILE})
|
||||
message("Using board configuration from ${PICO_BOARD_HEADER_FILE}")
|
||||
list(APPEND PICO_CONFIG_HEADER_FILES ${PICO_BOARD_HEADER_FILE})
|
||||
else()
|
||||
set(msg "Unable to find definition of board '${PICO_BOARD}' (specified by PICO_BOARD):\n")
|
||||
list(JOIN PICO_BOARD_HEADER_DIRS ", " DIRS)
|
||||
string(CONCAT msg ${msg} " Looked for ${PICO_BOARD}.h in ${DIRS} (additional paths specified by PICO_BOARD_HEADER_DIRS)\n")
|
||||
list(JOIN PICO_BOARD_CMAKE_DIRS ", " DIRS)
|
||||
string(CONCAT msg ${msg} " Looked for ${PICO_BOARD}.cmake in ${DIRS} (additional paths specified by PICO_BOARD_CMAKE_DIRS)")
|
||||
message(FATAL_ERROR ${msg})
|
||||
endif()
|
@ -1,93 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_ADAFRUIT_FEATHER_RP2040_H
|
||||
#define _BOARDS_ADAFRUIT_FEATHER_RP2040_H
|
||||
|
||||
// For board detection
|
||||
#define ADAFRUIT_FEATHER_RP2040
|
||||
|
||||
// On some samples, the xosc can take longer to stabilize than is usual
|
||||
#ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
||||
#endif
|
||||
|
||||
//------------- UART -------------//
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
//------------- LED -------------//
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 13
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_WS2812_PIN
|
||||
#define PICO_DEFAULT_WS2812_PIN 16
|
||||
#endif
|
||||
|
||||
//------------- I2C -------------//
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 3
|
||||
#endif
|
||||
|
||||
//------------- SPI -------------//
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
|
||||
//------------- FLASH -------------//
|
||||
|
||||
// Use slower generic flash access
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_GENERIC_03H 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 4
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,96 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_ADAFRUIT_ITSYBITSY_RP2040_H
|
||||
#define _BOARDS_ADAFRUIT_ITSYBITSY_RP2040_H
|
||||
|
||||
// For board detection
|
||||
#define ADAFRUIT_ITSYBITSY_RP2040
|
||||
|
||||
// On some samples, the xosc can take longer to stabilize than is usual
|
||||
#ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
||||
#endif
|
||||
|
||||
//------------- UART -------------//
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
//------------- LED -------------//
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 11
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_WS2812_PIN
|
||||
#define PICO_DEFAULT_WS2812_PIN 17
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_WS2812_POWER_PIN
|
||||
#define PICO_DEFAULT_WS2812_POWER_PIN 16
|
||||
#endif
|
||||
|
||||
//------------- I2C -------------//
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 3
|
||||
#endif
|
||||
|
||||
//------------- SPI -------------//
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
|
||||
//------------- FLASH -------------//
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,95 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_ADAFRUIT_QTPY_RP2040_H
|
||||
#define _BOARDS_ADAFRUIT_QTPY_RP2040_H
|
||||
|
||||
// For board detection
|
||||
#define ADAFRUIT_QTPY_RP2040
|
||||
|
||||
// On some samples, the xosc can take longer to stabilize than is usual
|
||||
#ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
||||
#endif
|
||||
|
||||
//------------- UART -------------//
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 1
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 5
|
||||
#endif
|
||||
|
||||
//------------- LED -------------//
|
||||
// No normal LED
|
||||
// #define PICO_DEFAULT_LED_PIN 13
|
||||
|
||||
#ifndef PICO_DEFAULT_WS2812_PIN
|
||||
#define PICO_DEFAULT_WS2812_PIN 12
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_WS2812_POWER_PIN
|
||||
#define PICO_DEFAULT_WS2812_POWER_PIN 11
|
||||
#endif
|
||||
|
||||
//------------- I2C -------------//
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 24
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 25
|
||||
#endif
|
||||
|
||||
//------------- SPI -------------//
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 3
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 4
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 6
|
||||
#endif
|
||||
|
||||
//------------- FLASH -------------//
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,73 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2021 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_ADAFRUIT_TRINKEY_QT2040_H
|
||||
#define _BOARDS_ADAFRUIT_TRINKEY_QT2040_H
|
||||
|
||||
// For board detection
|
||||
#define ADAFRUIT_TRINKEY_QT2040
|
||||
|
||||
// On some samples, the xosc can take longer to stabilize than is usual
|
||||
#ifndef PICO_XOSC_STARTUP_DELAY_MULTIPLIER
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
||||
#endif
|
||||
|
||||
//------------- UART -------------//
|
||||
// no PICO_DEFAULT_UART
|
||||
// no PICO_DEFAULT_UART_TX_PIN
|
||||
// no PICO_DEFAULT_UART_RX_PIN
|
||||
|
||||
//------------- LED -------------//
|
||||
// No normal LED
|
||||
// #define PICO_DEFAULT_LED_PIN 13
|
||||
|
||||
#ifndef PICO_DEFAULT_WS2812_PIN
|
||||
#define PICO_DEFAULT_WS2812_PIN 27
|
||||
#endif
|
||||
|
||||
//------------- I2C -------------//
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 16
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 17
|
||||
#endif
|
||||
|
||||
//------------- SPI -------------//
|
||||
// no PICO_DEFAULT_SPI
|
||||
// no PICO_DEFAULT_SPI_SCK_PIN
|
||||
// no PICO_DEFAULT_SPI_TX_PIN
|
||||
// no PICO_DEFAULT_SPI_RX_PIN
|
||||
// no PICO_DEFAULT_SPI_CSN_PIN
|
||||
|
||||
//------------- FLASH -------------//
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_ARDUINO_NANO_RP2040_CONNECT_H
|
||||
#define _BOARDS_ARDUINO_NANO_RP2040_CONNECT_H
|
||||
|
||||
// For board detection
|
||||
#define ARDUINO_NANO_RP2040_CONNECT
|
||||
|
||||
//------------- UART -------------//
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
//------------- LED -------------//
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 6
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
//------------- I2C -------------//
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 12
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 13
|
||||
#endif
|
||||
|
||||
//------------- SPI -------------//
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 7
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 4
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 6
|
||||
#endif
|
||||
|
||||
//------------- FLASH -------------//
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,91 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_MELOPERO_SHAKE_RP2040_H
|
||||
#define _BOARDS_MELOPERO_SHAKE_RP2040_H
|
||||
|
||||
// For board detection
|
||||
#define MELOPERO_SHAKE_RP2040
|
||||
|
||||
//------------- UART -------------//
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 1
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 8
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 9
|
||||
#endif
|
||||
|
||||
//------------- LED -------------//
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 13
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_WS2812_PIN
|
||||
#define PICO_DEFAULT_WS2812_PIN 16
|
||||
#endif
|
||||
|
||||
//------------- I2C -------------//
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 3
|
||||
#endif
|
||||
|
||||
//------------- SPI -------------//
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 1
|
||||
#endif
|
||||
|
||||
//------------- FLASH -------------//
|
||||
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,15 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_NONE_H
|
||||
#define _BOARDS_NONE_H
|
||||
|
||||
#endif
|
@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
// This header may be included by other board headers as "boards/pico.h"
|
||||
|
||||
#ifndef _BOARDS_PICO_H
|
||||
#define _BOARDS_PICO_H
|
||||
|
||||
// For board detection
|
||||
#define RASPBERRYPI_PICO
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 25
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 4
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 5
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 17
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
|
||||
#define PICO_SMPS_MODE_PIN 23
|
||||
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 1
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,181 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_INTERSTATE75_H
|
||||
#define _BOARDS_PIMORONI_INTERSTATE75_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_INTERSTATE75
|
||||
|
||||
// --- BOARD SPECIFIC ---
|
||||
#ifndef INTERSTATE75_R0_PIN
|
||||
#define INTERSTATE75_R0_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_G0_PIN
|
||||
#define INTERSTATE75_G0_PIN 1
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_B0_PIN
|
||||
#define INTERSTATE75_B0_PIN 2
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_R1_PIN
|
||||
#define INTERSTATE75_R1_PIN 3
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_G1_PIN
|
||||
#define INTERSTATE75_G1_PIN 4
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_B1_PIN
|
||||
#define INTERSTATE75_B1_PIN 5
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_ROW_A_PIN
|
||||
#define INTERSTATE75_ROW_A_PIN 6
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_ROW_B_PIN
|
||||
#define INTERSTATE75_ROW_B_PIN 7
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_ROW_C_PIN
|
||||
#define INTERSTATE75_ROW_C_PIN 8
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_ROW_D_PIN
|
||||
#define INTERSTATE75_ROW_D_PIN 9
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_ROW_E_PIN
|
||||
#define INTERSTATE75_ROW_E_PIN 10
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_CLK_PIN
|
||||
#define INTERSTATE75_CLK_PIN 11
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_LAT_PIN
|
||||
#define INTERSTATE75_LAT_PIN 12
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_OE_PIN
|
||||
#define INTERSTATE75_OE_PIN 13
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_SW_A_PIN
|
||||
#define INTERSTATE75_SW_A_PIN 14
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_LED_R_PIN
|
||||
#define INTERSTATE75_LED_R_PIN 16
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_LED_G_PIN
|
||||
#define INTERSTATE75_LED_G_PIN 17
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_LED_B_PIN
|
||||
#define INTERSTATE75_LED_B_PIN 18
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_I2C
|
||||
#define INTERSTATE75_I2C 0
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_INT_PIN
|
||||
#define INTERSTATE75_INT_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_SDA_PIN
|
||||
#define INTERSTATE75_SDA_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_SCL_PIN
|
||||
#define INTERSTATE75_SCL_PIN 21
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_USER_SW_PIN
|
||||
#define INTERSTATE75_USER_SW_PIN 23
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_A0_PIN
|
||||
#define INTERSTATE75_A0_PIN 26
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_A1_PIN
|
||||
#define INTERSTATE75_A1_PIN 27
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_A2_PIN
|
||||
#define INTERSTATE75_A2_PIN 28
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_NUM_ADC_PINS
|
||||
#define INTERSTATE75_NUM_ADC_PINS 3
|
||||
#endif
|
||||
|
||||
#ifndef INTERSTATE75_CURRENT_SENSE_PIN
|
||||
#define INTERSTATE75_CURRENT_SENSE_PIN 29
|
||||
#endif
|
||||
|
||||
// --- UART ---
|
||||
// no PICO_DEFAULT_UART
|
||||
// no PICO_DEFAULT_UART_TX_PIN
|
||||
// no PICO_DEFAULT_UART_RX_PIN
|
||||
|
||||
// --- LED ---
|
||||
// Included so basic examples will work, and set it to the green LED
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN INTERSTATE75_LED_G_PIN
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
#ifndef PICO_DEFAULT_LED_PIN_INVERTED
|
||||
#define PICO_DEFAULT_LED_PIN_INVERTED 1
|
||||
#endif
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C INTERSTATE75_I2C
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN INTERSTATE75_SDA_PIN
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN INTERSTATE75_SCL_PIN
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
// no PICO_DEFAULT_SPI
|
||||
// no PICO_DEFAULT_SPI_SCK_PIN
|
||||
// no PICO_DEFAULT_SPI_TX_PIN
|
||||
// no PICO_DEFAULT_SPI_RX_PIN
|
||||
// no PICO_DEFAULT_SPI_CSN_PIN
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,154 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_KEYBOW2040_H
|
||||
#define _BOARDS_PIMORONI_KEYBOW2040_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_KEYBOW2040
|
||||
|
||||
// --- BOARD SPECIFIC ---
|
||||
#ifndef KEYBOW2040_I2C_SDA_PIN
|
||||
#define KEYBOW2040_I2C_SDA_PIN 4
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_I2C_SCL_PIN
|
||||
#define KEYBOW2040_I2C_SCL_PIN 5
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_I2C_INT_PIN
|
||||
#define KEYBOW2040_I2C_INT_PIN 3
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_USER_SW_PIN
|
||||
#define KEYBOW2040_USER_SW_PIN 23
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW0_PIN
|
||||
#define KEYBOW2040_SW0_PIN 21
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW1_PIN
|
||||
#define KEYBOW2040_SW1_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW2_PIN
|
||||
#define KEYBOW2040_SW2_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW3_PIN
|
||||
#define KEYBOW2040_SW3_PIN 18
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW4_PIN
|
||||
#define KEYBOW2040_SW4_PIN 17
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW5_PIN
|
||||
#define KEYBOW2040_SW5_PIN 16
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW6_PIN
|
||||
#define KEYBOW2040_SW6_PIN 15
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW7_PIN
|
||||
#define KEYBOW2040_SW7_PIN 14
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW8_PIN
|
||||
#define KEYBOW2040_SW8_PIN 13
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW9_PIN
|
||||
#define KEYBOW2040_SW9_PIN 12
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW10_PIN
|
||||
#define KEYBOW2040_SW10_PIN 11
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW11_PIN
|
||||
#define KEYBOW2040_SW11_PIN 10
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW12_PIN
|
||||
#define KEYBOW2040_SW12_PIN 9
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW13_PIN
|
||||
#define KEYBOW2040_SW13_PIN 8
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW14_PIN
|
||||
#define KEYBOW2040_SW14_PIN 7
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_SW15_PIN
|
||||
#define KEYBOW2040_SW15_PIN 6
|
||||
#endif
|
||||
|
||||
#ifndef KEYBOW2040_NUM_SWITCHES_PINS
|
||||
#define KEYBOW2040_NUM_SWITCHES_PINS 16
|
||||
#endif
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
// no PICO_DEFAULT_LED_PIN
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN KEYBOW2040_I2C_SDA_PIN
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN KEYBOW2040_I2C_SCL_PIN
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
// no PICO_DEFAULT_SPI
|
||||
// no PICO_DEFAULT_SPI_SCK_PIN
|
||||
// no PICO_DEFAULT_SPI_TX_PIN
|
||||
// no PICO_DEFAULT_SPI_RX_PIN
|
||||
// no PICO_DEFAULT_SPI_CSN_PIN
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,79 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_PGA2040_H
|
||||
#define _BOARDS_PIMORONI_PGA2040_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_PGA2040
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
// no PICO_DEFAULT_LED_PIN
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 4
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 5
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 17
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_PICOLIPO_16MB_H
|
||||
#define _BOARDS_PIMORONI_PICOLIPO_16MB_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_PICOLIPO_16MB
|
||||
|
||||
// --- BOARD SPECIFIC ---
|
||||
#ifndef PICOLIPO_USER_SW_PIN
|
||||
#define PICOLIPO_USER_SW_PIN 23
|
||||
#endif
|
||||
|
||||
#ifndef PICOLIPO_VBUS_DETECT_PIN
|
||||
#define PICOLIPO_VBUS_DETECT_PIN 24
|
||||
#endif
|
||||
|
||||
#ifndef PICOLIPO_BAT_SENSE_PIN
|
||||
#define PICOLIPO_BAT_SENSE_PIN 29
|
||||
#endif
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 25
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 4
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 5
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 17
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_PICOLIPO_4MB_H
|
||||
#define _BOARDS_PIMORONI_PICOLIPO_4MB_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_PICOLIPO_4MB
|
||||
|
||||
// --- BOARD SPECIFIC ---
|
||||
#ifndef PICOLIPO_USER_SW_PIN
|
||||
#define PICOLIPO_USER_SW_PIN 23
|
||||
#endif
|
||||
|
||||
#ifndef PICOLIPO_VBUS_DETECT_PIN
|
||||
#define PICOLIPO_VBUS_DETECT_PIN 24
|
||||
#endif
|
||||
|
||||
#ifndef PICOLIPO_BAT_SENSE_PIN
|
||||
#define PICOLIPO_BAT_SENSE_PIN 29
|
||||
#endif
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 25
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 4
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 5
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 17
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,163 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_PICOSYSTEM_H
|
||||
#define _BOARDS_PIMORONI_PICOSYSTEM_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_PICOSYSTEM
|
||||
|
||||
// --- BOARD SPECIFIC ---
|
||||
#ifndef PICOSYSTEM_VBUS_DETECT_PIN
|
||||
#define PICOSYSTEM_VBUS_DETECT_PIN 2
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LCD_SPI
|
||||
#define PICOSYSTEM_LCD_SPI 0
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LCD_RESET_PIN
|
||||
#define PICOSYSTEM_LCD_RESET_PIN 4
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LCD_CSN_PIN
|
||||
#define PICOSYSTEM_LCD_CSN_PIN 5
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LCD_SCLK_PIN
|
||||
#define PICOSYSTEM_LCD_SCLK_PIN 6
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LCD_MOSI_PIN
|
||||
#define PICOSYSTEM_LCD_MOSI_PIN 7
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LCD_VSYNC_PIN
|
||||
#define PICOSYSTEM_LCD_VSYNC_PIN 8
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LCD_DC_PIN
|
||||
#define PICOSYSTEM_LCD_DC_PIN 9
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_AUDIO_PIN
|
||||
#define PICOSYSTEM_AUDIO_PIN 11
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_BACKLIGHT_PIN
|
||||
#define PICOSYSTEM_BACKLIGHT_PIN 12
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LED_G_PIN
|
||||
#define PICOSYSTEM_LED_G_PIN 13
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LED_R_PIN
|
||||
#define PICOSYSTEM_LED_R_PIN 14
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_LED_B_PIN
|
||||
#define PICOSYSTEM_LED_B_PIN 15
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_Y_PIN
|
||||
#define PICOSYSTEM_SW_Y_PIN 16
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_X_PIN
|
||||
#define PICOSYSTEM_SW_X_PIN 17
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_A_PIN
|
||||
#define PICOSYSTEM_SW_A_PIN 18
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_B_PIN
|
||||
#define PICOSYSTEM_SW_B_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_DOWN_PIN
|
||||
#define PICOSYSTEM_SW_DOWN_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_RIGHT_PIN
|
||||
#define PICOSYSTEM_SW_RIGHT_PIN 21
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_LEFT_PIN
|
||||
#define PICOSYSTEM_SW_LEFT_PIN 22
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_SW_UP_PIN
|
||||
#define PICOSYSTEM_SW_UP_PIN 23
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_CHARGE_STAT_PIN
|
||||
#define PICOSYSTEM_CHARGE_STAT_PIN 24
|
||||
#endif
|
||||
|
||||
#ifndef PICOSYSTEM_BAT_SENSE_PIN
|
||||
#define PICOSYSTEM_BAT_SENSE_PIN 26
|
||||
#endif
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
// Included so basic examples will work, and set it to the green LED
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN PICOSYSTEM_LED_G_PIN
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
#ifndef PICO_DEFAULT_LED_PIN_INVERTED
|
||||
#define PICO_DEFAULT_LED_PIN_INVERTED 1
|
||||
#endif
|
||||
|
||||
// --- I2C ---
|
||||
//no PICO_DEFAULT_I2C
|
||||
//no PICO_DEFAULT_I2C_SDA_PIN
|
||||
//no PICO_DEFAULT_I2C_SCL_PIN
|
||||
|
||||
// --- SPI ---
|
||||
// no PICO_DEFAULT_SPI
|
||||
// no PICO_DEFAULT_SPI_SCK_PIN
|
||||
// no PICO_DEFAULT_SPI_TX_PIN
|
||||
// no PICO_DEFAULT_SPI_RX_PIN
|
||||
// no PICO_DEFAULT_SPI_CSN_PIN
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,137 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_PLASMA2040_H
|
||||
#define _BOARDS_PIMORONI_PLASMA2040_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_PLASMA2040
|
||||
|
||||
// --- BOARD SPECIFIC ---
|
||||
#ifndef PLASMA2040_SW_A_PIN
|
||||
#define PLASMA2040_SW_A_PIN 12
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_SW_B_PIN
|
||||
#define PLASMA2040_SW_B_PIN 13
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_CLK_PIN
|
||||
#define PLASMA2040_CLK_PIN 14
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_DATA_PIN
|
||||
#define PLASMA2040_DATA_PIN 15
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_LED_R_PIN
|
||||
#define PLASMA2040_LED_R_PIN 16
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_LED_G_PIN
|
||||
#define PLASMA2040_LED_G_PIN 17
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_LED_B_PIN
|
||||
#define PLASMA2040_LED_B_PIN 18
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_I2C
|
||||
#define PLASMA2040_I2C 0
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_INT_PIN
|
||||
#define PLASMA2040_INT_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_SDA_PIN
|
||||
#define PLASMA2040_SDA_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_SCL_PIN
|
||||
#define PLASMA2040_SCL_PIN 21
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_USER_SW_PIN
|
||||
#define PLASMA2040_USER_SW_PIN 23
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_A0_PIN
|
||||
#define PLASMA2040_A0_PIN 26
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_A1_PIN
|
||||
#define PLASMA2040_A1_PIN 27
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_A2_PIN
|
||||
#define PLASMA2040_A2_PIN 28
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_NUM_ADC_PINS
|
||||
#define PLASMA2040_NUM_ADC_PINS 3
|
||||
#endif
|
||||
|
||||
#ifndef PLASMA2040_CURRENT_SENSE_PIN
|
||||
#define PLASMA2040_CURRENT_SENSE_PIN 29
|
||||
#endif
|
||||
|
||||
// --- UART ---
|
||||
// no PICO_DEFAULT_UART
|
||||
// no PICO_DEFAULT_UART_TX_PIN
|
||||
// no PICO_DEFAULT_UART_RX_PIN
|
||||
|
||||
// --- LED ---
|
||||
// Included so basic examples will work, and set it to the green LED
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN PLASMA2040_LED_G_PIN
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
#ifndef PICO_DEFAULT_LED_PIN_INVERTED
|
||||
#define PICO_DEFAULT_LED_PIN_INVERTED 1
|
||||
#endif
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C PLASMA2040_I2C
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN PLASMA2040_SDA_PIN
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN PLASMA2040_SCL_PIN
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
// no PICO_DEFAULT_SPI
|
||||
// no PICO_DEFAULT_SPI_SCK_PIN
|
||||
// no PICO_DEFAULT_SPI_TX_PIN
|
||||
// no PICO_DEFAULT_SPI_RX_PIN
|
||||
// no PICO_DEFAULT_SPI_CSN_PIN
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,127 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PIMORONI_TINY2040_H
|
||||
#define _BOARDS_PIMORONI_TINY2040_H
|
||||
|
||||
// For board detection
|
||||
#define PIMORONI_TINY2040
|
||||
|
||||
// --- BOARD SPECIFIC ---
|
||||
#ifndef TINY2040_LED_R_PIN
|
||||
#define TINY2040_LED_R_PIN 18
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_LED_G_PIN
|
||||
#define TINY2040_LED_G_PIN 19
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_LED_B_PIN
|
||||
#define TINY2040_LED_B_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_USER_SW_PIN
|
||||
#define TINY2040_USER_SW_PIN 23
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_A0_PIN
|
||||
#define TINY2040_A0_PIN 26
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_A1_PIN
|
||||
#define TINY2040_A1_PIN 27
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_A2_PIN
|
||||
#define TINY2040_A2_PIN 28
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_A3_PIN
|
||||
#define TINY2040_A3_PIN 29
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_NUM_IO_PINS
|
||||
#define TINY2040_NUM_IO_PINS 8
|
||||
#endif
|
||||
|
||||
#ifndef TINY2040_NUM_ADC_PINS
|
||||
#define TINY2040_NUM_ADC_PINS 4
|
||||
#endif
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
// Included so basic examples will work, and set it to the green LED
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN TINY2040_LED_G_PIN
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
#ifndef PICO_DEFAULT_LED_PIN_INVERTED
|
||||
#define PICO_DEFAULT_LED_PIN_INVERTED 1
|
||||
#endif
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 2
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 3
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 6
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 7
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 4
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 5
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,85 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_PYBSTICK26_RP2040_H
|
||||
#define _BOARDS_PYBSTICK26_RP2040_H
|
||||
|
||||
// For board detection
|
||||
#define PYBSTICK26_RP2040
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 23
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 6
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 7
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 10
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 11
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 8
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 9
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (1 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
|
||||
// Linear regulator on Pybstick26
|
||||
//#define PICO_SMPS_MODE_PIN 23
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
// of #define _BOARDS_PYBSTICK26_RP2040_H
|
@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------------------
|
||||
// Board definition for the SparkFun RP2040 MicroMod processor board
|
||||
//
|
||||
// This header may be included by other board headers as "boards/sparkfun_micromod.h"
|
||||
|
||||
#ifndef _BOARDS_SPARKFUN_MICROMOD_H
|
||||
#define _BOARDS_SPARKFUN_MICROMOD_H
|
||||
|
||||
// For board detection
|
||||
#define SPARKFUN_MICROMOD
|
||||
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 25
|
||||
#endif
|
||||
|
||||
// Default I2C - for qwiic connector
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 4
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 5
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 22
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 23
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 20
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 21
|
||||
#endif
|
||||
|
||||
// spi flash
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------------------
|
||||
// Board definition for the SparkFun RP2040 ProMicro
|
||||
//
|
||||
// This header may be included by other board headers as "boards/sparkfun_promicro.h"
|
||||
|
||||
#ifndef _BOARDS_SPARKFUN_PROMICRO_H
|
||||
#define _BOARDS_SPARKFUN_PROMICRO_H
|
||||
|
||||
// For board detection
|
||||
#define SPARKFUN_PROMICRO
|
||||
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// The PRO Micro doesnt have a plain LED, but a WS2812
|
||||
//#ifndef PICO_DEFAULT_LED_PIN
|
||||
//#define PICO_DEFAULT_LED_PIN 25
|
||||
//#endif
|
||||
#ifndef PICO_DEFAULT_WS2812_PIN
|
||||
#define PICO_DEFAULT_WS2812_PIN 25
|
||||
#endif
|
||||
|
||||
// Default I2C - for the onboard qwiic connector
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 17
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 22
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 23
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 20
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 21
|
||||
#endif
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
// board has 16M onboard flash
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,92 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
//
|
||||
//------------------------------------------------------------------------------------------
|
||||
// Board definition for the SparkFun RP2040 Thing Plus
|
||||
//
|
||||
// This header may be included by other board headers as "boards/sparkfun_thingplus.h"
|
||||
|
||||
#ifndef _BOARDS_SPARKFUN_THINGPLUS_H
|
||||
#define _BOARDS_SPARKFUN_THINGPLUS_H
|
||||
|
||||
// For board detection
|
||||
#define SPARKFUN_THINGPLUS
|
||||
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 25
|
||||
#endif
|
||||
|
||||
// Default I2C - for qwiic connector
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 6
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 7
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 2
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 3
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 4
|
||||
#endif
|
||||
|
||||
|
||||
// spi flash
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// The thing plus has a SD Card.
|
||||
#define PICO_SD_CLK_PIN 14
|
||||
#define PICO_SD_CMD_PIN 15
|
||||
#define PICO_SD_DAT0_PIN 12
|
||||
// DAT pins count down
|
||||
#define PICO_SD_DAT_PIN_INCREMENT -1
|
||||
|
||||
#ifndef PICO_SD_DAT_PIN_COUNT
|
||||
#define PICO_SD_DAT_PIN_COUNT 4
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,82 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
#ifndef _BOARDS_VGABOARD_H
|
||||
#define _BOARDS_VGABOARD_H
|
||||
|
||||
// For board detection
|
||||
#define RASPBERRYPI_VGABOARD
|
||||
|
||||
// Audio pins. I2S BCK, LRCK are on the same pins as PWM L/R.
|
||||
// - When outputting I2S, PWM sees BCK and LRCK, which should sound silent as
|
||||
// they are constant duty cycle, and above the filter cutoff
|
||||
// - When outputting PWM, I2S DIN should be low, so I2S should remain silent.
|
||||
#define VGABOARD_I2S_DIN_PIN 26
|
||||
#define VGABOARD_I2S_BCK_PIN 27
|
||||
#define VGABOARD_I2S_LRCK_PIN 28
|
||||
|
||||
#define VGABOARD_PWM_L_PIN 28
|
||||
#define VGABOARD_PWM_R_PIN 27
|
||||
|
||||
#define VGABOARD_VGA_COLOR_PIN_BASE 0
|
||||
#define VGABOARD_VGA_SYNC_PIN_BASE 16
|
||||
|
||||
// Note DAT1/2 are shared with UART TX/RX (pull jumpers off header to access
|
||||
// UART pins and disconnect SD DAT1/2)
|
||||
#define VGABOARD_SD_CLK_PIN 5
|
||||
#define VGABOARD_SD_CMD_PIN 18
|
||||
#define VGABOARD_SD_DAT0_PIN 19
|
||||
|
||||
// Note buttons are shared with VGA colour LSBs -- if using VGA, you can float
|
||||
// the pin on VSYNC assertion and sample on VSYNC deassertion
|
||||
#define VGABOARD_BUTTON_A_PIN 0
|
||||
#define VGABOARD_BUTTON_B_PIN 6
|
||||
#define VGABOARD_BUTTON_C_PIN 11
|
||||
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 1
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 20
|
||||
#endif
|
||||
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 21
|
||||
#endif
|
||||
|
||||
#define PICO_SCANVIDEO_COLOR_PIN_BASE VGABOARD_VGA_COLOR_PIN_BASE
|
||||
#define PICO_SCANVIDEO_SYNC_PIN_BASE VGABOARD_VGA_SYNC_PIN_BASE
|
||||
|
||||
#define PICO_SD_CLK_PIN VGABOARD_SD_CLK_PIN
|
||||
#define PICO_SD_CMD_PIN VGABOARD_SD_CMD_PIN
|
||||
#define PICO_SD_DAT0_PIN VGABOARD_SD_DAT0_PIN
|
||||
|
||||
// 1 or 4
|
||||
#ifndef PICO_SD_DAT_PIN_COUNT
|
||||
#define PICO_SD_DAT_PIN_COUNT 4
|
||||
#endif
|
||||
|
||||
// 1 or -1
|
||||
#define PICO_SD_DAT_PIN_INCREMENT 1
|
||||
|
||||
#define PICO_AUDIO_I2S_DATA_PIN VGABOARD_I2S_DIN_PIN
|
||||
#define PICO_AUDIO_I2S_CLOCK_PIN_BASE VGABOARD_I2S_BCK_PIN
|
||||
|
||||
#define PICO_AUDIO_PWM_L_PIN VGABOARD_PWM_L_PIN
|
||||
#define PICO_AUDIO_PWM_R_PIN VGABOARD_PWM_R_PIN
|
||||
|
||||
#define PICO_VGA_BOARD
|
||||
|
||||
// vgaboard has a Pico on it, so default anything we haven't set above
|
||||
#include "boards/pico.h"
|
||||
|
||||
#endif
|
@ -1,104 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _BOARDS_WAVESHARE_RP2040_LCD_0_96_H
|
||||
#define _BOARDS_WAVESHARE_RP2040_LCD_0_96_H
|
||||
|
||||
// For board detection
|
||||
#define WAVESHARE_RP2040_LCD_0_96
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 4
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 5
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 17
|
||||
#endif
|
||||
|
||||
// --- LCD ---
|
||||
#ifndef WAVESHARE_RP2040_LCD_SPI
|
||||
#define WAVESHARE_RP2040_LCD_SPI 1
|
||||
#endif
|
||||
#ifndef WAVESHARE_RP2040_LCD_DC_PIN
|
||||
#define WAVESHARE_RP2040_LCD_DC_PIN 8
|
||||
#endif
|
||||
#ifndef WAVESHARE_RP2040_LCD_CS_PIN
|
||||
#define WAVESHARE_RP2040_LCD_CS_PIN 9
|
||||
#endif
|
||||
#ifndef WAVESHARE_RP2040_LCD_SCLK_PIN
|
||||
#define WAVESHARE_RP2040_LCD_SCLK_PIN 10
|
||||
#endif
|
||||
#ifndef WAVESHARE_RP2040_LCD_TX_PIN
|
||||
#define WAVESHARE_RP2040_LCD_TX_PIN 11
|
||||
#endif
|
||||
#ifndef WAVESHARE_RP2040_LCD_RST_PIN
|
||||
#define WAVESHARE_RP2040_LCD_RST_PIN 12
|
||||
#endif
|
||||
#ifndef WAVESHARE_RP2040_LCD_BL_PIN
|
||||
#define WAVESHARE_RP2040_LCD_BL_PIN 25
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
|
||||
#define PICO_SMPS_MODE_PIN 23
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _BOARDS_WAVESHARE_RP2040_PLUS_16MB_H
|
||||
#define _BOARDS_WAVESHARE_RP2040_PLUS_16MB_H
|
||||
|
||||
// For board detection
|
||||
#define WAVESHARE_RP2040_PLUS_16MB
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 25
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 6
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 7
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 17
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
|
||||
#define PICO_SMPS_MODE_PIN 23
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,84 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _BOARDS_WAVESHARE_RP2040_PLUS_4MB_H
|
||||
#define _BOARDS_WAVESHARE_RP2040_PLUS_4MB_H
|
||||
|
||||
// For board detection
|
||||
#define WAVESHARE_RP2040_PLUS_4MB
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- LED ---
|
||||
#ifndef PICO_DEFAULT_LED_PIN
|
||||
#define PICO_DEFAULT_LED_PIN 25
|
||||
#endif
|
||||
// no PICO_DEFAULT_WS2812_PIN
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 6
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 7
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 18
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 19
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 16
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 17
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads)
|
||||
#define PICO_SMPS_MODE_PIN 23
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,79 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// -----------------------------------------------------
|
||||
|
||||
|
||||
#ifndef _BOARDS_WAVESHARE_RP2040_ZERO_H
|
||||
#define _BOARDS_WAVESHARE_RP2040_ZERO_H
|
||||
|
||||
// For board detection
|
||||
#define WAVESHARE_RP2040_ZERO
|
||||
|
||||
// --- UART ---
|
||||
#ifndef PICO_DEFAULT_UART
|
||||
#define PICO_DEFAULT_UART 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_TX_PIN
|
||||
#define PICO_DEFAULT_UART_TX_PIN 0
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_UART_RX_PIN
|
||||
#define PICO_DEFAULT_UART_RX_PIN 1
|
||||
#endif
|
||||
|
||||
// --- WS2812 ---
|
||||
#ifndef PICO_DEFAULT_WS2812_PIN
|
||||
#define PICO_DEFAULT_WS2812_PIN 16
|
||||
#endif
|
||||
|
||||
// --- I2C ---
|
||||
#ifndef PICO_DEFAULT_I2C
|
||||
#define PICO_DEFAULT_I2C 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SDA_PIN
|
||||
#define PICO_DEFAULT_I2C_SDA_PIN 6
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_I2C_SCL_PIN
|
||||
#define PICO_DEFAULT_I2C_SCL_PIN 7
|
||||
#endif
|
||||
|
||||
// --- SPI ---
|
||||
#ifndef PICO_DEFAULT_SPI
|
||||
#define PICO_DEFAULT_SPI 1
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_SCK_PIN
|
||||
#define PICO_DEFAULT_SPI_SCK_PIN 10
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_TX_PIN
|
||||
#define PICO_DEFAULT_SPI_TX_PIN 11
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_RX_PIN
|
||||
#define PICO_DEFAULT_SPI_RX_PIN 12
|
||||
#endif
|
||||
#ifndef PICO_DEFAULT_SPI_CSN_PIN
|
||||
#define PICO_DEFAULT_SPI_CSN_PIN 13
|
||||
#endif
|
||||
|
||||
// --- FLASH ---
|
||||
#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1
|
||||
|
||||
#ifndef PICO_FLASH_SPI_CLKDIV
|
||||
#define PICO_FLASH_SPI_CLKDIV 2
|
||||
#endif
|
||||
|
||||
#ifndef PICO_FLASH_SIZE_BYTES
|
||||
#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024)
|
||||
#endif
|
||||
|
||||
// All boards have B1 RP2040
|
||||
#ifndef PICO_RP2040_B0_SUPPORTED
|
||||
#define PICO_RP2040_B0_SUPPORTED 0
|
||||
#endif
|
||||
|
||||
#endif
|
@ -1,3 +0,0 @@
|
||||
This directory code that is common to all builds regardless of `PICO_PLATFORM`. It is a mix
|
||||
of common header files, or high level functionality built entirely using `hardware_` or `pico_` libraries provided
|
||||
by the actual target `PICO_PLATFORM``
|
@ -1,124 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _BOOT_PICOBOOT_H
|
||||
#define _BOOT_PICOBOOT_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
|
||||
#ifndef NO_PICO_PLATFORM
|
||||
#include "pico/platform.h"
|
||||
#endif
|
||||
|
||||
/** \file picoboot.h
|
||||
* \defgroup boot_picoboot boot_picoboot
|
||||
*
|
||||
* Header file for the PICOBOOT USB interface exposed by an RP2040 in BOOTSEL mode.
|
||||
*/
|
||||
|
||||
#define PICOBOOT_MAGIC 0x431fd10bu
|
||||
|
||||
// --------------------------------------------
|
||||
// CONTROL REQUESTS FOR THE PICOBOOT INTERFACE
|
||||
// --------------------------------------------
|
||||
|
||||
// size 0 OUT - unstall EPs and reset
|
||||
#define PICOBOOT_IF_RESET 0x41
|
||||
|
||||
// size 16 IN - return the status of the last command
|
||||
#define PICOBOOT_IF_CMD_STATUS 0x42
|
||||
|
||||
// --------------------------------------------------
|
||||
// COMMAND REQUESTS SENT TO THE PICOBOOT OUT ENDPOINT
|
||||
// --------------------------------------------------
|
||||
//
|
||||
// picoboot_cmd structure of size 32 is sent to OUT endpoint
|
||||
// transfer_length bytes are transferred via IN/OUT
|
||||
// device responds on success with 0 length ACK packet set via OUT/IN
|
||||
// device may stall the transferring endpoint in case of error
|
||||
|
||||
enum picoboot_cmd_id {
|
||||
PC_EXCLUSIVE_ACCESS = 0x1,
|
||||
PC_REBOOT = 0x2,
|
||||
PC_FLASH_ERASE = 0x3,
|
||||
PC_READ = 0x84, // either RAM or FLASH
|
||||
PC_WRITE = 5, // either RAM or FLASH (does no erase)
|
||||
PC_EXIT_XIP = 0x6,
|
||||
PC_ENTER_CMD_XIP = 0x7,
|
||||
PC_EXEC = 0x8,
|
||||
PC_VECTORIZE_FLASH = 0x9
|
||||
};
|
||||
|
||||
enum picoboot_status {
|
||||
PICOBOOT_OK = 0,
|
||||
PICOBOOT_UNKNOWN_CMD = 1,
|
||||
PICOBOOT_INVALID_CMD_LENGTH = 2,
|
||||
PICOBOOT_INVALID_TRANSFER_LENGTH = 3,
|
||||
PICOBOOT_INVALID_ADDRESS = 4,
|
||||
PICOBOOT_BAD_ALIGNMENT = 5,
|
||||
PICOBOOT_INTERLEAVED_WRITE = 6,
|
||||
PICOBOOT_REBOOTING = 7,
|
||||
PICOBOOT_UNKNOWN_ERROR = 8,
|
||||
};
|
||||
|
||||
struct __packed picoboot_reboot_cmd {
|
||||
uint32_t dPC; // 0 means reset into bootrom
|
||||
uint32_t dSP;
|
||||
uint32_t dDelayMS;
|
||||
};
|
||||
|
||||
// used for EXEC, VECTORIZE_FLASH
|
||||
struct __packed picoboot_address_only_cmd {
|
||||
uint32_t dAddr;
|
||||
};
|
||||
|
||||
// used for READ, WRITE, FLASH_ERASE
|
||||
struct __packed picoboot_range_cmd {
|
||||
uint32_t dAddr;
|
||||
uint32_t dSize;
|
||||
};
|
||||
|
||||
enum picoboot_exclusive_type {
|
||||
NOT_EXCLUSIVE = 0,
|
||||
EXCLUSIVE,
|
||||
EXCLUSIVE_AND_EJECT
|
||||
};
|
||||
|
||||
struct __packed picoboot_exclusive_cmd {
|
||||
uint8_t bExclusive;
|
||||
};
|
||||
|
||||
// little endian
|
||||
struct __packed __aligned(4) picoboot_cmd {
|
||||
uint32_t dMagic;
|
||||
uint32_t dToken; // an identifier for this token to correlate with a status response
|
||||
uint8_t bCmdId; // top bit set for IN
|
||||
uint8_t bCmdSize; // bytes of actual data in the arg part of this structure
|
||||
uint16_t _unused;
|
||||
uint32_t dTransferLength; // length of IN/OUT transfer (or 0) if none
|
||||
union {
|
||||
uint8_t args[16];
|
||||
struct picoboot_reboot_cmd reboot_cmd;
|
||||
struct picoboot_range_cmd range_cmd;
|
||||
struct picoboot_address_only_cmd address_only_cmd;
|
||||
struct picoboot_exclusive_cmd exclusive_cmd;
|
||||
};
|
||||
};
|
||||
|
||||
static_assert(32 == sizeof(struct picoboot_cmd), "picoboot_cmd must be 32 bytes big");
|
||||
|
||||
struct __packed __aligned(4) picoboot_cmd_status {
|
||||
uint32_t dToken;
|
||||
uint32_t dStatusCode;
|
||||
uint8_t bCmdId;
|
||||
uint8_t bInProgress;
|
||||
uint8_t _pad[6];
|
||||
};
|
||||
|
||||
static_assert(16 == sizeof(struct picoboot_cmd_status), "picoboot_cmd_status must be 16 bytes big");
|
||||
#endif
|
@ -1,46 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _BOOT_UF2_H
|
||||
#define _BOOT_UF2_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
|
||||
/** \file uf2.h
|
||||
* \defgroup boot_uf2 boot_uf2
|
||||
*
|
||||
* Header file for the UF2 format supported by an RP2040 in BOOTSEL mode.
|
||||
*/
|
||||
|
||||
#define UF2_MAGIC_START0 0x0A324655u
|
||||
#define UF2_MAGIC_START1 0x9E5D5157u
|
||||
#define UF2_MAGIC_END 0x0AB16F30u
|
||||
|
||||
#define UF2_FLAG_NOT_MAIN_FLASH 0x00000001u
|
||||
#define UF2_FLAG_FILE_CONTAINER 0x00001000u
|
||||
#define UF2_FLAG_FAMILY_ID_PRESENT 0x00002000u
|
||||
#define UF2_FLAG_MD5_PRESENT 0x00004000u
|
||||
|
||||
#define RP2040_FAMILY_ID 0xe48bff56
|
||||
|
||||
struct uf2_block {
|
||||
// 32 byte header
|
||||
uint32_t magic_start0;
|
||||
uint32_t magic_start1;
|
||||
uint32_t flags;
|
||||
uint32_t target_addr;
|
||||
uint32_t payload_size;
|
||||
uint32_t block_no;
|
||||
uint32_t num_blocks;
|
||||
uint32_t file_size; // or familyID;
|
||||
uint8_t data[476];
|
||||
uint32_t magic_end;
|
||||
};
|
||||
|
||||
static_assert(sizeof(struct uf2_block) == 512, "uf2_block not sector sized");
|
||||
|
||||
#endif
|
@ -1,29 +0,0 @@
|
||||
# build the auto gen config headers
|
||||
|
||||
set(header_content "// AUTOGENERATED FROM PICO_CONFIG_HEADER_FILES and then PICO_<PLATFORM>_CONFIG_HEADER_FILES\n// DO NOT EDIT!\n")
|
||||
string(TOUPPER ${PICO_PLATFORM} PICO_PLATFORM_UPPER)
|
||||
|
||||
macro(add_header_content_from_var VAR)
|
||||
set(header_content "${header_content}\n\n// based on ${VAR}:\n")
|
||||
foreach(var IN LISTS ${VAR})
|
||||
set(header_content "${header_content}\n#include \"${var}\"")
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_CONFIG_HEADER_FILES, List of extra header files to include from pico/config.h for all platforms, type=list, default="", group=pico_base
|
||||
add_header_content_from_var(PICO_CONFIG_HEADER_FILES)
|
||||
|
||||
# PICO_CMAKE_CONFIG: PICO_CONFIG_RP2040_HEADER_FILES, List of extra header files to include from pico/config.h for rp2040 platform, type=list, default="", group=pico_base
|
||||
# PICO_CMAKE_CONFIG: PICO_CONFIG_HOST_HEADER_FILES, List of extra header files to include from pico/config.h for host platform, type=list, default="", group=pico_base
|
||||
add_header_content_from_var(PICO_${PICO_PLATFORM_UPPER}_CONFIG_HEADER_FILES)
|
||||
|
||||
file(GENERATE
|
||||
OUTPUT ${CMAKE_BINARY_DIR}/generated/pico_base/pico/config_autogen.h
|
||||
CONTENT "${header_content}"
|
||||
)
|
||||
|
||||
configure_file( ${CMAKE_CURRENT_LIST_DIR}/include/pico/version.h.in ${CMAKE_BINARY_DIR}/generated/pico_base/pico/version.h)
|
||||
|
||||
foreach(DIR IN LISTS PICO_INCLUDE_DIRS)
|
||||
target_include_directories(pico_base_headers INTERFACE ${DIR})
|
||||
endforeach()
|
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef PICO_H_
|
||||
#define PICO_H_
|
||||
|
||||
/** \file pico.h
|
||||
* \defgroup pico_base pico_base
|
||||
*
|
||||
* Core types and macros for the Raspberry Pi Pico SDK. This header is intended to be included by all source code
|
||||
* as it includes configuration headers and overrides in the correct order
|
||||
*
|
||||
* This header may be included by assembly code
|
||||
*/
|
||||
|
||||
#include "pico/types.h"
|
||||
#include "pico/version.h"
|
||||
#include "pico/config.h"
|
||||
#include "pico/platform.h"
|
||||
#include "pico/error.h"
|
||||
|
||||
#endif
|
@ -1,51 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _PICO_ASSERT_H
|
||||
#define _PICO_ASSERT_H
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
#include <cassert>
|
||||
|
||||
extern "C" {
|
||||
#else
|
||||
#include <assert.h>
|
||||
#endif
|
||||
|
||||
// PICO_CONFIG: PARAM_ASSERTIONS_ENABLE_ALL, Global assert enable, type=bool, default=0, group=pico_base
|
||||
// PICO_CONFIG: PARAM_ASSERTIONS_DISABLE_ALL, Global assert disable, type=bool, default=0, group=pico_base
|
||||
|
||||
#ifndef PARAM_ASSERTIONS_ENABLE_ALL
|
||||
#define PARAM_ASSERTIONS_ENABLE_ALL 0
|
||||
#endif
|
||||
|
||||
#ifndef PARAM_ASSERTIONS_DISABLE_ALL
|
||||
#define PARAM_ASSERTIONS_DISABLE_ALL 0
|
||||
#endif
|
||||
|
||||
#define PARAM_ASSERTIONS_ENABLED(x) ((PARAM_ASSERTIONS_ENABLED_ ## x || PARAM_ASSERTIONS_ENABLE_ALL) && !PARAM_ASSERTIONS_DISABLE_ALL)
|
||||
|
||||
#define invalid_params_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) assert(!(test));})
|
||||
#define valid_params_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) assert(test);})
|
||||
#define hard_assert_if(x, test) ({if (PARAM_ASSERTIONS_ENABLED(x)) hard_assert(!(test));})
|
||||
|
||||
#ifdef NDEBUG
|
||||
extern void hard_assertion_failure(void);
|
||||
static inline void hard_assert(bool condition, ...) {
|
||||
if (!condition)
|
||||
hard_assertion_failure();
|
||||
}
|
||||
#else
|
||||
#define hard_assert assert
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif
|
@ -1,21 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef PICO_CONFIG_H_
|
||||
#define PICO_CONFIG_H_
|
||||
|
||||
// -----------------------------------------------------
|
||||
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLY CODE SO
|
||||
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
|
||||
// OR USE #ifndef __ASSEMBLER__ guards
|
||||
// -------------
|
||||
|
||||
// PICO_CONFIG_HEADER_FILES and then PICO_SDK_<PLATFORM>_CONFIG_INCLUDE_FILES
|
||||
// entries are dumped in order at build time into this generated header
|
||||
|
||||
#include "pico/config_autogen.h"
|
||||
|
||||
#endif
|
@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _PICO_ERROR_H
|
||||
#define _PICO_ERROR_H
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
/*!
|
||||
* Common return codes from pico_sdk methods that return a status
|
||||
*/
|
||||
enum {
|
||||
PICO_OK = 0,
|
||||
PICO_ERROR_NONE = 0,
|
||||
PICO_ERROR_TIMEOUT = -1,
|
||||
PICO_ERROR_GENERIC = -2,
|
||||
PICO_ERROR_NO_DATA = -3,
|
||||
};
|
||||
|
||||
#endif // !__ASSEMBLER__
|
||||
|
||||
#endif
|
@ -1,94 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
#ifndef _PICO_TYPES_H
|
||||
#define _PICO_TYPES_H
|
||||
|
||||
#ifndef __ASSEMBLER__
|
||||
|
||||
#include "pico/assert.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <stddef.h>
|
||||
|
||||
typedef unsigned int uint;
|
||||
|
||||
/*! \typedef absolute_time_t
|
||||
\brief An opaque 64 bit timestamp in microseconds
|
||||
|
||||
The type is used instead of a raw uint64_t to prevent accidentally passing relative times or times in the wrong
|
||||
time units where an absolute time is required. It is equivalent to uint64_t in release builds.
|
||||
|
||||
\see to_us_since_boot()
|
||||
\see update_us_since_boot()
|
||||
\ingroup timestamp
|
||||
*/
|
||||
#ifdef NDEBUG
|
||||
typedef uint64_t absolute_time_t;
|
||||
#else
|
||||
typedef struct {
|
||||
uint64_t _private_us_since_boot;
|
||||
} absolute_time_t;
|
||||
#endif
|
||||
|
||||
/*! fn to_us_since_boot
|
||||
* \brief convert an absolute_time_t into a number of microseconds since boot.
|
||||
* \param t the absolute time to convert
|
||||
* \return a number of microseconds since boot, equivalent to t
|
||||
* \ingroup timestamp
|
||||
*/
|
||||
static inline uint64_t to_us_since_boot(absolute_time_t t) {
|
||||
#ifdef NDEBUG
|
||||
return t;
|
||||
#else
|
||||
return t._private_us_since_boot;
|
||||
#endif
|
||||
}
|
||||
|
||||
/*! fn update_us_since_boot
|
||||
* \brief update an absolute_time_t value to represent a given number of microseconds since boot
|
||||
* \param t the absolute time value to update
|
||||
* \param us_since_boot the number of microseconds since boot to represent. Note this should be representable
|
||||
* as a signed 64 bit integer
|
||||
* \ingroup timestamp
|
||||
*/
|
||||
static inline void update_us_since_boot(absolute_time_t *t, uint64_t us_since_boot) {
|
||||
#ifdef NDEBUG
|
||||
*t = us_since_boot;
|
||||
#else
|
||||
assert(us_since_boot <= INT64_MAX);
|
||||
t->_private_us_since_boot = us_since_boot;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = value
|
||||
#else
|
||||
#define ABSOLUTE_TIME_INITIALIZED_VAR(name, value) name = {value}
|
||||
#endif
|
||||
|
||||
/** \struct datetime_t
|
||||
* \ingroup util_datetime
|
||||
* \brief Structure containing date and time information
|
||||
*
|
||||
* When setting an RTC alarm, set a field to -1 tells
|
||||
* the RTC to not match on this field
|
||||
*/
|
||||
typedef struct {
|
||||
int16_t year; ///< 0..4095
|
||||
int8_t month; ///< 1..12, 1 is January
|
||||
int8_t day; ///< 1..28,29,30,31 depending on month
|
||||
int8_t dotw; ///< 0..6, 0 is Sunday
|
||||
int8_t hour; ///< 0..23
|
||||
int8_t min; ///< 0..59
|
||||
int8_t sec; ///< 0..59
|
||||
} datetime_t;
|
||||
|
||||
#define bool_to_bit(x) ((uint)!!(x))
|
||||
|
||||
#endif
|
||||
#endif
|
@ -1,19 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Raspberry Pi (Trading) Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
||||
// ---------------------------------------
|
||||
// THIS FILE IS AUTOGENERATED; DO NOT EDIT
|
||||
// ---------------------------------------
|
||||
|
||||
#ifndef _PICO_VERSION_H
|
||||
#define _PICO_VERSION_H
|
||||
|
||||
#define PICO_SDK_VERSION_MAJOR ${PICO_SDK_VERSION_MAJOR}
|
||||
#define PICO_SDK_VERSION_MINOR ${PICO_SDK_VERSION_MINOR}
|
||||
#define PICO_SDK_VERSION_REVISION ${PICO_SDK_VERSION_REVISION}
|
||||
#define PICO_SDK_VERSION_STRING "${PICO_SDK_VERSION_STRING}"
|
||||
|
||||
#endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user