реклама на сайте
подробности

 
 
9 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> AM1705 первый запуск, UBL, UART
PavelG
сообщение Nov 7 2011, 14:59
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Цитата(Славка @ Nov 7 2011, 09:45) *
Как подпилить u-boot - отдельная песня. Все зависит от того, насколько ваша плата отличается от кита. Спросите что конкретно подкрутить - я подскажу в каком месте в исходниках это делается.


Подкрутить надо NAND 32Mx8. Подключена она к EMIF_A (выводы EMA_WAIT, EMA_OE, EMA_CS2, EMA_WE, EMA_A1 и A2, EMA_D0...EMA_D7). К EMIF_B подключена SDRAM 1Mx16Bitx4bank. Ядро linux должно грузиться из NAND памяти.
Go to the top of the page
 
+Quote Post
Славка
сообщение Nov 8 2011, 07:00
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата(PavelG @ Nov 7 2011, 18:59) *
Подкрутить надо NAND 32Mx8. Подключена она к EMIF_A (выводы EMA_WAIT, EMA_OE, EMA_CS2, EMA_WE, EMA_A1 и A2, EMA_D0...EMA_D7). К EMIF_B подключена SDRAM 1Mx16Bitx4bank. Ядро linux должно грузиться из NAND памяти.


U-boot хоть как то уже запущен?
USER-Guide читали, главу rebuilding u-boot?
spraba4b.pdf Apendix B?
Непонятно просто, чего уже получилось. По идее делаешь CONFIG_SYS_USE_NAND в da830.h, а дальше по обстоятельствам.
Go to the top of the page
 
+Quote Post
PavelG
сообщение Nov 8 2011, 10:29
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



User-guide читал, про bootloader тоже, NAND ядром поддерживается.
U-boot собран, в файле da830evm.h написал так
Код
/*Board*/
#undef CONFIG_USE_SPIFLASH
#define CONFIG_USE_NAND
...
#define PHYS_SDRAM_1_SIZE (32<<20)


Если в AISgen собираю с отключенным PLL, то зависает в следующем состояние:
Код
(AIS Parse): Processing command 22: 0x5853590D.
(AIS Parse): Performing Opcode Sync...
(AIS Parse): Executing function...
(AIS Parse): Processing command 23: 0x58535901.
(AIS Parse): Performing Opcode Sync...
(AIS Parse): Loading section...


Если в AISgen собираю с установленными значениями PLL, то получаю:
Код
((Serial Port): Read error! (Время ожидания операции истекло.)
(AIS Parse): I/O Error in read!
(AIS Parse): Opcode Sync failed after 11 consecutive I/O failures.
(AIS Parse): Boot aborted.
(Serial Port): Closing COM3.


PINMUX настроил только на подключение EMIF и UARTов. У меня подозрение на то, что я не правильно установил настройки периферии.
Go to the top of the page
 
+Quote Post
PavelG
сообщение Nov 8 2011, 14:26
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Проблема решена, оказываеться надо было подождать немного. В общем как-то загрузилось, но при выключенном PLL. Вопрос следующий, а как теперь проверить, как U-boot работает? Я встречал строчку про использование UART1 для терминала, и список комманд u-boot, это подойдет?
Go to the top of the page
 
+Quote Post
Славка
сообщение Nov 9 2011, 09:01
Сообщение #20


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата(PavelG @ Nov 8 2011, 18:26) *
Проблема решена, оказываеться надо было подождать немного. В общем как-то загрузилось, но при выключенном PLL. Вопрос следующий, а как теперь проверить, как U-boot работает? Я встречал строчку про использование UART1 для терминала, и список комманд u-boot, это подойдет?

В AIS должен быть включен Configure PLL, Configure EMIFA, Configure EMIFB, Configure LPSC, Configure PINMUX. Все это должно быть верно настроенно в соответствующих полях. Если прошивка до конца не загружается, то проблема скорее всего в настройках памяти.
У меня со включенным PLL тоже не грузилось, проблема была как оказалось в PHY Micrel. На новой плате я ее не запаял, и все загрузилось. Не знаю, как это влияет на процесс загрузки.
Кварц должен быть 24 МГц low-ESR. Если другой(например 25):
#define CONFIG_SYS_OSCIN_FREQ 25000000
Нужно проверить осциллографом наличие генерации кварца, и частоты SDRAM_CLK.
Если используется другой юарт шаманить надо гораздо больше.
В конфиге отключите все лишнее, например USB и I2C.
Когда отключаете например I2C, то u-boot не откомпилируется, но там над по ходу закоментировать все лишнее (компилятор укажет что).
У меня не проходил проц стандартную инициализацию board_init. Я вырезал все лишнее и оставил только то, что нужно.
Нужно изменить инициализацию платы в da830evm.c.
вот мой пример:
Код
int board_init(void)
{
    /* arch number of the board */
    gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_DA830_EVM;

    /* address of boot parameters */
    gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
    /*
     * Power on required peripherals
     * ARM does not have access by default to PSC0 and PSC1
     * assuming here that the DSP bootloader has set the IOPU
     * such that PSC access is available to ARM
     */

    lpsc_on(DAVINCI_LPSC_SPI0);     /* Serial Flash */
    lpsc_on(DAVINCI_LPSC_EMAC);     /* image download */
    lpsc_on(DAVINCI_LPSC_UART0);    /* console */
    lpsc_on(DAVINCI_LPSC_GPIO);
    
    writel(readl(&davinci_syscfg_regs->suspsrc) &
           ~(DAVINCI_SYSCFG_SUSPSRC_EMAC |
         DAVINCI_SYSCFG_SUSPSRC_SPI0 |
         DAVINCI_SYSCFG_SUSPSRC_UART0),
           &davinci_syscfg_regs->suspsrc);
    
    writel((DAVINCI_UART_PWREMU_MGMT_FREE | DAVINCI_UART_PWREMU_MGMT_URRST |
        DAVINCI_UART_PWREMU_MGMT_UTRST),
           &davinci_uart0_ctrl_regs->pwremu_mgmt);

    return(0);
}
int misc_init_r(void)
{
    printf ("ARM Clock : %d Hz\n", clk_get(DAVINCI_ARM_CLKID));
#ifdef CONFIG_HARD_I2C
    uint8_t eeprom_enetaddr[6], tmp[2];
    
    /* Read Ethernet MAC address from EEPROM if available. */
    if (dvevm_read_mac_address(eeprom_enetaddr))
        dv_configure_mac_address(eeprom_enetaddr);

    tmp[0] = 0x01;
    tmp[1] = 0x23;

    if(i2c_write(0x5f, 0, 0, tmp, 2)) {
        printf("Ethernet switch start failed!\n");
    }
#endif
}

Я не помню как точно, но когда грузился через uart, я вообще все закоментировал, так как AIS сам в этом месте все настроил, а по второму разу почему то в этом месте застревало. Когда грузился через UART то почему то MDR регистр выставлялся на делитель 13 и UART работал на непонятном baudrate. Соответственно для этого в serial.c нужно MODE_X_DIV установить в 13. А потом поменять на 16, когда сделаете AIS для загрузки с NAND.
Если загрузится U-boot, то открыв терминал, увидите что-то наподобии шела линуксового, можно будет выполнять различные команды и многое другое (эт так, на всякий случай, если ни разу не видели).
В общем первое - убедится, что прошивка целиком передалась на устройство через UARTHOST(он об этом скажет), а потом шаманить в папках, которые я указал в предыдущих постах и исправлять под свою конфигурацию.
Go to the top of the page
 
+Quote Post
PavelG
сообщение Nov 9 2011, 23:40
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Я несколько запутался, и так по порядку:

1) Какой бы конфиг U-boot я бы не сделал, после обработки в AISGen с правильными параметрами EMIFA, EMIFB, LPSC, PINMUX и PLL U-boot должен нормально заливаться.

2) В моем случае EMIFA в AISGen можно отключить так как у меня NAND к этому модулю подключен, и мне нужно только править CE3CFG. Хотя тут не понятно, так как в документе от TI про Bootloader было написано что поля EMIFA настраивают модуль EMIFB.

3) Вы ссылались на файл serial.c, не подскажите, где он расположен? Я поискам по папкам искал, там их много но все не относящиеся к плате da830.

4) В AISGen есть выпадающий список Bootmode, и мне не понятно, что будет происходить при различных вариантах выбора. Игрался я с различными вариантами (UART2 и NAND), при отключенном PLL, получал надпись о том что boot прошел успешно, но в терминале было глухо (проверял посылкой команды help).

Извините, если ответы на какие-то вопросы очевидны, просто это мой первый опыт по работе с процессорами и установкой на них ОС.
Go to the top of the page
 
+Quote Post
Славка
сообщение Nov 10 2011, 04:35
Сообщение #22


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата(PavelG @ Nov 10 2011, 03:40) *
Я несколько запутался, и так по порядку:

1) Какой бы конфиг U-boot я бы не сделал, после обработки в AISGen с правильными параметрами EMIFA, EMIFB, LPSC, PINMUX и PLL U-boot должен нормально заливаться.

2) В моем случае EMIFA в AISGen можно отключить так как у меня NAND к этому модулю подключен, и мне нужно только править CE3CFG. Хотя тут не понятно, так как в документе от TI про Bootloader было написано что поля EMIFA настраивают модуль EMIFB.

3) Вы ссылались на файл serial.c, не подскажите, где он расположен? Я поискам по папкам искал, там их много но все не относящиеся к плате da830.

4) В AISGen есть выпадающий список Bootmode, и мне не понятно, что будет происходить при различных вариантах выбора. Игрался я с различными вариантами (UART2 и NAND), при отключенном PLL, получал надпись о том что boot прошел успешно, но в терминале было глухо (проверял посылкой команды help).

Извините, если ответы на какие-то вопросы очевидны, просто это мой первый опыт по работе с процессорами и установкой на них ОС.

Не извиняйтесь, я буквально год назад тож впервые с этим столкнулся, и помочь никто не мог. У меня даж тут где-т на форуме есть темы, как светики зажигать под линуксом biggrin.gif
1) Да.
2) Если собираетесь использовать, то лучше включите. Но на первых порах (лишь бы запустить что-то), можно отключить.
3) drivers/serial/
4) Если грузитесь с UART№, то выбираете соответствующий UART№. Когда отработаете загрузку через UART, конвертнете в NAND и зальете этот AIS в NAND средствами U-boot. Если юбоот загрузится достаточно нажать enter, увидите promt строку, что то типа "u-boot>"
Посмотрите на SDRAM_CLK во время загрузки прошивки. Должна появится расчетная частоста. Так как прошивка грузится в SDRAM. И если прошивка не может загрузится, то виновата память скорее всего. Ну и на кварц посмотрите. У меня когда ставил, кварц генерил 8 Мгц вместо 24, емкости слишком большие нагрузочные стояли.
Go to the top of the page
 
+Quote Post
Славка
сообщение Nov 10 2011, 04:35
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



В общем 3 раза отправил одно и тоже, как удалить не знаю.

Сообщение отредактировал Славка - Nov 10 2011, 05:44
Go to the top of the page
 
+Quote Post
Славка
сообщение Nov 10 2011, 05:41
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



В общем 3 раза отправил одно и тоже, как удалить не знаю.

Сообщение отредактировал Славка - Nov 10 2011, 05:43
Go to the top of the page
 
+Quote Post
PavelG
сообщение Nov 14 2011, 15:49
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Получилось прошить U-boot с включенным PLL. Просто меня переклинило, и я упорно вместо резонатора выбирал генератор. SDRAM тактируеться, все прошивается (все как по UserGuide в DaVinci), однако в Hyperterminale тишина. Жал Enter и строка U-boot> не появлялась. Использую USB->UART переходник на основе CP2102, определяется как COM3.

Настройки UART для консоли
Код
#define CONFIG_SYS_NS16550
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE -4
#define CONFIG_SYS_NS16550_COM1 DAVINCI_UART2_BASE
#define CONFIG_SYS_NS16550_CLK clk_get(DAVINCI_UART2_CLKID)
#define CONFIG_CONS_INDEX 3 //UART2?
...
Go to the top of the page
 
+Quote Post
Славка
сообщение Nov 15 2011, 07:01
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 65
Регистрация: 6-04-10
Пользователь №: 56 441



Цитата(PavelG @ Nov 14 2011, 19:49) *
Получилось прошить U-boot с включенным PLL. Просто меня переклинило, и я упорно вместо резонатора выбирал генератор. SDRAM тактируеться, все прошивается (все как по UserGuide в DaVinci), однако в Hyperterminale тишина. Жал Enter и строка U-boot> не появлялась. Использую USB->UART переходник на основе CP2102, определяется как COM3.

Настройки UART для консоли
Код
#define CONFIG_SYS_NS16550
#define CONFIG_SYS_NS16550_SERIAL
#define CONFIG_SYS_NS16550_REG_SIZE -4
#define CONFIG_SYS_NS16550_COM1 DAVINCI_UART2_BASE
#define CONFIG_SYS_NS16550_CLK clk_get(DAVINCI_UART2_CLKID)
#define CONFIG_CONS_INDEX 3 //UART2?
...

1. К какому UART подключен ваш терминал?
2. С какого UART вы загружаете uboot?
Желательно, чтобы они были одинаковыми, тогда можно тупо всю начальную инициализацию закоментить.

Смотрите лучше осциллографом на UART. после того как uboot загрузится - он выдает много текста.
Код
U-Boot 2009.11 (РћРєС‚ 27 2011 - 15:45:48)

DRAM:  16 MB
In:    serial
Out:   serial
Err:   serial
ARM Clock : 300000000 Hz
Net:   88E6165 Initialized on daveth0
Can't overwrite "ethaddr"

Hit any key to stop autoboot:  0

Если там хоть что-то дергается после загрузки - значит неправильный baudrate.
Исправляйте по ситуации те места, которые я указал ранее.
Go to the top of the page
 
+Quote Post
PavelG
сообщение Nov 15 2011, 15:44
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Использую UART2 для прошивки и для консоли. На стадии
Код
AIS complete. Jump to address 0xC1080000
Waiting for DONE...
Boot complete successfully

Передается длинная вереница импульсов, возможно то-что нужно. Затем отсылается еще пара импульсов с жутко заваленными фронтами и переход в режим ожидания. На enter ноль реакции (команда передается, проверял осциллографом). Поменял все как Вы советовали - тишина. Если я с таймингами памяти напутал, это могло привести к таким результатам?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Nov 15 2011, 15:55
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Проверьте скорость UART'а. Bootloader при некоторых условиях может задействовать x13 oversampling, а драйверы u-boot и ядра напрочь игнорируют регистр MDR.
Правда, в таком случае обычно наблюдается некоторый мусор, а не полная тишина в терминале.
Go to the top of the page
 
+Quote Post
PavelG
сообщение Nov 15 2011, 16:12
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Ура 08.gif все получилось, при компиляции для UART надо было просто оключить NAND.
Go to the top of the page
 
+Quote Post
PavelG
сообщение Nov 16 2011, 16:23
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Появился следующий ряд вопросов.
1) Когда пишу #undef CONFIG_USE_NAND U-boot грузиться и запускается, эхо и прочие команды работают. Если пишу #define CONFIG_USE_NAND, то U-boot грузиться, но не запускается. Как быть? Если NAND не подключить, то в консоли не доступны команды для работы с ней (nand erase, nand write и прочее), следовательно нельзя ее подготовить для заливки U-boot и ядра. Есть вариант разрешить эти команды в не зависимости от того подключена или нет NAND, но мне кажется это не корректное решение.

2) В #define CONFIG_NR_DRAM_BANKS надо писать сколько банков в подключенной SDRAM? А то у меня их 4, но U-boot пишет, что размер 2,3 и 4 равен нулю (смотрел через команду bdinfo).

3) Настройка работы с Ethernet PHY чипом ведется в разделе Network & Ethernet, или еще где-то надо вставлять строчки. Где можно посмотреть список разрешенных комманд для этого раздела и их параметры?
Go to the top of the page
 
+Quote Post

9 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01482 секунд с 7
ELECTRONIX ©2004-2016