Բովանդակություն:

ESP32 - Էժան լուծում Circruit Debug- ում. 5 քայլ
ESP32 - Էժան լուծում Circruit Debug- ում. 5 քայլ

Video: ESP32 - Էժան լուծում Circruit Debug- ում. 5 քայլ

Video: ESP32 - Էժան լուծում Circruit Debug- ում. 5 քայլ
Video: PS3 #2: Ressurecting the impossable! | EPIC rollercoaster repair that nearly broke me. 2024, Նոյեմբեր
Anonim
ESP32 - Էժան լուծում Circruit Debug- ի համար
ESP32 - Էժան լուծում Circruit Debug- ի համար

Ողջույն, այս հրահանգում նկարագրված է, թե ինչպես ստեղծել էժան 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

OpenOCD, Toolchain և Gdb
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 կոդին

Ավելացրեք վրիպազերծման կոնֆիգուրացիա Visual Studio կոդին
Ավելացրեք վրիպազերծման կոնֆիգուրացիա 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 »: }]}

Ինչպես սկսել կարգաբերում.

  1. Համապատասխանեցրեք և վերբեռնեք ձեր ուրվագիծը տախտակ
  2. Գործարկեք openOCD- ը պարամետրերով
  3. Տեղադրեք արգելակման կետերը կոդի մեջ, որտեղ ցանկանում եք
  4. Բոլոր արգելակման կետերը սահմանելուց հետո համոզվեք, որ բացել եք ձեր նախագծի հիմնական.ino ֆայլը: (կամ.elf ֆայլը կոշտ կոդով
  5. Բացել վրիպազերծման վահանակը ընդդեմ կոդի (Ctrl + Shift + D)
  6. Ընտրեք «Arduino-GDB-openOCD» վրիպազերծիչը, պետք է հասանելի լինի միայն:
  7. Սեղմեք F5 ՝ վրիպազերծումը սկսելու համար

Խորհուրդ ենք տալիս: