unleashed-firmware/firmware
Skorpionm a8981d317a
[FL-1815, FL-1851, FL-1856] SubGhz: preparation for certification, add deleting stored signals and rename file in SubGHz app (#714)
* [FL-1811] FuriHal: move core2 startup to hal init stage, prevent working with flash controller till core2 startup finish. #704
* SubGhz: fix GO0 low on last hop transmission,  decreased DutyCycle in tests
* SubGhz: test_static fix max 5 sec in transmission mode, DutyCycle <23%
* [FL-1815] SubGhz: prohibiting transmission if it is not within the permitted range for the given region
* SubGhz: fix F7 furi-hal-subghz
* SubGhz: fix logic working tests
* SubGhz: fix princeton encoder for test
* SubGhz: add log princeton encoder
* [FL-1856] Subghz: fix output a double error if the file cannot be opened
* [FL-1851] SubGhz: add deleting Stored Signals in SubGHz App
* SubGhz: add rename file SubGhz app
* SubGhz: update stats message in princeton
* SubGhz: correct spelling
* SubGhz: fix FM config,  add hardware signal processing less than 16 μs,  add added filter for processing short signals
* SubGhz: add Scher-Khan MAGICAR Dinamic protocol
* SubGhz: sync fury targets

Co-authored-by: あく <alleteam@gmail.com>
2021-09-28 03:05:40 +03:00
..
targets [FL-1815, FL-1851, FL-1856] SubGhz: preparation for certification, add deleting stored signals and rename file in SubGHz app (#714) 2021-09-28 03:05:40 +03:00
Makefile Rename api-hal to furi-hal (#629) 2021-08-08 21:03:25 +03:00
ReadMe.md Rename api-hal to furi-hal (#629) 2021-08-08 21:03:25 +03:00

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

Bootloader

Bootloader must be flashed first. Detailed instruction on how to compile and flash it you can find in bootloader folder.

OS

CMSIS-RTOS2 over FreeRTOS

Platform code

CMSIS, Freertos and HAL files are generated by CubeMX. You can find platform code for STM32WB55 version in f4 folder:

├── Inc                             # CubeMX generated headers
├── Src                             # CubeMX generated code
├── furi-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

Working with CubeMX:

  1. Download CubeMX from st.com
  2. Open *.ioc file
  3. Do whatever you want to
  4. Click generate code
  5. After regenerating, look at git status, regeneration may brake some files.
  6. Check one more time that things that you've changes are not covered in platform furi-hal. Because you know...

Flipper Universal Registry Implementation (FURI)

FURI is used to:

  • application control (start, exit, switch between active)
  • data exchange between application (create/open channel, subscribe and push messages or read/write values)
  • non-volatile data storage for application (create/open value and read/write)

Read more at FURI page

FS (not implemented)

File system is used to volaile storage some files (config, application data, etc.). There are some folders mounted to different volumes:

  • /usr for store static data like assets, menu items. Build system add files to usr while building. It can be useful for exchange some static data between application. For example, your app can add link to itself to Plugins menu items file, user will see your app and can call it from this menu.
  • Specially /usr/etc-default folder contains default configs for apps. Bootloader has factory default options to reset applications config. Also when new app is bootstapping, system copy files from default config folder to /etc.
  • /etc for store configs of application. This volume not overwrite during flashing.
  • /var for store some application data (saved keys, application database, logs). This volume also not overwrite during flashing.
  • /media/* mounted if SD card is inserted.

Flipper applications

Each flipper functionality except OS/HAL/FURI doing by Flipper application. Some application are called at startup, the rest are called by the user (for example, from menu).

(you can see some examples)

For exchange data between application each app expose own record in FURI. You can subscribe on/read record to get data from application and write to record to send data to application.

List of FURI records