ESP32开发记录

本文基于果云ESP-32F kit 开发板
arduino完美支持C++所以可以用C++开发
配置VScode作为编辑器。 blog.csdn.net/Clown_pan

第一部分 :环境搭建(windows简单版)

1、安装开发板驱动

https://pan.baidu.com/s/19opbCyyGLa77PwUOf18_vQ

根据原理图,发现开发板使用CP2102作为USB转TTL芯片,故需要下载此芯片驱动,并安装。


v2-5b191b0156b040f6a69c93e71c7c9afc_b.jpg

v2-9cb4d734f2502febb9bcff2349b9a907_b.jpg

2、安装arduino

3、安装例程包


第二部分 arduino程序启动过程

一、ESP32,是如何运行RTOS的?

参考文档 general-notes.rst

1、 第一阶段bootloader(ROM中)加载第二阶段bootloader(位于FLASH 0X1000)

2、 第二阶段的boot loader加载分区表和MAIN APP应用程序(其实就是freertos了)

main APP包含RAM段和Flash段

① 去0X8000加载分区表 ,配置两个CPU(PRO CPU和APP CPU)的MMU,但只使能PRO cpu的flash,一旦被加载,就会跳到main APP的入口

3、执行main APP,此时,第二个CPU和RTOS调度器都会运行

入口调用 componments/esp32/cpu_start.c中的call_start_cpu0函数,

此函数会调用 call_start_cpu1.执行后PRO CPU执行start_cpu0,APP CPU执行start_cpu1

最终会调用app_main函数

二、内存分布

内存分为:

1、IRAM:

Internal SRAM0

ISR。Handlers 中断处理函数必须放到IRAM里 (方法:通过家IRAM——ATTR属性就能把代码或变量放入IRAM里)

一些时序比较高的也应该放入IRAM里

2、IROM:

3、DRAM:

4、DROM:

三、启动流程

1、地址映射

v2-b60b3fcd20011829c5ea56ace1d415fb_b.jpg

①、首先在0XE000下载了:bootapp0

v2-37c8925b589b2ac7f144f19fa54e3531_b.jpg

②、其次在0X1000下载了:bootloader

v2-c140c0127682bbf1fec8f0e1961f8e16_b.jpg

等待下载完成,后继续进程如下:

v2-eb2a520464ec6ba3376271963617bc5a_b.jpg

③、在0X10000下载了:应用程序(RTOS)

v2-138d7b8266b3f062a9d4bf45aad66579_b.jpg

④、在0X8000下载了:分区表 default

v2-fcbc014ebe860536543a4388f3e3e934_b.jpg

这个文件是由default.csv表格生成的,打开表格可以发现分区和地址的关系。

v2-805a589626e4e3b7315db226dff18526_b.jpg

知道了分区表其实我们也可以借助别的工具下载程序了,例如

v2-280e181b5ad26effb96b020c6282fa51_b.jpg

四、setup()和loop()函数

首先,我们要知道系统会默认编译cores文件夹下的内容(相当于系统自带的库函数)

v2-67879c96939c49e23ae9fd15af0fd04f_b.jpg

其次,我们要知道 PRO CPU在运行应用程序之前先运行了app_main函数,

其实这个函数就在cores文件夹下的main.cpp里面

v2-13e3d30824acc880060428be8b0651ac_b.jpg

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值