㈠ esp32 vscode lauch 设置
第一步:安装 VSCode C/C++ 扩展
1.在应用商店里搜索 C++
2.安装C/C++ IntelliSense, debugging, and code browsing
第二步:安装 VSCode ESP-IDF 扩展
1.在应用商店里搜索 Espressif
2.安装 Develop and debug applications for Espressif ESP32, ESP32-S2 chips with ESP-IDF (带乐鑫图标)
第三步:配置ESP-IDF 扩展
1.按 F1 或Ctrl+Shift+P 打开命令面板
2.输入 ESP-IDF: Configure ESP-IDF extension
加载初始设置时间较长,耐心等待
3.根据实际情况选择不同的配置方式
Express: IDF 版本 配置Python环境,扩展将安装IDF
Advanced: 手动配置已安装的开发环境
Using Existing Setup : 使用扩展检测出的环境
配置完成后显示:All settings have been configured. You can close this window.
第四步:创建项目模板,检测设置
1.按 F1 或Ctrl+Shift+P 打开命令面板 输入ESP-IDF:Create project 或按Ctrl+E+C
2.选择工程创建目录
3.选择模板类型
第五部:设置工作区的json文件
在settings.json文件中添加以下内容
"terminal.integrated.shell.windows": "cmd.exe",
"terminal.integrated.shellArgs.windows": ["/k", "c:\\esp\\esp-idf\\export.bat"],
"terminal.integrated.shell.linux": "/bin/bash",
"terminal.integrated.shellArgs.linux": ["--init-file", "~/esp/esp-idf/export.sh", "-i"],
"terminal.integrated.shell.osx": "/bin/bash",
"terminal.integrated.shellArgs.osx": ["--init-file", "~/esp/esp-idf/export.sh", "-i"],
"files.associations": {undefined
"*.md": "markdown",
"*.mdx": "tdx",
"stdio.h": "c"
},
可以在VSCode 终端中正常使用idf的各种命令。
第六步:编译工程
可以使用ESP扩展下的各个按钮完成项目的串口选择、项目配置、Full Clearn、编译、下载、监视
也可以使用命令行方式:
1.按Ctrl+` (~按键的位置)打开终端(第一次运行时扩展会有提示,选择允许 其实质就是运行~/esp/esp-idf/export.sh)
2.选择终止终端
3.重新打开终端 会看到export.sh运行的结果
Go to the project directory and run:
idf.py build
4.运行各种idf命令
第七部:下载程序并监测程序运行
1. 按Select Device Port 按钮 或运行 ESP-IDF:Device configuration命令
按提示选择/dev/ttyUSB1作为下载口
2.编译完成后,可使用下载按钮进行程序下载。此时会出现提示:
PermissionError: [Errno 13] Permission denied: '/dev/ttyUSB1'
原因:
$ ls -l /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 2月 3 11:21 /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 1 2月 3 11:21 /dev/ttyUSB1
发现ttyUSB* 设备属于root用户 dialout 用户组,当前用户不属于dialout用户组
解决方案:
(1).执行以下命令
$sudo chmod 666 /dev/ttyUSB*
修改ttyUSB设备权限为其它用户可读可写。
缺点:电脑重启后,又会出现这种问题,还要重新设置
(2).为了能让普通用户也能使用串口,可以增加udev规则来实现
$sudo vim /etc/udev/rules.d/70-ttyusb.rules
增加如下内容:
KERNEL=="ttyUSB[0-9]*",MODE="0666"
保存,重新插入USB转串口,普通用户就能搞定了
缺点:该方法会让所有的普通用户都具有访问这些串口设备的权限,存在一定的安全隐患
(3).将目标用户加入dialout用户组,可以使用以下任意一个命令
$sudo usermod -aG dialout <目标用户名>
或:
sudo gpasswd --add <目标用户名> dialout
重启系统即可
第八部:跟踪调试程序
1.按 OpenOCD Server 按钮 输出提示:
❌ Error: libusb_open() failed with LIBUSB_ERROR_ACCESS
❌ Error: no device foun
按照 https://sourceforge.net/p/openocd/code/ci/master/tree/README 文档解释做如下操作:
(1). 将~/.espressif/tools/openocd-esp32/v0.10.0-esp32-20200709/openocd-esp32/share/openocd/contrib/
目录下的 60-openocd.rules 拷贝至 /etc/udev/rules.d/ 目录下
(2).确保当前用户属于 plugdev 用户组。 提示:运行 groups 命令可以查看当前用户所属的用户组
(3).重启系统
2.配置Debug 环境
参考:https://github.com/espressif/vscode-esp-idf-extension/blob/master/docs/DEBUGGING.md
注:该文档中的模板有坑。
问题:
使用 ESP-IDF Debug Adapter 配置时出现如下提示:
pygdbmi.gdbcontroller.NoGdbProcessError: gdb process has already finished with return code: 127
按照 esp_debug_adapter 说明文档 在~/.vscode/extensions/espressif.esp-idf-extension-0.6.1/esp_debug_adapter/ 目录下
$pip install -r requirements.txt
问题依然存在 暂无解决思路
使用 Microsoft C/C++ extension to debug 配置时出现如下提示:
error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
实质是系统中没有python2.7的库,解决:
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libpython2.7
问题解决
同时也解决了使用 ESP-IDF Debug Adapter 配置时出现的问题 故是否需要pip install …… 不能确定
在使用 Microsoft C/C++ extension to debug 配置时 会提示出现异常,不用理会可正常跟踪调试。
有时会提示
Error: couldn’t bind tcl to socket: Address already in use
则证明 刚刚启动的 进程未被终止。
解决办法:
a).查看当前活动进程
netstat为显示网络相关信息 a(all:默认显示所有,如果加了其他选项此项不生效) n(number:以数字形式显示) t(仅仅显示tcp连接),p(process:显示该项是由哪个程序建立起来的)
$ sudo netstat -antp
b). 强制杀死它(假设进程号为3560,-9为强制杀死)
$ sudo kill -9 3560
Debug正常运行时,状态栏由蓝色变为棕色。
附:scode的各个json文件
c_cpp_properties.json
======================================
{undefined
"configurations": [
{undefined
"name": "ESP-IDF",
"compilerPath": "${default}",
"cStandard": "c11",
"cppStandard": "c++17",
"includePath": [
"${config:idf.espIdfPath}/components/**",
"${config:idf.espIdfPathWin}/components/**",
"${workspaceFolder}/**"
],
"browse": {undefined
"path": [
"${config:idf.espIdfPath}/components",
"${config:idf.espIdfPathWin}/components",
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": false
}
}
],
"version": 4
}
settings.json
======================================
{undefined
"terminal.integrated.shell.windows": "cmd.exe",
"terminal.integrated.shellArgs.windows": ["/k", "c:\\esp\\esp-idf\\export.bat"],
"terminal.integrated.shell.linux": "/bin/bash",
"terminal.integrated.shellArgs.linux": ["--init-file", "~/esp/esp-idf/export.sh", "-i"],
"terminal.integrated.shell.osx": "/bin/bash",
"terminal.integrated.shellArgs.osx": ["--init-file", "~/esp/esp-idf/export.sh", "-i"],
"files.associations": {undefined
"*.md": "markdown",
"*.mdx": "tdx",
"stdio.h": "c"
},
"C_Cpp.clang_format_style": "Visual Studio",
"editor.formatOnSave": false,
"[cpp]": {undefined
"editor.quickSuggestions": true
},
"[c]": {undefined
"editor.quickSuggestions": true
},
"C_Cpp.intelliSenseEngine": "Tag Parser",
//配置下载接口
"idf.port": "/dev/ttyUSB1",
//配置下载方式
"idf.flashType": "UART",
//openOcd配置,根据开发板确定
"idf.openOcdConfigs": [
//新版建议用“board/XXX” 配置
"interface/ftdi/esp32_devkitj_v1.cfg",
"target/esp32.cfg"
]
}
launch.json
======================================
{undefined
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{undefined
"type": "espidf",
"name": "ESP_Debug",
"request": "launch",
"debugPort": 43474,
"logLevel": 2,
//模板中有坑的地方,模板内容为 "mode": "manual",
//这样不能自动启动 Debug Adapter
"mode": "auto",
"initGdbCommands": [
"target remote :3333",
"symbol-file ${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
"set remote hardware-watchpoint-limit 2",
"mon reset halt",
"flushregs",
"thb app_main",
"c"
],
"env": {undefined
"PATH": "${env:PATH}:${config:idf.customExtraPaths}"
}
},
{undefined
"name": "GDB",
"type": "cppdbg",
"request": "launch",
"MIMode": "gdb",
"miDebuggerPath": "${command:espIdf.getXtensaGdb}",
"program": "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf",
"windows": {undefined
"program": "${workspaceFolder}\\build\\${command:espIdf.getProjectName}.elf"
},
"cwd": "${workspaceFolder}",
"environment": [{ "name": "PATH", "value": "${config:idf.customExtraPaths}" }],
"setupCommands": [
{ "text": "-enable-pretty-printing",
"ignoreFailures": true },
{ "text": "file '${workspaceFolder}/build/${command:espIdf.getProjectName}.elf'"},
{ "text": "target remote :3333" },
{ "text": "set remote hardware-watchpoint-limit 2"},
{ "text": "mon reset halt" },
{ "text": "thb app_main" },
{ "text": "flushregs" }
//{ "text": "c"}
],
"externalConsole": false,
"logging": {undefined
"engineLogging": true
}
}
]
}
tasks.json 这个文用系统生成的即可 略
————————————————
版权声明:本文为CSDN博主“FuShaofeng”的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/FuShaofeng/article/details/113633337
㈡ 在磁盘分区时,前面两个esp和msr是什么东西
一、esp即EFI系统分区
1、全称EFI system partition,简写为ESP。msr分区本身没有做任何工作,是名副其实的保留分区。ESP虽然是一个FAT16或FAT32格式的物理分区,但是其分区标识是EF(十六进制) 而非常规的0E或0C。
因此,该分区在 Windows 操作系统下一般是不可见的。支持EFI模式的电脑需要从ESP启动系统,EFI固件可从ESP加载EFI启动程序和应用程序。
2、ESP是一个独立于操作系统之外的分区,操作系统被引导之后,就不再依赖它。这使得ESP非常适合用来存储那些系统级的维护性的工具和数据,比如:引导管理程序、驱动程序、系统维护工具、系统备份等,甚至可以在ESP里安装一个特殊的操作系统。
3、ESP也可以看做是一个安全的隐藏的分区,可以把引导管理程序、系统维护工具、系统恢复工具及镜像等放到ESP,可以自己打造“一键恢复系统”。而且,不仅可以自己进行DIY,还要更方便、更通用。
二、msr分区是保留分区
1、windows不会向msr分区建立文件系统或者写数据,而是为了调整分区结构而保留的分区。在Win8以上系统更新时,会检测msr分区。msr分区本质上就是写在分区表上面的“未分配空间”,目的是微软不想让别人乱动。
2、msr分区的用途是防止将一块GPT磁盘接到老系统中,被当作未格式化的空硬盘而继续操作(例如重新格式化)导致数据丢失。GPT磁盘上有了这个分区,当把它接入XP等老系统中,会提示无法识别的磁盘,也无法进一步操作。
(2)esp电脑配置扩展阅读:
磁盘分区:
计算机中存放信息的主要的存储设备就是硬盘,但是硬盘不能直接使用,必须对硬盘进行分割,分割成的一块一块的硬盘区域就是磁盘分区。在传统的磁盘管理中,将一个硬盘分为两大类分区:主分区和扩展分区。
主分区是能够安装操作系统,能够进行计算机启动的分区,这样的分区可以直接格式化,然后安装系统,直接存放文件。
目的:
分区允许在一个磁盘上有多个文件系统。有许多理由需要这么做:
1、有利于管理,系统一般单独放一个区,这样由于系统区只放系统,其他区不会受到系统盘出现磁盘碎片的性能影响。
2、碍于技术限制(例如旧版的微软FAT文件系统不能访问超过一定的磁盘空间;旧的PC BIOS不允许从超过硬盘1024个柱面的位置启动操作系统)
3、如果一个分区出现逻辑损坏,仅损坏的分区而不是整个硬盘受影响。
4、在一些操作系统(如Linux)交换文件通常自己就是一个分区。在这种情况下,双重启动配置的系统就可以让几个操作系统使用同一个交换分区以节省磁盘空间。
5、避免过大的日志或者其他文件占满导致整个计算机故障,将它们放在独立的分区,这样可能只有那一个分区出现空间耗尽。
6、两个操作系统经常不能存在同一个分区上或者使用不同的“本地”磁盘格式。为了不同的操作系统,将磁盘分成不同的逻辑磁盘。
7、许多文件系统使用固定大小的簇将文件写到磁盘上,这些簇的大小与所在分区文件系统大小直接成比例。如果一个文件大小不是簇大小的整数倍,文件簇组中的最后一个将会有不能被其它文件使用的空闲空间。
这样,使用簇的文件系统使得文件在磁盘上所占空间超出它们在内存中所占空间,并且越大的分区意味着越大的簇大小和越大的浪费空间。所以,使用几个较小的分区而不是大分区可以节省空间。
8、每个分区可以根据不同的需求定制。例如,如果一个分区很少往里写数据,就可以将它加载为只读。如果想要许多小文件,就需要使用有许多节点的文件系统分区。
9、在运行Unix的多用户系统上,有可能需要防止用户的硬连结攻击。为了达到这个目的,/home和/tmp路径必须与如/var和/etc下的系统文件分开。
分区类型:
硬盘分区之后,会形成3种形式的分区状态;即主分区、扩展分区和非DOS分区。
非DOS分区:
在硬盘中非DOS分区(Non-DOS Partition)是一种特殊的分区形式,它是将硬盘中的一块区域单独划分出来供另一个操作系统使用,对主分区的操作系统来讲,是一块被划分出去的存储空间。只有非DOS分区的操作系统才能管理和使用这块存储区域。
主分区:
主分区则是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。其中的主引导程序是它的一部分,此段程序主要用于检测硬盘分区的正确性,并确定活动分区,负责把引导权移交给活动分区的DOS或其他操作系统。
此段程序损坏将无法从硬盘引导,但从软驱或光驱引导之后可对硬盘进行读写。
扩展分区:
而扩展分区的概念是比较复杂的,极容易造成硬盘分区与逻辑磁盘混淆;分区表的第四个字节为分区类型值,正常的可引导的大于32mb的基本DOS分区值为06,扩展的DOS分区值是05。如果把基本DOS分区类型改为05则无法启动系统 ,并且不能读写其中的数据。
如果把06改为DOS不识别的类型如efh,则DOS认为该分区不是DOS分区,当然无法读写。很多人利用此类型值实现单个分区的加密技术,恢复原来的正确类型值即可使该分区恢复正常。
磁盘分区管理方式:
磁盘分区的管理方法已经不能完全满足系统的需要了,所以操作系统分都有了各种新的磁盘管理方法了。比如windows已经出现了一种动态磁盘的管理方法,linux的LVM管理方法等等。
㈢ ESP是什么意思呢
ESP是英文Electronic Stability Program的缩写,中文译成“电子稳定程序”。它通过对从各传感器传来的车辆行驶状态信息进行分析,然后向ABS、EBD等发出纠偏指令,来帮助车辆维持动态平衡。
ESP可以使车辆在各种状况下保持最佳的稳定性,在转向过度或转向不足的情形下效果更加明显。车辆电子稳定控制系统是近些年刚刚发展起来的一种电子装置,是对制动防抱死和牵引力控制功能的继承与进一步扩展。
德国博世公司于20世纪80年代中期开始量产制动防抱死系统,这种装置极大地提高了车辆制动稳定性。
但是后来发现制动防抱死系统无法解决低附着路面上车辆起步和加速时出现的车轮打滑问题。虽然有关解决驱动轮打滑问题的专利从20世纪70年代就已经出现,但直到 VOLVO公司开发出第一套电子牵引力控制系统产品,牵引力控制技术才开始实用化。
1986年,博世公司将制动防抱死系统和牵引力控制系统集成到一起并应用于梅塞德斯S级轿车上,这标志着 ABS/TCS集成时代的来临。
需要关闭ESP的情况:
一、上赛道
当然普通轿车是不可能开上赛道耍的,但是如果你想测试一台车的极限,那就避免不了将这台车推向极限,而ESP能提高主动安全性,保持车辆方向和循迹性处于可控的范围内。它的这个特性会干预汽车极限,所以在跑赛道时都会将ESP关掉。
不过对于普通车主不要轻易的关闭该系统,至少能保证出现紧急避让或者路面湿滑等情况下车辆不会完全失控。
二、漂移
前几天外国小孩开老宝马漂移的视频在网络上很火,引起了很多人的关注。其实漂移在赛道上是很忌讳的东西,漂移即打滑会损失很多动力。不过对于那些职业漂移的比赛来说,漂移确实成为了一种乐趣,而且对于普通车主来说,漂移似乎真的很酷。
不过在漂移前一定要将ESP关掉,因为漂移时车轮打滑ESP会主动的干预,不但完不成漂移动作还会带来一些故障。
三、汽车越野
其实对于专业的越野车来说,并不存在此类问题,因为在路况不好需要越野时车主可能会调整越野模式,切换模式之后ESP就不会在干预。但有些车型不具备越野能力,但是陷入泥地之后车轮会打滑,这时ESP会主动干预,并且限制发动机的输出,所以这时车主可以关掉ESP 试试。
ESP是汽车主动安全中非常重要的一个功能,不要小看这配置,它可能在你遇到突发情况时,默默的帮你一把。但是车主不要盲目的以为ESP能让汽车开的更快,能有更好的操控性!ESP不能提高汽车的极限和操控!
而且它只能在一定的速度区间内实现有效正确的干预,在特定的情况下(紧急避让,湿滑路面)保证汽车不会失控。
以上内容参考 人民网-汽车上配置的ESP到底应该怎么使用 你都知道吗
网络-车身电子稳定系统