DFU make rule, update Readme (#650)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							
								
								
									
										26
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										26
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							| @@ -58,18 +58,6 @@ jobs: | |||||||
|               make -j$(nproc) -C bootloader TARGET=${TARGET} |               make -j$(nproc) -C bootloader TARGET=${TARGET} | ||||||
|             done |             done | ||||||
|  |  | ||||||
|       - name: 'Generate dfu file for bootloader' |  | ||||||
|         uses: ./.github/actions/docker |  | ||||||
|         with: |  | ||||||
|           run: | |  | ||||||
|             for TARGET in ${TARGETS} |  | ||||||
|             do |  | ||||||
|               hex2dfu \ |  | ||||||
|                 -i bootloader/.obj/${TARGET}/bootloader.hex \ |  | ||||||
|                 -o bootloader/.obj/${TARGET}/bootloader.dfu \ |  | ||||||
|                 -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)" |  | ||||||
|             done |  | ||||||
|  |  | ||||||
|       - name: 'Build firmware in docker' |       - name: 'Build firmware in docker' | ||||||
|         uses: ./.github/actions/docker |         uses: ./.github/actions/docker | ||||||
|         with: |         with: | ||||||
| @@ -79,18 +67,6 @@ jobs: | |||||||
|               make -j$(nproc) -C firmware TARGET=${TARGET} |               make -j$(nproc) -C firmware TARGET=${TARGET} | ||||||
|             done |             done | ||||||
|  |  | ||||||
|       - name: 'Generate dfu file for firmware' |  | ||||||
|         uses: ./.github/actions/docker |  | ||||||
|         with: |  | ||||||
|           run: | |  | ||||||
|             for TARGET in ${TARGETS} |  | ||||||
|             do |  | ||||||
|               hex2dfu \ |  | ||||||
|                 -i firmware/.obj/${TARGET}/firmware.hex \ |  | ||||||
|                 -o firmware/.obj/${TARGET}/firmware.dfu \ |  | ||||||
|                 -l "Flipper Zero $(echo $TARGET | tr a-z A-Z)" |  | ||||||
|             done |  | ||||||
|  |  | ||||||
|       - name: 'Generate full hex file' |       - name: 'Generate full hex file' | ||||||
|         uses: ./.github/actions/docker |         uses: ./.github/actions/docker | ||||||
|         with: |         with: | ||||||
| @@ -150,7 +126,7 @@ jobs: | |||||||
|           do |           do | ||||||
|             truncate -s 32768 artifacts/flipper-z-${TARGET}-full-${SUFFIX}.bin |             truncate -s 32768 artifacts/flipper-z-${TARGET}-full-${SUFFIX}.bin | ||||||
|           done |           done | ||||||
|        |  | ||||||
|       - name: 'Full flash asssembly: append firmware' |       - name: 'Full flash asssembly: append firmware' | ||||||
|         run: | |         run: | | ||||||
|           for TARGET in ${TARGETS} |           for TARGET in ${TARGETS} | ||||||
|   | |||||||
							
								
								
									
										178
									
								
								ReadMe.md
									
									
									
									
									
								
							
							
						
						
									
										178
									
								
								ReadMe.md
									
									
									
									
									
								
							| @@ -1,12 +1,11 @@ | |||||||
| # Flipper Zero Firmware community repo | # Flipper Zero Firmware | ||||||
|  |  | ||||||
| [](http://flipperzero.one/discord) | [](http://flipperzero.one/discord) | ||||||
|  |  | ||||||
| <img src="https://habrastorage.org/webt/eo/m0/e4/eom0e4btudte7nrhnyic-laiog0.png" /> | <img src="https://habrastorage.org/webt/eo/m0/e4/eom0e4btudte7nrhnyic-laiog0.png" /> | ||||||
|  |  | ||||||
| Welcome to [Flipper Zero](https://flipperzero.one/)'s Firmware repo! | 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. | Our goal is to create nice and clean code 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 | # Update firmware | ||||||
|  |  | ||||||
| @@ -27,7 +26,7 @@ All 3 of them must be flashed in order described. | |||||||
|  |  | ||||||
| Prerequisites: | Prerequisites: | ||||||
|  |  | ||||||
| - Linux / MacOs | - Linux / macOS | ||||||
| - Terminal | - Terminal | ||||||
| - STM32_Programmer_CLI added to $PATH | - STM32_Programmer_CLI added to $PATH | ||||||
|  |  | ||||||
| @@ -37,9 +36,9 @@ One liner: `./flash_core2_ble.sh` | |||||||
|  |  | ||||||
| Prerequisites: | Prerequisites: | ||||||
|  |  | ||||||
| - Linux / MacOs | - Linux / macOS | ||||||
| - Terminal | - Terminal | ||||||
| - Arm gcc noneabi | - [arm-gcc-none-eabi](https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads) | ||||||
| - openocd | - openocd | ||||||
|  |  | ||||||
| One liner: `./flash_core1_main.sh` | One liner: `./flash_core1_main.sh` | ||||||
| @@ -58,75 +57,132 @@ One liner: `./flash_core1_main.sh` | |||||||
|  |  | ||||||
| # Build from source | # Build from source | ||||||
|  |  | ||||||
| `docker-compose exec dev make -C firmware flash` for build and flash dev board (see `applications/applications.mk` for list of applications/examples) | ## Prerequisites | ||||||
|  |  | ||||||
|  | 1. Install [Docker Engine and Docker Compose](https://www.docker.com/get-started) | ||||||
|  | 2. Clone the repo: | ||||||
|  |    ```sh | ||||||
|  |    git clone https://github.com/flipperdevices/flipperzero-firmware | ||||||
|  |    cd flipperzero-firmware | ||||||
|  |    ``` | ||||||
|  | 3. Prepare the container: | ||||||
|  |    ```sh | ||||||
|  |    docker compose up -d | ||||||
|  |    ``` | ||||||
|  |  | ||||||
|  | ## Compile bootloader | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | docker compose exec dev make -j$(nproc) -C bootloader TARGET=f6 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Bootloader compilation results: | ||||||
|  | * `bootloader/.obj/f6/bootloader.elf` | ||||||
|  | * `bootloader/.obj/f6/bootloader.hex` | ||||||
|  | * `bootloader/.obj/f6/bootloader.bin` | ||||||
|  | * **`bootloader/.obj/f6/bootloader.dfu`** - should be used to flash | ||||||
|  |  | ||||||
|  | ## Compile firmware | ||||||
|  |  | ||||||
|  | ```sh | ||||||
|  | docker compose exec dev make -j$(nproc) -C firmware TARGET=f6 | ||||||
|  | ``` | ||||||
|  |  | ||||||
|  | Firmware compilation results: | ||||||
|  | * `firmware/.obj/f6/firmware.elf` | ||||||
|  | * `firmware/.obj/f6/firmware.hex` | ||||||
|  | * `firmware/.obj/f6/firmware.bin` | ||||||
|  | * **`firmware/.obj/f6/firmware.dfu`** - should be used to flash | ||||||
|  |  | ||||||
|  | ## Concatenate bootloader and firmware | ||||||
|  |  | ||||||
|  | You might want to do this to distribute the firmware as a single file. | ||||||
|  |  | ||||||
|  | That's exactly how we generate our `full` builds. | ||||||
|  |  | ||||||
|  | 1. Concatenate HEX files: | ||||||
|  |    ```sh | ||||||
|  |    docker compose exec dev srec_cat \ | ||||||
|  |     bootloader/.obj/f6/bootloader.hex -Intel \ | ||||||
|  |     firmware/.obj/f6/firmware.hex -Intel \ | ||||||
|  |     -o firmware/.obj/f6/full.hex -Intel | ||||||
|  |    ``` | ||||||
|  | 2. Convert HEX to DFU: | ||||||
|  |    ```sh | ||||||
|  |    docker compose exec dev hex2dfu \ | ||||||
|  |     -i firmware/.obj/f6/full.hex \ | ||||||
|  |     -o firmware/.obj/f6/full.dfu \ | ||||||
|  |     -l "Flipper Zero F6" | ||||||
|  |    ``` | ||||||
|  |  | ||||||
|  | Finally, you will have **`firmware/.obj/f6/full.dfu`** file that can be distributed and flashed. | ||||||
|  |  | ||||||
| # Links | # Links | ||||||
| * Task tracker: [Jira](https://flipperzero.atlassian.net/) | * Discord: [flipp.dev/discord](https://flipp.dev/discord) | ||||||
| * Discord server: [flipperzero.one/discord](https://flipperzero.one/discord) | * Website: [flipperzero.one](https://flipperzero.one) | ||||||
| * Project website: [flipperzero.one](https://flipperzero.one) |  | ||||||
| * Kickstarter page: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers) | * Kickstarter page: [kickstarter.com](https://www.kickstarter.com/projects/flipper-devices/flipper-zero-tamagochi-for-hackers) | ||||||
| * Forum: [forum.flipperzero.one](https://forum.flipperzero.one/) | * Forum: [forum.flipperzero.one](https://forum.flipperzero.one/) | ||||||
|  |  | ||||||
| # Folders structure | # Folders structure | ||||||
|  |  | ||||||
| - applications - application and services | - applications - application and services | ||||||
|  * accessor - Wiegand server |   * accessor - Wiegand server | ||||||
|  * archive - Archive and file manager  |   * archive - Archive and file manager  | ||||||
|  * bt - BLE service and application |   * bt - BLE service and application | ||||||
|  * cli - Console service |   * cli - Console service | ||||||
|  * debug_tools - different tools that we use on factory and for debug |   * debug_tools - different tools that we use on factory and for debug | ||||||
|  * dialogs - service for showing GUI dialogs |   * dialogs - service for showing GUI dialogs | ||||||
|  * dolphin - dolphin service and supplientary apps |   * dolphin - dolphin service and supplientary apps | ||||||
|  * gpio-tester - GPIO control application |   * gpio-tester - GPIO control application | ||||||
|  * gui - GUI service |   * gui - GUI service | ||||||
|  * ibutton - ibutton application, onewire keys and more |   * ibutton - ibutton application, onewire keys and more | ||||||
|  * input - input service |   * input - input service | ||||||
|  * irda - irda application, controls your IR devices  |   * irda - irda application, controls your IR devices  | ||||||
|  * irda_monitor - irda debug tool  |   * irda_monitor - irda debug tool  | ||||||
|  * lfrfid - LF RFID application |   * lfrfid - LF RFID application | ||||||
|  * lfrfid-debug - LF RFID debug tool |   * lfrfid-debug - LF RFID debug tool | ||||||
|  * loader - application loader service |   * loader - application loader service | ||||||
|  * menu - main menu service |   * menu - main menu service | ||||||
|  * music-player - music player app (demo) |   * music-player - music player app (demo) | ||||||
|  * nfc - NFC application, HF rfid, EMV and etc |   * nfc - NFC application, HF rfid, EMV and etc | ||||||
|  * notification - notification service  |   * notification - notification service  | ||||||
|  * power - power service |   * power - power service | ||||||
|  * power-observer - power debug tool |   * power-observer - power debug tool | ||||||
|  * scened-app-example - c++ application example  |   * scened-app-example - c++ application example  | ||||||
|  * storage - storage service, internal + sdcard |   * storage - storage service, internal + sdcard | ||||||
|  * storage-settings - storage settings app |   * storage-settings - storage settings app | ||||||
|  * subghz - subghz application, 433 fobs and etc |   * subghz - subghz application, 433 fobs and etc | ||||||
|  * tests - unit tests and etc |   * tests - unit tests and etc | ||||||
| - assets - assets used by applications and services | - assets - assets used by applications and services | ||||||
|  * compiled - compilation results |   * compiled - compilation results | ||||||
|  * icons - source icons images |   * icons - source icons images | ||||||
| - bootloader - bootloader for flipper | - bootloader - bootloader for flipper | ||||||
|  * src - bootloader sources |   * src - bootloader sources | ||||||
|  * targets - targets' hal and implementation |   * targets - targets' hal and implementation | ||||||
| - core - core libraries: home for furi | - core - core libraries: home for furi | ||||||
| - debug - debug helpers, plugins and tools | - debug - debug helpers, plugins and tools | ||||||
| - docker - docker image sources (used for automated firmware build) | - docker - docker image sources (used for automated firmware build) | ||||||
| - firmware - firmware for flipper | - firmware - firmware for flipper | ||||||
|  * targets - targets' hal and implementation |   * targets - targets' hal and implementation | ||||||
| - lib - different libraries and drivers that apps and firmware uses | - lib - different libraries and drivers that apps and firmware uses | ||||||
|  * ST25RFAL002 - ST253916 driver and NFC hal |   * ST25RFAL002 - ST253916 driver and NFC hal | ||||||
|  * STM32CubeWB - STM32WB hal |   * STM32CubeWB - STM32WB hal | ||||||
|  * app-scened-template - scened template app library |   * app-scened-template - scened template app library | ||||||
|  * app-template - template app library |   * app-template - template app library | ||||||
|  * callback-connector - callback connector library |   * callback-connector - callback connector library | ||||||
|  * common-api - common api delaration library |   * common-api - common api delaration library | ||||||
|  * cyfral - cyfral library |   * cyfral - cyfral library | ||||||
|  * drivers - drivers that we wrote |   * drivers - drivers that we wrote | ||||||
|  * fatfs - external storage file system |   * fatfs - external storage file system | ||||||
|  * fnv1a-hash - fnv1a hash library  |   * fnv1a-hash - fnv1a hash library  | ||||||
|  * irda - irda library |   * irda - irda library | ||||||
|  * littlefs - internal storage file system |   * littlefs - internal storage file system | ||||||
|  * mlib - algorithms and containers  |   * mlib - algorithms and containers  | ||||||
|  * nfc_protocols - nfc protocols library |   * nfc_protocols - nfc protocols library | ||||||
|  * onewire - one wire library  |   * onewire - one wire library  | ||||||
|  * qrcode - qr code generator library |   * qrcode - qr code generator library | ||||||
|  * subghz - subghz library |   * subghz - subghz library | ||||||
|  * toolbox - toolbox of things that we are using but don't place in core |   * toolbox - toolbox of things that we are using but don't place in core | ||||||
|  * u8g2 - graphics library that we use to draw GUI |   * u8g2 - graphics library that we use to draw GUI | ||||||
| - make - make helpers | - make - make helpers | ||||||
| - scripts - supplimentary scripts | - scripts - supplimentary scripts | ||||||
|   | |||||||
| @@ -1,16 +1,12 @@ | |||||||
| version: '3' | version: '3' | ||||||
| services: | services: | ||||||
|   dev: |   dev: | ||||||
|     build: docker |     image: flipperdevices/flipperzero-toolchain | ||||||
|     network_mode: "host" |     network_mode: host | ||||||
|     privileged: true |     privileged: true | ||||||
|     tty: true |     tty: true | ||||||
|     stdin_open: true |     stdin_open: true | ||||||
|     volumes: |     volumes: | ||||||
|       - .:/project |       - .:/project | ||||||
|       - /dev/bus/usb:/dev/bus/usb |       - /dev/bus/usb:/dev/bus/usb | ||||||
|     working_dir: "/project" |     working_dir: '/project' | ||||||
|     environment: |  | ||||||
|       DISPLAY: $DISPLAY |  | ||||||
|       TERM: xterm-256color |  | ||||||
|       PATH: /root/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |  | ||||||
| @@ -32,7 +32,7 @@ CHECK_AND_REINIT_SUBMODULES_SHELL=\ | |||||||
| 	fi | 	fi | ||||||
| $(info $(shell $(CHECK_AND_REINIT_SUBMODULES_SHELL))) | $(info $(shell $(CHECK_AND_REINIT_SUBMODULES_SHELL))) | ||||||
|  |  | ||||||
| all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin | all: $(OBJ_DIR)/$(PROJECT).elf $(OBJ_DIR)/$(PROJECT).hex $(OBJ_DIR)/$(PROJECT).bin $(OBJ_DIR)/$(PROJECT).dfu | ||||||
|  |  | ||||||
| $(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS) | $(OBJ_DIR)/$(PROJECT).elf: $(OBJECTS) | ||||||
| 	@echo "\tLD\t" $@ | 	@echo "\tLD\t" $@ | ||||||
| @@ -47,6 +47,13 @@ $(OBJ_DIR)/$(PROJECT).bin: $(OBJ_DIR)/$(PROJECT).elf | |||||||
| 	@echo "\tBIN\t" $@ | 	@echo "\tBIN\t" $@ | ||||||
| 	@$(BIN) $< $@ | 	@$(BIN) $< $@ | ||||||
|  |  | ||||||
|  | $(OBJ_DIR)/$(PROJECT).dfu: $(OBJ_DIR)/$(PROJECT).hex | ||||||
|  | 	@echo "\tDFU\t" $@ | ||||||
|  | 	@hex2dfu \ | ||||||
|  | 		-i $(OBJ_DIR)/$(PROJECT).hex \ | ||||||
|  | 		-o $(OBJ_DIR)/$(PROJECT).dfu \ | ||||||
|  | 		-l "Flipper Zero $(shell echo $(TARGET) | tr a-z A-Z)" > /dev/null | ||||||
|  |  | ||||||
| $(OBJ_DIR)/%.o: %.c $(OBJ_DIR)/BUILD_FLAGS | $(OBJ_DIR)/%.o: %.c $(OBJ_DIR)/BUILD_FLAGS | ||||||
| 	@echo "\tCC\t" $< "->" $@ | 	@echo "\tCC\t" $< "->" $@ | ||||||
| 	@$(CC) $(CFLAGS) -c $< -o $@ | 	@$(CC) $(CFLAGS) -c $< -o $@ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user