ESP32 AT command 펌웨어 직접 빌드 하기
ESP32 AT command용 펌웨어를 빌드하는 방법입니다.
우선, 개발 환경은 Linux 계열을 사용하기를 추천드립니다.
Window도 가능하나, AT command는 자체 Python script가 있고, IDF를 SDK내부에 불러와서 이래 저래 Window에서 의존성 문제등 발생 할 수 있습니다. 속 편하게 처음 부터 Linux환경으로 하는 것을 추천합니다.
1. VirtualBox 설치 : 버추얼 박스는 Window상에서 Linux를 구동하기 위하여 설치 합니다. 다른 프로그램도 가능하나 공개된 Virtual box로 하였습니다.
2. 리눅스 설치 : Ubuntu desktop을 설치
버추얼 박스 + Ubuntu설치는 Google 검색을 하시면 많이 나옵니다.
버추얼 박스 Extention도 설치하고, 윈도우와 폴더를 share하게 설치 합니다.
https://ubuntu.com/download/desktop
3. 툴 설치
Ubuntu terminal에서 아래 툴 들을 설치 합니다.
설치이후에 Python 3버젼이 동작되는지 확인 해야 합니다.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/linux-macos-setup.html
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
4. IDF를 설치 할 필요 없이 Git에서 AT+SDK를 불러 옵니다.
Master branch불러오기 :
git clone --recursive https://github.com/espressif/esp-at.git
특정 Branch를 불러 오려면 아래와 같이 해줍니다. 아래 그림은 branch종류 입니다.
git clone -b release/v3.2.0.0 --recursive https://github.com/espressif/esp-at.git
5. esp-at 폴더에 보면 다운로드가 되어 있습니다.
이제 환경을 설치 합니다.
esp-at폴더에서 아래 명령을 하면 설치가 됩니다. 약 15~20분 정도 소요 됩니다.
./build.py install
6. Path설정 : esp-at/esp-idf 폴더에서 아래와 같이 Path를 설정 합니다.
7. Menuconfig
프로젝트 폴더에서 menuconfig를 이동 합니다.
AT관련 component를 수정합니다.
./build.py menuconfig
8. 빌드하고 라이팅 합니다.
./build.py build // build 만 진행
./build.py build flash monitor // build+flash+모니터링 진행
9. Flash하기전 Serial 포트가 연결되어 있는지 확인 해야 합니다.
10. build.py 명령어 option, command 관련 내용
ESP-IDF CLI build management tool. For commands that are not known to idf.py an attempt to execute it as a
build system target will be made. Selected target: esp32
Options:
--version Show IDF version and exit.
--list-targets Print list of supported targets and exit.
-C, --project-dir PATH Project directory.
-B, --build-dir PATH Build directory.
-w, --cmake-warn-uninitialized / -n, --no-warnings
Enable CMake uninitialized variable warnings for CMake files inside the
project directory. (--no-warnings is now the default, and doesn't need to be
specified.) The default value can be set with the
IDF_CMAKE_WARN_UNINITIALIZED environment variable.
-v, --verbose Verbose build output.
--preview Enable IDF features that are still in preview.
--ccache / --no-ccache Use ccache in build. Disabled by default. The default value can be set with
the IDF_CCACHE_ENABLE environment variable.
-G, --generator [Ninja|Unix Makefiles]
CMake generator.
--no-hints Disable hints on how to resolve errors and logging.
-D, --define-cache-entry TEXT Create a cmake cache entry. This option can be used at most once either
globally, or for one subcommand.
-b, --baud INTEGER Baud rate for flashing. It can imply monitor baud rate as well if it hasn't
been defined locally. The default value can be set with the ESPBAUD
environment variable. This option can be used at most once either globally,
or for one subcommand.
-p, --port TEXT Serial port. The default value can be set with the ESPPORT environment
variable. This option can be used at most once either globally, or for one
subcommand.
--help Show this message and exit.
Commands:
add-dependency Add dependency to the manifest file.
all Aliases: build. Build the project.
app Build only the app.
app-flash Flash the app only.
bootloader Build only bootloader.
bootloader-flash Flash bootloader only.
build-system-targets Print list of build system targets.
clean Delete build output files from the build directory.
confserver Run JSON configuration server.
create-component Create a new component.
create-manifest Create manifest for specified component.
create-project Create a new project.
create-project-from-example Create a project from an example.
delete-version (Deprecated) Deprecated! New CLI command: "compote component delete". Delete
specified version of the component from the component registry.
docs Open web browser with documentation for ESP-IDF
efuse-common-table Generate C-source for IDF's eFuse fields.
efuse-custom-table Generate C-source for user's eFuse fields.
encrypted-app-flash Flash the encrypted app only.
encrypted-flash Flash the encrypted project.
erase-flash Erase entire flash chip.
erase-otadata Erase otadata partition.
flash Flash the project.
fullclean Delete the entire build directory contents.
gdb Run the GDB.
gdbgui GDB UI in default browser.
gdbtui GDB TUI mode.
menuconfig Run "menuconfig" project configuration tool.
monitor Display serial output.
openocd Run openocd from current path
pack-component (Deprecated) Deprecated! New CLI command: "compote component pack". Create
component archive and store it in the dist directory.
partition-table Build only partition table.
partition-table-flash Flash partition table only.
post-debug Utility target to read the output of async debug action and stop them.
python-clean Delete generated Python byte code from the IDF directory
read-otadata Read otadata partition.
reconfigure Re-run CMake.
save-defconfig Generate a sdkconfig.defaults with options different from the default ones
set-target Set the chip target to build.
show-efuse-table Print eFuse table.
size Print basic size information about the app.
size-components Print per-component size information.
size-files Print per-source-file size information.
uf2 Generate the UF2 binary with all the binaries included
uf2-app Generate an UF2 binary for the application only
update-dependencies Update dependencies of the project
upload-component (Deprecated) Deprecated! New CLI command: "compote component upload". Upload
component to the component registry. If the component doesn't exist in the
registry it will be created automatically.
upload-component-status (Deprecated) Deprecated! New CLI command: "compote component upload-status".
Check the component uploading status by the job ID