blob: 28b46af90f61792b32c73c398b42b8b0537cab4f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
cmake_minimum_required(VERSION 3.12)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
# initalize pico_sdk from installed location
# (note this can come from environment, CMake cache etc)
set(PICO_SDK_PATH "/home/pi/pico/pico-sdk")
# Pull in Pico SDK (must be before project)
include(pico_sdk_import.cmake)
project(pico-watch C CXX)
# PICO_USE_STACK_GUARDS=1 for testing, might leave as is.
add_compile_definitions(PICO_DEBUG_MALLOC PICO_DEBUG_MALLOC_LOW_WATER=0 PICO_USE_STACK_GUARDS=1)# PICO_MALLOC_PANIC)
# Increase heap size, this should leave:
# sram_size = SRAM_END(=0x20042000) - SRAM_BASE(=0x20000000) = 0x42000
# stack_size = 0x800 (default)
# heap_size = 0x5000 (changed)
# mem_left = sram_size - (stack_size + heap_size) = 0x3c800
# We still have to factor in global variables, so this is not precise. The best place for information seems to be the pico-wath.elf.map file.
# Small size used for testing, seems to work fine.
add_compile_definitions(PICO_HEAP_SIZE=0x200)
# Initialise the Pico SDK
pico_sdk_init()
# Add OLED library
add_library(Oled
oled/BitBang_I2C.c
oled/BitBang_I2C.h
oled/ss_oled.c
oled/ss_oled.h
)
target_link_libraries(Oled pico_stdlib hardware_i2c)
# Main code
add_executable(pico-watch
pico-watch.cpp
app/app_manager.cpp
init.cpp
init.hpp
buttons.cpp
buttons.hpp
hal/api.cpp
apps/home_menu/main.cpp
apps/home_menu/main.hpp
apps/main_clock/main.cpp
apps/main_clock/main.hpp
apps/settings/main.cpp
apps/settings/main.hpp
apps/game_falldown/main.cpp
apps/game_falldown/ball.cpp
apps/game_falldown/platform.cpp
)
pico_set_program_name(pico-watch "pico-watch")
pico_set_program_version(pico-watch "0.1")
# To access uart on a Pico connected directly to a Raspberry Pi (4 B): `minicom -b 115200 -o -D /dev/ttyS0`
pico_enable_stdio_uart(pico-watch 1)
# Add the standard library to the build
target_link_libraries(pico-watch pico_stdlib)
# Add any user requested libraries
target_link_libraries(pico-watch
Oled
hardware_rtc
hardware_sync # For use of __wfi()
)
pico_add_extra_outputs(pico-watch)
|