USB λλ²κ±°λ₯Ό μ²μ λΆλ¦¬ν λ€μ GDBλ₯Ό ν΅ν΄ λͺ λ Ήμ μ€ννλ €κ³ νλ©΄ st-utilμμ λ€μ μ€λ₯λ₯Ό λ§€μ° λΉ λ₯΄κ² νμν©λλ€.
core status: unknown
[!] send_recv send request failed: LIBUSB_ERROR_NO_DEVICE
[!] send_recv STLINK_DEBUG_GETSTATUS
core status: unknown
[!] send_recv send request failed: LIBUSB_ERROR_NO_DEVICE
[!] send_recv STLINK_DEBUG_GETSTATUS
core status: unknown
[!] send_recv send request failed: LIBUSB_ERROR_NO_DEVICE
[!] send_recv STLINK_DEBUG_GETSTATUS
core status: unknown
[!] send_recv send request failed: LIBUSB_ERROR_NO_DEVICE
[!] send_recv STLINK_DEBUG_GETSTATUS
core status: unknown
2019-03-17T14:26:42 ERROR src/flash_loader.c: flash loader run error
2019-03-17T14:26:42 ERROR src/common.c: stlink_flash_loader_run(0x8000000) failed! == -1
λ°λΌμ CPUλ₯Ό κ±°μ 100% μ μ ν©λλ€. μ΄λ‘ μΈν΄ μ¬κ°ν μκ° λλΉ(κ°μ λ¨Έμ λ€μ μμ λ±)κ° λ°μν©λλ€.
μ€λ₯ λ©μμ§μ μ’
λ₯λ λ§€μ° μ μμ
λλ€. κ·Έλ¬λ, stutil
λ΄κ° λ€μ μμνμ¬ λ¬Έμ μ λλ¨Έμ§ λΆλΆμ μ²λ¦¬ ν μ μλλ‘μ΄ μ€λ₯κ° μ¦μ μ’
λ£νλ€ stutil
νκ±°λ λ€λ₯Έ μ‘°μΉλ₯Ό 볡μ©.
stlink
λ μ΄ μμ μμ μ’
λ£λμ΄μΌ νλ€κ³ μκ°ν©λλ€. https://github.com/texane/stlink/blob/df3c2b02867db03fb82f6faaad71300398965e85/src/usb.c#L54
stlink
μ΄ μμ μμ μ’ λ£λμ΄μΌ νλ€κ³ μκ°ν©λλ€.https://github.com/texane/stlink/blob/df3c2b02867db03fb82f6faaad71300398965e85/src/usb.c#L54
μ, λΉμ μ΄ μ³λ€κ³ μκ°ν©λλ€. libusbμ λν νΈμΆμ΄ μ μ νμ§ νμΈν΄μΌ ν©λλ€. μνλ κ²½μ° ν¨μΉλ₯Ό μ μ©νκ³ PRμ λ³΄λΌ μ μμ΅λλ€. λν usb.c νμΌμμ libusbμ λν λ€λ₯Έ νΈμΆμ μνν΄μΌ ν©λλ€. μ κ³ ν΄ μ£Όμ μ κ°μ¬ν©λλ€!
μνλ κ²½μ° ν¨μΉλ₯Ό μ μ©νκ³ PRμ λ³΄λΌ μ μμ΅λλ€.
νκ³ μΆμ΅λλ€. κ·Έλ¬λ νλ‘μ νΈ κ΅¬μ‘°λ₯Ό μ΄ν΄νκ³ μλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. μ¬κΈ°μλ μΌλ° exit(1)
μ΄λ©΄ μΆ©λΆν©λλ€.
λν usb.c νμΌμμ libusbμ λν λ€λ₯Έ νΈμΆμ μνν΄μΌ ν©λλ€.
λλ μ΄κ²μ μ μ΄ν΄νμ§ λͺ»ν μλ μλ€. " send_recv
-1
λ°νν λλ§λ€ μμ© νλ‘κ·Έλ¨μ΄ μ’
λ£λλλ‘ ν©λκΉ?"λ₯Ό μλ―Έν©λκΉ?
λλ PRμ μ½λ©νΈλ₯Ό λ¬μμ΅λλ€. libusbλ₯Ό νΈμΆν λ μλͺ»λ μ μλ κ³³μ΄ λ λ§μ΅λλ€.
νλ‘μ νΈλ λ€μκ³Ό κ°μ λ°©μμΌλ‘ ꡬμ±λ©λλ€.
μ΄κ²μ #888κ³Ό #445μ κ΄λ ¨μ΄ μμ μ μλ€κ³ μκ°ν©λλ€.
@ceremcem κ³Ό @rewolff : μ΄κ²μ ν¨κ» λ
Όμνλ μμ΄λμ΄λ μ΄λ»μ΅λκΉ?
@chenguokai : μ¬κΈ°μμ μ§ννλ λ°©λ²μ λν μμ΄λμ΄κ° μμ΅λκΉ?
μ΄ κ²½μ°λ₯Ό μ¬νν μ μμ΅λλ€.
λ΄ macOS μ»΄ν¨ν°μμ μ μ°¨λ₯Ό λ°λμ΅λλ€. μ€λ₯ λ©μμ§κ° λνλμ§λ§ λ°λ 루νλ₯Ό μ
λ ₯ν νμ μ΄ μμ΅λλ€.
νΈμ§: main
κΈ°λ₯μ μ€λ¨μ μ μ€μ νκ³ st-linkλ₯Ό λΆλ¦¬ν ν n
λͺ
λ Ήμ μ€ν
ν¨ν· μ‘μμ μ 무μ νμΌλ‘ μ¬μλνμ§ μκ³ νλ‘κ·Έλ¨μ μ’ λ£ν΄μΌ νλ ν κ°μ§ λ¬Έμ κ° μμ΅λλ€.
μ΄ ν¨μ νΈμΆμ while(1) 루νλ₯Ό μ’ λ£νλ λ° μ μ ν κ°μ λ°ννμ§ μμ΅λλ€. λ¬Έμ λ ν¨μ λλ while(1) λ©μ»€λμ¦ λ΄λΆμ μμ μ μμ΅λλ€.
lldb
μ€λ₯ μ²λ¦¬ κ³Όμ μ νμΈν ν μ€λ₯ μ½λλ₯Ό μμ λμ κ²μ
λλ€.
_stlink_usb_step
μμ libusb νΈμΆ μ€ν¨λ‘ μΈν΄ μ²μμ λ°μν μ€λ₯κ° λ°μνλ©΄ 0μ΄ μλ λ°ν κ°(μ΄ κ²½μ° -1)μ λ°νν©λλ€. κ·Έλ¬λ μ΄ λ°ν κ°μ gdb-serverμ recv-handle-send 루νμ μν΄ μ²λ¦¬λμ§ μμ΅λλ€.
λ κ°μ§ κ°λ₯ν κ±°λ μ λ΅μ μ μν©λλ€.
κ³΅ν΅ λΆλΆ: μ€μμΉ μΌμ΄μ€μμ stlink_step
μ λ°ν κ°μ νμΈνμμμ€.
λΆμ:
μ΅μ
1μ ν΅μ μ€λ₯ νμ μ΄λ€ μΌμ΄ μΌμ΄λ μ§ μμΈ‘ν μ μκΈ° λλ¬Έμ νμ©λ©λλ€. λ¨μ μ st-utilμ΄ μΌλΆ λΆμμ ν USB ν¬νΈ λλ μ΄μ μ μ¬ν ν¬νΈμμ λ μμ£Ό μ€ν¨ν μ μλ€λ κ²μ
λλ€.
μ΅μ
2λ λΆμμ ν μ₯μΉμ λ λ€λ₯Έ κΈ°νλ₯Ό μ 곡νμ§λ§ ν¨ν· 볡μ λ₯Ό μΌμΌν¬ μ μμ΄ λλ²κΉ
μ μ½κ° λ μμΈ‘ν μ μκ² λ§λλλ€.
μμΈν λΆμμ μν΄ Thx. μ λ μ¬κΈ°μμ μ΅μ 1μ μ νΈν©λλ€. μ¬λλ€μ΄ νΉμ λ‘컬 νλμ¨μ΄ λΆμμ κ³Ό κ΄λ ¨λ λ¬Έμ μ μ§λ©΄νλ©΄ μ΄μ¨λ μ°λ¦¬κ° ν μ μλ μΌμ μμΌλ©° stlink λκ΅¬κ° κ³ λ €ν΄μΌ ν μ¬νλ μλλλ€. λλ²κΉ μ λν΄ ννμ νλ κ²μ΄ λ μ€μν΄ λ³΄μ λλ€. μ΄κ²μ λ°λ‘ κ³ μΉ μ μμ΅λκΉ?
ν¨ν·μ μ λλ‘ λ³΄λ΄κΈ° μν΄ gdb λ¬Έμλ₯Ό νμΈνκ² μ΅λλ€. λ무 μ΄λ ΅μ§ μμ κ² κ°μμ.
λλλ©΄ PR μ¬λ¦¬κ² μ΅λλ€.
λλ λ§νμ§ μμμ§λ§ μ΅μ 2λ₯Ό μ ννλ €κ³ νμ΅λλ€. κ·Έλ¬λ λΉμ μ μ€λͺ νμ : λΉμ μ΄ μ³μ΅λλ€. μ€λ₯κ° μΌμμ μ΄λΌκ³ λ―Ώμ λ§ν νλΉν μ΄μ κ° μλ ν μ€λ₯λ μ¦μ μΉλͺ μ μΈ μ€λ₯λ‘ κ°μ£Όλμ΄μΌ ν©λλ€.
μ¬μ©μμκ² μλ¦¬μ§ μκ³ μ¬μλνλ©΄ κ°μμ€λ¬μ΄ λλΌμμ΄ λ°μν μ μμ΅λλ€. μ μ‘λ λΉνΈμ 1/100 λλ 1/1000(λ 벨μ κ΄κ³μμ΄)μ΄ μμλμλ€κ³ κ°μ ν©λλ€. κ·Έ κ²°κ³Ό 99%μ μκ° λμ λͺ λ Ήμ΄ "μ ν¨νμ§ μμ"μ΄ λλ κ²½μ° ν΄λΉ μν©μ μ¬μ©μλ λ¬Έμ λ₯Ό μΌμΌν€λ μλ λ°μ΄ν° μμμ λ°κΈ° μ μ νλμ¨μ΄κ° λΆμμ νλ€λ κ²½κ³ (μ¦, κ°μκΈ° μ’ λ£λλ stlink)λ₯Ό νκ· μ μΌλ‘ λ§μ΄ λ°κ² λ©λλ€. ...
"μ¬μ΄ νμΆκ΅¬"λ "exit()"μ λλ€. κ·Έλ¬λ©΄ κ°μκΈ° gdbμ λν μ°κ²°μ΄ λ«νκ³ μΆ©λΆν μ°μνκ² μ²λ¦¬λ©λλ€.
κΈ°λ³Έ κΈ°λ₯μ stm32f401 보λκ° μλ PRμμ μ μ€νλ©λλ€.
λ°λ 루νλ λ‘컬 ν
μ€νΈ μ€μ ν΄κ²°λ©λλ€. μ΄μ st-utilμ΄ μ’
λ£λ©λλ€. gdbλ μ€ν¨ μλ΅μ μμ νκ³ μ°κ²°μ λμ΅λλ€.