background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Bare metal embedded lecture-6: Downloading and debugging executable"

input logo icon
Обложка аудиозаписи
Подождите немного, мы готовим ссылки для удобного просмотра видео без рекламы и его скачивания.
console placeholder icon
Оглавление
|

Оглавление

0:00
Introduction
0:30
Debugging executable
2:17
What is OpenOCD
4:16
What is programming adaptor
5:09
Debug adaptors
6:34
StLink
7:22
Embedded debug adapter
12:43
Steps to download OpenOCD
15:31
Install telnet client
16:31
Open OCD
16:51
Open OCD path settings
19:30
Connecting to Open OCD
24:23
Verify memory location
25:13
Read memory locations
25:48
Read for words
28:28
Monitor BP
31:43
Telnet
Теги видео
|

Теги видео

arm cortex
cortex m4
arm embedded
bare metal embedded
embedded systems tutorial
stm32 tutorial
arm programming tutorial
keil programming
stm32cube
microcontroller
microcontroller programming
embedded software
stm32 discovery board
cross toolchain
build process
embedded projects
stm32
object file
makefile
openocd
gdb client
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:00
в предыдущем видео мы сгенерировали
00:00:02
окончательный исполняемый файл. Наша конечная цель —
00:00:06
загрузить и отладить этот исполняемый файл. Нам
00:00:09
нужно загрузить файл данных tlf во
00:00:12
внутреннюю флэш-память
00:00:14
микроконтроллера, и после этого мы сможем
00:00:17
запустить нашу программу на плате разработки, как показано
00:00:20
в этом видео, и в следующих видеороликах
00:00:23
давайте узнаем, как загружать и отлаживать
00:00:27
наше приложение,
00:00:30
как загружать исполняемый файл,
00:00:32
есть два важных метода: один: вам нужно
00:00:37
подключить цель к ПК, почему
00:00:42
то, что называется программированием адаптера отладки,
00:00:46
через адаптер отладки
00:00:49
также называется Институт программирования и
00:00:52
отладки. Этот адаптер Ebel также
00:00:56
называется институтом программиста и
00:00:59
отладчика. Отладчик фактически выполняет
00:01:02
преобразование протокола. Он преобразует
00:01:06
протокол хоста в собственный целевой объект для
00:01:10
вызова.
00:01:11
Например, этот адаптер отладки поддерживает
00:01:14
протокол отладки на основе swd или JTAG, который
00:01:18
мы называем целевой интерфейс, потому что
00:01:21
ваша цель понимает
00:01:26
протокол отладки, такой как swd или Jetta, а хост
00:01:31
понимает интерфейс, такой как USB или
00:01:35
последовательный порт или что-то в этом роде,
00:01:40
отладочный Eruptor выполняет преобразование этого протокола,
00:01:42
он преобразует интерфейс хоста в
00:01:45
протокол целевого интерфейса, и на
00:01:48
стороне хоста у вас есть чтобы запустить какое-либо
00:01:50
приложение, чтобы поговорить с этим
00:01:52
адаптером отладки, тем самым вы можете поговорить с
00:01:54
целью, вы можете отправлять команды
00:01:57
цели,
00:01:58
вы можете отправлять исполняемые файлы, вы можете отлаживать
00:02:01
плату, и вы можете делать различные другие
00:02:03
вещи, поэтому вам нужно запускать какое-то
00:02:07
приложение на цель, и есть
00:02:09
много приложений, одно такое приложение
00:02:12
открыто. Октябрь.
00:02:16
Давайте рассмотрим, что открыто.
00:02:19
1 октября OCD означает открытый отладчик на кристалле.
00:02:23
Его цель - обеспечить отладку
00:02:27
в системном программировании и тестирование пограничного сканирования
00:02:29
для встроенных целевых устройств. Это
00:02:32
бесплатное хост-приложение с открытым исходным кодом.
00:02:36
позволяет программировать отладку и анализировать
00:02:40
ваше приложение с помощью gdb, который является
00:02:43
отладчиком ganoub. Он поддерживает различные
00:02:46
целевые платы на основе различной
00:02:49
архитектуры процессора. Открытый OCD
00:02:51
в настоящее время поддерживает множество типов
00:02:54
адаптеров отладки, таких как отсеки для параллельных портов на базе USB
00:02:57
и другие автономные блоки, которые запускают
00:03:01
открытый OCD внутри. вы можете отлаживать
00:03:05
различные архитектуры ЦП, например, это позволяет использовать
00:03:10
Arm7 Arm9 Cortex M3, если вы хотите получить
00:03:15
полные устройства с листовыми стеблями и
00:03:18
архитектуру ЦП, поэтому вам нужно обратиться к
00:03:20
документации открытого города AA, что является
00:03:23
одной из важных вещей, которые мы
00:03:26
ищем. это флэш-программирование, мы хотим
00:03:30
запрограммировать внутреннюю флэш-память
00:03:33
микроконтроллера с помощью этого открытого
00:03:36
приложения OCD, и мы можем это сделать,
00:03:38
потому что открытое OCD поддерживает запись флэш-памяти
00:03:43
для различных устройств, например, поддерживает
00:03:46
запись флэш-памяти для северных флэш-памяти и для
00:03:50
нескольких внутренних флэш-памяти разных
00:03:52
микроконтроллеров. такие как nxpOptimal ST
00:03:57
и различные другие микроконтроллеры, поэтому
00:03:59
мы используем открытый OCD, поэтому в основном для
00:04:04
достижения двух слов нужно загрузить
00:04:07
исполняемый файл во внутреннюю флэш-память
00:04:11
микроконтроллера и отладить код
00:04:13
с помощью GDB, давайте разберемся кое-что
00:04:16
в программировании адаптеров, какова
00:04:19
роль адаптеров программирования
00:04:22
адаптеры программирования используются для получения доступа к
00:04:24
интерфейсу отладки цели с помощью
00:04:26
собственного сигнала протокола, такого как swd или
00:04:29
jtac. Хост сцены не поддерживает такой
00:04:33
интерфейс. Адаптер программирования выполняет
00:04:36
преобразование протокола, например команды
00:04:38
и сообщения, поступающие от хоста.
00:04:40
Сообщения в виде USB-пакетов будут
00:04:43
преобразованы в эквивалентные
00:04:46
сигналы интерфейса отладки, такие как SWT или JTAG,
00:04:49
и наоборот,
00:04:52
в основном адаптер отладки помогает вам
00:04:54
загружать и отлаживать код на
00:04:56
цели. Есть некоторые продвинутые
00:04:59
врачи-отладчики, которые также помогут вам захватить
00:05:02
трассировку. такие события, как оперативная
00:05:05
трассировка инструкций и информация профилирования,
00:05:09
на рынке существует множество популярных адаптеров отладки,
00:05:12
например, если вы рассматриваете
00:05:14
отладчик Tiger j-link, он поддерживает
00:05:18
несколько архитектур ЦП, может отлаживать 8:05,
00:05:21
один выбирает Cortex MRA, риск 5 и
00:05:24
различные другие архитектуры, он поддерживает
00:05:27
протоколы отладки JTAG и swd, а также
00:05:32
целевые интерфейсы с 20-контактным разъемом. Вы можете
00:05:35
получить доступ к интерфейсу отладки цели,
00:05:38
вы можете получить доступ к интерфейсу трассировки
00:05:40
цели, а также различные другие вещи, которые вы
00:05:42
можете делать с этим адаптером, а также
00:05:45
есть один адаптер от Kyle, называемый «как вы
00:05:48
прыгаете», и Yuling Pro, он также поддерживает
00:05:51
отладку на основе JTAG, лотки с инструкциями по отладке на основе SWT
00:05:56
и различные другие
00:05:59
функции, а также поставляется с
00:06:02
различными типами разъемов, такими как 10-контактный
00:06:05
разъем, 20-контактный разъем, подобный которому
00:06:09
вы можете использовать на высокой скорости трассировку данных и
00:06:11
инструкций. Вы можете передавать эти
00:06:14
трассировки инструкций и трассировку данных
00:06:17
непосредственно на ваш компьютер, когда код
00:06:19
выполняется на целевой цели, которую вы можете использовать
00:06:23
для анализа того, как ваше приложение
00:06:26
ведет себя на целевой цели, в режиме реального времени.
00:06:29
Это один из мощных адаптеров отладки.
00:06:33
после этого st-link st ling предоставляется
00:06:38
stmicroelectronics, и это
00:06:41
оскорбление для отладчика и программиста для
00:06:45
семейств микроконтроллеров SD m8 и stm32,
00:06:48
он также поддерживает JTAG и последовательный порт во время
00:06:51
отладки, и вы можете использовать его только на
00:06:56
микроконтроллерах stm32, есть несколько
00:06:59
хаков, с помощью которых вы можете использовать этот адаптер
00:07:01
на некоторых других микроконтроллерах,
00:07:05
например, вы можете преобразовать это оборудование st-link
00:07:08
в оборудование j link, прошив
00:07:11
прошивку j-link от sega, чтобы вы могли
00:07:14
это сделать, но преимущественно он используется для
00:07:18
семейств микроконтроллеров STM 8 и stm32.
00:07:21
но если вы используете
00:07:25
плату stm32f4discovery, плату nucleo или любую плату,
00:07:28
изготовленную из st, вам
00:07:31
не нужно покупать какой-либо внешний адаптер отладки,
00:07:34
потому что у нас есть встроенный адаптер отладки
00:07:37
на самой плате,
00:07:40
это адаптер отладки, который есть
00:07:43
на плате, и они назовите его st-link v2a,
00:07:47
используя это, мы можем запрограммировать
00:07:51
микроконтроллер, но этот встроенный
00:07:56
адаптер отладки поддерживает только протокол swd,
00:08:00
хост-приложение не может использовать статическую
00:08:02
сигнализацию для отладки этой платы,
00:08:05
оно поддерживает только высокую стабильность, если вы
00:08:08
используете внешний адаптер отладки, который
00:08:10
вы можете либо используйте проверку, либо SWT. Это
00:08:13
общая картина того, как ваш код
00:08:16
загружается во внутреннюю флэш-память
00:08:19
микроконтроллера. Сначала вы будете
00:08:22
использовать какое-то хост-приложение, в этом случае
00:08:24
это открытое OCD, и открытое OCD подключается к
00:08:28
адаптеру отладки через его драйвер.
00:08:32
например, если вы используете адаптер st-link,
00:08:36
вам необходимо установить отличный
00:08:39
драйвер, поэтому открытый OCD подключается через драйвер, и
00:08:42
это хост-интерфейс, открытый OCD отправляет
00:08:47
USB-пакеты,
00:08:50
и в качестве целевого интерфейса здесь вы можете
00:08:53
использовать контакты JTAG или SW. В защиту
00:08:57
предположим, что если вы используете SW d для вызова
00:09:01
программирования и отладки целевой платы, то
00:09:05
вам понадобятся только два контакта SW d clock
00:09:08
и SW d IO, то есть линия передачи данных, этот SW d
00:09:14
тактовый сигнал управляется адаптером отладки, поэтому
00:09:18
мы его называем в качестве ведущего устройства, так что
00:09:21
это SW d master,
00:09:23
это двунаправленная линия передачи данных, по которой
00:09:27
команды и ответы будут
00:09:30
приниматься хост-приложением,
00:09:34
а микроконтроллер предоставляет вам два
00:09:38
контакта здесь для подключения тактового контакта SWT
00:09:42
и вывода данных SWD, который идет от
00:09:45
адаптера отладки, если вы используете
00:09:49
стабильность, вам просто нужны два контакта на
00:09:51
прицеле микроконтроллера, поэтому он
00:09:53
довольно известен, чем JTAG, которому
00:09:57
требуется как минимум четыре контакта
00:10:00
в микроконтроллере, у вас есть
00:10:02
что-то, называемое портом отладки или
00:10:05
портом доступа к отладке DP
00:10:10
этот блок знает, как разговаривать с
00:10:13
процессором в конце дня. Ваша
00:10:15
цель — поговорить с процессором. вам
00:10:17
нужно захватить систему шины процессора,
00:10:20
чего можно достичь с помощью
00:10:24
порта доступа к отладке, используя порт доступа к отладке, к которому
00:10:27
вы можете получить доступ различные
00:10:31
интерфейсы шины процессора, такие как вы можете
00:10:34
получить доступ к нашим интерфейсам шины HB, вы можете
00:10:38
получить доступ к APB и другим вещам, которые
00:10:41
происходят с точкой доступа,
00:10:43
в процессоре есть различные точки доступа,
00:10:46
в этом случае мы хотим поговорить
00:10:50
с памятью и ядром не
00:10:55
особенно ли мы хотим поговорить о флэш-
00:10:58
памяти, поэтому вам следует
00:11:01
получить доступ к точке доступа HP, которая
00:11:04
поможет вам получить доступ к
00:11:06
межсоединению HP, к которому подключены карандаши HP,
00:11:10
например, к флэш-
00:11:13
памяти SRAM и некоторым другим лепесткам.
00:11:16
доступ к нему осуществляется через межсоединение HP, а
00:11:19
также вы можете управлять ядром через
00:11:22
точку доступа HP, управляя
00:11:25
средствами ядра, или вы можете сбросить ядро, вы можете
00:11:28
ставить точки останова, точки наблюдения и многое
00:11:31
другое,
00:11:33
поэтому с помощью точки доступа HP вы можете
00:11:36
получить доступ к флэш-памяти. Это означает, что если
00:11:39
через этот банк отправляется какой-либо двоичный файл,
00:11:44
скажем, ваше хост-приложение хочет
00:11:46
запрограммировать флэш-память, тогда оно будет отправлять
00:11:49
пакеты USB, которые будут преобразованы
00:11:52
в пакеты swd. Здесь это USB, это
00:11:55
пакеты SWT, несущие ваши данные, и
00:11:58
это будет пройти весь путь к
00:12:03
межсоединению HP, а оттуда дойти до
00:12:06
флэш-памяти, почему флэш-
00:12:08
контроллер -
00:12:09
эти пакеты доступности, которые несут
00:12:12
информацию об адресе, а также
00:12:14
данные для чтения пункта назначения, даже если вы
00:12:17
можете запрограммировать код в S-обертке,
00:12:22
так что это что происходит в фоновом режиме,
00:12:24
и именно так флэш-память будет
00:12:27
программироваться в нашем случае, похоже, мы
00:12:29
используем плату stm32f4discovery,
00:12:32
нам не нужно использовать какой-либо внешний
00:12:35
адаптер отладки, потому что у нас есть встроенный встроенный
00:12:38
адаптер отладки, в этой лекции все будет то же самое,
00:12:42
давайте разберемся с шагами
00:12:45
Загрузите код с помощью Open Oct DS. Это
00:12:48
шаги, которые вы должны выполнить в первую очередь. Мы
00:12:51
собираемся загрузить и установить открытый
00:12:53
OCD, затем мы сможем установить клиентское
00:12:57
программное обеспечение для взаимодействия с открытой программой OCD.
00:13:02
Вы можете использовать клиент 10 net или вы можете
00:13:05
использовать gdb, поэтому я покажу вам оба
00:13:09
способа для Windows: вы можете использовать
00:13:12
программное обеспечение pootie для
00:13:15
подключения Telnet к открытому OCD,
00:13:18
после этого вам нужно запустить открытый OCD
00:13:21
с файлом конфигурации платы, который я
00:13:23
вам покажу,
00:13:24
и после этого подключиться к открытому OCD
00:13:27
с помощью нашего клиента талантов или клиента GDB, затем
00:13:30
введите команды через клиент telnet или GDB,
00:13:33
чтобы открыть OCD для загрузки и отладки
00:13:35
кода. Первый шаг: давайте загрузим и
00:13:39
установим open o city,
00:13:42
просто найдите open OCD в Google и перейдите на
00:13:45
официальный сайт. веб-сайт здесь
00:13:49
здесь вы можете нажать на открытие OCD
00:13:53
и здесь вы можете перейти к неофициальным
00:13:55
двоичным пакетам
00:13:57
здесь вы можете нажать на это в этом
00:14:00
месте вы можете получить открытые двоичные файлы OCD для
00:14:04
Windows, Linux и Mac,
00:14:07
просто нажмите на это, вы перейдете на
00:14:10
git, и вот
00:14:15
этот новый MCU Eclipse с открытым OCD. Вы можете
00:14:20
просто щелкнуть здесь по ресурсам, которые вы можете
00:14:23
загрузить в соответствии с вашей операционной
00:14:25
системой, и я собираюсь загрузить эту версию
00:14:28
Win 64, так как я использую Windows,
00:14:33
загрузите ее,
00:14:36
поэтому я просто скачано здесь, теперь позвольте мне
00:14:38
извлечь это после извлечения, зайдите внутрь
00:14:43
этого, и здесь вы найдете открытое OCD, перейдите в
00:14:47
корзину. Это открытое приложение OCD, которое
00:14:51
мы должны выполнить,
00:14:54
но вы должны выполнить это приложение
00:14:56
с файлом платы, файлом, связанным с платой,
00:14:59
который вы можете найти здесь, просто вернитесь
00:15:03
и зайдите на доску сценариев, здесь вы
00:15:10
увидите файлы доски для различных целей, вам
00:15:14
нужно найти вашу целевую плату,
00:15:17
так как у меня stm32f4discovery, я бы
00:15:22
выбрал
00:15:25
файл конфигурации dart stm32f4discovery, вам нужно
00:15:27
открыть OCD с файлом платы мы завершили
00:15:31
наше первое приложение, которое устанавливает открытое
00:15:33
OCD, теперь позвольте мне установить клиент telnet,
00:15:36
если вы используете Windows, затем вы можете
00:15:39
установить Kruti, чтобы получить
00:15:42
соединение telnet, если вы используете Mac, тогда
00:15:45
это может быть невозможно, тогда в этом
00:15:48
случае вы можете использовать Связь на основе клиента gdb,
00:15:50
которую я объясню чуть
00:15:52
позже, и если вы используете Ubuntu, то есть
00:15:55
пакет Debian telnet, который
00:15:58
вы можете установить, вам просто нужно выполнить sudo
00:16:01
apt-get, установить пакет telnet,
00:16:06
давайте загрузим программное обеспечение putty, чтобы вы
00:16:09
могли загрузить отсюда
00:16:13
я бы установил установщик Windows 64-бит,
00:16:18
позвольте мне установить это программное обеспечение,
00:16:23
так что вам просто нужно нажать «Далее» и «Далее» и
00:16:26
установить, вот и все. Программное обеспечение pooty
00:16:31
установлено после этого, позвольте мне войти в мое
00:16:33
рабочее пространство, и здесь давайте запустим
00:16:36
mingw вперед и просто введите
00:16:42
здесь open OCD, вы увидите, что там написано, что open
00:16:45
OCD не найден, не так ли это
00:16:48
означает, что вам нужно выполнить некоторые отдельные настройки
00:16:51
для этого, перейдите в открытую папку загрузки OCD,
00:16:54
а здесь перейдите в bin и скопируйте эту
00:17:00
часть, и вы нужно сделать
00:17:02
настройки пути для окон, позвольте мне сделать это
00:17:06
из-за свойств здесь, расширенные
00:17:10
настройки системы, расширенные
00:17:13
переменные среды, думаю, отредактируйте новый и вставьте
00:17:19
эту часть,
00:17:22
хорошо, хорошо,
00:17:25
после этого закройте это, давайте перезапустим,
00:17:31
давайте напечатаем open OCD, чтобы теперь он обнаружил, что
00:17:37
вы можете видеть теперь давайте перейдем к нашему
00:17:39
файлу make и добавим еще один рецепт
00:17:42
для открытого OCD, позвольте мне создать цель,
00:17:47
скажем, загрузку и команду получателя CD,
00:17:52
чтобы поговорить с нашей целью, откройте OCD,
00:17:55
что вам нужно сделать, это сделать
00:17:57
аргумент - f тогда вы должны использовать
00:18:02
файл платы, где находится файл платы,
00:18:08
файл платы находится под доской сценариев, поэтому вам
00:18:13
нужно использовать
00:18:16
board / и имя файла платы TM 32f
00:18:23
для обнаружения. Я собираюсь использовать это
00:18:27
имя, которое вам нужно используйте точку C F G и
00:18:33
давайте сохраним это, это команда, давайте
00:18:38
вернемся в рабочую область и позвольте мне
00:18:41
открыть здесь командную панель mingw, позвольте мне
00:18:47
сделать очистку, давайте соберем сборку в
00:18:52
порядке, а теперь подключим вашу цель к
00:18:55
компьютеру и просто выполните загрузку здесь вы
00:19:01
можете видеть, что открытая OCD работает и
00:19:04
прослушивает соединение клиента.
00:19:08
Теперь вы сможете получить это сообщение. Теперь мы сможем общаться
00:19:11
с платой, используя команды открытого OCD
00:19:14
и те команды, которые мы должны выдавать
00:19:17
через клиентов,
00:19:20
поэтому теперь открытое приложение OCD
00:19:23
работает, этот терминал сейчас занят, я
00:19:26
не могу использовать этот терминал, позвольте мне открыть
00:19:28
другой терминал, прежде всего позвольте мне перейти
00:19:31
в мое рабочее пространство и позвольте мне открыть
00:19:33
здесь новый терминал,
00:19:36
давайте сначала узнаем, как подключиться к
00:19:38
открытому OCD, используя клиент gdb позже я
00:19:42
объясню связь через telnet,
00:19:45
просто выполните вооруженную няню ABI gdb dot exe,
00:19:49
используйте эту команду и нажмите Enter, вы
00:19:54
получите приглашение gdb здесь, и здесь вам
00:19:58
нужно выполнить одну команду для подключения
00:20:01
к открытому OCD, эта команда предназначена для
00:20:04
удаленного локального хоста двоеточие три три три
00:20:10
три это номер порта, нажмите Enter, и вы
00:20:17
можете открыть открытую консоль OCD здесь,
00:20:21
и здесь вы можете видеть, что она выдает
00:20:23
этот вывод, принимая соединение GDP по
00:20:25
TCP 3ttt,
00:20:27
теперь соединение установлено успешно из
00:20:31
этого клиентского приложения, которое является
00:20:34
клиентом GDP, вы может выдавать некоторые команды
00:20:37
после подключения к открытому OCD, всегда
00:20:40
выполняйте эту команду, сброс монитора в нем,
00:20:44
это выполнит некоторые сценарии,
00:20:47
сброс монитора здесь, сброс в этом - это
00:20:50
команда открытого OCD, и вы должны использовать
00:20:54
здесь слово монитор, потому что это ключевое слово
00:20:58
используется для различения
00:21:00
команды gdb и собственной команды открытия OCD.
00:21:03
Это имя команды. Если вы
00:21:07
выполняете специальную команду открытия OCD
00:21:09
через gdb, то перед командой всегда должно
00:21:13
предшествовать слово «монитор». Это
00:21:17
ключевое слово не требуется, если вы
00:21:19
вводите эту команду. нажав
00:21:22
Enter здесь, вы можете увидеть, что на открытой
00:21:26
консоли OCD он выдает эти выходные данные, которые
00:21:29
не могут соответствовать запрошенной скорости, это
00:21:31
нормально, поэтому не нужно беспокоиться об этом
00:21:33
выводе,
00:21:35
благослови Господь наш исполняемый файл, который является последней
00:21:38
точкой LF, команда a - это мигание справа,
00:21:42
подчеркивание, стирание пространства изображения и после
00:21:48
этого вам нужно упомянуть имя файла
00:21:50
Final Dot e LF. Если вам интересно, как
00:21:53
я получил эту команду, это очень просто:
00:21:56
зайдите в Google и найдите общие команды open или CD,
00:21:59
вы попадете в
00:22:01
руководство пользователя Open Oct, и вы можно ссылаться на
00:22:04
все эти команды, есть разные
00:22:07
команды. Я не собираюсь объяснять все
00:22:09
команды, но обязательно выполню
00:22:12
некоторые команды, давайте вернемся к GDB
00:22:15
после этого, нажмите Enter, должна
00:22:20
произойти запись, поэтому, пожалуйста, будьте терпеливы, я
00:22:23
не знаю будет ли это успешным
00:22:25
или нет,
00:22:32
это, похоже, какая-то проблема, ошибка,
00:22:35
из-за которой
00:22:37
массив не работает, это нормально, давайте
00:22:40
попробуем еще раз, поэтому проблема была в том, что я
00:22:42
не использовал монитор ключевых слов, это
00:22:45
проблема, которую вам нужно, как я сказал, каждая
00:22:48
команда должна быть предшествует монитор,
00:22:50
давайте попробуем с монитором, монитор, вспышка,
00:22:53
правое изображение, поднимите последнюю дверь, Тиле, здесь
00:23:00
записано 16 килобайт от последней точки,
00:23:04
yella, теперь код запрограммирован в
00:23:09
нашу целевую плату, после этого просто используйте
00:23:12
эту команду, сброс монитора, остановка,
00:23:15
что делает эта команда, это она перезагрузит
00:23:18
микроконтроллер, но он
00:23:19
немедленно остановит его целиком, не будет
00:23:22
выполнять сброс и немедленно остановится,
00:23:25
давайте нажмем Enter,
00:23:28
цель остановлена ​​из-за
00:23:30
запроса отладки, и вы увидите, что он выдает
00:23:34
эти выходные данные, давайте запустим программу, теперь
00:23:36
программа остановлена ​​для запустите программу,
00:23:40
вам нужно выполнить команду монитора,
00:23:43
возобновить, вы увидите, что ядро
00:23:47
работает на цели, и мы действительно
00:23:49
наблюдаем правильный шаблон светодиода Чарли,
00:23:53
если вы хотите остановить выполнение, или
00:23:56
ошибку остановленного монитора,
00:24:00
если вы хотите перезагрузить плату
00:24:03
Сброс монитора приведет к сбросу микроконтроллера,
00:24:06
и код снова начнет выполняться.
00:24:08
Если вы хотите выполнить сброс,
00:24:12
немедленно остановитесь, затем вы можете выполнить сброс
00:24:15
сердца, как этот монитор. Релл, давайте
00:24:23
перейдем в наше рабочее пространство, проверим некоторые
00:24:26
значения ячеек памяти, потому что это очень
00:24:28
важно, позвольте я открываю свой окончательный файл точечной карты
00:24:32
и давайте проверим этот файл карты на соответствие
00:24:37
содержимому ячейки памяти
00:24:40
в этом файле карты, давайте перейдем к
00:24:44
разделу данных точечные данные в разделе данных, теперь
00:24:47
давайте проверим содержимое этой
00:24:49
ячейки памяти, потому что эта ячейка памяти
00:24:51
содержит значение переменной
00:24:54
текущей задачи, давайте проверим, действительно ли эта
00:24:58
ячейка памяти содержит правильное
00:25:01
значение для текущей задачи или нет. Это
00:25:05
означает, что с помощью открытого OCD мы должны прочитать
00:25:08
это место, а затем мы можем сравнить его
00:25:11
с файлом карты,
00:25:14
если мы проверим наш основной дверь видит, что
00:25:17
текущая задача на самом деле имеет значение
00:25:19
один, значение на самом деле варьируется от нуля
00:25:22
до четырех, что-то вроде этого во время
00:25:24
выполнения программы,
00:25:26
если вы хотите прочитать целевые
00:25:28
ячейки памяти, тогда вы можете использовать эту команду открытия OCD
00:25:32
MDD или md w или md h здесь MD D
00:25:38
для 64-битного двойного слова, это для
00:25:43
чтения слов, битрейт половинного слова, давайте использовать md w,
00:25:47
чтение слова, здесь вы должны указать
00:25:50
физический адрес и указать, сколько
00:25:53
слов вы хотите прочитать, давайте попробуем,
00:25:56
позвольте мне перейти к моему клиентскому монитору GDB MDW,
00:26:01
адрес 2 0 0 0 0 0 0 0,
00:26:07
давайте прочитаем по словам, это должно быть
00:26:11
значение текущей переменной задачи, это
00:26:15
значение кажется подозрительным, разве это не посмотрите на
00:26:19
это значение, это значение выглядит не очень хорошо в
00:26:22
соответствии с нашей программой? несет, я
00:26:25
имею в виду, что оно варьируется от 0 до 4 или 5, что
00:26:31
означает, что это дает мне подсказку, что вы знаете, что
00:26:34
наше копирование данных из флэш-памяти в SRAM было
00:26:39
неправильным, возникла какая-то проблема, поэтому нам
00:26:42
нужно исследовать этот угол,
00:26:45
позвольте мне перейти к стартовому файлу,
00:26:49
это было наш стартовый файл, в котором мы
00:26:53
копируем данные,
00:26:56
вот проблема, это вычитание
00:27:00
неправильно, это неправильная точка вычитания,
00:27:02
мне нужно преобразовать это
00:27:05
в значение, приведя его к типу. Извините, что
00:27:09
должно быть так, это
00:27:12
значение значение минус, а не указатель -
00:27:16
указатель, кажется, это хорошо,
00:27:21
давайте сначала перестроим код и перепрошивим его,
00:27:23
позвольте мне выйти из GDB, для этого позвольте
00:27:28
мне выполнить команду quit
00:27:31
и, возможно, вызвать или успешно построить его, чтобы
00:27:35
выдать первую
00:27:40
команду gdb, которая должна быть целью удаленный локальный
00:27:45
хост три три три три
00:27:49
следующие команды должны быть сброшены в нем
00:27:56
правильные массивы изображений, окончательный грязный Алеф, и
00:28:02
после этого сброса монитора код
00:28:10
выполняется, давайте придержим его, извините, и давайте
00:28:16
использовать монитор MDW, пересечение нуля два ноль ноль
00:28:21
ноль ноль ноль ноль ноль четыре, так что теперь вы
00:28:24
можете видеть, что он несет правильное
00:28:26
значение, давайте сохраним точки останова, чтобы сохранить
00:28:30
точку останова, вы можете использовать монитор BP и
00:28:34
указать адрес, где вы хотите сохранить
00:28:36
точку останова, давайте сохраним точку останова
00:28:39
в обработчике задачи один, скажем, я могу получить
00:28:43
адрес обработчик задачи 1 из
00:28:46
файла карты, позвольте мне просто установить обработчик задачи 1
00:28:48
здесь,
00:28:51
здесь сегодня, так что это наше платье, позвольте мне
00:28:53
скопировать эту пасту, и после этого я забыл
00:28:58
использование команды, позвольте мне открыть
00:29:02
руководство пользователя, найдите BP, вот оно с нет
00:29:05
параметров, все действуют для точки останова, это
00:29:08
точка останова и точка наблюдения,
00:29:11
адрес команд, а затем длина, здесь
00:29:13
вам, что такое длина, это
00:29:16
точка останова при выполнении кода,
00:29:18
начиная с адреса, для продольного указания
00:29:23
длины, скажем, в байтах - и
00:29:26
вы должны упомянуть будь то
00:29:28
программная или аппаратная точка
00:29:30
останова,
00:29:33
вы должны были упомянуть аппаратное обеспечение здесь,
00:29:36
давайте сделаем это аппаратное обеспечение
00:29:38
здесь, вы можете видеть, что точка останова
00:29:41
установлена, давайте нажмем возобновить,
00:29:44
извините, монитор возобновите, точка останова
00:29:50
игнорируется, на самом деле нет проблем, давайте сбросим
00:29:54
монитор, сбросим здесь, это
00:29:56
цель автоматически остановлено из-за
00:29:58
точки останова в этом месте, это
00:30:01
местоположение обработчика задачи 1,
00:30:04
прочитайте содержимое
00:30:09
переменной «не спрашивать», которая находится в
00:30:12
позиции два ноль ноль ноль ноль
00:30:14
ноль ноль
00:30:15
давайте прочитаем четыре слова и вот теперь это
00:30:18
значение это правильно, потому что
00:30:21
выполнение остановлено на обработчике первой задачи,
00:30:24
что означает, что первая задача выполнялась, поэтому
00:30:27
текущая задача является
00:30:30
правильной, если вы хотите
00:30:32
снова удалить точку останова, вы можете использовать наш адрес BP,
00:30:38
давайте сделаем это, или BP дайте этот адрес,
00:30:46
извините
00:30:49
rbp по этому адресу VP он может выполнить
00:30:56
монитор BP, точка останова не установлена ​​при установке
00:31:00
точки останова на задаче для обработчика, скажем, по
00:31:02
этому адресу или задаче для обработчика,
00:31:05
скажем, по этому адресу
00:31:07
монитор подает звуковой сигнал по этому адресу оборудованию
00:31:15
после сброса монитора, теперь он остановлен в
00:31:21
этом месте мы можем отслеживать
00:31:24
пересечение нуля MDW два ноль ноль ноль ноль ноль
00:31:27
ноль четыре, и теперь вы можете видеть, что
00:31:30
текущая задача — четыре, что означает, что она
00:31:32
правильно обновляется, попробуйте это и
00:31:37
попробуйте выполнить больше команд,
00:31:39
обратившись к открытой документации OCD,
00:31:41
если вы хотите подключиться через telnet,
00:31:44
вы можете сделать это с помощью команды telnet.
00:31:47
Я покажу вам для Windows, для Ubuntu
00:31:50
вы можете напрямую выполнить появившийся канал,
00:31:52
установив telnet с помощью sudo apt-get
00:31:55
install, если это Windows, давайте
00:32:00
перед этим откроем программное обеспечение putty. я закрою
00:32:03
это
00:32:05
здесь, имя хоста, дайте localhost
00:32:09
и бедные эти четыре, четыре, четыре, десять
00:32:13
сетевых и дайте имя для вашего сеанса, позвольте
00:32:17
мне назвать его открытым OCD, сохраните затем нажмите «
00:32:22
Открыть OCD», откройте
00:32:24
здесь, вы можете увидеть, что он подключается к
00:32:26
открытому OCD, вы можете видеть это принимаю
00:32:30
соединение telnet, это клиент, а
00:32:33
это сервер,
00:32:36
теперь вы должны выполнить ту же команду,
00:32:38
но вам не следует использовать ключевое слово «
00:32:40
монитор», позвольте мне просто выполнить сброс,
00:32:43
вот он, и та же команда, скажем,
00:32:46
прошить правильное изображение, стереть последнюю точку, желтую
00:32:51
вроде эти
00:32:52
команды такие же, но не используйте
00:32:55
монитор ключевых слов
00:32:57
с этим примечанием. Я хотел бы закончить эту
00:32:59
лекцию, чтобы мы могли успешно скомпилировать и
00:33:02
загрузить исполняемый файл
00:33:04
на целевую плату в следующей
00:33:07
лекции, которую мы рассмотрим, используя
00:33:11
стандартную библиотеку C. скажем, если вы используете
00:33:14
printf scanf или любые математические
00:33:17
функции, или если вы используете любую стандартную
00:33:19
библиотеку, функции, связанные со строками, тогда
00:33:22
вам необходимо включить стандартную библиотеку,
00:33:25
поэтому обсудим это в следующей
00:33:28
лекции, а также протестируем
00:33:31
функцию стандартной библиотеки printf с помощью наш код
00:33:33
и, используя функцию открытого полухостинга OCD,
00:33:37
увидимся на следующей
00:33:39
лекции.

Описание:

Enroll for the full course : https://www.udemy.com/course/embedded-system-programming-on-arm-cortex-m3m4/?couponCode=FASTWEBAPR20 In this lecture you will learn downloading and debugging executable using OpenOCD and GDB client Please share and subscribe to our channel Past lectures: Bare metal embedded lecture-1: Build process https://www.youtube.com/watch?v=qWqlkCLmZoE Bare metal embedded lecture-2: Makefile and analyzing relocatable obj file https://www.youtube.com/watch?v=Bsq6P1B8JqI Bare metal embedded lecture-3: Writing MCU startup file from scratch https://www.youtube.com/watch?v=2Hm8eEHsgls Bare metal embedded lecture-4: Writing linker scripts and section placement https://www.youtube.com/watch?v=B7oKdUvRhQQ Bare metal embedded lecture-5: Linking and analyzing memory map file https://www.youtube.com/watch?v=5aafG5mjZ_Y =============================================================================== Want to learn Rust programming language? Check out our brand-new course https://courses.fastbitembedded.com/courses/rust Coupon: NEWLAUNCHOFFER Rust playlist https://www.youtube.com/playlist?list=PLERTijJOmYrBwNsm42SjcdTBU9dEyYfzh

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Bare metal embedded lecture-6: Downloading and debugging executable"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Bare metal embedded lecture-6: Downloading and debugging executable" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Bare metal embedded lecture-6: Downloading and debugging executable"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Bare metal embedded lecture-6: Downloading and debugging executable" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Bare metal embedded lecture-6: Downloading and debugging executable"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Bare metal embedded lecture-6: Downloading and debugging executable"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.