mirror of
https://github.com/clockworkpi/PicoCalc.git
synced 2026-03-29 08:22:43 +02:00
sdcard picomite: sync with upstream
This commit is contained in:
@@ -1,17 +1,43 @@
|
||||
cmake_minimum_required(VERSION 3.13)
|
||||
# Valid builds are PICO, PICOUSB, VGA, VGAUSB, HDMI(rp2350 only), HDMIUSB(rp2350 only), WEB
|
||||
|
||||
|
||||
set(APP_NAME picomite)
|
||||
set(PICOCALC true)
|
||||
#set(SDBOOT true)
|
||||
# For dynamic loading from SD card:
|
||||
# SDBOOT requires the bootloader to be in the first 256KB of flash
|
||||
# PicoMite will need to be shifted by this amount, and all references to
|
||||
# positions in flash updated to accomodate. THIS OPTION IS NOT READY YET.
|
||||
# details: https://github.com/adwuard/Picocalc_SD_Boot
|
||||
set(SDBOOT true)
|
||||
|
||||
# Compile for PICO 1 Board
|
||||
set(COMPILE PICO)
|
||||
|
||||
set(PICO_PLATFORM rp2040)
|
||||
set(PICO_BOARD pico)
|
||||
# Compile for PICO 2 Board
|
||||
#set(COMPILE PICORP2350)
|
||||
#set(COMPILE WEBRP2350)
|
||||
|
||||
|
||||
add_executable(${APP_NAME}
|
||||
if (COMPILE STREQUAL "HDMI" OR COMPILE STREQUAL "WEBRP2350" OR COMPILE STREQUAL "HDMIUSB" OR COMPILE STREQUAL "VGARP2350" OR COMPILE STREQUAL "VGAUSBRP2350" OR COMPILE STREQUAL "PICORP2350" OR COMPILE STREQUAL "PICOUSBRP2350" )
|
||||
set(PICO_PLATFORM rp2350)
|
||||
if (COMPILE STREQUAL "WEBRP2350")
|
||||
set(PICO_BOARD pico2_w)
|
||||
else()
|
||||
set(PICO_BOARD pimoroni_pga2350)
|
||||
endif()
|
||||
else()
|
||||
set(PICO_PLATFORM rp2040)
|
||||
if (COMPILE STREQUAL "WEB")
|
||||
set(PICO_BOARD pico_w)
|
||||
else()
|
||||
set(PICO_BOARD pico)
|
||||
endif()
|
||||
endif()
|
||||
include(pico_sdk_import.cmake)
|
||||
project(PicoMite C CXX ASM)
|
||||
set(CMAKE_C_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
#set(PICO_NO_COPRO_DIS 1)
|
||||
pico_sdk_init()
|
||||
add_executable(PicoMite
|
||||
PicoMite.c
|
||||
Memory.c
|
||||
regex.c
|
||||
@@ -47,21 +73,56 @@ add_executable(${APP_NAME}
|
||||
VS1053.c
|
||||
aes.c
|
||||
)
|
||||
if (COMPILE STREQUAL "WEB" OR COMPILE STREQUAL "WEBRP2350" )
|
||||
target_sources(PicoMite PRIVATE
|
||||
SSD1963.c
|
||||
Touch.c
|
||||
GUI.c
|
||||
cJSON.c
|
||||
mqtt.c
|
||||
MMMqtt.c
|
||||
MMTCPclient.c
|
||||
MMtelnet.c
|
||||
MMntp.c
|
||||
MMtcpserver.c
|
||||
tftp.c
|
||||
MMtftp.c
|
||||
MMudp.c
|
||||
)
|
||||
set_source_files_properties(cJSON.c PROPERTIES COMPILE_FLAGS -Os)
|
||||
target_include_directories(PicoMite PRIVATE
|
||||
${CMAKE_CURRENT_LIST_DIR}
|
||||
${CMAKE_CURRENT_LIST_DIR}/.. # for our common lwipopts
|
||||
)
|
||||
Pico_enable_stdio_usb(PicoMite 1)
|
||||
endif()
|
||||
|
||||
target_sources(${APP_NAME} PRIVATE
|
||||
if ((COMPILE STREQUAL "PICO") OR (COMPILE STREQUAL "PICOUSB") OR (COMPILE STREQUAL "PICORP2350") OR (COMPILE STREQUAL "PICOUSBRP2350") OR (COMPILE STREQUAL "WEBRP2350"))
|
||||
target_sources(PicoMite PRIVATE
|
||||
SSD1963.c
|
||||
Touch.c
|
||||
GUI.c)
|
||||
endif()
|
||||
|
||||
target_sources(${APP_NAME} PRIVATE
|
||||
if (COMPILE STREQUAL "VGAUSB" OR COMPILE STREQUAL "PICOUSBRP2350" OR COMPILE STREQUAL "VGAUSBRP2350" OR COMPILE STREQUAL "PICOUSB" OR COMPILE STREQUAL "HDMIUSB")
|
||||
target_sources(PicoMite PRIVATE
|
||||
USBKeyboard.c
|
||||
)
|
||||
else()
|
||||
target_sources(PicoMite PRIVATE
|
||||
Keyboard.c
|
||||
mouse.c
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
if(COMPILE STREQUAL "VGARP2350" OR COMPILE STREQUAL "WEBRP2350" OR COMPILE STREQUAL "PICORP2350" OR COMPILE STREQUAL "HDMI" OR COMPILE STREQUAL "HDMIUSB" OR COMPILE STREQUAL "VGAUSBRP2350" OR COMPILE STREQUAL "PICOUSBRP2350")
|
||||
target_sources(PicoMite PRIVATE
|
||||
upng.c
|
||||
)
|
||||
endif()
|
||||
|
||||
if(PICOCALC STREQUAL "true")
|
||||
target_sources(${APP_NAME} PRIVATE
|
||||
target_sources(PicoMite PRIVATE
|
||||
picocalc/i2ckbd.c
|
||||
)
|
||||
endif()
|
||||
@@ -79,27 +140,33 @@ set_source_files_properties(hxcmod.c PROPERTIES COMPILE_FLAGS -Os)
|
||||
set_source_files_properties(MATHS.c PROPERTIES COMPILE_FLAGS -Os)
|
||||
set_source_files_properties(Editor.c PROPERTIES COMPILE_FLAGS -Os)
|
||||
set_source_files_properties(aes.c PROPERTIES COMPILE_FLAGS -Os)
|
||||
pico_generate_pio_header(${APP_NAME} ${CMAKE_CURRENT_LIST_DIR}/PicoMiteI2S.pio)
|
||||
|
||||
pico_define_boot_stage2(slower_boot2 ${PICO_DEFAULT_BOOT_STAGE2_FILE})
|
||||
target_compile_definitions(slower_boot2 PRIVATE PICO_FLASH_SPI_CLKDIV=4)
|
||||
pico_set_boot_stage2(${APP_NAME} slower_boot2)
|
||||
|
||||
pico_enable_stdio_usb(${APP_NAME} 1)
|
||||
pico_enable_stdio_uart(${APP_NAME} 0)
|
||||
|
||||
pico_add_extra_outputs(${APP_NAME})
|
||||
pico_add_uf2_output(${APP_NAME})
|
||||
|
||||
target_link_options(${APP_NAME} PRIVATE -Wl,--print-memory-usage)
|
||||
target_link_options(${APP_NAME} PRIVATE -Wl,-z,max-page-size=4096)
|
||||
|
||||
pico_set_linker_script(${APP_NAME} ${CMAKE_BINARY_DIR}/${APP_NAME}.ld)
|
||||
pico_generate_pio_header(PicoMite ${CMAKE_CURRENT_LIST_DIR}/PicoMiteI2S.pio)
|
||||
if (COMPILE STREQUAL "VGAUSB" OR COMPILE STREQUAL "VGA" OR COMPILE STREQUAL "PICO" OR COMPILE STREQUAL "PICOUSB" OR COMPILE STREQUAL "WEB")
|
||||
pico_define_boot_stage2(slower_boot2 ${PICO_DEFAULT_BOOT_STAGE2_FILE})
|
||||
target_compile_definitions(slower_boot2 PRIVATE PICO_FLASH_SPI_CLKDIV=4)
|
||||
pico_set_boot_stage2(PicoMite slower_boot2)
|
||||
endif()
|
||||
if (COMPILE STREQUAL "VGAUSB" OR COMPILE STREQUAL "VGA" OR COMPILE STREQUAL "VGAUSBRP2350" OR COMPILE STREQUAL "VGARP2350")
|
||||
pico_generate_pio_header(PicoMite ${CMAKE_CURRENT_LIST_DIR}/PicoMiteVGA.pio)
|
||||
endif()
|
||||
|
||||
|
||||
pico_set_printf_implementation(${APP_NAME} compiler)
|
||||
if (COMPILE STREQUAL "VGAUSB" OR COMPILE STREQUAL "PICOUSB" OR COMPILE STREQUAL "HDMIUSB" OR COMPILE STREQUAL "PICOUSBRP2350" OR COMPILE STREQUAL "VGAUSBRP2350")
|
||||
Pico_enable_stdio_usb(PicoMite 0)
|
||||
target_include_directories(PicoMite PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/usb_host_files
|
||||
)
|
||||
else()
|
||||
Pico_enable_stdio_usb(PicoMite 1)
|
||||
endif()
|
||||
|
||||
target_compile_options(${APP_NAME} PRIVATE -DNDEBUG
|
||||
pico_enable_stdio_uart(PicoMite 0)
|
||||
pico_add_extra_outputs(PicoMite)
|
||||
pico_set_printf_implementation(PicoMite compiler)
|
||||
if(COMPILE STREQUAL "VGARP2350" OR COMPILE STREQUAL "WEBRP2350" OR COMPILE STREQUAL "PICORP2350" OR COMPILE STREQUAL "HDMI" OR COMPILE STREQUAL "HDMIUSB" OR COMPILE STREQUAL "VGAUSBRP2350" OR COMPILE STREQUAL "PICOUSBRP2350")
|
||||
pico_set_float_implementation(PicoMite pico_dcp)
|
||||
endif()
|
||||
target_compile_options(PicoMite PRIVATE -DNDEBUG
|
||||
-DPICO_STDIO_USB_ENABLE_RESET_VIA_VENDOR_INTERFACE=0
|
||||
-DPICO_ADC_CLKDIV_ROUND_NEAREST
|
||||
-DPICO_XOSC_STARTUP_DELAY_MULTIPLIER=64
|
||||
@@ -110,22 +177,64 @@ target_compile_options(${APP_NAME} PRIVATE -DNDEBUG
|
||||
-DPICO_MALLOC_PANIC
|
||||
-O2
|
||||
-Wall)
|
||||
|
||||
|
||||
target_compile_options(${APP_NAME} PRIVATE -DPICOMITE
|
||||
-DPICO_HEAP_SIZE=0x1000
|
||||
-DGUICONTROLS
|
||||
-DPICO_CORE0_STACK_SIZE=0x1000
|
||||
# all RP2350 variants
|
||||
if (COMPILE STREQUAL "HDMI" OR COMPILE STREQUAL "WEBRP2350" OR COMPILE STREQUAL "HDMIUSB" OR COMPILE STREQUAL "PICORP2350" OR COMPILE STREQUAL "PICOUSBRP2350" OR COMPILE STREQUAL "VGARP2350" OR COMPILE STREQUAL "VGAUSBRP2350")
|
||||
target_compile_options(PicoMite PRIVATE -Drp2350
|
||||
-DPICO_FLASH_SPI_CLKDIV=4
|
||||
-DPICO_PIO_USE_GPIO_BASE
|
||||
)
|
||||
endif()
|
||||
# all PicoMite variants - enable the gui
|
||||
if (COMPILE STREQUAL "PICO" OR COMPILE STREQUAL "PICOUSB" OR COMPILE STREQUAL "PICORP2350" OR COMPILE STREQUAL "PICOUSBRP2350")
|
||||
target_compile_options(PicoMite PRIVATE -DPICOMITE
|
||||
-DPICO_HEAP_SIZE=0x1000
|
||||
-DGUICONTROLS
|
||||
-DPICO_CORE0_STACK_SIZE=0x1000
|
||||
)
|
||||
endif()
|
||||
# all VGA variants
|
||||
if (COMPILE STREQUAL "VGA" OR COMPILE STREQUAL "VGAUSB" OR COMPILE STREQUAL "VGARP2350" OR COMPILE STREQUAL "VGAUSBRP2350")
|
||||
target_compile_options(PicoMite PRIVATE -DPICOMITEVGA
|
||||
-DPICO_HEAP_SIZE=0x2000
|
||||
-DPICO_CORE0_STACK_SIZE=0x2000
|
||||
)
|
||||
endif()
|
||||
# HDMI variants
|
||||
if (COMPILE STREQUAL "HDMI" OR COMPILE STREQUAL "HDMIUSB")
|
||||
target_compile_options(PicoMite PRIVATE -DPICOMITEVGA
|
||||
-DHDMI
|
||||
-DPICO_HEAP_SIZE=0x2000
|
||||
-DPICO_CORE0_STACK_SIZE=0x2000
|
||||
)
|
||||
endif()
|
||||
#Web variants need more heap
|
||||
if(COMPILE STREQUAL "WEB" OR COMPILE STREQUAL "WEBRP2350")
|
||||
target_compile_options(PicoMite PRIVATE -DPICOMITEWEB
|
||||
-DPICO_HEAP_SIZE=0x4000
|
||||
-DGUICONTROLS
|
||||
-DCYW43_HOST_NAME="WebMite"
|
||||
-DPICO_CYW43_ARCH_POLL
|
||||
-DPICO_CORE0_STACK_SIZE=0x4000
|
||||
)
|
||||
endif()
|
||||
#USB variants
|
||||
if (COMPILE STREQUAL "PICOUSB" OR COMPILE STREQUAL "PICOUSBRP2350" OR COMPILE STREQUAL "VGAUSB" OR COMPILE STREQUAL "VGAUSBRP2350" OR COMPILE STREQUAL "HDMIUSB")
|
||||
target_compile_options(PicoMite PRIVATE -DUSBKEYBOARD
|
||||
)
|
||||
|
||||
endif()
|
||||
#special case WEB RP2350 gets the GUI controls
|
||||
if(COMPILE STREQUAL "WEBRP2350")
|
||||
target_compile_options(PicoMite PRIVATE -DGUICONTROLS
|
||||
)
|
||||
endif()
|
||||
#set the PICOCALC flag
|
||||
if(PICOCALC STREQUAL "true")
|
||||
target_compile_options(${APP_NAME} PRIVATE -DPICOCALC
|
||||
target_compile_options(PicoMite PRIVATE -DPICOCALC
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
target_link_libraries(${APP_NAME}
|
||||
target_link_libraries(PicoMite
|
||||
pico_stdlib
|
||||
hardware_flash
|
||||
hardware_irq
|
||||
@@ -136,39 +245,65 @@ target_link_libraries(${APP_NAME}
|
||||
hardware_dma
|
||||
hardware_exception
|
||||
hardware_pio
|
||||
pico_multicore
|
||||
pico_unique_id
|
||||
)
|
||||
|
||||
if(COMPILE STREQUAL "VGAUSB" OR COMPILE STREQUAL "PICOUSB" OR COMPILE STREQUAL "HDMIUSB" OR COMPILE STREQUAL "PICOUSBRP2350" OR COMPILE STREQUAL "VGAUSBRP2350")
|
||||
target_link_libraries(PicoMite
|
||||
tinyusb_host
|
||||
tinyusb_board
|
||||
pico_multicore
|
||||
)
|
||||
endif()
|
||||
|
||||
set(UF2_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/${APP_NAME}.uf2)
|
||||
set(UF2_DEST ${CMAKE_BINARY_DIR}/${APP_NAME}.uf2)
|
||||
if(COMPILE STREQUAL "VGA" OR COMPILE STREQUAL "PICO" OR COMPILE STREQUAL "HDMI" OR COMPILE STREQUAL "VGARP2350" OR COMPILE STREQUAL "PICORP2350")
|
||||
target_link_libraries(PicoMite
|
||||
pico_multicore
|
||||
)
|
||||
endif()
|
||||
|
||||
if(COMPILE STREQUAL "VGARP2350" OR COMPILE STREQUAL "WEBRP2350" OR COMPILE STREQUAL "PICORP2350" OR COMPILE STREQUAL "HDMI" OR COMPILE STREQUAL "HDMIUSB" OR COMPILE STREQUAL "VGAUSBRP2350" OR COMPILE STREQUAL "PICOUSBRP2350")
|
||||
target_link_libraries(PicoMite
|
||||
pico_rand
|
||||
)
|
||||
endif()
|
||||
|
||||
if(COMPILE STREQUAL "WEB" OR COMPILE STREQUAL "WEBRP2350" )
|
||||
target_link_libraries(PicoMite
|
||||
pico_cyw43_arch_lwip_poll
|
||||
)
|
||||
endif()
|
||||
|
||||
if(SDBOOT STREQUAL "true" AND (COMPILE STREQUAL "PICORP2350" OR COMPILE STREQUAL "WEBRP2350"))
|
||||
pico_set_linker_script(PicoMite ${CMAKE_SOURCE_DIR}/memmap_default_rp2350.ld)
|
||||
endif()
|
||||
|
||||
if(SDBOOT STREQUAL "true" AND (COMPILE STREQUAL "PICO"))
|
||||
pico_set_linker_script(PicoMite ${CMAKE_SOURCE_DIR}/memmap_default_rp2040.ld)
|
||||
endif()
|
||||
|
||||
set(UF2_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/PicoMite.uf2)
|
||||
set(UF2_DEST ${CMAKE_BINARY_DIR}/PicoMite.uf2)
|
||||
|
||||
add_custom_command(
|
||||
OUTPUT ${UF2_DEST}
|
||||
DEPENDS ${UF2_SOURCE}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${UF2_SOURCE} ${UF2_DEST}
|
||||
COMMENT "Copying ${APP_NAME}.uf2 to top-level build dir"
|
||||
COMMENT "Copying PicoMite.uf2 to top-level build dir"
|
||||
)
|
||||
|
||||
|
||||
add_custom_target(PREPARE_${APP_NAME}
|
||||
COMMENT "Create Linker Script for '${APP_NAME}'"
|
||||
add_custom_target(PREPARE_PicoMite
|
||||
COMMENT "Create Linker Script for 'PicoMite'"
|
||||
COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_SOURCE_DIR}/applink.py PREPARE
|
||||
${CMAKE_BINARY_DIR}
|
||||
${APP_NAME})
|
||||
PicoMite)
|
||||
|
||||
add_custom_target(BUILT_${APP_NAME}
|
||||
COMMENT "Record Build Details for '${APP_NAME}'"
|
||||
add_custom_target(BUILT_PicoMite
|
||||
COMMENT "Record Build Details for 'PicoMite'"
|
||||
DEPENDS ${UF2_DEST}
|
||||
COMMAND ${Python3_EXECUTABLE}
|
||||
${CMAKE_SOURCE_DIR}/applink.py BUILT
|
||||
${CMAKE_BINARY_DIR}
|
||||
${APP_NAME})
|
||||
PicoMite)
|
||||
|
||||
|
||||
|
||||
if(SDBOOT STREQUAL "true")
|
||||
pico_set_linker_script(${APP_NAME} ${CMAKE_SOURCE_DIR}/memmap_sdcard_app.ld)
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user