使用ESP-IDF开发时,项目特指一个目录,其中包含了构建可执行应用程序所需的全部文件和配置,以及其他支持型文件,例如分区表、数据/文件系统分区和引导程序。
本文主要讲解esp32中Espressif目录以及Espressif\frameworks\esp-idf-v4.3.2目录的文件结构。
一、esp32项目结构
Espressif\python_env:环境变量
环境变量的作用:设置后可以在其他命令窗口中使用该软件的命令脚本
注意:1 配置或删除环境变量后,执行命令脚本的客户端工具要关掉,重新打开,否则 命令脚本不起作用;
2 如果不配置环境变量,那么执行命令脚本时就需要把该程序的运行文件.exe文 件,放到需要执行命令脚本的同意目录下才可以;
里面的文件内容:
include:C head源文件等
Lib:C head源文件、python源文件、PYC文件等
Scripts:主要是应用程序
Espressif\frameworks\esp-idf-v4.3.2\.git:
git的定义:开源的分布式版本控制系统
Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
配置git环境:git config --global
参数讲解:
config:参数是用来配置git环境的
--global:长命令表示配置整个git环境
初次使用git需要设置你的用户名以及邮箱,这将作为当前机器git的标识,如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录,
git默认使用配置邮箱以及用户名登入,但会要求你手动输入密码
用户名配置
user代表用户,.name代表配置用户的名称
git config --global user.name "你的用户名"
邮箱配置
user代表用户,.email代表配置用户的邮箱
git config --global user.email "你的邮箱"
不配置也行,当遇到要求登录权限的远程仓库会让你在手动输入用户名、邮箱、以及密码
集中式与分布式的区别
除了git还有svn、cvs这样的版本控制系统,它们的区别在于一个是分布式一个是集中式
集中式就是svn和csv这样的版本控制系统,分布式是git
区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来,并且如果服务器丢失了,那么所有的就都丢失了,你本机客户端仅保存当前的版本信息,换句话说,集中式就是把代码放在一个服务器上集中管理,你的所有回滚等操作都需要服务器的支持。
分布式的区别在于,每个人的电脑都是服务器,当你从主仓库拉取一份代码下来后,你的电脑就是服务器,无需担心主仓库被删或者找不到的情况,你可以自由在本地回滚,提交,当你想把自己的代码提交到主仓库时,只需要合并推送到主仓库就可以了,同时你可以把自己的代码新建一份仓库分享给其它人。
像集中式它们都有一个主版本号,所有的版本迭代都以这个版本号为主,而分布式因为每个客户端都是服务器,git没有固定的版本号,但是有一个由哈希算法算出的id,用来回滚用的,同时也有一个master仓库,这个仓库是一切分支仓库的主仓库,我们可以推送提交到master并合并到主仓库上,主仓库的版本号会迭代一次,我们客户端上的git版本号无论迭代多少次,都跟master无关,只有合并时,master才会迭代一次。
Espressif\frameworks\esp-idf-v4.3.2\.GitHub: 通过 Git 进行 版本控制 的软件 源代码 托管服务平台
基本功能:作为开源代码库以及版本控制系统,Github拥有超过900万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。
如前所述,作为一个分布式的版本控制系统,在Git中并不存在主库这样的概念,每一份复制出的库都可以独立使用,任何两个库之间的不一致之处都可以进行合并。
GitHub可以托管各种git库,并提供一个web界面,但它与外国的SourceForge、Google Code或中国的coding的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。
在GitHub进行分支就像在Myspace(或Facebook)进行交友一样,在社会关系图的节点中不断的连线。
GitHub项目本身自然而然的也在GitHub上进行托管,只不过在一个私有的,公共视图不可见的库中。开源项目可以免费托管,但私有库则并不如此。Chris Wanstrath,GitHub的开发者之一,肯定了通过付费的私有库来在财务上支持免费库的托管这一计划。
通过与客户的接洽,开发FamSpam,甚至是开发GitHub本身,GitHub的私有库已经被证明了物有所值。任何希望节省时间并希望和团队其它成员一样远离页面频繁转换之苦的人士都会从GitHub中获得他们真正想要的价值。
在GitHub,用户可以十分轻易地找到海量的开源代码。
Espressif\frameworks\esp-idf-v4.3.2\.gitlab:用于仓库管理系统的开源项目
含义:GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
应用特点:1.Web框架使用RubyonRails。
2.基于MIT代码发布协议。
3.需要gitolite协同工作。
Espressif\frameworks\esp-idf-v4.3.2\components
组件(components)是ESP-IDF的核心,它将各项功能组件化,方便项目管理
ESP-IDF使用CMake、ninja和python作为工程构建工具,支持用户自定义组件。在ESP-IDF中,自定义组件主要由如下几种文件组成:
CMakeLists.txt文件:必要,用于组件代码组织
component.mk文件:必须,用于指定组件代码如何编译,比如定义编译参数等
Kconfig文件:非必要,用于可视化配置组件
二、分区表的修改
目录:Espressif\frameworks\esp-idf-v4.3.2\components\partition_table.\partitions_singleapp
打开xls工作表之后将右下角原有的1M改成3M就行了
三、flash大小的修改
打开vscode,然后打开文件夹:Espressif\frameworks\esp-idf-v4.3.2\examples\get-started\hello_world
之后左边选择main.hello_world.main.c,再点击下面勾选的按键
然后会来到这个界面
之后在右侧往下翻找到flash并将flash size的大小改为4m并保存,这样就修改完成了
显示屏程序是英文带一个字体库,字体库存了常用汉字的字体数据,而字体库大概有1M大小,因此flash大小和分区表必须得改。
下面是一些其他的项目结构的释义
项目 备注
SDK tool configuration 配置SDK 开发工具链的信息,一般未编译自己工具链时不用修改
Bootloader config 配置BootLoader 启动时的日志打印级别
Serial flasher config 配置串口下载时使用的端口、波特率、Flash 模式、Flash 频率、 是否压缩上传等
Partition Table 配置分区信息,可选择默认分区配置或自定义分区配置
Component config组件 配置 包含ESP32的特殊配置、WiFi配置、BLE配置、FreeRTOS配 置、LWIP配置、日志配置、SPI配置、用户程序自定义配置等