Перейти к содержанию
    

Как подпилить 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 памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подкрутить надо 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, а дальше по обстоятельствам.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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ов. У меня подозрение на то, что я не правильно установил настройки периферии.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решена, оказываеться надо было подождать немного. В общем как-то загрузилось, но при выключенном PLL. Вопрос следующий, а как теперь проверить, как U-boot работает? Я встречал строчку про использование UART1 для терминала, и список комманд u-boot, это подойдет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблема решена, оказываеться надо было подождать немного. В общем как-то загрузилось, но при выключенном 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(он об этом скажет), а потом шаманить в папках, которые я указал в предыдущих постах и исправлять под свою конфигурацию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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).

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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:

1) Да.

2) Если собираетесь использовать, то лучше включите. Но на первых порах (лишь бы запустить что-то), можно отключить.

3) drivers/serial/

4) Если грузитесь с UART№, то выбираете соответствующий UART№. Когда отработаете загрузку через UART, конвертнете в NAND и зальете этот AIS в NAND средствами U-boot. Если юбоот загрузится достаточно нажать enter, увидите promt строку, что то типа "u-boot>"

Посмотрите на SDRAM_CLK во время загрузки прошивки. Должна появится расчетная частоста. Так как прошивка грузится в SDRAM. И если прошивка не может загрузится, то виновата память скорее всего. Ну и на кварц посмотрите. У меня когда ставил, кварц генерил 8 Мгц вместо 24, емкости слишком большие нагрузочные стояли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем Славка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Изменено пользователем Славка

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получилось прошить 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?
...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получилось прошить 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.

Исправляйте по ситуации те места, которые я указал ранее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Использую UART2 для прошивки и для консоли. На стадии

 AIS complete. Jump to address 0xC1080000
Waiting for DONE...
Boot complete successfully

Передается длинная вереница импульсов, возможно то-что нужно. Затем отсылается еще пара импульсов с жутко заваленными фронтами и переход в режим ожидания. На enter ноль реакции (команда передается, проверял осциллографом). Поменял все как Вы советовали - тишина. Если я с таймингами памяти напутал, это могло привести к таким результатам?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проверьте скорость UART'а. Bootloader при некоторых условиях может задействовать x13 oversampling, а драйверы u-boot и ядра напрочь игнорируют регистр MDR.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Появился следующий ряд вопросов.

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, или еще где-то надо вставлять строчки. Где можно посмотреть список разрешенных комманд для этого раздела и их параметры?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...