User Tag List

Показано с 1 по 10 из 31

Тема: Программирование голого железа Raspberry Pi

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #15

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,213
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,644
    Поблагодарили
    572 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Загрузчик по UART

    Прежде чем окончательно перейти к теме эмуляции, мне хочется рассказать про ещё один метод отладки программ прямо на железе.

    Первые bare metal программы начали появляться практически сразу после выхода Raspberry Pi. Понятное дело, что про эмуляцию на тот момент речи не шло, так как платформа только-только вышла. И поэтому энтузиасты вслепую писали свой код, далее записывали скомпилированное ядро на SD-карту и проверяли его работоспособность непосредственно на железе.

    Вот так выглядела типичная проверка кода без какого-либо инструментария:

    1. Выключаем Raspberry Pi
    2. Извлекаем из неё SD-карту
    3. Вставляем SD-карту в кард-ридер
    4. Подключаем кард-ридер к компьютеру
    5. Монтируем карту и ждём
    6. Копируем бинарный файл на SD-карту
    7. Синхронизируемся и ждём
    8. Размонтируем карту
    9. Вставляем SD-карту в Raspberry Pi
    10. Включаем Raspberry Pi
    11. Начинаем всё сначала

    Очень долго и муторно. А ведь именно так и отлаживал свои программы упомянутый мной выше Питер Лемон. Но, к счастью, энтузиаст David Welch (dwelch67) придумал и воплотил метод, который существенно облегчил жизнь bare metal программистам. Суть метода заключается в том, что на SD-карту один раз записывается загрузчик, а сама Raspberry Pi подключается к компьютеру посредством USB-TTL адаптера:




    Подключение осуществляется всего тремя проводами к разъёму GPIO:

    • GPIO6 - GND
    • GPIO8 - RXD
    • GPIO10 - TXD



    Единственная задача загрузчика - загрузка файла по UART в ОЗУ и передача ему управления. Это мне напомнило загрузку компьютер Вектор-06Ц, только там использовался не UART, а магнитофонный порт Сам загрузчик располагается по адресу 0x200000, то есть у вас есть 0x200000 байт (2 Мб) под собственную программу.

    Таким образом, с помощью этого загрузчика всё сводится к следующим действиям:

    1. Выключаем Raspberry Pi
    2. Включаем Raspberry Pi
    3. На компьютере набираем команду передачи файла.

    Но всё можно ещё более упростить, если распаять кнопку RESET, пины под которую есть на всех моделях Raspberry Pi:



    Так вот если эту кнопку распаять, то первые два пункта сводятся просто к нажатию на RESET.

    Думаю, что такой метод отладки не потерял своей актуальности и сегодня, когда QEMU более-менее сносно научился эмулировать Raspberry Pi.

    Ну и в заключении приведу ссылку на репозиторий с исходниками и скомпилированным загрузчиком (есть несколько его версий), о котором шла речь в этом сообщении: https://github.com/dwelch67/raspberrypi
    Последний раз редактировалось CityAceE; 02.09.2023 в 20:29.
    С уважением, Станислав.

    Эти 6 пользователя(ей) поблагодарили CityAceE за это полезное сообщение:

    ALS(03.09.2023), creator(03.09.2023), Kakos_nonos(02.09.2023), Oleg N. Cher(03.09.2023), Outcast(07.03.2024), parallelno(06.03.2024)

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Эмуляторы ZX Spectrum для Raspberry Pi
    от CityAceE в разделе Эмуляторы
    Ответов: 33
    Последнее: 03.09.2024, 05:57
  2. Raspberry Pi 400 - альтернатива ZX Spectrum Next?
    от CityAceE в разделе Зарубежные компьютеры
    Ответов: 26
    Последнее: 03.11.2020, 23:48

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •