㈠ 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到底應該怎麼使用 你都知道嗎
網路-車身電子穩定系統