Опубликован: 24.11.2024 | Доступ: свободный | Студентов: 2 / 0 | Длительность: 05:47:00
Лекция 2:

Платформа

< Лекция 1 || Лекция 2: 12345 || Лекция 3 >

Как вы можете видеть, плата отправляет некоторые сообщения при загрузке и печатает наше сообщение hello world.

Вы также можете использовать эмулятор терминала, входящий в состав Freedom Studio. Он расположен в правом нижнем углу в просеивающей перспективе. Это вкладка под названием Терминал.

Прежде чем попробовать это, убедитесь, что вы не используете последовательный порт в другом месте (закройте PuTTY, если вы им пользовались). Нажмите на кнопку со значком монитора, чтобы настроить его.

Настройка эмулятора терминала в Freedom Studio

Рис. 1.24. Настройка эмулятора терминала в Freedom Studio

Вот выходные данные платы в терминале Freedom Studio после нажатия кнопки:

Эмулятор терминала Freedom Studio, показывающий выходные сообщения платы

Рис. 1.25. Эмулятор терминала Freedom Studio, показывающий выходные сообщения платы
Hello world Демо (Видео)

[Эдуардо Корпеньо] Итак, давайте посмотрим, как мы можем загружать наши приложения на плату, используя фиктивный USB-накопитель. Итак, здесь у нас есть hello.hex. Обратите внимание, что плата Red-V сообщила Windows о себе как о USB-накопителе под названием HiFive. Теперь позвольте мне перетащить hello.hex файл на диск. И пока Windows думает, что копирует этот файл на USB-накопитель, Red-V Thing Plus копирует только что созданную нами прошивку во флэш-память QSPI. Теперь позвольте мне настроить терминал в Freedom Studio и теперь я нажму кнопку сброса на плате. И вот оно. Это сообщение о загрузке. И внизу у нас есть наша строка.

Привет всем! Привет от процессора RISC-V! Позвольте мне снова нажать кнопку сброса. И вот еще одно послание. Теперь обратите внимание, что это необычное приложение для встроенной системы, потому что оно завершает основную функцию. Это не обычный случай для встроенного приложения, потому что предполагается, что все эти приложения имеют бесконечный цикл внутри функции main. Итак, если вам это интересно, вы можете запустить отладчик и выполнять пошагово, включая момент, когда выполнение завершает основную функцию. Вы увидите, что в конечном итоге это приводит к бесконечному циклу на языке ассемблера.

Отладка

Теперь перейдем к варианту B: вы также можете отлаживать свой код, используя интерфейс J-Link и хорошо известный отладчик GDB в качестве серверной части. Внешний интерфейс - это отладчик Eclipse.

Это самый простой вариант быстрого размещения вашего приложения на плате, которым вы, вероятно, будете пользоваться чаще всего.

Поскольку наша программа имеет только вызов функции printf, отладка была бы не такой заметной. По этой причине давайте изменим код:

Модифицированный код для отладки

Рис. 1.26. Модифицированный код для отладки

Теперь мы ожидаем увидеть 3 целых числа без знака с двумя непосредственными присвоениями и дополнением. Обратите внимание, что строки include и printf в исходном коде теперь закомментированы.

Перед началом процесса отладки убедитесь, что плата подключена к порту USB.

Предупреждение: Возможно, вам придется повторить эту процедуру позже, поэтому будьте внимательны!

Поскольку мы не запускали процесс отладки при создании проекта, кнопка Debug не будет работать. Сначала нам нужно указать конфигурацию отладки. Это просто: это та конфигурация, которую мы создали несколько шагов назад. Просто выберите его, нажав на стрелку раскрывающегося списка кнопки Debug, а затем Отладочные конфигурации ...:

Кнопка отладки

Рис. 1.27. Кнопка отладки

Вы найдете нужную конфигурацию в разделе "Debug J-LinkSiFive GDB SEGGER". Она называется как ваш проект (HeyThere). Просто нажмите на Debug:

Диалоговое окно конфигурации отладки Freedom Studio

Рис. 1.28. Диалоговое окно конфигурации отладки Freedom Studio

В следующий раз, когда вы захотите выполнить отладку, вы можете просто нажать кнопку Debug на панели инструментов, которая будет использовать последнюю конфигурацию. Здесь мы можем увидеть всплывающую подсказку, подтверждающую это:

Кнопка Отладки со всплывающей подсказкой, указывающей, что будет использоваться конфигурация HeyThere

Рис. 1.29. Кнопка Отладки со всплывающей подсказкой, указывающей, что будет использоваться конфигурация HeyThere

Это то, что было отображено после запуска отладчика:

Перспектива SiFive от Freedom Studio, показывающая сеанс отладки

Рис. 1.30. Перспектива SiFive от Freedom Studio, показывающая сеанс отладки
Выполнение вашего кода в отладчике

Перспектива SiFive содержит все, что вам нужно для отладки вашего кода. Еще раз, это рекомендуемый подход ко всему в этом курсе.

Во-первых, у нас есть кнопки выполнения кода:

Возобновление, Приостановка, Завершение, Разъединение, Переход В режим, Перешагивание, Возврат к шагу, Пошаговый режим выполнения инструкций

Рис. 1.31. Возобновление, Приостановка, Завершение, Разъединение, Переход В режим, Перешагивание, Возврат к шагу, Пошаговый режим выполнения инструкций

В окне Источник вы можете увидеть следующую строку кода для выполнения, выделенную зеленым цветом и отмеченную крошечной синей стрелкой в желобе слева:

Исходный код C во время выполнения

Рис. 1.32. Исходный код C во время выполнения

В любой момент времени вы можете переключить точки остановок, чтобы приостановить выполнение при достижении строки кода. Чтобы переключить точку остановки в строке кода, дважды щелкните по номеру строки в желобе, вертикальной черте слева от кода.

Обратите внимание, что не все строки помечены синим цветом в желобе. Эти синие метки указывают на строки кода, которые попали в машинный код. Некоторые строки исходного кода C оптимизированы компилятором и, следовательно, не имеют места для выполнения.

Если вы хотите выполнять пошагово код на ассемблере, показанный в окне дизассемблирования, вы можете сделать это, переключив Режим пошагового выполнения инструкций справа от кнопок выполнения кода. Когда этот режим включен, кнопки выполнения шагов будут работать с уровнем детализации инструкции по сборке:

Дизассемблированный код во время выполнения

Рис. 1.33. Дизассемблированный код во время выполнения
< Лекция 1 || Лекция 2: 12345 || Лекция 3 >