|
|
  |
AM1705 первый запуск, UBL, UART |
|
|
|
Nov 7 2011, 14:59
|
Участник

Группа: Участник
Сообщений: 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 памяти.
|
|
|
|
|
Nov 8 2011, 07:00
|
Участник

Группа: Участник
Сообщений: 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, а дальше по обстоятельствам.
|
|
|
|
|
Nov 8 2011, 10:29
|
Участник

Группа: Участник
Сообщений: 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ов. У меня подозрение на то, что я не правильно установил настройки периферии.
|
|
|
|
|
Nov 8 2011, 14:26
|
Участник

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

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

Группа: Участник
Сообщений: 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(он об этом скажет), а потом шаманить в папках, которые я указал в предыдущих постах и исправлять под свою конфигурацию.
|
|
|
|
|
Nov 9 2011, 23:40
|
Участник

Группа: Участник
Сообщений: 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).
Извините, если ответы на какие-то вопросы очевидны, просто это мой первый опыт по работе с процессорами и установкой на них ОС.
|
|
|
|
|
Nov 10 2011, 04:35
|
Участник

Группа: Участник
Сообщений: 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).
Извините, если ответы на какие-то вопросы очевидны, просто это мой первый опыт по работе с процессорами и установкой на них ОС. Не извиняйтесь, я буквально год назад тож впервые с этим столкнулся, и помочь никто не мог. У меня даж тут где-т на форуме есть темы, как светики зажигать под линуксом 1) Да. 2) Если собираетесь использовать, то лучше включите. Но на первых порах (лишь бы запустить что-то), можно отключить. 3) drivers/serial/ 4) Если грузитесь с UART№, то выбираете соответствующий UART№. Когда отработаете загрузку через UART, конвертнете в NAND и зальете этот AIS в NAND средствами U-boot. Если юбоот загрузится достаточно нажать enter, увидите promt строку, что то типа "u-boot>" Посмотрите на SDRAM_CLK во время загрузки прошивки. Должна появится расчетная частоста. Так как прошивка грузится в SDRAM. И если прошивка не может загрузится, то виновата память скорее всего. Ну и на кварц посмотрите. У меня когда ставил, кварц генерил 8 Мгц вместо 24, емкости слишком большие нагрузочные стояли.
|
|
|
|
|
Nov 10 2011, 04:35
|
Участник

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

|
В общем 3 раза отправил одно и тоже, как удалить не знаю.
Сообщение отредактировал Славка - Nov 10 2011, 05:44
|
|
|
|
|
Nov 10 2011, 05:41
|
Участник

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

|
В общем 3 раза отправил одно и тоже, как удалить не знаю.
Сообщение отредактировал Славка - Nov 10 2011, 05:43
|
|
|
|
|
Nov 14 2011, 15:49
|
Участник

Группа: Участник
Сообщений: 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? ...
|
|
|
|
|
Nov 15 2011, 07:01
|
Участник

Группа: Участник
Сообщений: 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. Исправляйте по ситуации те места, которые я указал ранее.
|
|
|
|
|
Nov 15 2011, 15:44
|
Участник

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

|
Использую UART2 для прошивки и для консоли. На стадии Код AIS complete. Jump to address 0xC1080000 Waiting for DONE... Boot complete successfully Передается длинная вереница импульсов, возможно то-что нужно. Затем отсылается еще пара импульсов с жутко заваленными фронтами и переход в режим ожидания. На enter ноль реакции (команда передается, проверял осциллографом). Поменял все как Вы советовали - тишина. Если я с таймингами памяти напутал, это могло привести к таким результатам?
|
|
|
|
|
Nov 15 2011, 16:12
|
Участник

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

|
Ура  все получилось, при компиляции для UART надо было просто оключить NAND.
|
|
|
|
|
Nov 16 2011, 16:23
|
Участник

Группа: Участник
Сообщений: 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, или еще где-то надо вставлять строчки. Где можно посмотреть список разрешенных комманд для этого раздела и их параметры?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|