硬件平台:esp32kit
软件平台:Linux下的ESP-IDF
前言:
ESP32是目前一款比较热门的物联网模块,属于SOC(System On Chip),也就是片上系统,自带一个双核哈佛架构的CPU,两个 CPU 核可以被单独控制或上电。 时钟频率的调节范围为 80 MHz 到 240 MHz。,所有的片上存储器、片外存储器以及外设都分布在两个CPU 的数据总线和/或指令总线上。具备WIFI与BLE4.2协议栈,因此非常适合开发物联网产品。因此小弟决定入坑了。。。
主要特性(摘取自官方手册)
地址空间
– 对称地址映射
– 数据总线与指令总线分别有4 GB(32-bit)地址空间
– 1296 KB 片上存储器地址空间
– 19704 KB 片外存储器地址空间
– 512 KB 外设地址空间
– 部分片上存储器与片外存储器既能被数据总线也能被指令总线访问
– 328 KB DMA 地址空间
• 片上存储器
– 448 KB Internal ROM
– 520 KB Internal SRAM
– 8 KB RTC FAST Memory
– 8 KB RTC SLOW Memory
• 片外存储器
片外SPI 存储器可作为片外存储器被映射到可用的地址空间。部分片上存储器可用作片外存储器的Cache。
– 最大支持16 MB 片外SPI Flash
– 最大支持8 MB 片外SPI SRAM
• 外设
– 41 个外设模块
• DMA
– 13 个具有DMA 功能的模块
ESP-IDF是乐鑫官方的开发环境,假如习惯操作linux的话,ESP-IDF对你来说会是一个非常方便的开发环境,而且自带monitor串口调试,不过我用的不是附带的。。。
因为我曾经尝试过在windows下使用eclipsel来进行搭建开发环境,使用安心可的下载工具进行下载程序,感觉配置配置非常麻烦,而且烧写程序机器慢,因此换用
linux来进行玩耍。
本人使用的是centos7系统,根据官方教程的指导,先把各种依赖包安装上去
-
CentOS 7:
sudo yum install git wget make ncurses-devel flex bison gperf python pyserial -
Ubuntu and Debian:
sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial -
Arch:
sudo pacman -S --needed gcc git make ncurses flex bison gperf python2-pyserial
然后开始下载斌且配置交叉编译链
-
64-bit
https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-73-ge28a011-5.2.0.tar.gz
-
32-bit
https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-73-ge28a011-5.2.0.tar.gz
下载完后,先创建一个文件夹来保存编译链mkdir -p ~/esp
进入目录并且解压
cd ~esptar -xzf ~/Downloads/xtensa-esp32-elf-linux64-1.22.0-73-ge28a011-5.2.0.tar.gz
生成的编译链在xtensa-esp32-elf文件夹内然后开始配置环境变量,直接写进 /etc/profile 就不用每次开关机都要重新配置环境变量了
sudo vim /etc/profile (没有vim的可以用vi、nano等代替)
按 a 进入编辑模式 把 export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin" 添加到顶端
按 wq 保存退出(保存不了的估计是没用sudo)
然后 reboot 一下,让环境变量生效,简单粗暴!
开机后终端输入
printenv PATH
如果显示如下表示成功配置编译链了
/home/user-name/bin:/home/user-name/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/user-name/esp/xtensa-esp32-elf/bin
至此,esp32的交叉编译链已经配置好,剩下的就是安装ESP-IDF了首先,下载在刚才的esp文件夹里面(随意那个目录,为了方百年,还是esp文件夹吧)
git clone --recursive https://github.com/espressif/esp-idf.git
进入esp-idf文件夹并且初始化cd ~/esp/esp-idfgit submodule update --init然后把 export IDF_PATH=~/esp/esp-idf 添加到profile中,类似于刚才那个操作
然后我们复制一个工程出来编译并且下载,测试我们的开发环境
cd ~/espcp -r $IDF_PATH/examples/get-started/hello_world . (后面那个 . 记得别复制漏了!)
然后我们插上板子,因为我用的是虚拟机,因此需要把开发板连接到虚拟机上面去
到右下角那里找到自己的开发板,点击以下类似U盘那个东西,连接!然后查看串口
ls /dev/
我的是ttyUSB0然后进入刚才复制出来的那个工程的目录
cd ~/esp/hello_world
配置工程make menuconfig此时会弹出一个窗口
一般进入到第四个,配置一下下载选项、串口波特率等等。我选择默认,也就是不动它。(下载失败的朋友可以去看看串口名称对不对)
然后开始编译和下载进入 su 模式(此处非常关键,不能使用 sudo 一定是要su用户模式才能成功!!!)
su
make flash
程序开始编译并且结束会自动下载
Done!!!至此,一个linux下开发环境搭建完毕!enjoy youself!
希望这篇文章能让同为小白的你少走弯路~~
注:习惯阅读英文文档的同学可以看原版资料,本教程是建立在官方教程的基础之上的。https://esp-idf.readthedocs.io/en/latest/get-started/index.html#start-a-project