Удаленная отладка stm32f429 buildroot

там

Я только что научился использовать buildroot и выполнил одно из руководств по прошивке собранных образов ядра Linux, U-Boot и т. Д. На «бигльскую кость». Все хорошо и хорошо. Поэтому я применил buildroot на stm32f429-disc1 и записал образы на плату. В busybox есть ошибка, и я хочу ее отладить. Вопрос в том, как мне изменить приведенный ниже скрипт openocd, чтобы я мог отлаживать процесс загрузки, предположительно с открытым gdb (сервером) в другом терминале?


flash:
    cd $(dir_buildroot)/output/build/host-openocd-0.10.0/tcl && ../../../host/usr/bin/openocd \
    -f board/stm32f429discovery.cfg \
    -c "init" \
    -c "reset init" \
    -c "flash probe 0" \
    -c "flash info 0" \
    -c "flash write_image erase ../../../images/stm32f429i-disco.bin 0x08000000" \
    -c "flash write_image erase ../../../images/stm32f429-disco.dtb 0x08004000" \
    -c "flash write_image erase ../../../images/xipImage 0x08008000" \
    -c "reset run" -c shutdown

Я всегда использовал Atollic Truestudio под Windows для отладки плат stm32, а Atollic упрощает отладку загрузчика и т. Д. Я искал в Google много руководств, но мне кажется, что большинство из них предназначены для настройки для отладки приложений. в пользовательском пространстве. Я использую Linux в качестве хост-машины, и я считаю, что все, что мне нужно, это st-link / v2-1, openocd и gdb?

Любые комментарии приветствуются.

С уважением, Эрик


person EricLin    schedule 31.10.2018    source источник


Ответы (1)


Для отладки приложений пользовательского пространства вы будете использовать не OpenOCD, а чистую отладку программного обеспечения с использованием gdb и gdbserver. Вы можете прочитать https://bootlin.com/doc/training/buildroot/buildroot-slides.pdf, начиная со слайда 275 для получения более подробной информации.

person Thomas Petazzoni    schedule 24.11.2018
comment
Это относится и к /sbin/init? - person Parthiban; 24.11.2018
comment
Привет, Томас, спасибо за ответ. Я смотрел много ваших презентаций, и они мне очень помогли. Вопрос, который у меня здесь, в основном состоит в том, чтобы установить точку останова, скажем, в точке входа u-boot или ядра Linux. Затем я хотел бы пройтись по кодам. Таким образом, я могу лучше понять процесс загрузки, а также ядро ​​Linux, работающее во встроенных системах. Возможно ли это с помощью OpenOCD + buildroot? а может с помощью затмения? Спасибо. - person EricLin; 26.11.2018
comment
Ваш первоначальный вопрос был о Busybox, приложении для работы с пользователем. Теперь вы говорите об отладке ядра Linux или U-Boot, так что это совершенно другое дело. Для отладки U-Boot вам действительно нужен JTAG. Для ядра Linux вы можете использовать либо JTAG, либо kgdb. - person Thomas Petazzoni; 26.11.2018
comment
Да, я думал, что ошибка была в занятом ящике, но я не уверен. Да, плата STM32F429-Disc1 поставляется с JTAG, который используется в качестве отладчика. Есть ли онлайн-руководство, которое я могу посмотреть, чтобы настроить buildroot + OpenOCD, чтобы я мог отлаживать U-Boot? Я считаю, что это хороший первый шаг. Спасибо. - person EricLin; 27.11.2018
comment
Привет, Томас, не могли бы вы показать мне учебник по отладке U-Boot, созданного buildroot? Сейчас я использую beaglebone в качестве платформы. Спасибо. - person EricLin; 12.02.2019