Skip to content

Latest commit

 

History

History
185 lines (131 loc) · 5.8 KB

README.md

File metadata and controls

185 lines (131 loc) · 5.8 KB

Developer guide

You can build your own firmware using the ESP-IDF framework. However, we will focus on the ESP-IDF framework in this guide.

Table of contents

Prerequisites

Important

The version you need to install must be 5.3.1; we cannot guarantee that a more recent version will compile.

Development setup

  1. Clone this repository:

Using HTTPS:

git clone https://github.com/ElectronicCats/Minino.git

Using SSH:

git clone [email protected]:ElectronicCats/Minino.git
  1. Change to the firmware directory:
cd Minino/firmware
  1. Set the IDF_PATH environment variable:
get_idf

Note: get_idf should be an alias you created if you followed the ESP-IDF installation guide.

  1. Setup the project environment:
make setup

Building the firmware

To build the firmware, run the following command:

make compile

Flashing the firmware

  1. Connect your Minino to your computer and identify the port it is connected to. For example, /dev/ttyUSB0 or /dev/ttyACM0 on Linux, COM1 or COM2 on Windows, or /dev/cu.usbmodem14401 on macOS.

  2. Set the PORT to an environment variable, for example:

export PORT=/dev/ttyUSB0

Replace /dev/ttyUSB0 with the port your Minino is connected to.

  1. Flash the firmware:
make flash

Monitoring the serial output

To monitor the serial output, run the following command:

make monitor

Full build process

To do all the previous steps in one command, run:

make all

Cleaning the project

If you you have dependencies issues or want to clean the project, run the following command:

make clean

Create a release

To create a release, you need to update the firmware version in the menuconfig. To do this, run:

idf.py menuconfig

Navigate to General project -> Firmware version and update the version number.

Get the build files:

./get_build.sh

If you can't run the script, make sure it has the correct permissions:

chmod +x get_build.sh

Note: On Windows, you can run the script using Git Bash.

The build files will be in the build_files.zip file. Now you can create a release on GitHub and attach the build_files.zip file.

Flashing release

OTA

Table for ESP Tool

Flash Address File
0x0 bootloader.bin
0x8000 partition-table.bin
0x15000 ota_data_initial.bin
0xa0000 minino.bin

Command

 python -m esptool --chip esp32c6 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 8MB --flash_freq 80m 0x0 bootloader.bin 0x8000 partition-table.bin 0x15000 ota_data_initial.bin 0xa0000 minino.bin

NO OTA

Flash Address File
0x0 bootloader.bin
0x8000 partition-table.bin
0x20000 minino.bin
 python -m esptool --chip esp32c6 -b 460800 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_size 8MB --flash_freq 80m 0x0 bootloader.bin 0x8000 partition-table.bin 0x20000 minino.bin

BLE

ADV Filters

BLE_SCAN_FILTER_ALLOW_ALL           = 0x0,  /*!< Accept all :
                                                  1. advertisement packets except directed advertising packets not addressed to this device (default). */
    BLE_SCAN_FILTER_ALLOW_ONLY_WLST     = 0x1,  /*!< Accept only :
                                                  1. advertisement packets from devices where the advertiser’s address is in the White list.
                                                  2. Directed advertising packets which are not addressed for this device shall be ignored. */
    BLE_SCAN_FILTER_ALLOW_UND_RPA_DIR   = 0x2,  /*!< Accept all :
                                                  1. undirected advertisement packets, and
                                                  2. directed advertising packets where the initiator address is a resolvable private address, and
                                                  3. directed advertising packets addressed to this device. */
    BLE_SCAN_FILTER_ALLOW_WLIST_RPA_DIR = 0x3,  /*!< Accept all :
                                                  1. advertisement packets from devices where the advertiser’s address is in the White list, and
                                                  2. directed advertising packets where the initiator address is a resolvable private address, and
                                                  3. directed advertising packets addressed to this device.*/