Remove obsolete target. Cleanup and update ReadMe. (#279)

This commit is contained in:
あく
2020-12-28 08:52:35 +03:00
committed by GitHub
parent 14d1325b17
commit 4a9e4074f7
7 changed files with 39 additions and 62478 deletions

View File

@@ -1,77 +1,52 @@
_Overview of Flipper firmware architecture:_
![FW arch](https://github.com/Flipper-Zero/flipperzero-firmware-community/raw/master/wiki_static/flipper_fw_arch.png)
# Project structure
```
.
├── applications # Flipper applications
├── assets # Assets: icons, animation
├── bootloader # Bootloader make project
├── core # Main feature like OS, HAL (target-independed)
├── core-rs # Rust code
├── debug # Debug helpers, configs and plugins
├── docker # Docker toolchain container
├── firmware # Firmware make project
├── lib # Libs and 3rd parties
├── make # Makefile scripts
├── wiki # Documentation (wiki) generates from this files
└── wiki_static # Static files for wiki
```
# HAL
We use STM32 HAL/LL. Description available here: [dm00105879.pdf](https://github.com/Flipper-Zero/flipperzero-firmware-community/raw/master/wiki_static/dm00105879-description-of-stm32f4-hal-and-ll-drivers-stmicroelectronics.pdf)
## Flipper HAL
Some flipper-specific implementation of gpio/HAL:
* Init gpio pin: `app_gpio_init`
* Fast write gpio (inline): `app_gpio_write`
* Fast read gpio (inline): `app_gpio_read`
* Microsecond delay `delay_us`
* Set PWM on timer's pin: `pwm_set`
Files location: `/app/app_hal.[ch]`
# Bootloader
For production targets('f2' and newer) bootloader must be flashed first.
Bootloader must be flashed first.
Detailed instruction on how to compile and flash it you can find in `bootloader` folder.
Production version is going to have following features:
- Hardware initialization
- Firmware CRC check
- Firmware update
- Interactive UI
- Boot process LED indicators
- FS check
- Recovery mode
# OS
CMSIS-RTOS2 over FreeRTOS
**[Timers map](Timers)**
# Platform code
## Platform code
CMSIS, Freertos and HAL files are generated by CubeMX.
You can find platform code for L476 version in `f2` folder:
You can find platform code for STM32WB55 version in `f4` folder:
* `Inc` `Src` — CubeMX generated headers & code
* `Middlewares/Third_Party/FreeRTOS/Source` — freeRTOS
* `deploy.sh` — flash firmware to device
* `STM32L476RGTx_FLASH.ld` — linker script
* `startup_stm32l476xx.s` — board startup/initialization assembler code
* `cube.ioc` CubeMX project file
```
├── Inc # CubeMX generated headers
├── Src # CubeMX generated code
├── api-hal # Our HAL wrappers and platform specifics
├── ble-glue # BLE specific code(Glue for STMWPAN)
├── f4.ioc # CubeMX project file
├── startup_stm32wb55xx_cm4.s # Board startup/initialization assembler code
├── stm32wb55xx_flash_cm4*.ld # Linker scripts
├── target.mk # Makefile include
You can regenerate platform code:
```
Working with CubeMX:
1. Download CubeMX from [st.com](https://www.st.com/en/development-tools/stm32cubemx.html)
2. Open `*.ioc` file
3. Do whatever you want to
3. Click `generate code`
4. After regenerating, look at git status, regenerating may broke some files.
4. After regenerating, look at git status, regeneration may brake some files.
5. Check one more time that things that you've changes are not covered in platform api-hal. Because you know...
# Flipper Universal Registry Implementation (FURI)