Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AM1705 первый запуск
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Страницы: 1, 2, 3
Славка
Добрый день!
Пытаюсь запустить AM1705 уже который день. Плата и схема моего же производства.
Скачал OMAP-L137_FlashAndBootUtils_2_20. Откомпилировал благополучно.
Установил частоту 300Mhz, тайминги памяти, частоту uartа. (device.c, device_uart.c)
Установил strapы в BOOTMODE UART2.
При старте выдает BOOTME.
Пытаюсь стереть флешку командой:
sfh_OMAP-L137.exe -v -p COM1 -targetType AM1707 -erase -flashType SPI_MEM
Прошивка благополучно передается по UART и застревает на
Код
(AIS Parse): AIS complete. Jump to address 0x80000000.
(AIS Parse): Waiting for DONE...
(AIS Parse): Boot completed successfully.

Waiting for SFT on the OMAP-L137...


Осциллографом не видно SDRAM clk - делаю вывод что до инициализации памяти дело не доходит, застревает раньше.
Питание процессора подаю вручную тумблерами (сначала 1.2 потом 3.3).
Не подаю питание 1.2 и 1.8 на USB так как не буду его использовать. Думал из-за этого не работает. Пробовал в инициализации PSC не включать USB.
Код
void DEVICE_PSCInit()
{
...
//  for( i = 1; i <= 13; i++ )
  for( i = 2; i <= 13; i++ )
    PSC1->MDCTL[i] = (PSC1->MDCTL[i] & 0xFFFFFFE0) | PSC_ENABLE;
...
}

Не помогает.
Есть jtag SAU510-USB но его подключить так и не смог. CCS4.1.2 ругается и не конектится к процессору. (не завел на плате RTCK, может из за этого)
Посоветуйте хотя бы в каком направлении двигаться с этим черным ящиком, который только BOOTME выдавать может.
PavelG
Цитата(Славка @ Oct 12 2011, 14:05) *
Добрый день!
Пытаюсь запустить AM1705 уже который день. ...
sfh_OMAP-L137.exe -v -p COM1 -targetType AM1707 -erase -flashType SPI_MEM


А может все дело в том, что в команде Вы указали другой процессор (AM1707 вместо AM1705)?
Славка
Цитата(PavelG @ Oct 12 2011, 14:09) *
А может все дело в том, что в команде Вы указали другой процессор (AM1707 вместо AM1705)?

AM1705 указать для sfh нельзя.
Как такового софта UBL для AM1705 нет. 1707 отличается только наличием LCD и 32-битным SDRAM.
И по регистрам они сходятся почти. Потому народ использует UBL от 1707 для 1705 изменив только SDCFG регистра для 16-бит памяти.
http://e2e.ti.com/support/dsp/omap_applications_processors/f/42/t/107883.aspx
Все это мои домыслы и чтение форумов. Как оно на самом деле я не знаю, так как процессор до сих пор не запущен.
aaarrr
Цитата(Славка @ Oct 12 2011, 14:05) *
Посоветуйте хотя бы в каком направлении двигаться с этим черным ящиком, который только BOOTME выдавать может.

Грузите u-boot через UART, дальше работайте через него. Ну, можно еще свою программку написать на предмет проверки памяти и прочего.

P.S. С SFH я как-то не подружился. AISGen + UART Boot Host для жизни вполне достаточно.
Славка
Цитата(aaarrr @ Oct 12 2011, 21:13) *
Грузите u-boot через UART, дальше работайте через него. Ну, можно еще свою программку написать на предмет проверки памяти и прочего.

P.S. С SFH я как-то не подружился. AISGen + UART Boot Host для жизни вполне достаточно.

Написал hello world для проца. Загружаю прогу через Uart Boot Host. Когда в AisGenе выставляю Configure PLL
Код
(AIS Parse): Processing command 1: 0x58535901.
(AIS Parse): Performing Opcode Sync...
(Serial Port): Read error! (The operation has timed out.)
(AIS Parse): I/O Error in read!
(Serial Port): Read error! (The operation has timed out.)
(AIS Parse): I/O Error in read!
(Serial Port): Read error! (The operation has timed out.)
(AIS Parse): I/O Error in read!
(Serial Port): Read error! (The operation has timed out.)
(AIS Parse): I/O Error in read!

Когда не выставляю прошивка благополучно передается (но не запускается, я в ней ничего не инициализирую, кроме uartа). В чем проблема? Кварц 25 МГц. Пробовал обе установки:12-1-3-3-6 (300, 300, 100, 100, 50 МГц) 24-2-3-3-6 (600,300, 100, 100, 50МГц)

Славка
Добрый день всем!
Решил проблему. Застревал процессор по непонятным причинам. Очень много над ним издевался и эксперементировал. Плата не выдержала мучений (дорожки начали отваливаться от множества перепаек). Решил спаять новую, с новыми деталями, все по минимуму - проц, питание, разъем uart и кварц. UBL запустился сразу, без ошибок. Решил конвертнуть в AIS uboot. Пришлось немного пошаманить с кодом (у меня UART0 вместо UART2, другая память, другой кварц). Uboot благополучно запустился через UART. Чему я несказанно рад.
Вопрос в следущем. Процессор очень прилично греется, через минуту-две палец на нем не удержать. Так и должно быть после загрузки uboot?
Славка
Была ошибка в схеме. Теперь проц холодный, всем спасибо!
PavelG
Можно попросить Вас прислать мне принципиальную схему включения процессора (из минимального набора) на почту J.Joker_podpole@mail.ru (Для личных сообщений я пока еще рейтингом не вышел). У меня похоже тоже проблема в схеме зарыта, но найти пока не удаеться.
Славка
Цитата(PavelG @ Oct 18 2011, 15:24) *
Можно попросить Вас прислать мне принципиальную схему включения процессора (из минимального набора) на почту J.Joker_podpole@mail.ru (Для личных сообщений я пока еще рейтингом не вышел). У меня похоже тоже проблема в схеме зарыта, но найти пока не удаеться.

Выслал.

Первая плата не запускалась из-за спаленной микросхемы phy. Почему уровни на выводах RMII интерфейса влияют на старт PLL одному TI известно. Когда начал дальше собирать плату опять спалил phy (ошибка в схеме) и опять нихрена не грузилось. Отпаял физику заработало. Исправил ошибку, припаял новую физику, все заработало. Никогда не используйте 1.8В от micrel KSZ8041TL под свои нужды) Наш разводчик решил сэкономить. Имея отдельный источник 1.8В, он завел микреловский на развязывающий транс. Влом было дорожку протянуть, ну а я проглядел rolleyes.gif
PavelG
Цитата(Славка @ Oct 21 2011, 16:51) *
Выслал.

Первая плата не запускалась из-за спаленной микросхемы phy. Почему уровни на выводах RMII интерфейса влияют на старт PLL одному TI известно. Когда начал дальше собирать плату опять спалил phy (ошибка в схеме) и опять нихрена не грузилось. Отпаял физику заработало. Исправил ошибку, припаял новую физику, все заработало. Никогда не используйте 1.8В от micrel KSZ8041TL под свои нужды) Наш разводчик решил сэкономить. Имея отдельный источник 1.8В, он завел микреловский на развязывающий транс. Влом было дорожку протянуть, ну а я проглядел rolleyes.gif


Спасибо Вам, Вячеслав. Оказалось, что проблема была в том, что вывод TRST я подтянул к питанию, а не к земле, хотя делал все исходя из описания POR и Warm Reset. Теперь буду пытаться прошить UBL и u-boot.
Славка
Цитата(PavelG @ Oct 21 2011, 20:20) *
Спасибо Вам, Вячеслав. Оказалось, что проблема была в том, что вывод TRST я подтянул к питанию, а не к земле, хотя делал все исходя из описания POR и Warm Reset. Теперь буду пытаться прошить UBL и u-boot.

Да пожалуйста!
TRST внутренне подтянут к земле, и в принципе без внешнего резистора все прекрасно работает. Но где-то на ti.wiki нашел, что желательно его подтянуть внешним резстором.
Если будут вопросы спрашивайте здесь, а не через почту. В интернете так мало информации по этим процессорам, тем более на русском. Из-за этого я потратил уйму времени, чтоб его запустить. Думаю, пока это один из моих текущих прожектов на работе, и все в памяти, смогу помочь.
Славка
Добрый день!
Добрался я до загрузки Linux.
Гружусь c SPI Flash сразу U-boot. В инициализации отключил всю перефирию, что не использую.
(PSC0 - 0,1,2,4,6,9,10,11,12,13,14 PSC1 - 3,5,6,24,25,26,31)
Гружу линух через tftp:
Код
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
U-Boot > tftp 0xc0800000 uImage
Using  device
TFTP from server 10.64.28.10; our IP address is 10.64.28.5
Filename 'uImage'.
Load address: 0xc0800000
Loading: #################################################################
         ##############################################
done
Bytes transferred = 1626140 (18d01c hex)
U-Boot > bootm 0xc0800000
## Booting kernel from Legacy Image at c0800000 ...
   Image Name:   Linux-2.6.33-rc4
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    1626076 Bytes =  1.6 MB
   Load Address: c0008000
   Entry Point:  c0008000
   Verifying Checksum ... OK
   Loading Kernel Image ...

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
U-Boot >

Как видно проц уходит в резет после Loading Kernel Image ...
Никакой debug включить не получается. У меня UART0 вместо UART2.
Исправил везде, где нашел UART2 на UART0:
1. bootargs mem=16M console=ttyS0,115200n8
2. debug_macro.S:
Код
orr    \rx, \rx, #0x00C40000    @ physical base address
orr    \rx, \rx, #0x00002000    @ of UART 0

3. board-da830-evm.c:
Код
static int __init da830_evm_console_init(void)
{
    return add_preferred_console("ttyS", 0, "115200");
}

4. uncompress.h:
Код
static u32 *get_uart_base(void)
{
    if (__machine_arch_type == MACH_TYPE_DAVINCI_DA830_EVM ||
        __machine_arch_type == MACH_TYPE_DAVINCI_DA850_EVM)
        return (u32 *)DA8XX_UART0_BASE;
    else
        return (u32 *)DAVINCI_UART0_BASE;
}


В menuconfig выставил early debug.
Но ни символа не вышло с uart crying.gif
Когда гружу u-boot через uart, а потом linux через tftp, то в том месте проц тупо виснет.
С spi перезагружается. Чтобы я не делал, с какими опциями не компилировал ядро.
Пробовал отключать в ядре все драйверы, что я не использую (I2C, NAND, Sound Card, Multimedia, RTC, MMC)
Безрезультатно.
Может кто-нибудь посоветует, куда смотреть?
Ядро: Davinci linux-03.20.00.14
С готовым образом uImage из сборки поведение абсолютно такое же - перезагрузка.
PavelG
Цитата(Славка @ Oct 28 2011, 15:54) *
Когда гружу u-boot через uart...


Скажите пожалуйста, мне удалось на своей процессор (AM1705) загрузить UBL, а как потом загрузить u-boot через UART? Не затрет ли он UBL? Пользуюсь AISgen и UART Boot Host.

Забыл сказать, пробовал после записи UBL записать U-boot, и программа Boot host полсле
(AIS Parse): Read magic word 0x41504954 закрывала COM порт. U-boot собран в CodeSourcery.
aaarrr
Что-то не понимаю проблемы:
1. Берете бинарник u-boot
2. Окучиваете его при помощи AISgen, указав нужный адрес и настройки памяти/периферии
3. Загружаете полученный файл на голую плату при помощи UART Boot Host
Вот и всё.
Славка
Проблема с перезагрузкой решена! Так как у меня на борту стоит 16Мб ОЗУ, а entrypoint u-boot установлен по умолчанию с отступом от начала на 16 Мб, чтобы linux мог развернуться. Так вот u-boot у меня писался в область памяти, где разворачивается linux + 16 Мб (старший адресс у меня на памяти не заведен вообще). Тоесть вроде все работало нечайно)) Когда исправил entry point u-boot, все заработало с пол пинка. Осталось сделать файловую систему для линукса, что в принципе не сложно, опыт есть. Но сейчас приходится заниматься старым проектом, исправлением глюков, потому откладывается на неопределенный срок.
Цитата(PavelG @ Nov 2 2011, 17:21) *
Скажите пожалуйста, мне удалось на своей процессор (AM1705) загрузить UBL, а как потом загрузить u-boot через UART? Не затрет ли он UBL? Пользуюсь AISgen и UART Boot Host.

Забыл сказать, пробовал после записи UBL записать U-boot, и программа Boot host полсле
(AIS Parse): Read magic word 0x41504954 закрывала COM порт. U-boot собран в CodeSourcery.

Грузите сразу uboot без ubl.
1. Открываете инструкцию UserGuide (в папке docs SDK). Ищете инструкцию по компиляции u-boot. Компилируете.
2. Берете файл u-boot (без расширения, это ELF файл. не u-boot.bin). Запускаете AisGen.
3. В AisGen внимательно по даташиту и вашей схеме настраиваете все что у вас используется на плате (bootmode, кварц, память, PINMUX, PSC...) и генерируете AIS.
4. Грузите через UARTHOST ais файл.
5. Радуетесь biggrin.gif

Как подпилить u-boot - отдельная песня. Все зависит от того, насколько ваша плата отличается от кита. Спросите что конкретно подкрутить - я подскажу в каком месте в исходниках это делается.
PavelG
Цитата(Славка @ 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 памяти.
Славка
Цитата(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, а дальше по обстоятельствам.
PavelG
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ов. У меня подозрение на то, что я не правильно установил настройки периферии.
PavelG
Проблема решена, оказываеться надо было подождать немного. В общем как-то загрузилось, но при выключенном PLL. Вопрос следующий, а как теперь проверить, как U-boot работает? Я встречал строчку про использование UART1 для терминала, и список комманд u-boot, это подойдет?
Славка
Цитата(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(он об этом скажет), а потом шаманить в папках, которые я указал в предыдущих постах и исправлять под свою конфигурацию.
PavelG
Я несколько запутался, и так по порядку:

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

Извините, если ответы на какие-то вопросы очевидны, просто это мой первый опыт по работе с процессорами и установкой на них ОС.
Славка
Цитата(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, емкости слишком большие нагрузочные стояли.
Славка
В общем 3 раза отправил одно и тоже, как удалить не знаю.
Славка
В общем 3 раза отправил одно и тоже, как удалить не знаю.
PavelG
Получилось прошить 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?
...
Славка
Цитата(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.
Исправляйте по ситуации те места, которые я указал ранее.
PavelG
Использую UART2 для прошивки и для консоли. На стадии
Код
AIS complete. Jump to address 0xC1080000
Waiting for DONE...
Boot complete successfully

Передается длинная вереница импульсов, возможно то-что нужно. Затем отсылается еще пара импульсов с жутко заваленными фронтами и переход в режим ожидания. На enter ноль реакции (команда передается, проверял осциллографом). Поменял все как Вы советовали - тишина. Если я с таймингами памяти напутал, это могло привести к таким результатам?
aaarrr
Проверьте скорость UART'а. Bootloader при некоторых условиях может задействовать x13 oversampling, а драйверы u-boot и ядра напрочь игнорируют регистр MDR.
Правда, в таком случае обычно наблюдается некоторый мусор, а не полная тишина в терминале.
PavelG
Ура 08.gif все получилось, при компиляции для UART надо было просто оключить NAND.
PavelG
Появился следующий ряд вопросов.
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, или еще где-то надо вставлять строчки. Где можно посмотреть список разрешенных комманд для этого раздела и их параметры?
PavelG
По поводу первого пункта. Собрал U-boot с SPI flash вместо NAND, и все благополучно запустилось. Есть подозрение на косяк в исходник связанных c NAND.
PavelG
С NAND разобрался. В конфигах прописанно, что NAND подключаеться к выводу CS3, а в моем случае она подключена к CS2. Поменять порт я поменял, а вот регистр поменять на CE2 забыл, потому с NAND U-boot у меня и не запускался.
PavelG
Пытаюсь запустить связку AM1705 и LAN8710 в режиме RMII. U-boot чип не видит, тактовый сигнал на MDC ножке чипа присутсвует, и что-то передаеться на ножку MDIO при чем постоянно (после запуска U-boot, сигналы смотрел осциллографом). Распаяку чипа проверял, все на месте. Подскажите, где может быть проблема? Мне кажеться, что в исходниках отсутсвует описание протоколов общения с данным PHY, но где их искать не знаю.
PavelG
Проблема оказалась в том, что в исходниках U-boot'а были выстроены настроеки на получение внешнего тактовго сигнала в 50 МГц. Поправил регистр pinmux[9] и чип нашелся, но теперь не получаеться пинговаться. Проверял снифером пакет запроса МАС адреса приходит на ПК, тот отвечает, но плата почему-то не принимает данных.
Славка
Цитата(PavelG @ Nov 30 2011, 17:40) *
Проблема оказалась в том, что в исходниках U-boot'а были выстроены настроеки на получение внешнего тактовго сигнала в 50 МГц. Поправил регистр pinmux[9] и чип нашелся, но теперь не получаеться пинговаться. Проверял снифером пакет запроса МАС адреса приходит на ПК, тот отвечает, но плата почему-то не принимает данных.

Чипы разные бывают. Читайте даташит, смотрите исходники. Даете ли Вы резет физике? Записываете нужные регистры? Для проверки можно еще посмотреть на сигнал RXDV. При приеме пакета он должен опускаться в ноль. Постоянный обмен там идет из-за вычитывания link статуса. Когда регистрируется драйвер для физики, то там передаются функции инициализации и опроса статуса. Можно не передавать функции опроса. Тогда не будет постоянного обмена, но и MAC не будет приспасабливаться к физике. Все это делается в cpu/arm926ejs/ether.c. У меня тоже было много проблем с сетью. На моем устройстве установлен marvell 88e6165 через micrel ksz8041, так как у marvell нет RMII. Тож замучался пока все это настроил. Могу скинуть исходники, если у вас ksz8041 может помогут чем-то.
Кстати, спешу сообщить, что линукс успешно запущен, сделали на днях файловую систему. Все прекрасно работает, чему я несказанно рад. Теперь делаем уже приложение под линукс.
PavelG
Цитата(Славка @ Dec 2 2011, 08:35) *
Чипы разные бывают. Читайте даташит, смотрите исходники. Даете ли Вы резет физике? Записываете нужные регистры? Для проверки можно еще посмотреть на сигнал RXDV. При приеме пакета он должен опускаться в ноль.


Ресет чипа объединен с ресетом процессора, поэтому при каждой перепрашивке процессора на чип так же подается ресет (проверял осциллографом). Проверял осциллографом пины по которым идет обмен данными с процессором (RXD[0...1] и TXD[0...1]) данные есть и там и там, поэтому подозреваю, что нужно все таки править исходники. RXDV у меня почему-то все время в 0.
По команде mii device у меня выводится 'GENERIC @ 0x07', это правильно? А то смотрел ether.c, и мне показалось, что должна выводится надпись типа Ethernet PHY: [имя PHY]?

У меня эта надпись выовдится в независимости от того, пишу я #define CONFIG_MII или #undef CONFIG_MII.


Цитата(Славка @ Dec 2 2011, 08:35) *
Тож замучался пока все это настроил. Могу скинуть исходники, если у вас ksz8041 может помогут чем-то.

У меня LAN8710 подключена напрямую к AM1705, но исходники я бы у Вас попросил, возможно натолкнут меня на идею где чего подправить. Кстати, не подскажите, где искать непосредственные значения, которые записываются в регистры управление PHY чипом? В папке drivers/net/phy записанна только реализация функций при помощи которых записываются данные в PHY.
Dron_Gus
U-boot на пинги не отвечает, если что. только пинговать умеет.
PavelG
Разобрался, я не устанавливал маску сети. Сейчас пытаюсь загрузить U-boot из NAND.
am1808
Цитата(Славка @ Nov 7 2011, 10:45) *
Проблема с перезагрузкой решена! Так как у меня на борту стоит 16Мб ОЗУ, а entrypoint u-boot установлен по умолчанию с отступом от начала на 16 Мб, чтобы linux мог развернуться. Так вот u-boot у меня писался в область памяти, где разворачивается linux + 16 Мб (старший адресс у меня на памяти не заведен вообще). Тоесть вроде все работало нечайно)) Когда исправил entry point u-boot, все заработало с пол пинка. Осталось сделать файловую систему для линукса, что в принципе не сложно, опыт есть. Но сейчас приходится заниматься старым проектом, исправлением глюков, потому откладывается на неопределенный срок.

Грузите сразу uboot без ubl.
1. Открываете инструкцию UserGuide (в папке docs SDK). Ищете инструкцию по компиляции u-boot. Компилируете.
2. Берете файл u-boot (без расширения, это ELF файл. не u-boot.bin). Запускаете AisGen.
3. В AisGen внимательно по даташиту и вашей схеме настраиваете все что у вас используется на плате (bootmode, кварц, память, PINMUX, PSC...) и генерируете AIS.
4. Грузите через UARTHOST ais файл.
5. Радуетесь biggrin.gif

Как подпилить u-boot - отдельная песня. Все зависит от того, насколько ваша плата отличается от кита. Спросите что конкретно подкрутить - я подскажу в каком месте в исходниках это делается.


вечер добрый!

сейчас у меня имеется аналогичная проблема с запуском u-boot. процессор AM1705

после минимальной конфигурации UBL ( http://processors.wiki.ti.com/index.php/Se...y_for_OMAP-L137 ) UBL запустил; плюс, проверил по минимуму SPI и NAND (простая запсиь и чтение с флешек) и проверил оперативную память, все проверял из UBL путем своих тестовых функций. все вроде работает. естественно, UBL компилировал в CCS + AISgen со всей конфигурацией, кроме EMIA.

но вот с запуском u-boot большие проблемы.
пытаюсь запустить u-boot без UBL, (вместе с UBL пока прошить в SPI не удалось).

проблема с u-boot связана вот с чем, скорее всего что-то с терминалом не то, ввиду того, что, прикрутив функционал UART от UBL к u-boot (для хоть какого то вывода на терминал), функции UARTA из UBL работают в u-boot, вижу, что юбут грузится и точно доходит до функции board_init() ! с помощью этого мне удалось выяснить, что сам u-boot падает на своей конфигурации UART.

кто может что подсказать по этому поводу?
от референса моя плата практически не отличается. для загрузки использую UART2

в исходниках юбута изменил только размер оперативной памяти, подредактировал pinmux da830.c
aaarrr
Цитата(am1808 @ Dec 6 2011, 22:11) *
с помощью этого мне удалось выяснить, что сам u-boot падает на своей конфигурации UART.

Как проявляется это падение?

u-boot может некорректно настраивать делитель при начальной загрузке через UART.
Чтобы это исправить, измените файл ns16550.c:
Код
void NS16550_init (NS16550_t com_port, int baud_divisor)
{
    ...
#if defined(CONFIG_SOC_DA8XX)
    com_port->regD = 0;    /* 16x over-sampling */
#endif /* CONFIG_SOC_DA8XX */
}

am1808
Цитата(aaarrr @ Dec 7 2011, 00:42) *
Как проявляется это падение?

u-boot может некорректно настраивать делитель при начальной загрузке через UART.
Чтобы это исправить, измените файл ns16550.c:
Код
void NS16550_init (NS16550_t com_port, int baud_divisor)
{
    ...
#if defined(CONFIG_SOC_DA8XX)
    com_port->regD = 0;    /* 16x over-sampling */
#endif /* CONFIG_SOC_DA8XX */
}


спасибо.
утром попробую и отпишусь.
прояявляется это зависанием, терминал зависает. еще очень часто бывает так, что при нажатии Enter вводится или отображается символ '='

сейчас у меня так

CODE
void NS16550_init (NS16550_t com_port, int baud_divisor)
{
com_port->ier = 0x00;
#if defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)
com_port->mdr1 = 0x7; /* mode select reset TL16C750*/
#endif
com_port->lcr = UART_LCR_BKSE | UART_LCRVAL;
com_port->dll = 0;
com_port->dlm = 0;
com_port->lcr = UART_LCRVAL;
com_port->mcr = UART_MCRVAL;
com_port->fcr = UART_FCRVAL;
com_port->lcr = UART_LCR_BKSE | UART_LCRVAL;
com_port->dll = baud_divisor & 0xff;
com_port->dlm = (baud_divisor >> 8) & 0xff;
com_port->lcr = UART_LCRVAL;
#if defined(CONFIG_OMAP) && !defined(CONFIG_OMAP3_ZOOM2)
#if defined(CONFIG_APTIX)
com_port->mdr1 = 3; /* /13 mode so Aptix 6MHz can hit 115200 */
#else
com_port->mdr1 = 0; /* /16 is proper to hit 115200 with 48MHz */
#endif
#endif /* CONFIG_OMAP */
}
aaarrr
Цитата(am1808 @ Dec 7 2011, 01:06) *
прояявляется это зависанием, терминал зависает. еще очень часто бывает так, что при нажатии Enter вводится или отображается символ '='

Тогда почти наверняка оно - из-за неправильного делителя в терминал передается груда мусора, вот он и зависает.
am1808
Цитата(aaarrr @ Dec 7 2011, 01:16) *
Тогда почти наверняка оно - из-за неправильного делителя в терминал передается груда мусора, вот он и зависает.

хорошо, спасибо.
утром отпишуcь.

а что за регистр такой com_port->regD = 0; ?
это с mdr как то связано?
aaarrr
Цитата(am1808 @ Dec 7 2011, 01:23) *
а что за регистр такой com_port->regD = 0; ?
это с mdr как то связано?

Это он и есть. Просто ROM-загрузчик при инициализации UART может выставить OSM_SEL в '1', а u-boot об этом не знает.
am1808
Цитата(aaarrr @ Dec 7 2011, 01:31) *
Это он и есть. Просто ROM-загрузчик при инициализации UART может выставить OSM_SEL в '1', а u-boot об этом не знает.

aaarrr, спасибо преогромное, проблема с UART решилась beer.gif, u-boot загрузил 08.gif
PavelG
Как всегда новый этап и новая проблема smile3046.gif
Пытаюсь загрузить U-boot в NAND. Закачиваю подготовленный в AISgen бинарник для NAND8, дальше делаю так:
Код
U-Boot > tftpboot 0xc0700000 u-boot_nand.bin
  
  TFTP from server 10.0.0.2; our IP address is 10.0.0.1
  Filename 'u-boot_nand.bin'.
  Load address: 0xc0700000
  Loading: ##########
  done
  Bytes transferred = 154432 (25b40 hex)  

U-Boot > nand erase

  NAND erase: device 0 whole chip
  OK

U-Boot > nand write 0xc0700000 0x20000 0x30000
...
OK
U-Boot >

Дальше выключаю питание переключаю на загрузку из NAND, включаю питание и тишина. Судя по току, ничего даже не пыталось загрузится. В терминале тоже тихо. Подскажите, с чем это может быть связанно?
am1808
вечер добрый!
образовалась проблема с ethernet в u-boot.
используемая микросхема PHY KSZ8893MQL/MBL, схема подключения к AM1705 изменена по минимуму, не использую eeprom для хранения ethaddr и KSZ8893MQL/MBL соединена с процессором по i2c1, в отличии от референсной платы, где она висела на i2c0.
в юбуте настроил i2c1, поправил частоту шины i2c1, запись/чтение работают.

ethernet вроде бы поднимается после старта юбута, dhcp отрабатывает.
проблема в том, что пинги на любой хост в сети идут нестабильно, через раз пинг есть, и если заново сделать пинг на тот же хост, то юбут говорит, что хост уже недоступен. а на третий раз опять пинг есть и т.д. т.е. как то через раз ethernet в юбуте работает.

и не понятно, куда копать, что поправить?? кто нибудь сталкивался с подобной проблемой?

и да, при попытки через tftp загрузить ядро, то юбут грузит их кусками, один кусок uImage нормально загрузит в память, следующий уже не может, потом опять кусок загрузит и опять следующий уже не может загрузить. явно что то с ethernetом в юбуте что то не то, а куда копать - совершенно не понятно?


aaarrr
Цитата(PavelG @ Dec 7 2011, 21:01) *
Дальше выключаю питание переключаю на загрузку из NAND, включаю питание и тишина. Судя по току, ничего даже не пыталось загрузится. В терминале тоже тихо. Подскажите, с чем это может быть связанно?

Наверное, стоит еще прочитать и сравнить данные из NAND средствами u-boot. Ну и осциллографом смотреть старт, если с данными все в порядке.
am1808
Цитата(PavelG @ Dec 7 2011, 21:01) *
Как всегда новый этап и новая проблема smile3046.gif
Пытаюсь загрузить U-boot в NAND. Закачиваю подготовленный в AISgen бинарник для NAND8, дальше делаю так:
Дальше выключаю питание переключаю на загрузку из NAND, включаю питание и тишина. Судя по току, ничего даже не пыталось загрузится. В терминале тоже тихо. Подскажите, с чем это может быть связанно?


А чего вы взяли, что с нанда вы загрузитесь на am1705?
какая nand flash у вас?
PavelG
Цитата(am1808 @ Dec 7 2011, 20:05) *
А чего вы взяли, что с нанда вы загрузитесь на am1705?


Прочитав мануалы.

Цитата(am1808 @ Dec 7 2011, 20:05) *
какая nand flash у вас?

От Samsung'а 32 Мбитная.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.