2023-09-12 09:45:39 +02:00
# Building in Docker
### Prerequisities
2023-10-30 11:52:12 +01:00
- Linux platform
- Docker
- Repository clone (refer to [README.md ](/README.md ))
2023-09-12 09:45:39 +02:00
2023-10-30 11:52:12 +01:00
No need to install ESP-IDF or anything else. All commands should be run in project root folder.
2023-09-12 09:45:39 +02:00
2023-10-30 11:52:12 +01:00
## Configure, Build and Flash
### Start an interactive IDF environnement
In this interactive shell you can run menuconfig, build, flash and monitor command.
```
docker run --rm -it -v .:/project -w /project -v /dev:/dev --privileged espressif/idf:v4.3.5
```
### Configure
Then in your docker interactive shell, start by configuring for your platform. More info about the config in [README.md ](/README.md#config ).
```
idf.py menuconfig
```
Save with `<s>` and exit with `<q>` .
### Build, flash and monitor:
```
idf.py build flash monitor
```
< span style = "color: orange" > If idf.py can't access to USB devices, try to restart your docker interactive shell in sudo.< / span >
### Exit
Exit IDF monitor mode: `<Ctrl+]>`
Exit docker interactive shell: `exit`
2023-09-12 09:45:39 +02:00
2023-10-30 11:52:12 +01:00
## Specific actions
If you want to execute a specific command or to generate a reusable .bin file.
### menuconfig
2023-09-12 09:45:39 +02:00
```
2023-10-30 11:52:12 +01:00
docker run --rm -it -v .:/project -w /project espressif/idf:v4.3.5 idf.py menuconfig
2023-09-12 09:45:39 +02:00
```
2023-10-30 11:52:12 +01:00
### Build
2023-09-12 09:45:39 +02:00
```
2023-10-30 11:52:12 +01:00
docker run --rm -it -v .:/project -w /project espressif/idf:v4.3.5 idf.py build
2023-09-12 09:45:39 +02:00
```
2023-10-30 11:52:12 +01:00
### Flash
2023-09-12 09:45:39 +02:00
Mapping of serial port to container is not simple in windows but you can merge all generated `bin` files into single firmware and flash the firmware manually using some windows tool.
- [ESP Tool web flasher ](https://espressif.github.io/esptool-js/ )
- [ESP32 Flash Download tool ](https://www.espressif.com/en/support/download/other-tools )
#### Merge bins into single firmware bin file
```
docker run --rm -it -v .:/project -w /project/build espressif/idf:v4.3.1 //runs terminal in idf container
esptool.py --chip esp32 merge_bin --output firmware.bin @flash_args // merges all bin files into firmware.bin
```
Write `build/firmware.bin` to ESP32 at address 0x0000
--------------------
### More details
```
2023-09-15 10:40:56 +02:00
docker run
2023-09-12 09:45:39 +02:00
--rm // Removes container after exit
-it // runs interactive terminal
-v .:/project // maps current directory to /project in container
-w /project // sets working directory inside a container to /project
2023-10-30 11:52:12 +01:00
-v /dev:/dev // maps devices directory to acces USB and Serial devices inside docker
--privileged // grants docker rights to acces host devices
2023-09-15 10:40:56 +02:00
espressif/idf:v4.3.5 // image name + version
2023-09-12 09:45:39 +02:00
idf.py menuconfig // run menuconfig
2023-09-15 10:40:56 +02:00
```