···45## Building
6000071. Make sure you have the Pico SDK set up (automatically handled by the Nix flake)
8-2. Configure the build:
00000000009 ```
10 cmake -B build -S .
11 ```
12-3. Build the firmware:
13 ```
14 cmake --build build
15 ```
16-4. The output files will be in the `build` directory:
17 - `daedalus_firmware.uf2`: UF2 file for drag-and-drop programming
18 - `daedalus_firmware.elf`: ELF file for debugging
19 - `daedalus_firmware.hex`: HEX file for programming with external tools
2021## Flashing
22000000000000000023Connect the RP2350 board in bootloader mode (hold BOOTSEL while connecting USB) and copy the UF2 file:
2425```
···3031```
32picotool load -x build/daedalus_firmware.uf2
33-```0000000000000000
···45## Building
67+### Using the Makefile (Recommended)
8+9+The project includes a Makefile that simplifies the build process:
10+111. Make sure you have the Pico SDK set up (automatically handled by the Nix flake)
12+2. Build the firmware:
13+ ```
14+ make
15+ ```
16+3. The output files will be in the `build` directory
17+18+### Manual Build
19+20+If you prefer to use CMake directly:
21+22+1. Configure the build:
23 ```
24 cmake -B build -S .
25 ```
26+2. Build the firmware:
27 ```
28 cmake --build build
29 ```
30+3. The output files will be in the `build` directory:
31 - `daedalus_firmware.uf2`: UF2 file for drag-and-drop programming
32 - `daedalus_firmware.elf`: ELF file for debugging
33 - `daedalus_firmware.hex`: HEX file for programming with external tools
3435## Flashing
3637+### Using the Makefile (Recommended)
38+39+Flash the firmware to the RP2350 board:
40+41+```
42+make flash
43+```
44+45+If the board is already running firmware and needs to be forced into programming mode:
46+47+```
48+make FORCE_FLASH=1 flash
49+```
50+51+### Manual Flashing
52+53Connect the RP2350 board in bootloader mode (hold BOOTSEL while connecting USB) and copy the UF2 file:
5455```
···6061```
62picotool load -x build/daedalus_firmware.uf2
63+```
64+65+## Debugging
66+67+Generate disassembly for debugging:
68+69+```
70+make disasm
71+```
72+73+## Development
74+75+The firmware uses both cores of the RP2040:
76+- Core 0: Handles the main application logic
77+- Core 1: Manages the LED matrix display
78+79+The LED matrix is organized in a 4x6 grid, with rows and columns controlled by GPIO pins.