Բովանդակություն:
- Քայլ 1: Softwareրագրային ապահովման նախադրյալներ
- Քայլ 2: Վարորդի տեղադրում և կազմաձևում
- Քայլ 3. OpenOCD, Toolchain և Gdb
- Քայլ 4: Էլեկտրամոնտաժ և առաջին փորձարկում
- Քայլ 5. Վրիպազերծման կազմաձևում ավելացրեք Visual Studio կոդին
Video: ESP32 - Էժան լուծում Circruit Debug- ում. 5 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:49
Ողջույն, այս հրահանգում նկարագրված է, թե ինչպես ստեղծել էժան JTAG ադապտեր ՝ հիմնված FTDI 2232HL չիպի վրա ՝ տեսողական կոդով և arduino հավելումով:
- FTDI 2232HL մոդուլ ՝ USB միակցիչով, ebay- ում սկսած 8 դոլարից և վճարովի ծրագրակազմ չի պահանջվում: Սա հիանալի լուծում է այն հետաքրքրասերների համար, ովքեր չեն ցանկանում 50 դոլար+ ծախսել profesionall JTAG ադապտերի վրա:
- Այս ադապտորը կարող է օգտագործվել այլ հարթակների կարգաբերման համար, ինչպիսիք են ESP8266, ARM, AVR և շատ ուրիշներ: Որոշ կազմաձևեր կախված են նպատակային հարթակից: Այս հրահանգը ներառում է միայն ESP32- ի կարգավորումները:
- Եթե արդեն ունեք JTAG ադապտեր, կարող եք այն օգտագործել, երբ այն օժանդակում է openOCD- ին, պարզապես սկսեք openocd- ը տարբեր կազմաձևման ֆայլերով `հիմնված ձեր jtag ադապտերի տեսակի վրա:
- platform.io- ն կարող է հեշտացնել կարգավորումը ձեզ համար, սակայն վրիպազերծումն աջակցվում է միայն վճարովի մասնագիտական տարբերակում:
- Աշխատում է ESP32 մոդուլների մեծ մասի հետ: (օրինակ էժան wemos lolin 32)
- այս jtag ադապտերը պետք է աշխատի նաև Linux- ի հետ, բայց ես անձամբ չեմ փորձարկել այն:
Քայլ 1: Softwareրագրային ապահովման նախադրյալներ
Arduino IDE տարբերակ 1.8 կամ ավելի նոր: Windows խանութի տարբերակը չի ապահովվում: Դուք պետք է օգտագործեք տեղադրողի դասական տարբերակ, որը կարելի է ներբեռնել պաշտոնական Arduino էջից ՝
Microsoft- ի վիզուալ ստուդիայի կոդը
Տեսողական ստուդիայի կոդի համար նախատեսված այս հավելումները պարտադիր են
- Arduino
- Մայրենի վրիպազերծում
Ես նաև խորհուրդ եմ տալիս տեղադրել այս հավելումը, որը հնարավորություն է տալիս intelisense- ին C/C ++ - ի համար
C/C ++
Այս ձեռնարկում ես կօգտագործեմ 2 աշխատանքային թղթապանակ:
D: / devel / ESP32 / tools / - այստեղ ես տեղադրել եմ բոլոր գործիքները
C: / Users / xxxxx / Documents / Arduino / YourProject / - սա էսքիզով թղթապանակ է
եթե ցանկանում եք, կարող եք տեղադրել ձեր ֆայլերը ցանկացած այլ վայրում, պարզապես մի մոռացեք թարմացնել բոլոր արժույթները ձեր իրական ճանապարհով:
Քայլ 2: Վարորդի տեղադրում և կազմաձևում
Նույնիսկ եթե Windows- ն ինքնաբերաբար ինքնաբերաբար հայտնաբերում է FT2232- ը, Windows- ի լռելյայն վարորդները բավարար չեն բոլոր նախնական հնարավորությունների համար, և անհրաժեշտ է ներբեռնել և տեղադրել վարորդը FTDI կայքից
Երբ տեղադրվում է ճիշտ վարորդը, դուք պետք է ձեր FT2232 մոդուլը տեսնեք սարքի կառավարիչում ոչ միայն որպես 2 սերիական նավահանգիստ, այլ նաև որպես «USB սերիայի փոխարկիչ A» և «USB սերիայի փոխարկիչ B»:
Երկրորդ քայլը մեր փոխարկիչի մեկ ալիքի վարորդի փոփոխությունն է: Ներբեռնեք zadig գործիքը https://zadig.akeo.ie/ կայքից: Եթե ես ճիշտ եմ հասկանում, այս գործիքը winUSB վարորդին կապում է FTDI սարքի հետ, ինչը թույլ է տալիս ցածր մակարդակի հաղորդակցություն openOCD և USB սարքերի միջև:
Zadig գործիքում, «Ընտրանքներ» ընտրացանկում նշեք «Showուցադրել բոլոր սարքերը», ապա ձեր ադապտերը պետք է տեսնեք առկա սարքերի ցանկում: Ընտրեք «Երկակի RS232-HS (ինտերֆեյս 0)», ապա ընտրեք փոխարինող վարորդը «WinUSB v6.1.xxxx» և վերջապես կտտացրեք վարորդի փոխարինման կոճակին:
Երբ ձեր ադապտորը միացնում եք ձեր համակարգչի տարբեր USB պորտին, անհրաժեշտ է նորից փոխել վարորդի կարգավորումները zadig գործիքի միջոցով, հակառակ դեպքում openOCD- ը չի գտնի ձեր ադապտերը:
Քայլ 3. OpenOCD, Toolchain և Gdb
1. Բաց OCD- ն գործիք է շրջանառության վրիպազերծման համար, մի կողմից այն խոսում է չիպի հետ, մյուս կողմից այն տրամադրում է gdb սերվեր, որտեղ կարող է միանալ վրիպազերծիչը (հաճախորդը): Ներբեռնեք openOCD- ը ESP32- ի համար https://github.com/espressif/openocd-esp32/releases- ից և բացեք այն D: / devel / ESP32 / tools / թղթապանակում:
2. խմբագրել openOCD կազմաձևման ֆայլերը.
esp-wroom-32.cfg
Այս ֆայլի ամբողջական ուղին հետևյալն է.
D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / board / esp-wroom-32.cfg
Այս ֆայլում կարող եք սահմանել հաղորդակցության արագությունը ՝ փոփոխելով «adapter_khz» պարամետրը: Օրինակ ՝ «adapter_khz 8000» նշանակում է 8 ՄՀց:
Կանխադրվածը 20 ՄՀց է, և այն կարող է չափազանց բարձր լինել, եթե օգտագործում եք ավելի երկար ցատկող լարեր կամ տախտակ: Ես խորհուրդ եմ տալիս սկսել 1 ՄՀց հաճախականությամբ և եթե ամեն ինչ կարգին է, անցեք ավելի բարձր արագության, ինձ համար 8 ՄՀց հուսալի աշխատում է:
minimodule.cfg
Այս ֆայլի ամբողջական ուղին է ՝ D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / interface / ftdi / minimodule.cfg
Եթե ես ճիշտ եմ հասկանում, իսկական մինիմոդուլը FTDI- ի արտադրած FT 2232- ով չափազանց թանկ արգելակման տախտակ է, և շուկայում առկա իսկական մինիմոդուլի և էժան մոդուլի կամ մերկ չիպի միակ տարբերությունը լռելյայն USB նկարագրությունն է: բաց OCD- ն փնտրում է jtag ադապտեր ՝ հիմնված սարքի նկարագրության վրա, ինչպես նաև պետք է ճշգրտվի դասավորության սկզբնաղբյուրը:
Էժան մոդուլն ունի «Dual RS232-HS» նկարագրությունը: Եթե վստահ չեք ձեր սարքի նկարագրության վերաբերյալ, կարող եք այն ստուգել սարքի կառավարիչում -> սարքի հատկություններ -> ներդիրի մանրամասներ -> «Ավտոբուսի հաղորդված սարքի նկարագրությունը» գույքի արժեքը:
Minimodule.cfg- ի բովանդակությունը պետք է նման լինի ստորև բերված օրինակին, տողերը սկսվում են # կարող են ջնջվել:
ինտերֆեյս ftdi #ftdi_device_desc "FT2232H MiniModule" ftdi_device_desc "Dual RS232 -HS" ftdi_vid_pid 0x0403 0x6010 #ftdi_layout_init 0x0018 0x05fb ftdi_layout_init 0x0008i 0s000d
esp32.cfg
Այս ֆայլի ամբողջական ուղին հետևյալն է.
D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts / target / esp32.cfg
Կցեք հետևյալ 2 տողերով esp32.cfg- ի ավարտին: Առանց այս փոփոխության, արգելակման կետերի ավելացումը չի աշխատի:
#Ուժի մեջ մտնել ընդմիջման կետերը: Հիշողության քարտեզ ունենալուց հետո մենք կարող ենք նաև թույլ տալ, որ bps.gdb_breakpoint_override ծրագրակազմը կոշտ լինի
3. Ներբեռնեք և տեղադրեք xtensa-esp32-elf գործիքաշղթա. Այս գործիքաշղթան պարունակում է հրամանի տողի վրիպազերծիչ (gdb հաճախորդ), որը կարևոր է ցանկացած գրաֆիկական IDE- ից աշխատող վրիպազերծման համար: Մերկ գործիքակազմը կարելի է ներբեռնել espressif կայքից, «Այլընտրանքային կարգավորում» բաժնից
Քայլ 4: Էլեկտրամոնտաժ և առաջին փորձարկում
Միացրեք FT2322 մոդուլը ESP- ի հետ: Ես խորհուրդ եմ տալիս օգտագործել հնարավորինս կարճ լարեր: Եթե դուք նորեկ եք JTAG- ում, մի մոռացեք, որ ադապտեր TDI- ն անցնելու է չիպի TDI, ինչպես նաև ադապտեր TDO- ն `չիպի TDO: JTAG տվյալների գծերը ՉԵՆ ԽԱՉՎԱ, ինչպես Rx/Tx- ը uart- ում:
Հետևյալ թեստի համար ես խորհուրդ եմ տալիս վերբեռնել թարթման օրինակ էսքիզը կամ որևէ այլ ուրվագիծ, որը կարող է ցույց տալ, թե երբ է աշխատում պրոցեսորը, թե ոչ `LED- ը թարթելով կամ ազդանշան տալով կամ սերիական վահանակին գրելով:
Սկսեք openOCD- ը ՝ հետևելով հրամանին
D: / devel / ESP32 / tools / openocd-esp32 / bin / openocd.exe-s D: / devel / ESP32 / tools / openocd-esp32 / share / openocd / scripts -f interface/ftdi/minimodule.cfg -f տախտակ /esp-wroom-32.cfg
Սա կսկսի openOCD- ը, և եթե ամեն ինչ կարգին է, ապա հրամանի տողում պետք է տեսնեք, որ ելքը պարունակում է հետևյալ տողերը.
Տեղեկություն ՝ ժամացույցի արագություն 8000 կՀց Տեղեկություն ՝ JTAG հպում ՝ esp32.cpu0 թակել/գտնված սարք ՝ 0x120034e5 (mfg: 0x272 (Tensilica), մաս ՝ 0x2003, ver: 0x1) Տեղեկություն ՝ JTAG թակել ՝ esp32.cpu1 թակել/գտնված սարք ՝ 0x120034e5 (mfg: 0x272 (Tensilica), մաս ՝ 0x2003, ver: 0x1)
Նաև openocd գործընթացը կլսվի TCP 3333 նավահանգստում
Բացեք նոր տերմինալը և գործարկեք հրամանի տողի gdb հաճախորդը ՝ հետևելով հրամանին
D: / devel / ESP32 / tools / xtensa-esp32-elf / bin / xtensa-esp32-elf-gdb.exe
Սպասեք մի վայրկյան և երբ gdb տերմինալը պատրաստ կլինի, մեկ առ մեկ գրեք հետևյալ հրամանները
թիրախային հեռակառավարիչ ՝ 3333 ամիս վերակայման դադարեցումը շարունակվում է
առաջին հրամանը բացում է կապը openocd վրիպազերծման սերվերի հետ, երկրորդը կդադարեցնի ծրագրի կատարումը ESP- ում, և LED- ը պետք է դադարեցնի թարթելը, շարունակել վերականգնել ծրագրի կատարումը և LED- ը նորից պետք է թարթել:
Քայլ 5. Վրիպազերծման կազմաձևում ավելացրեք Visual Studio կոդին
Ենթադրում եմ, որ այդ պահին դուք արդեն կարգավորել եք վիզուալ ստուդիայի ծածկագիրը և arduino հավելումը, և կարող եք ստուգել և վերբեռնել ձեր ուրվագիծը գրատախտակին: Եթե ոչ, խնդրում ենք ստուգել որոշ ցուցումներ, թե ինչպես կարգավորել տեսողական ստուդիայի կոդը և arduino- ն, օրինակ ՝ այս էջում ՝
Վրիպազերծումն աշխատեցնելու համար անհրաժեշտ է նշել ելքային թղթապանակը: Ձեր ուրվագծային թղթապանակի տակ կա (թաքնված) թղթապանակ.vscode, որտեղ է գտնվում arduino.json ֆայլը: ավելացնել այս ֆայլին հետևյալ տողում.
"output": "BuildOutput/"
գործարկեք ստուգեք կամ վերբեռնեք և նորից ստուգեք ձեր ուրվագծային թղթապանակը, պետք է լինի նոր BuildOutput պանակ և դրա ներսում ֆայլը.elf ընդլայնմամբ: elf ֆայլը կենսական նշանակություն ունի վրիպազերծման համար:
Վրիպազերծիչի կարգավորումները գտնվում են file.json- ում: Ստեղծեք այս ֆայլը հետևյալ բովանդակությամբ, կամ կարող եք պատճենել այս ֆայլը կցված օրինակ նախագծից: Մի մոռացեք կարգավորել 26 -րդ տողը և սահմանել ձեր.elf ֆայլի ճիշտ ուղին:
{// Օգտագործեք IntelliSense- ը `հնարավոր հատկանիշներին ծանոթանալու համար: // Սավառնել ՝ առկա հատկանիշների նկարագրությունները դիտելու համար: // Լրացուցիչ տեղեկությունների համար այցելեք ՝ https://go.microsoft.com/fwlink/?linkid=830387 «տարբերակ» ՝ «0.2.0», «կազմաձևեր» ՝ [{"name": "Arduino-GDB-openOCD "," type ":" cppdbg "," request ":" start "," program ":" $ {file} "," cwd ":" $ {workspaceRoot}/BuildOutput/"," MIMode ":" gdb ", "targetArchitecture": "arm", "miDebuggerPath": "D: /devel/ESP32/tools/xtensa-esp32-elf/bin/xtensa-esp32-elf-gdb.exe", "debugServerArgs": "", " customLaunchSetupCommands ": [{" text ":" target remote: 3333 "}, {" text ":" mon reset stopt stop "}, {// dynamical variant" text ":" file c:/Users/xxxxx/Documents/Arduino /${workspaceFolderBasename}/BuildOutput/${fileBasename}.elf »// ստատիկ տարբերակ //" text ":" file c: /Users/xxxxx/Documents/Arduino/YourProject/BuildOutput/YourProject.ino.elf "}, {"text": "flushregs"}, {"text": "thb app_main"}, {"text": "c", "ignoreFailures": true}], "stopAtEntry": true, "serverStarted": "Info \: [w / d \.]*: / ապարատային սարք »,« launchCompleteCommand »՝« exec-continue »,« filterStderr »՝ true,« args »: }]}
Ինչպես սկսել կարգաբերում.
- Համապատասխանեցրեք և վերբեռնեք ձեր ուրվագիծը տախտակ
- Գործարկեք openOCD- ը պարամետրերով
- Տեղադրեք արգելակման կետերը կոդի մեջ, որտեղ ցանկանում եք
- Բոլոր արգելակման կետերը սահմանելուց հետո համոզվեք, որ բացել եք ձեր նախագծի հիմնական.ino ֆայլը: (կամ.elf ֆայլը կոշտ կոդով
- Բացել վրիպազերծման վահանակը ընդդեմ կոդի (Ctrl + Shift + D)
- Ընտրեք «Arduino-GDB-openOCD» վրիպազերծիչը, պետք է հասանելի լինի միայն:
- Սեղմեք F5 ՝ վրիպազերծումը սկսելու համար
Խորհուրդ ենք տալիս:
Լույսի աղտոտման լուծում - Արտեմիս. 14 քայլ
Լույսի աղտոտման լուծում - Արտեմիս. Լույսի աղտոտվածությունը մի բան է, որն ազդում է բոլորիս վրա ամբողջ աշխարհում: Էլեկտրական լամպի գյուտից ի վեր լույսը շատ ավելի հայտնի է դարձել և հատուկ օգտագործվել է այնպիսի մեծ քաղաքներում, ինչպիսիք են Նյու Յորքը և Չիկագոն: Այս ամբողջ լույսը կարող է ազդել
Trշմարտության աղյուսակների լուծում. 10 քայլ
Solշմարտության աղյուսակների լուծում. Truthշմարտության աղյուսակը խնդրի բոլոր արդյունքները պատկերացնելու միջոց է: Այս հրահանգների հավաքածուն նախատեսված է այն մարդկանց համար, ովքեր սկսում են առանձին մաթեմատիկա: Մենք այսօր պարապելու ենք այս հրահանգներին հատուկ խնդրի օրինակով: Դու
RAM տեխնոլոգիաներ և խնդիրների լուծում. 6 քայլ
RAM տեխնոլոգիաներ և խնդիրների լուծում. Պատահական մուտքի հիշողությունը (RAM) շատ արագ հիշողության ձև է, որն օգտագործվում է համակարգիչների կողմից ՝ տեղեկատվությանը արագ մուտք գործելու համար: RAM- ը շատ ավելի արագ է, քան կոշտ սկավառակները կամ պինդ վիճակի կրիչները, սակայն այն շատ ավելի թանկ է և չի կարող տվյալներ պահել առանց մշտական հզորության: Ինչպես դու
IOT լուծում հեծանիվը կիսելու համար. 6 քայլ
IOT լուծում հեծանիվի փոխանակման համար. Այս օրերի հեծանիվը շատ տարածված է Չինաստանում: Շուկայում կան հեծանիվների փոխանակման ավելի քան 10 ապրանքանիշեր, իսկ “ mobike ” ամենահայտնին է, այն ունի ավելի քան 100 միլիոն գրանցված օգտվող և տարածվել է այլ քաղաքներում
Arduino- ի ամբողջական պտտվող լուծում. 5 քայլ
Arduino- ի ամբողջական պտտվող լուծում. Պտտվող կոդավորիչները էլեկտրոնային նախագծերի համար պտտվող կառավարման կոճակներ են, որոնք հաճախ օգտագործվում են Arduino ընտանիքի միկրոկոնտրոլերների հետ: Դրանք կարող են օգտագործվել պարամետրերը ճշգրտելու, ընտրացանկերում նավարկելու, էկրանին օբյեկտներ տեղափոխելու, ցանկացած տեսակի արժեքներ սահմանելու համար: Նրանք սովորական փոխարինողներ են