利用CodeSpaces快捷编译Esp32项目

有时候为了测试某个开源工程,恰好自己的电脑正没有esp-idf的工程,可以利用微软的codespaces来快速编译

# 新的CodeSpaces(2025.10.8)缺乏libusb相关的,会无法install,需要先安装下
sudo apt install -y libusb-1.0-0 libusb-1.0-0-dev

# 克隆esp官方工具(建议安装到/opt/目录下)
git clone --recursive -b <版本标签/分支名> https://github.com/espressif/esp-idf.git
如:git clone --recursive -b v4.4 https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh        #安装
. ./export.sh     #导出环境变量(注意前面有个'.',相当于source ./export.sh)

# 如果要切换版本的话
建议直接删除旧的目录重新安装,切换分支的方式容易由于卸载不干净导致各种问题
rm -rf /home/codespace/.espressif
rm -rf /opt/esp-idf
然后重新上面克隆的方式
# 查看当前版本 
idf.py --version
# 移除旧的虚拟环境
rm -rf /home/codespace/.espressif/python_env/idf版本号_env
# 切换到特定分支/标签 
git checkout release/v5.4
# 更新子模块
git submodule update --init --recursive
# 重新安装工具链和导出环境
./install.sh
. ./export.sh


# 新的CodeSpaces(2025.10.8)构建项目或者set-target的时候,会报错AttributeError,是因为esp-idf依赖到的某些python工具版本的问题
# 安装特定的版本
pip install --upgrade idf-component-manager==2.4.0
pip install pydantic==2.6.4 pydantic-settings==2.1.0

# 如果esp-idf所使用的python是虚拟环境里的,那么先激活虚拟环境里的python,安装后再退出
source /home/codespace/.espressif/python_env/idf版本号_env/bin/activate
# 安装
pip install --upgrade idf-component-manager==2.4.0
pip install pydantic==2.6.4 pydantic-settings==2.1.0
# 退出虚拟环境
deactivate

注:CodeSpaces 里的 Python 版本较新(3.12),会导致在安装某些旧版本的 esp-idf 时(如v4.4,适配python 3.8),某些依赖不兼容导致失败,可以用 pyenv 切换当前的 python 版本来解决这个问题。下面提供 pyenv 的使用教程。 # 编译项目,以esp32c3
-rv32ima为例 git clone https://github.com/jeason1997/esp32c3-rv32ima.git cd esp32c3-rv32ima # 配置目标芯片为 ESP32C3 idf.py set-target esp32c3 # (可选)如需修改配置,如启用 PSRAM 等 idf.py menuconfig # 编译项目 idf.py build # 编译完后生成文件路径,分别是引导程序,分区表跟主程序 build/bootloader/bootloader.bin build/partition_table/partition-table.bin build/项目名.bin # esp编译后生成多个分区文件,一个一个从远程服务器拷贝到本地也麻烦,可以合并成一个文件,然后直接烧录到 0x0 地址即可:Basic Commands - ESP32-C3 - — esptool latest documentation esptool --chip ESP32-C3 merge-bin -o merged-flash.bin --flash-mode dio --flash-size 4MB 0x1000 bootloader.bin 0x8000 partition-table.bin 0x10000 app.bin esptool write-flash 0x0 merged-flash.bin
文件名烧录地址说明
bootloader/bootloader.bin 0x0 ESP32C3 引导程序
partition_table/partition-table.bin 0x8000 分区表
uc-rv32ima.bin 0x10000 项目主程序(RISC-V 模拟器)
main/Image 0x200000 Linux 内核镜像
main/uc.dtb 0x3ff000 设备树二进制文件

烧录参考:

image

 

附:Pyenv 的使用教程

# 安装编译依赖(必须先装)
sudo apt update && sudo apt install -y \
  build-essential libssl-dev zlib1g-dev libbz2-dev \
  libreadline-dev libsqlite3-dev wget curl llvm \
  libncurses5-dev libncursesw5-dev xz-utils tk-dev \
  libffi-dev liblzma-dev git

# 安装 pyenv
curl https://pyenv.run | bash

# 配置环境变量(写入 ~/.bashrc)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc

# 生效配置
source ~/.bashrc

# 验证
pyenv --version

# 查看可安装的 Python 版本 (比如3.8.x)
pyenv install --list | grep 3.8

# 安装 Python 3.8.17(适配 ESP-IDF 4.4)
pyenv install 3.8.17

# 查看已安装版本
pyenv versions

# 全局切换为 3.8.17
pyenv global 3.8.17

# 仅当前目录切换(推荐,不影响全局)
pyenv local 3.8.17

# 验证当前 Python
python --version

 

posted @ 2025-10-08 18:15  JeasonBoy  阅读(78)  评论(0)    收藏  举报