Easyelectronics.ru

Электроника для всех
Текущее время: 26 мар 2017, 00:38

Часовой пояс: UTC + 5 часов



    • Изготовление печатных плат
    • Создание принципиальных схем и проектирование печатных плат
    • Симуляция работы на spice моделях
    • Просмотр GERBER файлов

Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: LPC1768 + USB bootloader - помогите новичку разобраться
СообщениеДобавлено: 23 мар 2013, 20:54 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 1988
Откуда: Санкт-Петербург
Вводные: купил простейшую китайскую плату на LPC1768 (благо, 23 бакса всё удовольствие). Начал разбираться.
Когда включаю плату в USB при нажатой кнопке KEY1 (P0.3 к земле) - попадаю в bootloader, вижу с PC диск с файлом firmware.bin.

Первым делом, разумеется, захотел помигать светодиодом - благо, есть один, подключен между P2.0 и +3.3V.

Для начала поставил CooCox, создал проект для нужного проца, воткнул в main код для мигания из какого-то примера
Код:
    int i, j;
    unsigned long LED_PORT  =  2;
    unsigned 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 и IRAM1 с 0x10000040. Выставил, собрал, залил - не мигает. И вообще bootloader этот 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 раза дороже).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LPC1768 + USB bootloader - помогите новичку разобраться
СообщениеДобавлено: 24 мар 2013, 14:18 
Старожил

Зарегистрирован: 29 окт 2010, 23:55
Сообщения: 328
Особой сборки проекта не надо.
Рекомендую проверить bin-файл в хекс редакторе. Бывает что они содержат в начале длину/начальный адрес/контрольную сумму - такой вам не пойдет, надо обрезать эти данные.

_________________
http://angel5a.narod.ru - LPC/STM8/anything yet?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LPC1768 + USB bootloader - помогите новичку разобраться
СообщениеДобавлено: 27 мар 2013, 13:35 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 1988
Откуда: Санкт-Петербург
Спасибо. Как раз в изрядной степени по вашим статьям и пытаюсь разобраться, кстати :-)

А с чего должен начинаться 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 bootloader не занимает область 0x0-0x1FFF, и не надо указывать, что собираем бинарник для загрузки с 0x2000? Или вы имели в виду, что это - единственная настройка, отличающаяся от дефолтных?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: LPC1768 + USB bootloader - помогите новичку разобраться
СообщениеДобавлено: 30 мар 2013, 03:14 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 1988
Откуда: Санкт-Петербург
Разобрался, почему бинарник, собранный LPCXpresso, распознавался бутлоадером, а собранный CooCox - нет. Дело всего лишь в контрольной сумме. lpcrc.exe - и бинарник от CooCox тоже распознаётся - но толку ноль.

Вроде всё выглядит правильно (и дизассемблированный код смотрел), но не мигает.

Пошёл на крайние меры - перешёл на ассемблер, чтобы "отсечь всё лишнее". Точнее, нашёл проект мигалки под LPC1768 на асме - более того, там нашлась даже версия конкретно под мою плату - правда, автор её прошивал через JTAG с нулевого адреса, пришлось чуть модифицировать. https://github.com/aamonster/mbed_sampl ... nker01/rom - может, сообразите, что может быть не так? Там же лежит схема платы в pdf - диод и правда припаян между P2.0 (проверял по разводке) и +3.3V, только токозадающий резистор 1кОм, диод живой...

Что ещё может быть? Может быть, что бутлоадер оставляет включёнными какие-то прерывания (плата запитана от USB) и в результате попадаем в "обработчик" в виде бесконечного цикла?

А то уже склоняюсь к мысли, что придётся заказать JTAG и отложить все эксперименты на месяц-другой, пока родная почта его довезёт :-((( - и тогда уж просто посмотреть, как программа выполняется...
Кстати, а клон Altera USB Blaster нельзя задействовать для ARM? А то он уже почти доехал, на следующей неделе должен попасть в руки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: (solved) LPC1768 + USB bootloader - помогите новичку разобра
СообщениеДобавлено: 31 мар 2013, 11:25 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 1988
Откуда: Санкт-Петербург
Спасибо камраду Dreamer, поделившемуся своим примером для этой платки - удалось завести. И впаянный диод теперь мигает, и то, что я подсоединял для проверки.
Судя по всему, проблема была в инициализации - буду теперь сравнивать, чем же она отличается в его примере (ну, кроме использования Keil).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: (solved) LPC1768 + USB bootloader - помогите новичку разобра
СообщениеДобавлено: 07 июн 2015, 16:06 
Здравствуйте!

Зарегистрирован: 07 июн 2015, 15:47
Сообщения: 1
aamonster писал(а):
Спасибо камраду Dreamer, поделившемуся своим примером для этой платки - удалось завести. И впаянный диод теперь мигает, и то, что я подсоединял для проверки.
Судя по всему, проблема была в инициализации - буду теперь сравнивать, чем же она отличается в его примере (ну, кроме использования Keil).


Добрый день.
Прошу прощения, что поднимаю старую тему, т.к. писать л.с. пока не дают :(

Собственно у меня аналогичная проблема: пытаюсь замигать диодом на этой платке используя штатный бутлоадер, работать с АРМ только начинаю.
Проект собираю в Eclipse + gcc_arm_4.9_2015q1.
Собирается, воспринимается загрузчиком, но не работает.
Если не сложно поделитесь, пожалуйста, своим примером для этой платки, хотя бы в плане инициализации.
Заранее благодарен.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB