comun_pico.cmake (2381B)
1 # comun_pico.cmake - arma el firmware de una app de la PicoCalc en dos variantes: 2 # <target>.uf2 para uf2loader (carpeta /pico1-apps de la SD) 3 # <target>_sd200k.bin para el cargador viejo "Bootloader v0.5" (carpeta /firmware), 4 # enlazado en flash+200k; despues hay que pasarle tools/patch_reset.py 5 # 6 # Uso (despues de pico_sdk_init()): 7 # set(COMUN_DIR ${CMAKE_CURRENT_LIST_DIR}/../../comun) 8 # include(${COMUN_DIR}/pico/comun_pico.cmake) 9 # comun_picocalc_app(mi_app NAME "MiApp" DESC "..." SOURCES a.c b.c INCLUDES dir DEFINES X=1) 10 # La app tiene que tener un app_config.h en INCLUDES (ver comun/README.md). 11 12 function(comun_picocalc_app TARGET) 13 cmake_parse_arguments(A "" "NAME;DESC;VERSION" "SOURCES;INCLUDES;DEFINES" ${ARGN}) 14 file(GLOB COMUN_BASE ${COMUN_DIR}/base/*.c) 15 file(GLOB COMUN_GFX ${COMUN_DIR}/gfx/*.c) 16 set(COMUN_PICO ${COMUN_DIR}/pico/hal_rp2040.c ${COMUN_DIR}/pico/sdlog.c ${COMUN_DIR}/pico/link.c) 17 set(LIBS pico_stdlib pico_rand pico_multicore hardware_spi hardware_i2c hardware_uart hardware_irq hardware_sync) 18 if(NOT A_VERSION) 19 set(A_VERSION "1.0") 20 endif() 21 foreach(V "" "_sd200k") 22 set(T ${TARGET}${V}) 23 add_executable(${T} ${A_SOURCES} ${COMUN_BASE} ${COMUN_GFX} ${COMUN_PICO}) 24 target_include_directories(${T} PRIVATE ${A_INCLUDES} ${COMUN_DIR}/base ${COMUN_DIR}/gfx ${COMUN_DIR}/pico) 25 target_compile_definitions(${T} PRIVATE ${A_DEFINES}) 26 target_link_libraries(${T} ${LIBS}) 27 # consola de depuracion por el USB-C (UART0 via CH340); el cable usa UART1 28 pico_enable_stdio_uart(${T} 1) 29 pico_enable_stdio_usb(${T} 0) 30 pico_set_program_name(${T} "${A_NAME}") 31 pico_add_extra_outputs(${T}) 32 endforeach() 33 target_compile_options(${TARGET} PRIVATE -Wall -Wno-unused-parameter -O2 -fstack-usage) 34 pico_set_program_description(${TARGET} "${A_DESC}") 35 pico_set_program_version(${TARGET} "${A_VERSION}") 36 # la rutina de reset temprana solo la referencia el vector parcheado: que el linker no la descarte 37 target_link_options(${TARGET}_sd200k PRIVATE -Wl,--undefined=comun_early_reset -Wl,--undefined=comun_real_reset) 38 target_compile_options(${TARGET}_sd200k PRIVATE -Wall -Wno-unused-parameter -O2) 39 pico_set_linker_script(${TARGET}_sd200k ${COMUN_DIR}/pico/memmap_sdboot_200k.ld) 40 endfunction()