Easyelectronics.ru

Электроника для всех
Текущее время: 19 июн 2018, 02:01

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



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

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

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2438
Откуда: Санкт-Петербург
Вводные: купил простейшую китайскую плату на 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
Сообщения: 2438
Откуда: Санкт-Петербург
Спасибо. Как раз в изрядной степени по вашим статьям и пытаюсь разобраться, кстати :-)

А с чего должен начинаться 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
Сообщения: 2438
Откуда: Санкт-Петербург
Разобрался, почему бинарник, собранный 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
Сообщения: 2438
Откуда: Санкт-Петербург
Спасибо камраду 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 часов


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

Сейчас этот форум просматривают: Google [Bot]


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

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

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