DFU make rule, update Readme (#650)
Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
		
							parent
							
								
									8d07e67dde
								
							
						
					
					
						commit
						69f4858168
					
				
							
								
								
									
										24
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								.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: | ||||||
|  | |||||||
							
								
								
									
										76
									
								
								ReadMe.md
									
									
									
									
									
								
							
							
						
						
									
										76
									
								
								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,12 +57,69 @@ 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/) | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -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 $@ | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anna Prosvetova
						Anna Prosvetova