Content is user-generated and unverified.
cmake_minimum_required(VERSION 3.13) # Set the Pico SDK path - adjust this to your SDK location set(PICO_SDK_PATH "${CMAKE_CURRENT_LIST_DIR}/pico-sdk" CACHE PATH "Path to the Raspberry Pi Pico SDK") # Alternatively, you can set it via environment variable # set(PICO_SDK_PATH $ENV{PICO_SDK_PATH}) # Include the Pico SDK include(${PICO_SDK_PATH}/pico_sdk_init.cmake) # Set project name and languages project(pico2_risc_v_project C CXX ASM) # Set C/C++ standards set(CMAKE_C_STANDARD 11) set(CMAKE_CXX_STANDARD 17) # Configure for Pico 2 RISC-V set(PICO_PLATFORM rp2350-riscv) set(PICO_BOARD pico2) # Initialize the Pico SDK pico_sdk_init() # Add executable add_executable(main src/main.c # Add more source files here ) # Create map/bin/hex/uf2 files pico_add_extra_outputs(main) # Link libraries target_link_libraries(main pico_stdlib pico_multicore hardware_gpio hardware_uart hardware_i2c hardware_spi hardware_pwm hardware_adc hardware_timer hardware_watchdog hardware_clocks hardware_pll hardware_flash hardware_sync # Add more libraries as needed ) # Enable USB output, disable UART output pico_enable_stdio_usb(main 1) pico_enable_stdio_uart(main 0) # Set compile options target_compile_options(main PRIVATE -Wall -Wextra -Werror -O2 # RISC-V specific optimizations -march=rv32imafc -mabi=ilp32f ) # Set link options target_link_options(main PRIVATE -Wl,--print-memory-usage ) # Add include directories target_include_directories(main PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include ${CMAKE_CURRENT_LIST_DIR}/src ) # Optional: Add custom defines target_compile_definitions(main PRIVATE PICO_DEFAULT_UART=0 PICO_DEFAULT_UART_TX_PIN=0 PICO_DEFAULT_UART_RX_PIN=1 # Add custom defines here ) # Optional: Set custom linker script if needed # set_target_properties(main PROPERTIES # LINK_DEPENDS ${CMAKE_CURRENT_LIST_DIR}/custom_memmap.ld # ) # target_link_options(main PRIVATE "LINKER:-T${CMAKE_CURRENT_LIST_DIR}/custom_memmap.ld") # Print build information message(STATUS "Building for Pico 2 RISC-V") message(STATUS "Pico SDK Path: ${PICO_SDK_PATH}") message(STATUS "Platform: ${PICO_PLATFORM}") message(STATUS "Board: ${PICO_BOARD}") # Create a simple main.c if it doesn't exist set(MAIN_C_CONTENT "#include <stdio.h> #include \"pico/stdlib.h\" #include \"hardware/gpio.h\" const uint LED_PIN = 25; int main() { stdio_init_all(); gpio_init(LED_PIN); gpio_set_dir(LED_PIN, GPIO_OUT); printf(\"Hello from Pico 2 RISC-V!\\n\"); while (true) { gpio_put(LED_PIN, 1); sleep_ms(250); gpio_put(LED_PIN, 0); sleep_ms(250); printf(\"LED blink\\n\"); } }") # Create src directory and main.c if they don't exist file(MAKE_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/src) if(NOT EXISTS ${CMAKE_CURRENT_LIST_DIR}/src/main.c) file(WRITE ${CMAKE_CURRENT_LIST_DIR}/src/main.c ${MAIN_C_CONTENT}) message(STATUS "Created src/main.c with example code") endif() # Optional: Create include directory file(MAKE_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/include)
Content is user-generated and unverified.
    Pico2 RISC-V Standalone CMakeLists.txt | Claude