diff --git a/ReadMe.md b/ReadMe.md index 70e2261da..789477ff0 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -4,14 +4,47 @@ -Welcome to [Flipper Zero](https://flipperzero.one/)'s Firmware repo! Our goal is to create nice and clean code along with good documentation, to make it a pleasure for everyone to work with. This repo will become completely public closer to the device shipping date. +Welcome to [Flipper Zero](https://flipperzero.one/)'s Firmware repo! +Our goal is to create nice and clean code along with good documentation, to make it a pleasure for everyone to work with. +This repo will become completely public closer to the device shipping date. # Update firmware -Flipper Zero's firmware consists of two components: Bootloader and main firmware. Bootloader controls firmware update process over USB. You need working bootloader installed before update firmware over USB. +Flipper Zero's firmware consists of three components: + +- Core2 firmware - proprietary componenets by ST: FUS + radio stack. +- Core1 Bootloader - controls basic hardware initialization and loads firmware +- Core1 Firmware - HAL + OS + Drivers + Applications + +All 3 of them must be flashed in order described. + +## With STLink + +### Core2 flashing procedures + +Prerequisites: + +- Linux / MacOs +- Terminal +- STM32_Programmer_CLI added to $PATH + +One liner: `./flash_core2_ble.sh` + +### Core1 Bootloader + Firmware + +Prerequisites: + +- Linux / MacOs +- Terminal +- Arm gcc noneabi +- openocd + +One liner: `./flash_core1_main.sh` + +## With USB DFU 1. Download latest [Firmware](https://update.flipperzero.one/full_firmware_latest.bin) @@ -21,9 +54,9 @@ Flipper Zero's firmware consists of two components: Bootloader and main firmware - Release `↩ Back` -1. Run `dfu-util -D firmware.bin -a 0 -s 0x08008000:leave` +1. Run `dfu-util -D full_firmware_latest.bin -a 0 -s 0x08000000:leave` -## Build from source +# Build from source `docker-compose exec dev make -C firmware TARGET=f4 APP_RELEASE=1 flash` for build and flash dev board (see `applications/applications.mk` for list of applications/examples) diff --git a/flash_core1_main.sh b/flash_core1_main.sh new file mode 100755 index 000000000..613bd6ba0 --- /dev/null +++ b/flash_core1_main.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -x -e + +rm bootloader/.obj/f*/flash || true +make -C bootloader -j9 flash + +rm firmware/.obj/f*/flash || true +make -C firmware -j9 APP_RELEASE=1 flash diff --git a/flash_core2_ble.sh b/flash_core2_ble.sh new file mode 100755 index 000000000..ff80a295d --- /dev/null +++ b/flash_core2_ble.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +set -x -e + +COPRO_DIR="lib/STM32CubeWB/Projects/STM32WB_Copro_Wireless_Binaries/STM32WB5x" + + +STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_FUS_fw_1_0_2.bin 0x080EC000 || true +STM32_Programmer_CLI -c port=swd + +STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_FUS_fw.bin 0x080EC000 || true +STM32_Programmer_CLI -c port=swd + +STM32_Programmer_CLI -c port=swd -fwdelete + +STM32_Programmer_CLI -c port=swd -fwupgrade $COPRO_DIR/stm32wb5x_BLE_Stack_full_fw.bin 0x080CB000 firstinstall=0 + +STM32_Programmer_CLI -c port=swd -ob nSWBOOT0=1 nBOOT0=1 +