|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
||||||
LPC1768 + USB bootloader - помогите новичку разобраться22.03.2013, 21:07. Показов 21754. Ответов 5
Метки нет (Все метки)
Вводные: купил простейшую китайскую плату на LPC1768 (благо, 23 бакса всё удовольствие). Начал разбираться.
Когда включаю плату в USB при нажатой кнопке KEY1 (P0.3 к земле) - попадаю в boottooder, вижу с PC диск с файлом firmware.bin. Первым делом, разумеется, захотел помигать светодиодом - благо, есть один, подключен между P2.0 и +3.3V. Для начала поставил CooCox, создал проект для нужного проца, воткнул в main код для мигания из какого-то примера
Ну, собственно, в голове была мысль, что для бутлоадера надо как-то иначе собирать, полез читать дальше - выяснил, что надо в свойствах проекта выставить IROM1 с 0x0002000 и IROM1 с 0x10000040. Выставил, собрал, залил - не мигает. И вообще boottooder этот bin не воспринял - при включении сразу переходит в режим USB Mass Storage. В общем, идеально было бы, чтобы кто-нибудь угостил пустым проектом с настройками под бутлоадер (как я понимаю, бутлоадер штатно заливается в проц ещё на заводе) - дальше уже разберусь потихоньку, благо, в AppNotes много умного написано =). Дальше пытался воспользоваться LPCXpresso 5 (пока безуспешно, но чуть лучше - в USB Mass Storage не выпадаем) и сейчас ставлю Keil 4 (вроде пример в AN10866 под него) - но предпочёл бы CooCox или даже "голый" gcc toolchain - сборка из консоли меня пока устроит, она прозрачнее - а мне важнее разобраться, чем удобно редактировать код. P.S. Опыта программирования ARM нету, да и вообще с микроконтроллерами в последний раз имел дело лет 10 назад (AVR - писал на ассемблере, моторола какая-то - там на си, но просто делал свои дополнения в готовый проект... отладчиками не пользовался, нужно было вывести какую-то отладочную информацию - выводил прямо на LCD). Но вообще программерского опыта более чем хватает =) P.P.S. Ответ "не выпендривайся, купи JTAG" принимается, но предпочёл бы разобраться с тем, что есть - а то JTAG ещё месяц ждать (или покупать в 2-3 раза дороже).
0
|
||||||
| 22.03.2013, 21:07 | |
|
Ответы с готовыми решениями:
5
Не могу разобраться с DFU-bootloader в STM32. Плата видна на USB шине, но dfu-util ее не видит Помогите новичку разобраться с опросом кнопок Извращение с USB или помогите новичку. |
|
0 / 0 / 0
Регистрация: 01.02.2011
Сообщений: 219
|
|
| 23.03.2013, 14:31 | |
|
Особой сборки проекта не надо.
Рекомендую проверить bin-файл в хекс редакторе. Бывает что они содержат в начале длину/начальный адрес/контрольную сумму - такой вам не пойдет, надо обрезать эти данные.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 26.03.2013, 13:48 | |
|
Спасибо. Как раз в изрядной степени по вашим статьям и пытаюсь разобраться, кстати :-)
А с чего должен начинаться bin? С таблицы векторов прерываний, причём первый DWORD - начальный SP и должен указывать куда-то между 0x10000000 и 0x10008000, а дальше уже собственно указатели на обработчики, и они уже должны быть в адреса выше 0x00002000? Т.е., грубо говоря, правильный bin - это xx xx 00 10 ¦ xx 2x 00 00 ¦ xx 2x 00 00 ¦ xx 2x 00 00 и так далее? Причём адреса указателей ISR, скорее всего, будут нечётными? И как это - "никакой особенной сборки"? Разве USB boottooder не занимает область 0x0-0x1FFF, и не надо указывать, что собираем бинарник для загрузки с 0x2000? Или вы имели в виду, что это - единственная настройка, отличающаяся от дефолтных? (К сожалению, пока никак не добраться до платы, курю мануалы без возможности поэкспериментировать... Так что прошу прощения, если задаю совсем глупые вопросы)
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 29.03.2013, 03:27 | |
|
Разобрался, почему бинарник, собранный LPCXpresso, распознавался бутлоадером, а собранный CooCox - нет. Дело всего лишь в контрольной сумме. lpcrc.ixi - и бинарник от CooCox тоже распознаётся - но толку ноль.
Вроде всё выглядит правильно (и дизассемблированный код смотрел), но не мигает. Пошёл на крайние меры - перешёл на ассемблер, чтобы "отсечь всё лишнее". Точнее, нашёл проект мигалки под LPC1768 на асме - более того, там нашлась даже версия конкретно под мою плату - правда, автор её прошивал через JTAG с нулевого адреса, пришлось чуть модифицировать. https://github.com/oomomstir/mbed_sampl ... nker01/rom - может, сообразите, что может быть не так? Там же лежит схема платы в pdf - диод и правда припаян между P2.0 (проверял по разводке) и +3.3V, только токозадающий резистор 1кОм, диод живой... Что ещё может быть? Может быть, что бутлоадер оставляет включёнными какие-то прерывания (плата запитана от USB) и в результате попадаем в "обработчик" в виде бесконечного цикла? А то уже склоняюсь к мысли, что придётся заказать JTAG и отложить все эксперименты на месяц-другой, пока родная почта его довезёт :-((( - и тогда уж просто посмотреть, как программа выполняется... Кстати, а клон Ottira USB Btoster нельзя задействовать для ARM? А то он уже почти доехал, на следующей неделе должен попасть в руки.
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 30.03.2013, 11:38 | |
|
Спасибо камраду Driomyr, поделившемуся своим примером для этой платки - удалось завести. И впаянный диод теперь мигает, и то, что я подсоединял для проверки.
Судя по всему, проблема была в инициализации - буду теперь сравнивать, чем же она отличается в его примере (ну, кроме использования Keil).
0
|
|
|
ovs
|
||
| 06.06.2015, 15:19 | ||
Прошу прощения, что поднимаю старую тему, т.к. писать л.с. пока не дают :( Собственно у меня аналогичная проблема: пытаюсь замигать диодом на этой платке используя штатный бутлоадер, работать с АРМ только начинаю. Проект собираю в Eclipse + gcc_arm_4.9_2015q1. Собирается, воспринимается загрузчиком, но не работает. Если не сложно поделитесь, пожалуйста, своим примером для этой платки, хотя бы в плане инициализации. Заранее благодарен. |
||
| 06.06.2015, 15:19 | |
|
Помогаю со студенческими работами здесь
6
Помогите новичку разобраться с С++ Помогите новичку разобраться. Помогите новичку разобраться с java. Помогите новичку в C++ разобраться с литературой Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|