Öèòàòà(AHTOXA @ Dec 24 2016, 22:51)

Êîíå÷íî èíòåðåñíî!
ÎÊ. Òîãäà íà÷íåì ñ òîãî, êàê ïðèêðóòèòü:
1.Ñîáñòâåííî ñêà÷àòü è óñòàíîâèòü VS Code
2. VS Code äëÿ ïîäñâåòêè ñèíòàêñèñà, àâòîêîìïëèòà, ïîäñêàçîê è ò.ï. íóæíî äîáàâèòü ðàñøèðåíèå cpptools (
https://marketplace.visualstudio.com/items?...vscode.cpptools ). Ýòî ðàñøèðåíèå ìîæåò ðàáîòàòü ñ gdb, íî òîëüêî äëÿ îòëàäêè íà ÏÊ. Ïîýòîìó îòëàä÷èê â íåì ìû êîíôèãóðèðîâàòü íå áóäåì.
3. ýòîì ðàñøèðåíèè åñòü êàêîé-òî çàòûê - îíî äîëæíî ðàáîòàòü ñðàçó, íî áåç ïèíêà íå âûõîäèò. ×òîáû çàðàáîòàëî íóæíî â êàòàëîãå .vscode (îí ñîäàåòñÿ VS Code âíóòðè ãëàâíîãî êàòàëîãà Âàøåãî ïðîåêòà) ñîçäàòü ôàéë c_cpp_properties.json ñëåäóþùåãî ñîäåðæàíèÿ:
CODE
{
"configurations": [
{
"name": "ARM",
"includePath":
[
"C:/Include",
"${workspaceRoot}/Include"
],
"browse" :
{
"limitSymbolsToIncludedHeaders" : true,
"databaseFilename" : "${workspaceRoot}/.vscode/.browse.VC.db"
}
}
]
}
Ïóòè ê çàãîëîâêàì óêàçûâàþòñÿ àáñîëþòíûå. Äëÿ çàäàíèÿ ïóòè îòíîñèòåëüíî ãëàâíîãî êàòàëîãà ïðîåêòà ìîæíî èñïîëüçîâàòü ${workspaceRoot}
Ïîñëå ýòîãî ðàñøèðåíèå íà÷èíàåò íîðìàëüíî ðàáîòàòü.
4.×òîáû ðàáîòàëà êîìïèëÿöèÿ íóæíî ñîçäàòü ôàéë "çàäà÷" (â êàòàëîãå .vscode). Ó ìåíÿ îí âûãëÿäèò òàê (óñòàíîâëåíû gcc/gdb/mingw), ÷òî-ãäå äîëæíî áûòü ïîíÿòíî:
CODE
{
// See
https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format
"version": "0.1.0",
"command": "sh.exe",
"isShellCommand": true,
"args": ["-c"],
"showOutput": "always",
"suppressTaskName": false,
"tasks":
[
{
"isBuildCommand": true,
"suppressTaskName": true,
"taskName": "make",
"args": ["make"],
"isWatching": false,
"problemMatcher":
{
"owner": "c",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern":
{
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"isBuildCommand": false,
"isTestCommand": true,
"suppressTaskName": true,
"taskName": "flash",
"args": ["make flash"],
"isWatching": false,
},
{
"taskName": "clean",
"suppressTaskName": true,
"args": ["make clean"]
},
{
"taskName": "rebuild",
"suppressTaskName": true,
"args": ["make clean all"],
"isWatching": false,
"problemMatcher":
{
"owner": "c",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern":
{
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"taskName": "oocd",
"suppressTaskName": true,
"args" : ["c:/openocd-0.9.0/bin-x64/openocd.exe -f interface/olimex-arm-usb-ocd.cfg -f target/stm32f1x.cfg -f cfg/debug.cfg"]
}
]
}
Ïîñëå ýòîãî ñáîðêà ìîæåò áûòü çàïóùåíà ÷åðåç Ctrl+Shift+B (ñî÷åòàíèå ìîæíî ñìåíèòü íà ïðèâû÷íîå, ÿ ïîñòàâèë áîëåå ïðèâû÷íîå ìíå Shift+F8) èëè ÷åðåç "ñòðîêó êîìàíä" èëè êàê îíî ïðàâèëüíî íàçûâàåòñÿ ó íèõ - âûçûâàåòñÿ ïî Ctrl+Shift+P. Ïðîøèâêà çàïóñêàåòñÿ ÷åðåç êîìàíäó òåñòèðîâàíèÿ Ctrl+Shift+T, åñòåñòâåííî ñî÷åòàíèÿ ìîæíî ñìåíèòü.
5.Ïðèêðó÷èâàåì gdb. Äëÿ ýòîãî íóæíî äîáàâèòü ðàñøèðåíèå Native debug (
https://marketplace.visualstudio.com/items?...=webfreak.debug ). Ïîòîì íàæàòü íà êíîïêó Îòëàäêè íà áîêîâîé ïàíåëè, ïîòîì íà øåñòåðåíêó ââåðõó ñïðàâà è âûáðàòü GDB â ñïèñêå. Îòêðîåòñÿ ôàéë êîíôèãóðàöèè çàïóñêà GDB (îí íàõîäèòñÿ â .vscode/launch.json). Ó ìåíÿ îí âûãëÿäèò òàê:
CODE
{
"version": "0.4.2",
"configurations": [
{
"name": "Debug gdb",
"type": "gdb",
"request": "attach",
"executable": "${workspaceRoot}\\Debug\\Main.elf",
"target": "localhost:3333",
"cwd": "${workspaceRoot}",
"gdbpath": "C:\\arm\\bin\\arm-kgp-eabi-gdb.exe",
"remote": true,
"autorun": [
"load ./Debug/Main.elf",
"break main",
"monitor reset"
]
}
]
}
Íàçíà÷åíèÿ ïîëåé äóìàþ ïîíÿòíû ïî èõ èìåíàì (êðîìå òîãî ïðè ðåäàêòèðîâàíèè êîíôèãîâ ñèëàìè vs code âûäàþòñÿ âñïëûâàþùèå ïîäñêàçêè). Çàïèñûâàåì ôàéë è âîò ñîáñòâåííî è âñå - ïîñëå ýòîãî äîëæíà ðàáîòàòü îòëàäêà/ñáîðêà/ïðîøèâêà/ðåäàêòèðîâàíèå. Ïåðåä îòëàäêîé íóæíî çàïóñòèòü OOCD, ñäåëàòü ýòî ìîæíî ñêîíôèãóðèðîâàííîé íàìè êîìàíäîé task->oocd, ìîæíî è âðó÷íóþ.
6.Äëÿ íàâåäåíèÿ êðàñèâîñòåé ìîæíî óñòàíîâèòü ïàêåò èêîíîê è ïîïðàâèòü ïîä ñåáÿ ðàñêðàñêó. Íó è äàëüøå äðóãèå ðàñøèðåíèÿ "ïî âêóñó".
Öèòàòà
È íå òîëüêî êàê ïðèêðóòèòü, íî è âîîáùå, êàê âïå÷àòëåíèÿ îò ýòîé ñòóäèè.
Âïå÷àòëåíèé ïîêà ìàëî - âðåìåíè ïðîøëî ìàëî, äà è ñåé÷àñ çàíÿò íåìíîãî äðóãèì. Èçíà÷àëüíî ÿ ñòàâèë åå ñ äðóãîé öåëüþ - èíîãäà ïèøó ïîä DSP56300 è êàê-òî íè îäèí ðåäàêòîð, õîòü ñ ïëàãèíàìè, õîòü áåç íå ïîäñâå÷èâàåò íîðìàëüíî ñèíòàêñèñ àññåìáëåðà DSP56300, è íå ïðåäëàãàåò autocomplete äàæå â "òóïîé" ôîðìå (êîãäà äëÿ ïîäñòàíîâêè ïðåäëàãàþòñÿ ïðîñòî âñå èäåíòèôèêàòîðû èç òåêóùåãî äîêóìåíòà).
VS Code èç êîðîáêè ýòîãî òîæå íå ïðåäëàãàåò, íî çà ïîë äíÿ ÿ ðàçîáðàëñÿ êàê è íàïèñàë ê íåìó ðàñøèðåíèå ñ ïîäñâåòêîé ñèíòàêñèñà è íåêîòîðûìè ôè÷àìè ïî ââîäó/ôîðìàòèðîâàíèþ êîäà. Ïëþñ autocomplete ðàáîòàåò (ïóñòü è â "íåèíòåëëåêòóàëüíîì" âèäå, íî â àññåìáëåðå ýòî î÷åíü óäîáíî). Èíòåðåñíî, ÷òî äëÿ íàïèñàíèÿ ðàñøèðåíèÿ íè÷åãî êðîìå ñàìîé VS Code íå ïîòðåáîâàëîñü :)
Öèòàòà
Íå òîðìîçèò?
Íåò, òîðìîçîâ íåò.
Öèòàòà
Ìîæíî ëè ïðûãàòü ïî êîäó?
Äà.
Öèòàòà
Õîðîøî ëè ïàðñèò êîä c/c++?
Íîðìàëüíàÿ ñòóäèÿ ýòî äåëàåò ëó÷øå, õîòÿ äëÿ èñïîëüçîâàíèÿ ãîäåí è òàêîé âàðèàíò (ïðàâäà ïðîåêò íà ÷èñòîì Ñ, ÷òî áóäåò íà ïëþñàõ íå çíàþ). c/c++ ðàñøèðåíèå íàõîäèòñÿ â ñòàäèè "ïðåâüþ" è åãî àêòèâíî äîïèëèâàþò, ÷òî äàåò íàäåæäû íà "ñ÷àñòëèâûé ôèíàë".
Öèòàòà
Îòïðàâëÿåò ëè îíà "òåëåìåòðèþ" â ìèêðîñîôò? (À òî ÿ ÷èòàë, ÷òî äàæå åñëè îòêëþ÷èòü, òî âñ¸ ðàâíî îòïðàâëÿåò).
ß îòêëþ÷èë. Íà ñ÷åò îòïðàâëÿåò ëè â òàêîì âèäå íå èíòåðåñîâàëñÿ - ó ìåíÿ íè÷åãî îñîáî ñåêðåòíîãî íåò :) Âðîäå ðàñøèðåíèÿ ìîãóò îòïðàâëÿòü ñâîþ "òåëåìåòðèþ" è åå íóæíî îòêëþ÷àòü îòäåëüíî.
Öèòàòà
Íó è âñ¸ òàêîå
Êàê ðàáîòàåò ñ gdb ïîíðàâèëîñü. Ñàì ðåäàêòîð íåñêîëüêî àñêåòè÷íûé íà ïåðâûé âçãëÿä, íî â íåì âñå ðàáîòàåò è â íåì, â ïðèíöèïå, âñå åñòü (ïî êðàéíåé ìåðå ïîêà íè÷åãî òàêîãî, ÷åãî áû êðèòè÷åñêè íå õâàòàëî íå îáíàðóæèë). Ïðè íåîáõîäèìîñòè âñå íàñòðàèâàåòñÿ, äåëàåòñÿ ïðàâäà ýòî íå ÷åðåç ìåíþ è äèàëîãè, à ðåäàêòèðîâàíèåì êîíôèãà, êîòîðûé â âèäå json ôàéëîâ. Ïîíðàâèëîñü, ÷òî â îòëè÷èè îò ïîëíîöåííîé ñòóäèè vs code íå çàãàæèâàåò êàòàëîã ïðîåêòà êó÷åé ñâîèõ ôàéëîâ - âñå ñâîå îíà õðàíèò â îäíîì êàòàëîãå .vscode
Äà, åñòü ïîäñâåòêà ñèíòàêñèñà shell, makefile è äàæå matlab (ÿ óæå íå ãîâîðþ ïðî áîëåå ïîïóëÿðíûå).