|
USB на u-Boot для LPC1788 |
|
|
|
Mar 5 2012, 13:13
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 8-07-09
Пользователь №: 51 032

|
Здравствуйте! Сделали свою плату на базе процессора LPC1788. Стоит задача поставить туда uCLinux, для этого сперва поставили туда u-boot (http://www.lpcware.com/content/project/lpc177x8x-u-boot-port). Все вроде нормально, консоль и внешняя SDRAM проинициализированы, но возникли проблемы с USB. Использую USBHostLite (отсюда: http://sw.lpcware.com/). В исходниках говориться, что он прошел тестирование на LPC1788. Но у меня почему-то не работает, различие только в распиновке - у меня на USB используются только две ноги: USB_D1+ и USB_D1-. Но я это учел в инициализации ног. Так вот, после инициализации мы входим в прерывание USB_IRQHandler, но в регистре LPC_USB->RhPortStatus1 не поднят бит подключения устройства (CurrentConnectStatus), а взведен только бит PortPowerStatus. Надо отметить, что резет я делаю со вставленной флэшкой. Так что я уже не знаю как завести USB и куда еще можно посмотреть. Заранее спасибо за любую помощь!
|
|
|
|
|
 |
Ответов
(1 - 13)
|
Mar 5 2012, 13:48
|
■ ■ ■ ■
    
Группа: Свой
Сообщений: 1 100
Регистрация: 9-08-06
Пользователь №: 19 443

|
Цитата различие только в распиновке - у меня на USB используются только две ноги: USB_D1+ и USB_D1-. Но я это учел в инициализации ног. USBPortSel - 0x2008 C110 и OTGStCtrl - 0x2008 C110 правильно настроили?
--------------------
Делай что должен и будь что будет.
|
|
|
|
|
Mar 6 2012, 05:45
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 8-07-09
Пользователь №: 51 032

|
Спасибо за ответ! Эти регистры вроде настроены правильно: Код // Enable USB host clock, OTG clock & AHB master clock uint32 ctrl = ((1 << 0) | (1 << 3) | (1 << 4)); LPC_USB->OTGClkCtrl = ctrl; while ((LPC_USB->OTGClkSt & ctrl) != ctrl);
// 01: U1 = host (OTG), U2 = host LPC_USB->StCtrl = 0x1; Регистры OTGStCtrl и USBPortSel располжены по одному адресу 0x2008 C110. Для USB хоста использую USB1, второй канал USB не используется.
|
|
|
|
|
Mar 12 2012, 04:46
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 8-07-09
Пользователь №: 51 032

|
Все, заработало! Дело было в неправильной документации на LPC1788, если честно, то я первый раз столкнулся с ошибками в документации на микроконтроллер. Так вот, есть два типа частот, это Fcco и pll_out_clk: Цитата pll_in_clk - the frequency of the input to the PLL FCCO - the frequency of the PLL current controlled oscillator pll_out_clk - the PLL output frequency M - PLL Multiplier value from the MSEL bits in the PLLCFG register P - PLL Divider value from the PSEL bits in the PLLCFG register
The PLL output frequency (when the PLL is active and locked) is given by: pll_out_clk = M * pll_in_clk - or - pll_out_clk = FCCO / (2 * P) The CCO frequency can be computed as: FCCO = pll_out_clk * 2 * P - or - FCCO = pll_in_clk * M * 2 * P
The PLL inputs and settings must meet the following criteria: • M is in the range of 1 to 32. • P is one of 1, 2, 4, 8. • pll_in_clk is in the range of 10 MHz to 25 MHz. • FCCO is in the range of 156 MHz to 320 MHz. • pll_out_clk is in the range of 9.75 MHz to 160 MHz. И из документации видно, что источником частоты является Fcco и что делителем частоты могут быть только числа 0, 4 и 6 (USBCLKSEL - address 0x400F C108, поле USBDIV): Цитата 0 The divider is turned off., no clock will be provided to the USB subsystem. 4 PLL0 output is divided by 4. PLL0 output must be 192 MHz. 6 PLL0 output is divided by 6. PLL0 output must be 288 MHz. Others Other values cannot produce the 48 MHz clock required for USB operation. Но по факту, источником частоты для USB является pll_out_clk, и тогда при частоте pll_out_clk = 96 MH USBDIV = 2.
|
|
|
|
|
Mar 20 2012, 06:04
|
Знающий
   
Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163

|
Цитата(Novichok1 @ Mar 12 2012, 09:46)  Все, заработало! Дело было в неправильной документации на LPC1788 Немного оффтоп, но у нас в проекте тоже заложен LPC1788 и хочется туда закинуть ucLinux. У вас уже получилось это сделать? Какие минимальные требования по объему ОЗУ/ПЗУ? Я так понимаю, что цепочка следующая: во внутреннюю флэш LPC1788 грузится U-Boot и больше оттуда никуда не уходит. При запуске инициализирует SDRAM и внешнюю флэш. Затем перекидывает ucLinux из флэша (если он там есть) в ОЗУ и передает туда управление. Реально ли поместить ucLinux в 2 Мегабайта внешней SPI Flash, хватит ли 16 Мегабайт ОЗУ для работы?
|
|
|
|
|
Mar 20 2012, 07:00
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 8-07-09
Пользователь №: 51 032

|
Да, цепочка загрузки такая, только в зависимости от настроек сам u-boot может загружаться либо с внутренней памяти, либо с внешней RAM. У нас пока проблемы с NAND памятью, так что uCLinux пока не загружали. Но тот образ, который у нас есть весит около 1,2 MB, так что думаю, 2 метров должно хватить, но учтите, что если вы хотите услилть свой образ, то он может разрастись. По форумам пишут, что оперативки должно быть минимум 2-4 метра.
|
|
|
|
|
Mar 20 2012, 08:19
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 8-07-09
Пользователь №: 51 032

|
Ну помойму флэшки все-таки побольше надо, мало ли что там сохранять захотите, и какие фичи захотите включить в образ линукса. У нас и NAND и SDRAM по 32 MByte. BSP купили - техподдержка не помешает, тем более это наши российские ребята) И цена нормальная. А пообщаться по успехам/проблемам буду рад, контактная инфа у меня вроде открыта. Можете глянуть на топик: Problem with NAND, может сможете помочь) А, говорят грузиться должен 3-5 секунд.
Сообщение отредактировал Novichok1 - Mar 20 2012, 08:20
|
|
|
|
|
Mar 20 2012, 09:03
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 8-07-09
Пользователь №: 51 032

|
Они откроют его через полторы недели ( when-will-uclinux-be-ready-lpc1788)
|
|
|
|
|
Mar 22 2012, 07:04
|
Частый гость
 
Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518

|
Цитата(Novichok1 @ Mar 20 2012, 12:03)  Они откроют его через полторы недели ( when-will-uclinux-be-ready-lpc1788) Вы думаете они выложат исходники в открытый доступ? Напрасно. Это их хлеб, где еще можно найти uClinux под Cortex-m3 кроме как у них? Получилось запустить uClinux на LPC?
Сообщение отредактировал PoReX - Mar 22 2012, 07:05
--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
|
|
|
|
|
Mar 22 2012, 08:30
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 8-07-09
Пользователь №: 51 032

|
Цитата For those willing to wait, we've agreed with NXP to post all of our work for free on this site starting March 31. Пока нет, у меня NAND пока не работает.
|
|
|
|
|
Mar 22 2012, 09:48
|
Частый гость
 
Группа: Свой
Сообщений: 112
Регистрация: 1-05-09
Из: Ростов-на-Дону
Пользователь №: 48 518

|
Не заметил эту высказывание. Выглядит заманчиво, видать NXP им приплатили, но посмотрим, сдержат ли обещания. Вот бы для STM uClinux также выложили)))
--------------------
«У современных мобильных телефонов такая же вычислительная мощь, что и у компьютеров NASA в 60-е годы. И в то время этого хватало, чтобы запустить человека в космос, а сегодня — только чтобы запускать птиц в свиней.»
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|