jtag_debugging - withrobot/myCortex-STM32F4 GitHub Wiki
๊ฐ์
JTAG์ ์ฌ์ฉํ์ ๋ ์ป์ ์ ์๋ ์ต๋์ ์ด์ ์ ๋ฐ๋ก ์์ค๋ ๋ฒจ ๋๋ฒ๊น ์ ๋๋ค. PC์์ Visual Studio๋ฅผ ์ด์ฉํด ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ๋ ๋๋ฒ๊น ์ ํด ๋ณด์ จ๋ค๋ฉด ์์ค๋ ๋ฒจ ๋๋ฒ๊น ์ ๊ฐ๋ ฅํจ์ ์ฝ๊ฒ ์ดํดํ์ค ์ ์์ ๊ฒ์ ๋๋ค. ์ ์ ํ ๋๋ฒ๊น ์๋จ๋ ์์ด printf() ํจ์๋ GPIO ํ๋๊ฐ๋ก ๋๋ฒ๊น ํ๋ฉด์ ๊ณ ์ํ ๊ฒฝํ, ์๋ฒ ๋๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๋๊ตฌ๋ ๊ฐ์ง๊ณ ์์ ๊ฒ์ ๋๋ค. JTAG์ด ์๋ค๋ฉด ๊ทธ ๊ณ ์์ ์ํด๋ ๋ฉ๋๋ค!
myCortex-STM32F4 ์์ ๋ฅผ ๋์์ผ๋ก JTAG ์์ค๋ ๋ฒจ ๋๋ฒ๊น ๋ฐฉ๋ฒ์ ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋๋ฒ๊น ๊ธฐ์ด
๋น์ฐํ ์ด์ผ๊ธฐ์ ๋๋ค๋ง, ๋๋ฒ๊น ์ ํ๋ ค๋ฉด ํด๋น ํ๋ก์ ํธ๋ฅผ EWARM์์ open ํด์ผ ํฉ๋๋ค. File ๋ฉ๋ด์ [Open]->[Workspace]๋ฅผ ์ฐจ๋ก๋๋ก ์ ํํ์ฌ ex02.1_LED ํด๋์ EWARM.eww ํ์ผ์ open ํฉ๋๋ค.
๋๋ฒ๊น ์ ์ํด ํ๋ก์ ํธ๋ฅผ ๋น๋ํฉ๋๋ค. ๋จ์ถํค F7์ ๋๋ฅด๊ฑฐ๋ ๋ฉ๋ด์์ Project->Make๋ฅผ ์ ํํฉ๋๋ค.
์๋ฒ ๋๋ ํ๊ฒฝ์์ ๋๋ฒ๊น ์ ์ํด์๋ ๋ณด๋์ ์ฐ์ ํ์จ์ด๋ฅผ ๋ค์ด๋ก๋ ํด์ผ ํฉ๋๋ค(์๋ฎฌ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ์ค์ ๋ณด๋๋ฅผ ์กฐ๊ธ ํ๋ด๋ด๋ ์์ค์ ๊ทธ์ณ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ต๋๋ค)
EWARM์์๋ ๋จ์ถํค Ctrl+D๋ฅผ ๋๋ฅด๊ฑฐ๋ ๋ฉ๋ด์์ Project->Download and Debug๋ฅผ ์ ํํจ์ผ๋ก์จ ๋ค์ด๋ก๋ฉ๊ณผ ๋๋ฒ๊น ์์์ ๋์์ ํ ์ ์์ต๋๋ค.
๋ช๋ฒ์ ์งํ ์๋๊ฐ ์ ๊น์ฉ ๋ํ๋ฌ๋ค ์ฌ๋ผ์ง ๋ค์ ์ ํ๋ฉด๊ณผ ๊ฐ์ด main() ํจ์๊ฐ ๋ น์์ผ๋ก ๋ฐ๋ ์ํ๋ก ๋ฉ์ถฐ์์ต๋๋ค. CPU ์ฝ์ด์ ํด๋ญ์ด ์ ์ง๋๋ฉด์ ์คํ ์ญ์ ์ผ์ ์ ์ง ์ํ์ ๋๋ค. ์ฝ๋์์ ๋ น์์ผ๋ก ํ์๋ ๋ถ๋ถ์ "์ด๋ฒ์ ์คํํ ๋์ ์ฝ๋"๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด ์ํ์์ ๋จ์ถํค F10 ํน์ ๋ฉ๋ด์ Debug->Step over๋ฅผ ์ ํํ๋ฉด ์์ค ์ฝ๋ ํ์ค์ด ์คํ๋๋ฉฐ ํ๋ฉด์ ์๋์ ๊ฐ์ด ๋ฐ๋๋๋ค.
LED_Init() ํจ์๊ฐ ๋ น์์ผ๋ก ๋ฐ๋์์ต๋๋ค.
Step over๋ ์ฝ๋ ํ์ค์ ์คํํ๋ผ๋ ์๋ฏธ์ ๋๋ค. ๋ง์ผ ์ด ํ์ค์ด ํจ์ ํธ์ถ์ธ ๊ฒฝ์ฐ๋ผ๋ฉด ๊ทธ ํจ์ ์ ์ฒด๋ฅผ ํ์ค๋ก ์ทจ๊ธํฉ๋๋ค. ๋ค์๋ฒ ์คํ ๋์์ธ LED_Init()์ ํจ์์ ๋๋ค. ์ด ์ํ์์ step over๋ฅผ ํ๊ฒ ๋๋ฉด LED_Init() ํจ์๋ฅผ ๋ชจ๋ ๋ค ์คํํ๊ณ ๋ค์ ์ค์ธ LED_R_ON()์ด ๋ น์์ผ๋ก ๋ ๊ฒ์ ๋๋ค.
๋ฐ๋ฉด Step into๋ ํจ์ ํธ์ถ์ ๋ง๋ฌ์ ๋ ๊ทธ ํจ์ ๋ด๋ถ๋ก ๋ฐ๋ผ ๋ค์ด๊ฐ๋๋ค. LED_Init()์ ์คํํ ์์์์ Step into๋ฅผ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋จ์ถํค๋ F11 ์ ๋๋ค.
main.c ํ์ผ๋ง ์ด๋ ค์์์ง๋ง ์๋์ผ๋ก led.c ํ์ผ์ด ์ด๋ฆฌ๋ฉด์ LED_Init() ํจ์์ ์ฒซ ๋ฒ์งธ ๋ผ์ธ์ด ๋ น์์ผ๋ก ํ์๋ฉ๋๋ค. ์ด์ฒ๋ผ Step into๋ ํธ์ถํ๋ ํจ์ ๋ด๋ถ๊น์ง ๋ฐ๋ผ๋ค์ด๊ฐ๋ ๊ธฐ๋ฅ์ ๋๋ค. ๋ฐ๋ฉด Step out(๋จ์ถํค Shift + F11)์ ํ์ฌ ํจ์์ ๋๊น์ง ์คํํ๊ณ ํจ์๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ๋๋์๊ฐ๋ ๊ธฐ๋ฅ์ ๋๋ค.
Shift+F11์ ๋๋ฌ LED_Init() ํจ์์ ์คํ์ ๋๊น์ง ํ๊ณ ๋๋ฉด ์๋์ ๊ฐ์ด next cursor๊ฐ ํ์๋ฉ๋๋ค.
LED_R_ON()์ด ์คํ๋ ์ฐจ๋ก์ ๋๋ค. ์ด ์์ ์ myCortex-STM32F4 ๋ณด๋์ LED๋ ๋๊ฐ ๋ชจ๋ ๊บผ์ ธ์์ต๋๋ค. ์ด์ F10์ ๋๋ฌ 14 ๋ผ์ธ์ ์คํํ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ด๋ ๋ณด๋๋ฅผ ํ์ธํด ๋ณด๋ฉด ์ ์ LED๊ฐ ์ผ์ ธ ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก 15 ๋ผ์ธ์์๋ F10์ ๋๋ฅด๋ฉด ๊ทธ์๊ฐ ๋ณด๋์ ๋ น์ LED๊ฐ ์ผ์ง๋๋ค.
๋๋ฒ๊น ์ ์ข ๋ฃ๋ ๋จ์ถํค Ctrl+Shift+D ํน์ Debug->Stp[ Debugging ๋ฉ๋ด์ ๋๋ค. ๋๋ฒ๊น ์ ํ๊ณ ๋๋ฉด ํด๋น ํ์จ์ด ์ด๋ฏธ์ง๊ฐ ํ๋์ฌ ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด๋ก๋ ๋๋ฉด์ ํ๋์ฌ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฎ์ด์ด๋ค๋ ์ ๋ ์ผ๋์ ๋ฌ์ผ ํฉ๋๋ค.
Breakpoint์ ๋ณ์๊ฐ ํ์ธ
์์ฅ์์์ ๊ฐ์ด Step ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ์์ค๋ฅผ ํ์ค์ฉ ์คํํด์ ์ดํด๋ณผ ์ ์์ต๋๋ค. ํํธ ํ์จ์ด ์์ค ์ ์ฒด ์ค ์์ ์ด ๊ด์ฌ์๋ ๋ถ๋ถ๋ง ๋ณด๊ธฐ ์ํด์๋ step ๊ธฐ๋ฅ์ผ๋ก ํ์ค์ฉ ์คํํด ๋๊ฐ๋ค๊ฐ๋ ์๊ฐ๋ญ๋น๊ฐ ์ฌํ ๊ฒ์ ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ๋ฅผ ์ํด Breakpoint ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์์ค์ ์ํ๋ ๊ณณ์ breakpoint๋ฅผ ์ค์ ํ๊ณ MCU๋ฅผ run ์ํค๋ฉด breakpoint๊ฐ ์ค์ ๋ ๊ณณ์ด ์คํ๋๊ธฐ ์ง์ ์ ์คํ์ ๋ฉ์ถฅ๋๋ค. ๊ทธ๋๋ถํฐ๋ ๋ค์ Step over, step into, step out ๋ฑ์ผ๋ก ํ์ค์ ์คํํด ๋ณผ ์ ์์ต๋๋ค.
Breakpoint๋ฅผ ์ค์ ํ๊ณ ์ถ์ ์์ค์ฝ๋ ๋ผ์ธ์ ์ปค์๋ฅผ ์์น์ํจ ํ ๋จ์ถํค F9๋ฅผ ๋๋ฅด๋ฉด ๋ถ์ ์์ด ํ์๋๋ฉด์ breakpoint๊ฐ ์ค์ ๋ฉ๋๋ค.
ex07.1_ADC_1ch ์์ ๋ฅผ ํตํด ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ๋๋ฒ๊น ๊ณผ์ ์ ์์ฐํ๊ธฐ ์ํด ์ฐ์ ์ปดํ์ผ๋ฌ ์ต์ ํ ์ต์ ์ ๋๊ณ ๋น๋ํ๋๋ก ํ๊ฒ ์ต๋๋ค. ์ต์ ํ ์ต์ ์ด ์ผ์ ธ ์์ผ๋ฉด ์ต์ ํ๋ฅผ ํตํด ์ผ๋ถ ์ฝ๋๋ ์คํ๋์ง ์๊ฑฐ๋ ์คํ ์์๊ฐ ๋ฐ๋๋ ๊ฒฝ์ฐ๋ ์์ด ์ฒ์ ์ ํ๋ ์ฌ๋์๊ฒ๋ ์ด๋ ต๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค.
๋จ์ถํค Alt+F7 ํน์ ๋ฉ๋ด์์ Project->Options๋ฅผ ์ ํํ ๋ค์ ์๋ ํ๋ฉด๊ณผ ๊ฐ์ด ์ต์ ํ ์ต์ ์ None์ผ๋ก ์ค์ ํ๊ณ Ok๋ฅผ ์ ํํฉ๋๋ค.
์ด์ Ctrl+D ๋จ์ถํค๋ฅผ ๋๋ฌ ๋๋ฒ๊น ์ ์์ํฉ๋๋ค.
main()์์ ์คํ์ ๋๊ธฐ์ค์ ๋๋ค. ์ด๋ main.c ํ์ผ์ 88๋ผ์ธ์ผ๋ก ์ปค์๋ฅผ ์ด๋์ํจ ๋ค์ ๋จ์ถํค F9๋ฅผ ๋๋ฌ breakpoint๋ฅผ ์ค์ ํฉ๋๋ค.
์์ ๊ฐ์ด ์ฝ๋๊ฐ ๋ถ์์์ผ๋ก ํ์๋ฉ๋๋ค. ์ด ์ํ์์ ๋จ์ถํค F5๋ฅผ ๋๋ฌ run ์ํต๋๋ค. ์ผ์์ ์ง ์ํ์์ run ์ํ๋ก ๋๋ฉด์ main() ํจ์์ ์์ค์ฝ๋๋ค์ด ์คํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ breakpoint๊ฐ ์คํ๋ ์ฐจ๋ก๊ฐ ๋๋ฉด ์๋์ผ๋ก ๋ค์ ์ผ์์ ์ง ์ํ๊ฐ ๋์ด ์๋์ ๊ฐ์ด ํ๋ฉด์ ํ์๋ฉ๋๋ค.
ADC_GetConversionValue() ํจ์๊ฐ ์คํ๋ ์ฐจ๋ก์ ๋๋ค. ์ด ์ํ์์ ์ฐ์ธก์ ์๋ Disassembly ์ฐฝ์ ๋ซ๊ณ ๋ฉ๋ด์์ View->Locals๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ์๋์ ๊ฐ์ด ์ง์ญ ๋ณ์์ ์ํ๋ฅผ ๋ณผ ์ ์๋ ์ฐฝ์ด ๋ํ๋ฉ๋๋ค.
์ด ํ๋ฉด์ ๋ณด๋ฉด ๋ณ์ adc_result์ ๊ฐ์ด 0์ด๋ผ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ F10์ ๋๋ฌ ํ์ค step over ํ๋ฉด ์๋์ ๊ฐ์ด ํ๋ฉด์ด ๋ฐ๋๋๋ค.
ํ์ค ์งํ๋๋ฉด์ adc_result ๋ณ์์ ๊ฐ์ด 2815๋ก ๋ฐ๋์์ต๋๋ค. ์ด ์ซ์๋ ADC ์ฑ๋ 1์ ์ธ๊ฐํ ์ ์์ ADCํด์ ์ป์ ๊ฒฐ๊ณผ์ ๋๋ค. ์คํํ๋ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ด ์ถ๋ ฅ๋ ์ ์์ต๋๋ค. ์ด์ฒ๋ผ ๋ฐฉ๊ธ step์์ ๋ณํํ ๋ณ์ ๊ฐ์ ๋ถ์์์ผ๋ก ํ์๋ฉ๋๋ค.
ํ๋ฒ ๋ step over๋ฅผ ํด์ volt๋ฅผ ๊ณ์ฐํด ๋ณด๊ฒ ์ต๋๋ค.
์์ค์ฝ๋๋ ํ์ค ๋ ์งํ๋์์ง๋ง volt ๋ณ์ ๊ฐ์ ๋ณํ์์ด ๊ณ์ ์ํ์ ๋๋ค. ์ด๋ volt ๋ณ์๋ float ํํ์ด๊ณ , ์ง๊ธ FPU๊ฐ ๋์ํ๋ ์ค์ด์ด์ ์ผ๋ฐ์ ์ธ ๋๋ฒ๊น ์ผ๋ก๋ ์ด ๊ฐ์ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ๋ฒ ๋ step overํ๋ฉด resistor ๋ณ์์ ๊ฐ์ด ๋ฐ๋๋๋ค.
์ด์ฒ๋ผ step ๊ธฐ๋ฅ๊ณผ breakpoint ๊ธฐ๋ฅ์ ์ฌ์ฉํด ์์ ์์ ๋ก ์์ ์ด ๋ณด๊ณ ์ถ์ ์ฝ๋๋ฅผ ์คํ์ํฌ ์ ์์ผ๋ฉฐ, ๋์์ ๋ณ์ ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค. ๋ณ์ ๋ฟ๋ง ์๋๋ผ ํน์ memory ์์ญ์ ๋ณด๊ฑฐ๋ ๋ ์ง์คํฐ์ ๊ฐ์ ํ์ธํ ์๋ ์์ต๋๋ค.
์์์ ์ต์ ํ ์ต์ ์ None์ผ๋ก ๋ฐ๊พธ๊ณ ๋๋ฒ๊น ์ ํ์๋๋ฐ, ๋ค์ ์๋ ์ํ๋ก ๋๋๋ฆฐ ๋ค์ ๋๋ฒ๊น ์ ํ๋ฒ ํด ๋ณด์๋ฉด ์กฐ๊ธ ๋ค๋ฅธ ์คํ ๋ชจ์ต์ ๋ณผ ์ ์์ต๋๋ค.