前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ESP32 DevKitC 编译烧写 AliOS Things

ESP32 DevKitC 编译烧写 AliOS Things

作者头像
刘盼
发布2018-03-16 12:59:11
5.7K1
发布2018-03-16 12:59:11
举报
文章被收录于专栏:人人都是极客

作者简介:

邵国际,计算机专业大四学生,擅长动手,热衷物联网。用技术表达自我,虽然是个玩过单片机的渣渣,但一直想做出好玩有趣的东西(软/硬件),并享受其中的乐趣。目前在深圳增长见识、学习嵌入式开发技术中。

AliOS Things 是一款由阿里巴巴开发的轻量级物联网操作系统。具备极致性能,极简开发、云端一体、丰富组件(包括实时操作系统内核,连接协议库、文件系统、libc接口、FOTA、Mesh、语音识别)、安全防护等关键能力,并支持终端设备连接到阿里云IoT云服务平台。可广泛应用在智能家居,智慧城市,工业等领域,降低物联网终端开发门槛,使万物互联更容易,终端设备上云更简单。

项目地址:alibaba/AliOS-Things: AliOS Things released by Alibaba is an open-source implementation of operating system (OS) for Internet of Things (IoT).

在嵌入式实时操作系统大家族中,常见的 µC/OS-III、FreeRTOS 等 RTOS 严格意义上只能算一个 kernel(仅包含 OS 基本服务),随着物联网时代到来,出现了像 AliOS Things、RT-Thread 这些「时髦」的操作系统,大佬们在实时内核的基础上增加了大量组件,囊括通信协议栈、低功耗管理、安全加密算法、FOTA(远程固件升级)等功能,可以说目的十分明确 —— 直奔物联网。

更多关于物联网操作系统的知识,可以参考何小庆老师的 PPT 物联网操作系统研究与思考.pdf


ESP32

物联网的大潮下,MCU 迎来一个新的发展机遇。继 ESP8266 之后,乐鑫在 2015 年底又推出了更强大的 ESP32 系列 WiFi 芯片,从参数描述可以看出:

ESP32 SoC 为双核 32 位 MCU,主频高达 240 MHz,计算性能可达 600 DMIPS,采用 40 nm 工艺,集成 520 KB SRAM,16 MByte flash。工作电压 2.2 V to 3.6 V。ESP32 专为移动设备、可穿戴电子产品和 IoT 应用而设计,拥有业内最高水平的低功耗芯片的所有特征,例如精细分辨时钟门控、省电模式和动态电压调整等。ESP32 SoC工作温度范围从-40°C 到 +125°C。此外,ESP32 还集成了先进的自校准电路,实现了动态自动调整,可以消除外部电路的缺陷以及适应外部条件的变化。

早在 2016 年乐鑫 ESP32 和阿里云物联网系统 YoC 已经有了合作。去年 10 月份的云栖大会上阿里提出了 AliOS Things,不久之后项目开源便支持了 ESP32,同时为开发者提供了许多开发工具。

ESP32 DevKitC 开发板

ESP32-DevKitC 是搭载了乐鑫最新的 ESP-WROOM-32 模组的 MINI 开发板,能够轻松地插接到面包板,板子包含了用户所需的最小系统,只需连上 USB 线,即可进行开发。此外还具有 USB-UART 转换器 ,复位和下载模式按钮,LDO 稳压器 和微型 USB 连接器 。每个 GPIO 都可供开发者使用。

开发板购买地址:ESP32-DevkitC (Core board开发板)发票不含快递费-淘宝网

那如何把 AliOS Things 编译烧写到 ESP32 DevKitC 呢?来不及解释了,赶紧上车!


所需工具

在 Windows 下进行基于 AliOS Things 开发 ESP32 应用需要准备

  • 安装有 Windows、Linux 或者 Mac 操作系统的 PC
  • 用于编译 ESP32 应用程序的工具链
  • AliOS Things SDK —— 包含 ESP32 的 API 和用于操作工具链的脚本
  • 编写 C 语言程序的文本编辑器,例如 VS Code
  • ESP32 开发板,例如 ESP32-DevKitC

开发步骤

  1. 安装 Visual Studio Code
  2. 安装 alios-studio 扩展
  3. 获取 AliOS Things SDK(Github 项目源码)
  4. 下载 ESP32 工具链
  5. 配置 SDK path,新建 helloworld 工程
  6. 编译、构建项目
  7. 烧写 bin 固件

Step 1:安装 VS Code、alios-studio 扩展

项目 Wiki 已经有详细软件安装说明文档,按照步骤把 VS Code 和 alios-studio 扩展装好即可:AliOS Things Studio · alibaba/AliOS-Things Wiki


Step 2:获取 AliOS Things SDK 和 ESP32 工具链

下载 aos 源代码

SDK 即项目仓库源码,从 Github 上 Download Zip 或 Clone 到本地,拷贝到 D:\AliOS-Things-master 目录下(目录自定)。

下载 ESP32 工具链

乐鑫 ESP-IDF 文档中详细描述了如何搭建 ESP32 开发环境,我们需要工具链 Windows all-in-one toolchain 用于编译源代码。

直接下载官方提供的 zip 包即可:https://dl.espressif.com/dl/esp32_win32_msys2_environment_and_toolchain-20171123.zip

同样解压到 D:\msys32 目录下,SDK 和 Toolchain 用于后续配置 VS Code 开发环境。


Step 3:配置 SDK path 与 Toolchain path

打开装好 aos-studio 扩展的 VS Code,点击右下角边状态栏上的 Create Project 新建工程按钮,首次使用会弹出配置 SDK Path 的窗口,把刚才下载的 SDK 目录 D:\AliOS-Things-master 和 ToolChain 目录 D:\msys32\opt\xtensa-esp32-elf\bin 复制到两个 path 文本框中, SDK Version 会自动识别。

修改 alios-studio Toolchain 判断规则(项目完善后可跳过此步)

此步骤非必须,由于我目前使用的 v1.1.2 版本的 SDK 尚未完善,多少会存在一些小 bug。比如对所添加 Toolchain path 的合法性判断,目前只校验了 arm Toolchain,所以对 ESP32 的 xtensa 工具链会误报非法路径。

阿里工程师在 issue [AliOS-studio][ESP32] tool chain path. · Issue #55 · alibaba/AliOS-Things 里给出了临时解决方法 —— 把 C:\Users\用户名\.vscode\extensions\alios.alios-studio-0.6.6\src\yang-sdk\main.js 文件中以下判断语句注释掉:

代码语言:javascript
复制
if (options.toolChain && !fsPlus.existsSync(path.join(dir, `arm-none-eabi-gcc${process.platform === 'win32' ? '.exe' : ''}`))) {
    return {error: 1, msg: 'path is not a tool chain directory!'};}

修改完毕后重启 VS Code,按 Ctrl+Shift+P 快捷键调出命令模式,输入 alios-studio: set SDK 继续配置,可正常添加 Toolchain path。


Step 4:新建 helloworld 工程

继续点击新建工程按钮,这回我们终于看到了待选工程模板,勾选 helloworld 工程,滚到下面填写工程保存目录(不能带中文),目标板卡选 esp32devkitc,最后点 Submit 按钮确认提交。

新建工程需要把 sdk 赋值到工程文件夹,比较耗时,请耐心等待。完成后 VS Code 会新打开一个文件夹视图窗口,表示一个 alios-studio 工程。在左侧的目录中打开 helloword.c 文件,其中application_start 函数是应用程序的入口。helloworld 程序的运行现象是在串口以 5 s 的间隔打印调试字符串。

新建工程视频演示:AliOS Things Tutorial: 1 Hello World 应用


Step 5:编译、构建项目

点击窗口下方状态栏上的 Build 按钮开始编译、构建项目,期间会输出相应信息。如果 SDK 和工具链路径配置 ok 的话项目是可以成功编译的。经过 67.57 s 的漫长等待,终于 Build 完了……

编译生成的文件在工程的 out 目录下,out\helloworld@esp32devkitc\binary\helloworld@esp32devkitc.bin 是要烧到板子上的固件。


Step 6:烧写 bin 固件

固件烧录是相对独立的过程,原理适用于所有 bin 文件。烧写 ESP32 固件可以通过图形界面的 ESPFlashDownloadTool 软件或者 Python 命令行工具 esptool,两者都十分好上手,下面分别说明烧录方法。

bin 文件烧录地址

在烧写前需要准备 3 个 bin 文件,分别是引导程序(bootloader.bin)、分区表(custom_partitions.bin)和用户程序(helloworld@esp32devkitc.bin)。

引导程序和分区表的 bin 文件在 SDK 目录 D:\AliOS-Things-master\platform\mcu\esp32\bsp 下,用户程序 bin 由 alios-studio 编译得到。3 个 bin 文件烧录地址如下:

bin 文件

烧录地址

bootloader.bin

0x1000

custom_partitions.bin

0x8000

helloworld@esp32devkitc.bin

0x10000

系统启动时会从 0x1000 地址处开始执行,引导程序读取分区表确定内存分布及启动规则,然后执行用户程序代码。因此全部 bin 都要烧到正确的地址程序才能正常执行,这一点需要特别注意。

PS:bootloader.bin 和 custom_partitions.bin 首次必须烧写,之后仅烧用户 bin 即可。

使用 ESPFlashDownloadTool 工具烧录

ESPFlashDownloadTool 工具可在 Tools - 乐鑫 Flash 下载工具下载,打开软件后选择 ESP32 DownloadTool,设置不同固件及对应地址、晶振频率、SPI 模式、Flash大小,波特率(决定烧写速度),如下图所示:

将 ESP32 DevKitC 开发板用 Micro-USB 线与电脑连接,安装串口驱动,在烧写软件中选择对应 COM 号,点击 Start 按钮开始下载。

提示:大部分电脑在点击 Start 后会自动复位 ESP32 DevKitC 进入下载模式,如果出现一直等待的情况,请尝试按住 Boot 键不放再下载,或者按住 BooT 键的的同时按一下 EN 键再松开。

使用 esptool 工具烧录

esptool 是采用 Python 语言编写的开源工具(源代码:espressif/esptool: ESP8266 and ESP32 serial bootloader utility),提供方便易用的命令行方式进行操作,常用操作命令:

单个 bin 写 flash 命令:

代码语言:javascript
复制
格式:esptool.py --port 串口号 write_flash 地址 文件名.bin

示例:esptool.py --port COM4 write_flash 0x1000 my_app-0x01000.bin

多个 bin 写 flash 命令:

代码语言:javascript
复制
格式:esptool.py --port 串口号 write_flash 地址1 文件名1.bin 地址2 文件名2.bin

示例:esptool.py --port COM4 write_flash 0x00000 my_app.elf-0x00000.bin 0x40000 my_app.elf-0x40000.bin

esptool.py 在 D:\AliOS-Things-master\platform\mcu\esp32\esptool_py\esptool 目录下,可通过「计算机 - 属性 - 高级系统设置 - 环境变量」添加到系统环境变量 Path 中(分号隔开后粘贴路径),以便在命令行中直接使用。

在 CMD 中敲入以下命令,将 bootloader.bin、custom_partitions.bin 和 helloworld@esp32devkitc.bin 三个文件下载到 Flash 对应地址。

代码语言:javascript
复制
esptool.py --port COM30 --baud 921600 write_flash 0x1000 D:\AliOS-Things-master\platform\mcu\esp32\bsp\bootloader.bin 0x8000 D:\AliOS-Things-master\platform\mcu\esp32\bsp\custom_partitions.bin 0x10000 E:\CodeBase\ESP32\AliOS-Things\hello\out\helloworld@esp32devkitc\binary\helloworld@esp32devkitc.bin
脚本实现

每次输命令太麻烦?将以下代码保存为批处理脚本 upload.bat ,并拷贝到工程目录 hello 下,最后在 VS Code 内置的终端中执行脚本实现一键烧录:

代码语言:javascript
复制
for /f "delims=" %%t in ('dir /A:-D /S /B out\*@esp32devkitc.bin') do set binPath=%%t

esptool.py --port COM30 --baud 921600 write_flash 0x1000 D:\AliOS-Things-master\platform\mcu\esp32\bsp\bootloader.bin 0x8000 D:\AliOS-Things-master\platform\mcu\esp32\bsp\custom_partitions.bin 0x10000 %binPath%

固件 bootloader.bincustom_partitions.bin 从 SDK 目录获取,用户 bin 通过子目录下搜索 “@esp32devkitc.bin” 文件后缀得到。


运行结果

点击 VS Code 下方的 Connect Device 按钮(选好 COM 号,波特率 115200),通过 alios-studio 自带串口工具连接开发板(或使用其他串口工具),如果收到 ESP32 每隔 5 s 发过来的调试信息,说明 helloworld 运行成功!

提示:如果板子不断重启打印错误信息,请检查固件及烧写地址的正确性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 人人都是极客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ESP32
    • ESP32 DevKitC 开发板
    • 所需工具
    • 开发步骤
    • Step 1:安装 VS Code、alios-studio 扩展
    • Step 2:获取 AliOS Things SDK 和 ESP32 工具链
      • 下载 aos 源代码
        • 下载 ESP32 工具链
        • Step 3:配置 SDK path 与 Toolchain path
          • 修改 alios-studio Toolchain 判断规则(项目完善后可跳过此步)
          • Step 4:新建 helloworld 工程
          • Step 5:编译、构建项目
          • Step 6:烧写 bin 固件
            • bin 文件烧录地址
              • 使用 ESPFlashDownloadTool 工具烧录
                • 使用 esptool 工具烧录
                  • 脚本实现
                  • 运行结果
                  相关产品与服务
                  物联网
                  腾讯连连是腾讯云物联网全新商业品牌,它涵盖一站式物联网平台 IoT Explorer,连连官方微信小程序和配套的小程序 SDK、插件和开源 App,并整合腾讯云内优势产品能力,如大数据、音视频、AI等。同时,它打通腾讯系 C 端内容资源,如QQ音乐、微信支付、微保、微众银行、医疗健康等生态应用入口。提供覆盖“云-管-边-端”的物联网基础设施,面向“消费物联”和 “产业物联”两大赛道提供全方位的物联网产品和解决方案,助力企业高效实现数字化转型。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档