Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/111: Рейтинг темы: голосов - 111, средняя оценка - 4.86
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 код для мигания из какого-то примера
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    int i, j;
unsykned long LED_PORT  =  2;
unsykned long LED_PINS  =  ((uint32_t)1<<0);
 
/* Enable GPIO Clock */
CLKPWR_ConfigPPWR(CLKPWR_PCONP_PCGPIO, ENABLE);
/* LEDs on PORT2.2 & PORT2.4 defined as Output  */
GPIO_SetDir(LED_PORT, LED_PINS, 1);
 
while(1) {
/* Delay some time */
for(i=500; i>0; i--)
for(j=10000; j>0; j--) { }
/* Output low level  */
GPIO_ClearValue(LED_PORT, LED_PINS);
/* Delay some time */
for(i=500; i>0; i--)
for(j=10000; j>0; j--) { }
/* Output high level */
GPIO_SetValue(LED_PORT, LED_PINS);
}
повозился, в итоге собрал, залил полученный bin - не мигает.

Ну, собственно, в голове была мысль, что для бутлоадера надо как-то иначе собирать, полез читать дальше - выяснил, что надо в свойствах проекта выставить 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
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.03.2013, 21:07
Ответы с готовыми решениями:

Не могу разобраться с DFU-bootloader в STM32. Плата видна на USB шине, но dfu-util ее не видит
Привет, народ. Пытаюсь разобраться как прошивать плату STM32F103C8T6 (Blue Pill) по miniUSB-кабелю. Свои изыскания я записываю...

Помогите новичку разобраться с опросом кнопок
Динный код не работает на железе и в протеусе. В симуляторе AVR Studyo работает отлично. Суть: В бесконечном цикле идёт слежение за...

Извращение с USB или помогите новичку.
Вот взбрела мне в голову следующая идея: Соединить два компьютера по USB, с одного компьютера слать данные(биты), а другой должен их...

5
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
Цитата Сообщение от oomomstir
Спасибо камраду Driomyr, поделившемуся своим примером для этой платки - удалось завести. И впаянный диод теперь мигает, и то, что я подсоединял для проверки.
Судя по всему, проблема была в инициализации - буду теперь сравнивать, чем же она отличается в его примере (ну, кроме использования Keil).
Добрый день.
Прошу прощения, что поднимаю старую тему, т.к. писать л.с. пока не дают :(

Собственно у меня аналогичная проблема: пытаюсь замигать диодом на этой платке используя штатный бутлоадер, работать с АРМ только начинаю.
Проект собираю в Eclipse + gcc_arm_4.9_2015q1.
Собирается, воспринимается загрузчиком, но не работает.
Если не сложно поделитесь, пожалуйста, своим примером для этой платки, хотя бы в плане инициализации.
Заранее благодарен.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2015, 15:19
Помогаю со студенческими работами здесь

Помогите разобраться новичку!!
Всем здрасте!) Мы только начали изучать среду Borland C++ Builder, поэтому многих вещей я не понимаю. Нужную литературу как ни старалась...

Помогите новичку разобраться с С++
Доброго всем времени суток! Пытаюсь изучать С++ и у меня такие вопросы(накопились из разных тем): 1.Когда надо в конце типу float...

Помогите новичку разобраться.
Решил изучать php с Видео-курса. но столкнулся с вопросами. По уроку: У нас есть post_max_size и равен он 8М. Но, мы же не...

Помогите новичку разобраться с java.
Нужно создать интернет библиотеку. Проект должен иметь 2 класса: библиотека и книга. Книга должна иметь : Title: String;...

Помогите новичку в C++ разобраться с литературой
Блин народ помогите мне пожалуйста. Я сейчас 1 курс и поступил на программную инженерию до этого не изучал никаких языков, для меня это что...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
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-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru