赞
踩
见STM32MP1嵌入式Linux驱动开发指南V1.1.pdf
一文教你快速修改ubuntu终端显示的主机名和用户名 - 小麦大叔 - 博客园 (cnblogs.com)
在文件末尾添加PS1....
sudo vi ~/.bashrc
PS1='\[\e]0;#: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]#\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$'
sudo source ~/.bashrc
vim 使用命令 :i 编辑 dd 删除当前页 :wq保存并退出
如何在 Ubuntu 20.04 上安装 Visual Studio Code - 知乎 (zhihu.com)
sudo snap install --classic code
【乐鑫教程】|使用 VS Code 快速搭建 ESP-IDF 开发环境 (Windows、Linux、MacOS)_哔哩哔哩_bilibili
[(8条消息) ESP32开发(三):搭建Linux开发环境–VSCode操作_esp32 linux vscode_何事误红尘的博客-CSDN博客](https://blog.csdn.net/u014448875/article/details/125162697?ops_request_misc=%7B%22request%5Fid%22%3A%22168853869316782427425573%22%2C%22scm%22%3A%2220140713.130102334…%22%7D&request_id=168853869316782427425573&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-125162697-null-null.142v88control_2,239v2insert_chatgpt&utm_term=esp32 vscode linux&spm=1018.2226.3001.4187)
安装依赖环境(官方文件)
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
vscode 安装 ESPRESSIF
F1进入esp-idf extension
安装pip 与 python3-venv
sudo apt install python3-pip
sudo apt install python3-venv
出现WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) 问题需要切换pip镜像源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip config set global.index-url https://pypi.douban.com/simple/
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
安装完成
ESP-IDF:Show Examples Projects 选择例程,Create project using example hello_world 设置COM口 linux 查看设备管理dev cd /dev ls ttyS* --ttyS0 ttyS0是计算机串行接口 ttyACM0是USB通信设备CDC ttyACM0就是COM1 ttyACM0就是COM2以此类推 下载提示“Pression denied”属于权限问题,原因是用户无dev权限。 提示权限不够,是因为用户没有/dev/tty 的访问权限,只需将用户添加到dialout组就可以解决权限不够的问题。 解决方法如下: 1.由于tty属于“dialout”组,比如用户名是qilin, 用命令查看用户所属于的组别 groups qilin 2.如果没有隶属“dialout”,则把该用户加入进去 sudo gpasswd --add qinlin dialout 3.重新启动后,再登录系统就可以了。
VSCode解决头文件有红色波浪线_vscode头文件红色波浪线_泠山的博客-CSDN博客
F1 —>>> ESP-IDF:Add vscode configuration folder
虚拟机->重新安装vmtools
tar -zxvf VMwareTools-10.3.22-15902021.tar.gz
sudo ./vmware-install.pl
安装时注意查看提示信息,否则可能安装失败,安装成功会提示,Enjoy.
完成后就可以对文件进行复制粘贴
创建共享文件夹
查看虚拟文件夹
vmware-hgfsclient
如果出现vmware打开异常,重新删除安装文件,然后安装vmware tools
cd /usr/lib
sudo rm -r vmware-tools
cd /etc
sudo rm -r vmware-tools
官方文档
Get Started — ADF 音频应用开发框架 文档 (espressif.com)
esp-skainet: ESP-Skainet 是乐鑫推出的智能语音助手,目前支持唤醒词识别和命令词识别。 (gitee.com)
vscode sdk configuration editor //SDK 配置
idf.py menuconfig //菜单配置
(16条消息) ESP32 之 ESP-IDF 教学(五)——IDF工程项结构_esp idf_Augtons正(单片机)的博客-CSDN博客
博主其他文章写得也不错。
ESP32-IDF中cmake文件管理(添加头文件 C文件 组件的方法)_哔哩哔哩_bilibili
CMake应用:CMakeLists.txt完全指南 - 知乎 (zhihu.com)
一般来说,编译目标(target)的类型一般有静态库、动态库和可执行文件。 这时编写CMakeLists.txt
主要包括两步:
下面以开源项目(cmake-template)来演示。项目的目录结构如下:
./cmake-template ├── CMakeLists.txt ├── src │ └── c │ ├── cmake_template_version.h │ ├── cmake_template_version.h.in │ ├── main.c │ └── math │ ├── add.c │ ├── add.h │ ├── minus.c │ └── minus.h └── test └── c ├── test_add.c └── test_minus.
项目的构建任务为:
工程使用idf hello word 模板
目录如下:
CMakeLists.txt (1)
main(FILE)
----------CMakeList.txt (2)
----------hello_world_main.c
pytest_hello_world.py
README.md
sdkconfig.ci
CMakeLists.txt (1)
idf_component_register(SRCS "hello_world_main.c"
INCLUDE_DIRS "")
CMakeLists.txt (2)
# The following lines of boilerplate have to be in your project's
# CMakeLists in this exact order for cmake to work correctly
cmake_minimum_required(VERSION 3.16)
include($ENV{IDF_PATH}/tools/cmake/project.cmake) //添加了IDF环境路径下当前工程全部CMakeList.txt文件
project(hello_world)
*** 如果需要添加compoents ***
需要再目录中添加组件的CMakeList.txt
compoents
----------CMakeList.txt
----------component.mk
----------test1.c
----------test1.h
----------filename(file)
CMakeList.txt 写法与解释
(16条消息) ESP32-添加多目录的自定义组件_idf_component_register_NULL_1969的博客-CSDN博客
file(GLOB_RECURSE SOURCES ./*.c #包含当前文件夹路径下的C文件 ./*.cpp亦可 如同时包含.c和.cpp需要都包含入 ./*.cpp ./filename/*.c #包含当前文件夹路径下filename下的C文件,如没有此文件可以不需要此包含路径 ) #ChatGPT解释: # file(GLOB_RECURSE SOURCES ./*.c) 是一个 CMake 命令,用于获取指定目录下所有以 .c结尾的文件,并将它们保存在 SOURCES 变量中。 # idf_component_register 函数中的 SRCS 参数,以便注册这些源文件为组件的一部分。 idf_component_register(SRCS ${SOURCES} INCLUDE_DIRS . #找到当前文件夹(上述)路径的头文件 ./filename #找到当前文件夹路径下filename下的头文件,如没有此文件可以不包含此路径 REQUIRES filename #组件之间相关的调用关系,如有依赖关系填写需要包含的文件名,没有则为空。否则报错“未找到头文件” REQUIRES filename1 ) 可自定义文件名(不建议,官方推荐默认COMPONENTS文件夹) 在(1)CMakeList.txt中添加: set(EXTRA_COMPONENT_DIRS ./filename )
ESP32 IDF支持C与C++同时编译。
1.新建.cpp文件
2.修改CMakeLists.txt
file(GLOB_RECURSE SOURCES ./*.cpp
)
3.在有使用C++函数的文件中使用以下函数可以使C语言与C++语言无缝兼容
#ifdef __cplusplus extern "C" { #endif // 在此处放置 C 语言的函数声明和其他代码 #ifdef __cplusplus } // 注意此处只有一个 '}' #endif 或者 extern "C" xxxfunc(void){}; #ChartGPT解释: 在 C++ 代码中使用 #ifdef __cplusplus 和 extern "C" 的作用是为了支持 C 与 C++ 之间的交互和兼容性。 当你在 C++ 环境中使用 C 语言的代码时,通常需要考虑 C++ 的名称修饰(name mangling)规则以及函数的链接规范。这是因为 C++ 使用了名称修饰来支持函数重载和命名空间等特性,并且 C++ 和 C 语言有不同的链接规范。 #ifdef __cplusplus 是一个预处理指令,用于检查是否处于 C++ 编译环境中。如果是,就会执行指令块内的代码。 extern "C" 是一个语言链接规范的指令,用于指定包含在其中的代码应使用 C 链接规范,而不是 C++ 的名称修饰规范。这样可以确保 C++ 编译器按照 C 的链接规范处理函数名称,以便正确链接 C 语言的函数。 通过将 C 语言的函数声明和其他相关代码放置在 #ifdef __cplusplus 和 extern "C" 块中,你可以在 C++ 代码中使用 C 语言的函数,并保持链接规范的一致性。
生成Demo-----------*** hello_world_cxx ***
ESP32-IDF从helloword工程移植lvgl(第一节)_哔哩哔哩_bilibilis 这是idf 4.4版本 lvgl-8.3版本不适合本次移植
本次移植成功主要参考一下两个视频
esp-idf V5.0移植lvgl v8.3详细完整过程bilibili 这是idf 5.0版本 lvgl-8.3可以作为主要参考
基于espidf移植和使用lvgl_哔哩哔哩_bilibili
本次以及基于ESP-IDF v5.1-dirty,lvgl-8.3版本移植 新建一个idf hello world工程 新建文件夹 components 下载lvgl源码 git clone https://github.com/lvgl/lvgl.git 下载适配esp32的lvgl驱动 git clone https://github.com/lvgl/lvgl_esp32_drivers.git 将lvgl -->> lv_conf_template.h复制到 ../components/lvgl/src/lv_conf.h //注意需要重命名去掉template,进入使能文件,if 0 -->> if 1 将lvgl -->> example -->> porting -->> 文件复制到lvgl同级目录,新建文件porting。本次例程仅使用lv_port_disp.c/h,进入使能文件,if 0 -->> if 1 完成后目录为 components -->> lvgl lvgl_esp32_drivers porting -->> lv_conf.h lv_port_disp.c lv_port_disp.h /* clang-format off */ #if 1 /*Set it to "1" to enable content*/ 将0设置为1 在lvgl_helpers.h 中添加屏幕尺寸 本次移植未报错SPI_HOST_MAX问题,idf v4.4可能会出问题 // #ifndef SPI_HOST_MAX // #define SPI_HOST_MAX 3 // #endif // !SPI_HOST_MAX #define LV_VER_RES_MAX 240 #define LV_HOR_RES_MAX 240 如果报错无法找到 portTICK_PERIOD_MS 打开sdk configuration editor -->> FAT filesystem support -->> FreeRTOS -->> 勾选 configENABLE_BACKWARD_COMPATIBILITY 需要在lvgl_esp32_drivers -->> CMakeLists.txt中修改编译路径如下: idf_component_register(SRCS ${SOURCES} INCLUDE_DIRS ${LVGL_INCLUDE_DIRS} REQUIRES lvgl REQUIRES driver REQUIRES esp_rom) 如果报错头文件包含问题需要添加头文件路径:里面包含了#define SIG_GPIO_OUT_IDX256 在esp_lcd_backlight.c 中添加头文件 #include "soc/gpio_sig_map.h" gpio_matrix_out -->> esp_rom_gpio_connect_out_signal gpio_pad_select_gpio -->> esp_rom_gpio_pad_select_gpio file main CMakeLists.txt 修改为: file(GLOB MUSIC_ASSETS_FILES "../components/lvgl/demos/music/assets/*.c") //意思是查找文件中的全部文件并且包含进来。也可以使用下面的方式包含编译文件 idf_component_register(SRCS "hello_world_main.c" "../components/lvgl/demos/music/lv_demo_music.c" "../components/lvgl/demos/music/lv_demo_music_list.c" "../components/lvgl/demos/music/lv_demo_music_main.c" ${MUSIC_ASSETS_FILES} INCLUDE_DIRS "") 然后打开sdk configuration editor ,vscode下方齿轮 或者 idf.py menuconfig 设置controller model 当前使用ST7789 修改控制引脚,查看原理图 component config 取消 Uncheck this to use custom lv_conf.h 打开Font 勾选√ Enable Montserrat 10 勾选√ Enable Montserrat 12 勾选√ Enable Montserrat 14 勾选√ Enable Montserrat 16 勾选√ Enable Montserrat 18 搜索swap 勾选√ Swap the 2 bytes of RGB565 color. Useful if the display has an 8-bit interface (e.g. SPI). 勾选√ Invert colors in display 如果找不到定时器启动和err返回值,需要在mian.c中添加头文件 #include "esp_err.h" #include "esp_timer.h" lvgl_esp32_drivers -->> lvgl_helpers.c 报错DMA channel 错误只能使用AUTO DMA channel 修改为:esp_err_t ret = spi_bus_initialize(host, &buscfg, (spi_dma_chan_t)SPI_DMA_CH_AUTO);
移植完成,生成工程hello_lvgl_demo
F1新建demo工程WIFI -->> "iperf" 需要安装iperf sudo apt-get install iperf //默认Version2 查找电脑IP ip a // ip addr show 运行iperf iperf -s -i -3 windows 下运行 当前目录下进入cmd,同linux系统。 终端 sta WIFI账号 密码 iperf -c IP -i 3 -t 60 ################################################ iperf> sta TP-JDSW-2.4G jdsw0407 I (16498) cmd_wifi: sta connecting to 'TP-JDSW-2.4G' I (19958) esp_netif_handlers: sta ip: 192.168.3.108, mask: 255.255.255.0, gw: 192.168.3.1 iperf> iperf -c 192.168.3.95/192.168.3.203 -i 3 -t 60 I (44505) cmd_wifi: mode=tcp-client sip=192.168.3.108:5001, dip=192.168.3.95:5001, interval=3, time=60 I (44519) iperf: Successfully connected Interval Bandwidth iperf> 0- 3 sec 6.17 Mbits/sec 3- 6 sec 7.62 Mbits/sec 6- 9 sec 3.54 Mbits/sec 9- 12 sec 4.12 Mbits/sec 12- 15 sec 2.67 Mbits/sec 15- 18 sec 5.21 Mbits/sec 18- 21 sec 5.42 Mbits/sec 21- 24 sec 5.54 Mbits/sec 24- 27 sec 9.67 Mbits/sec 27- 30 sec 7.21 Mbits/sec 30- 33 sec 6.29 Mbits/sec 33- 36 sec 10.04 Mbits/sec 36- 39 sec 11.04 Mbits/sec 39- 42 sec 6.62 Mbits/sec 42- 45 sec 4.54 Mbits/sec 45- 48 sec 5.67 Mbits/sec 48- 51 sec 5.17 Mbits/sec 51- 54 sec 10.42 Mbits/sec 54- 57 sec 11.42 Mbits/sec 57- 60 sec 11.29 Mbits/sec 0- 60 sec 6.98 Mbits/sec ###################################################
这个博主内容比较详细。
ESP32-C3 学习测试 蓝牙 篇(一、认识 ESP-IDF 的蓝牙框架、简单的了解蓝牙协议栈)_esp32蓝牙协议_矜辰所致的博客-CSDN博客
printf(" Firmware compile time:%s %s\n", __DATE__, __TIME__); //打印编译时间
10.42 Mbits/sec
54- 57 sec 11.42 Mbits/sec
57- 60 sec 11.29 Mbits/sec
0- 60 sec 6.98 Mbits/sec
###################################################
## ESP32S3 蓝牙基于GATT
这个博主内容比较详细。
[ESP32-C3 学习测试 蓝牙 篇(一、认识 ESP-IDF 的蓝牙框架、简单的了解蓝牙协议栈)_esp32蓝牙协议_矜辰所致的博客-CSDN博客](https://blog.csdn.net/weixin_42328389/article/details/123427950?spm=1001.2014.3001.5502)
## 编译指令
```c
printf(" Firmware compile time:%s %s\n", __DATE__, __TIME__); //打印编译时间
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。