|
|
  |
AM1705 первый запуск, UBL, UART |
|
|
|
Oct 12 2011, 10:05
|
Участник

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

|
Добрый день! Пытаюсь запустить 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 выдавать может.
Сообщение отредактировал Славка - Oct 12 2011, 10:09
|
|
|
|
|
Oct 12 2011, 11:09
|
Участник

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

|
Цитата(Славка @ Oct 12 2011, 14:05)  Добрый день! Пытаюсь запустить AM1705 уже который день. ... sfh_OMAP-L137.exe -v -p COM1 -targetType AM1707 -erase -flashType SPI_MEM А может все дело в том, что в команде Вы указали другой процессор (AM1707 вместо AM1705)?
|
|
|
|
|
Oct 12 2011, 11:28
|
Участник

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

|
Цитата(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Все это мои домыслы и чтение форумов. Как оно на самом деле я не знаю, так как процессор до сих пор не запущен.
|
|
|
|
|
Oct 13 2011, 05:04
|
Участник

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

|
Цитата(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МГц)
|
|
|
|
|
Oct 17 2011, 11:12
|
Участник

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

|
Добрый день всем! Решил проблему. Застревал процессор по непонятным причинам. Очень много над ним издевался и эксперементировал. Плата не выдержала мучений (дорожки начали отваливаться от множества перепаек). Решил спаять новую, с новыми деталями, все по минимуму - проц, питание, разъем uart и кварц. UBL запустился сразу, без ошибок. Решил конвертнуть в AIS uboot. Пришлось немного пошаманить с кодом (у меня UART0 вместо UART2, другая память, другой кварц). Uboot благополучно запустился через UART. Чему я несказанно рад. Вопрос в следущем. Процессор очень прилично греется, через минуту-две палец на нем не удержать. Так и должно быть после загрузки uboot?
|
|
|
|
|
Oct 17 2011, 12:19
|
Участник

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

|
Была ошибка в схеме. Теперь проц холодный, всем спасибо!
|
|
|
|
|
Oct 18 2011, 11:24
|
Участник

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

|
Можно попросить Вас прислать мне принципиальную схему включения процессора (из минимального набора) на почту J.Joker_podpole@mail.ru (Для личных сообщений я пока еще рейтингом не вышел). У меня похоже тоже проблема в схеме зарыта, но найти пока не удаеться.
|
|
|
|
|
Oct 21 2011, 12:51
|
Участник

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

|
Цитата(PavelG @ Oct 18 2011, 15:24)  Можно попросить Вас прислать мне принципиальную схему включения процессора (из минимального набора) на почту J.Joker_podpole@mail.ru (Для личных сообщений я пока еще рейтингом не вышел). У меня похоже тоже проблема в схеме зарыта, но найти пока не удаеться. Выслал. Первая плата не запускалась из-за спаленной микросхемы phy. Почему уровни на выводах RMII интерфейса влияют на старт PLL одному TI известно. Когда начал дальше собирать плату опять спалил phy (ошибка в схеме) и опять нихрена не грузилось. Отпаял физику заработало. Исправил ошибку, припаял новую физику, все заработало. Никогда не используйте 1.8В от micrel KSZ8041TL под свои нужды) Наш разводчик решил сэкономить. Имея отдельный источник 1.8В, он завел микреловский на развязывающий транс. Влом было дорожку протянуть, ну а я проглядел
|
|
|
|
|
Oct 21 2011, 16:20
|
Участник

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

|
Цитата(Славка @ Oct 21 2011, 16:51)  Выслал. Первая плата не запускалась из-за спаленной микросхемы phy. Почему уровни на выводах RMII интерфейса влияют на старт PLL одному TI известно. Когда начал дальше собирать плату опять спалил phy (ошибка в схеме) и опять нихрена не грузилось. Отпаял физику заработало. Исправил ошибку, припаял новую физику, все заработало. Никогда не используйте 1.8В от micrel KSZ8041TL под свои нужды) Наш разводчик решил сэкономить. Имея отдельный источник 1.8В, он завел микреловский на развязывающий транс. Влом было дорожку протянуть, ну а я проглядел  Спасибо Вам, Вячеслав. Оказалось, что проблема была в том, что вывод TRST я подтянул к питанию, а не к земле, хотя делал все исходя из описания POR и Warm Reset. Теперь буду пытаться прошить UBL и u-boot.
|
|
|
|
|
Oct 21 2011, 20:59
|
Участник

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

|
Цитата(PavelG @ Oct 21 2011, 20:20)  Спасибо Вам, Вячеслав. Оказалось, что проблема была в том, что вывод TRST я подтянул к питанию, а не к земле, хотя делал все исходя из описания POR и Warm Reset. Теперь буду пытаться прошить UBL и u-boot. Да пожалуйста! TRST внутренне подтянут к земле, и в принципе без внешнего резистора все прекрасно работает. Но где-то на ti.wiki нашел, что желательно его подтянуть внешним резстором. Если будут вопросы спрашивайте здесь, а не через почту. В интернете так мало информации по этим процессорам, тем более на русском. Из-за этого я потратил уйму времени, чтоб его запустить. Думаю, пока это один из моих текущих прожектов на работе, и все в памяти, смогу помочь.
|
|
|
|
|
Oct 28 2011, 12:54
|
Участник

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

|
Добрый день! Добрался я до загрузки 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 Когда гружу u-boot через uart, а потом linux через tftp, то в том месте проц тупо виснет. С spi перезагружается. Чтобы я не делал, с какими опциями не компилировал ядро. Пробовал отключать в ядре все драйверы, что я не использую (I2C, NAND, Sound Card, Multimedia, RTC, MMC) Безрезультатно. Может кто-нибудь посоветует, куда смотреть? Ядро: Davinci linux-03.20.00.14 С готовым образом uImage из сборки поведение абсолютно такое же - перезагрузка.
Сообщение отредактировал Славка - Oct 28 2011, 13:24
|
|
|
|
|
Nov 2 2011, 13:21
|
Участник

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

|
Цитата(Славка @ 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.
|
|
|
|
|
Nov 7 2011, 06:45
|
Участник

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

|
Проблема с перезагрузкой решена! Так как у меня на борту стоит 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. Радуетесь Как подпилить u-boot - отдельная песня. Все зависит от того, насколько ваша плата отличается от кита. Спросите что конкретно подкрутить - я подскажу в каком месте в исходниках это делается.
|
|
|
|
|
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, или еще где-то надо вставлять строчки. Где можно посмотреть список разрешенных комманд для этого раздела и их параметры?
|
|
|
|
|
Nov 17 2011, 11:36
|
Участник

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

|
По поводу первого пункта. Собрал U-boot с SPI flash вместо NAND, и все благополучно запустилось. Есть подозрение на косяк в исходник связанных c NAND.
|
|
|
|
|
Nov 22 2011, 10:40
|
Участник

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

|
С NAND разобрался. В конфигах прописанно, что NAND подключаеться к выводу CS3, а в моем случае она подключена к CS2. Поменять порт я поменял, а вот регистр поменять на CE2 забыл, потому с NAND U-boot у меня и не запускался.
|
|
|
|
|
Nov 24 2011, 15:24
|
Участник

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

|
Пытаюсь запустить связку AM1705 и LAN8710 в режиме RMII. U-boot чип не видит, тактовый сигнал на MDC ножке чипа присутсвует, и что-то передаеться на ножку MDIO при чем постоянно (после запуска U-boot, сигналы смотрел осциллографом). Распаяку чипа проверял, все на месте. Подскажите, где может быть проблема? Мне кажеться, что в исходниках отсутсвует описание протоколов общения с данным PHY, но где их искать не знаю.
Сообщение отредактировал PavelG - Nov 24 2011, 15:25
|
|
|
|
|
Nov 30 2011, 13:40
|
Участник

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

|
Проблема оказалась в том, что в исходниках U-boot'а были выстроены настроеки на получение внешнего тактовго сигнала в 50 МГц. Поправил регистр pinmux[9] и чип нашелся, но теперь не получаеться пинговаться. Проверял снифером пакет запроса МАС адреса приходит на ПК, тот отвечает, но плата почему-то не принимает данных.
|
|
|
|
|
Dec 2 2011, 05:35
|
Участник

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

|
Цитата(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 может помогут чем-то. Кстати, спешу сообщить, что линукс успешно запущен, сделали на днях файловую систему. Все прекрасно работает, чему я несказанно рад. Теперь делаем уже приложение под линукс.
|
|
|
|
|
Dec 2 2011, 14:37
|
Участник

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

|
Цитата(Славка @ 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.
Сообщение отредактировал PavelG - Dec 2 2011, 14:39
|
|
|
|
|
Dec 6 2011, 16:07
|
Участник

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

|
Разобрался, я не устанавливал маску сети. Сейчас пытаюсь загрузить U-boot из NAND.
|
|
|
|
|
Dec 6 2011, 18:11
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(Славка @ 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. Радуетесь Как подпилить 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
Сообщение отредактировал am1808 - Dec 6 2011, 18:13
|
|
|
|
|
Dec 6 2011, 20:42
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(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 */ }
|
|
|
|
|
Dec 6 2011, 21:06
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(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 */ }
Сообщение отредактировал am1808 - Dec 6 2011, 21:10
|
|
|
|
|
Dec 6 2011, 21:23
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(aaarrr @ Dec 7 2011, 01:16)  Тогда почти наверняка оно - из-за неправильного делителя в терминал передается груда мусора, вот он и зависает. хорошо, спасибо. утром отпишуcь. а что за регистр такой com_port->regD = 0; ? это с mdr как то связано?
|
|
|
|
|
Dec 7 2011, 13:35
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

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

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

|
Как всегда новый этап и новая проблема Пытаюсь загрузить 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, включаю питание и тишина. Судя по току, ничего даже не пыталось загрузится. В терминале тоже тихо. Подскажите, с чем это может быть связанно?
|
|
|
|
|
Dec 7 2011, 17:02
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
вечер добрый! образовалась проблема с ethernet в u-boot. используемая микросхема PHY KSZ8893MQL/MBL, схема подключения к AM1705 изменена по минимуму, не использую eeprom для хранения ethaddr и KSZ8893MQL/MBL соединена с процессором по i2c1, в отличии от референсной платы, где она висела на i2c0. в юбуте настроил i2c1, поправил частоту шины i2c1, запись/чтение работают.
ethernet вроде бы поднимается после старта юбута, dhcp отрабатывает. проблема в том, что пинги на любой хост в сети идут нестабильно, через раз пинг есть, и если заново сделать пинг на тот же хост, то юбут говорит, что хост уже недоступен. а на третий раз опять пинг есть и т.д. т.е. как то через раз ethernet в юбуте работает.
и не понятно, куда копать, что поправить?? кто нибудь сталкивался с подобной проблемой?
и да, при попытки через tftp загрузить ядро, то юбут грузит их кусками, один кусок uImage нормально загрузит в память, следующий уже не может, потом опять кусок загрузит и опять следующий уже не может загрузить. явно что то с ethernetом в юбуте что то не то, а куда копать - совершенно не понятно?
|
|
|
|
|
Dec 7 2011, 17:05
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(PavelG @ Dec 7 2011, 21:01)  Как всегда новый этап и новая проблема Пытаюсь загрузить U-boot в NAND. Закачиваю подготовленный в AISgen бинарник для NAND8, дальше делаю так: Дальше выключаю питание переключаю на загрузку из NAND, включаю питание и тишина. Судя по току, ничего даже не пыталось загрузится. В терминале тоже тихо. Подскажите, с чем это может быть связанно? А чего вы взяли, что с нанда вы загрузитесь на am1705? какая nand flash у вас?
|
|
|
|
|
Dec 7 2011, 17:13
|
Участник

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

|
Цитата(am1808 @ Dec 7 2011, 20:05)  А чего вы взяли, что с нанда вы загрузитесь на am1705? Прочитав мануалы. Цитата(am1808 @ Dec 7 2011, 20:05)  какая nand flash у вас? От Samsung'а 32 Мбитная.
|
|
|
|
|
Dec 7 2011, 17:15
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(PavelG @ Dec 7 2011, 21:13)  Прочитав мануалы. сама нанд флеш позволяет бутиться с нее?
|
|
|
|
|
Dec 7 2011, 17:25
|
Участник

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

|
Цитата(am1808 @ Dec 7 2011, 20:15)  сама нанд флеш позволяет бутиться с нее? А вот этот вопрос интересный... а разве не процессор инициализирует загрузку из Flash памяти? По крайней мере в описание на Flash я ничего подобного не читал, но есть документ от fresscale, где они как раз рассказывают про загрузку boot'a из этой флешки. Даже в документе от TI про Bootloader, где рассказывается про NAND, таких подробностей не указывается.
Сообщение отредактировал PavelG - Dec 7 2011, 17:28
|
|
|
|
|
Dec 7 2011, 17:37
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(PavelG @ Dec 7 2011, 21:25)  А вот этот вопрос интересный... а разве не процессор инициализирует загрузку из Flash памяти? не каждая nand flash позволяет грузиться с нее. по поводу вашей флешки и возможности грузиться с нее задайте вопрос на TI форуме
|
|
|
|
|
Dec 7 2011, 17:57
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(am1808 @ Dec 7 2011, 21:37)  не каждая nand flash позволяет грузиться с нее. Как то с ног на голову формулировка поставлена. Flash все равно, она и знать не знает, грузятся с нее, или еще что. Другое дело, что bootloader процессора может не дружить с конкретной флеш, если она не ONFI-совместимая. Для такого случая в документации на загрузчик есть список поддерживаемых кристаллов. Цитата(PavelG @ Dec 7 2011, 21:13)  От Samsung'а 32 Мбитная. 32 мегабита - это что-то ой как мало, ничего не путаете?
|
|
|
|
|
Dec 8 2011, 15:39
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(am1808 @ Dec 7 2011, 21:02)  вечер добрый! образовалась проблема с ethernet в u-boot. используемая микросхема PHY KSZ8893MQL/MBL, схема подключения к AM1705 изменена по минимуму, не использую eeprom для хранения ethaddr и KSZ8893MQL/MBL соединена с процессором по i2c1, в отличии от референсной платы, где она висела на i2c0. в юбуте настроил i2c1, поправил частоту шины i2c1, запись/чтение работают.
ethernet вроде бы поднимается после старта юбута, dhcp отрабатывает. проблема в том, что пинги на любой хост в сети идут нестабильно, через раз пинг есть, и если заново сделать пинг на тот же хост, то юбут говорит, что хост уже недоступен. а на третий раз опять пинг есть и т.д. т.е. как то через раз ethernet в юбуте работает.
и не понятно, куда копать, что поправить?? кто нибудь сталкивался с подобной проблемой?
и да, при попытки через tftp загрузить ядро, то юбут грузит их кусками, один кусок uImage нормально загрузит в память, следующий уже не может, потом опять кусок загрузит и опять следующий уже не может загрузить. явно что то с ethernetом в юбуте что то не то, а куда копать - совершенно не понятно? up
|
|
|
|
|
Dec 8 2011, 16:53
|
Группа: Новичок
Сообщений: 2
Регистрация: 8-12-11
Пользователь №: 68 749

|
Цитата(aaarrr @ Dec 7 2011, 21:57)  Как то с ног на голову формулировка поставлена. Flash все равно, она и знать не знает, грузятся с нее, или еще что. Другое дело, что bootloader процессора может не дружить с конкретной флеш, если она не ONFI-совместимая. Для такого случая в документации на загрузчик есть список поддерживаемых кристаллов. при загрузке с nand дело не в знании бута о том, какая флэш и что на ней, а в настройках соответствующего emiX контролера, который со стартовыми параметрами (подставленными по умолчанию) сможет обеспечить процессору доступ в nand память. а вот про список собственно правильно для AM1705 такими флэшками могут быть перечисленные в http://focus.ti.com/lit/an/spraba4b/spraba4b.pdf (Apendix B )
Сообщение отредактировал osipovvo - Dec 8 2011, 16:54
|
|
|
|
|
Dec 9 2011, 13:23
|
Участник

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

|
Цитата(am1808 @ Dec 7 2011, 20:02)  вечер добрый! образовалась проблема с ethernet в u-boot. используемая микросхема PHY KSZ8893MQL/MBL, схема подключения к AM1705 изменена по минимуму, не использую eeprom для хранения ethaddr и KSZ8893MQL/MBL соединена с процессором по i2c1, в отличии от референсной платы, где она висела на i2c0. в юбуте настроил i2c1, поправил частоту шины i2c1, запись/чтение работают.
ethernet вроде бы поднимается после старта юбута, dhcp отрабатывает. проблема в том, что пинги на любой хост в сети идут нестабильно, через раз пинг есть, и если заново сделать пинг на тот же хост, то юбут говорит, что хост уже недоступен. а на третий раз опять пинг есть и т.д. т.е. как то через раз ethernet в юбуте работает.
и не понятно, куда копать, что поправить?? кто нибудь сталкивался с подобной проблемой?
и да, при попытки через tftp загрузить ядро, то юбут грузит их кусками, один кусок uImage нормально загрузит в память, следующий уже не может, потом опять кусок загрузит и опять следующий уже не может загрузить. явно что то с ethernetом в юбуте что то не то, а куда копать - совершенно не понятно? Проверьте частоту. Для RMII должна быть точно 50 МГц. Проверьте провод, и попробуйте поработать на скорости 10. Цитата(aaarrr @ Dec 7 2011, 20:57)  Как то с ног на голову формулировка поставлена. Flash все равно, она и знать не знает, грузятся с нее, или еще что. Другое дело, что bootloader процессора может не дружить с конкретной флеш, если она не ONFI-совместимая. Для такого случая в документации на загрузчик есть список поддерживаемых кристаллов.
32 мегабита - это что-то ой как мало, ничего не путаете? Да, Вы правы, 32 Мбайта. Сравнивал с табличкой, должна поддерживаться. И размер страницы меньше 4К. Выяснилось, что во флешку ничего не пишится. Разбираюсь.
Сообщение отредактировал PavelG - Dec 9 2011, 13:35
|
|
|
|
|
Dec 10 2011, 20:05
|
Группа: Новичок
Сообщений: 2
Регистрация: 8-12-11
Пользователь №: 68 749

|
Цитата(PavelG @ Dec 9 2011, 17:23)  Выяснилось, что во флешку ничего не пишится. Разбираюсь. ну тут варианта, как правило, 3и: - сигналы ALE/CLE/CS (для первых двух надо правильно указать адрес, для последнего сконфигурить рег) - еще есть рег в котором выбирается тип флэша и ширина шины (кажется 1 битом в нужный тип) - это где-то в настройках контроллера emi - ошибки в реализации CFI. Дело в том, каким бы CFI общим не был - у каждой флэхи все равно есть отличия Цитата(osipovvo @ Dec 10 2011, 23:39)  ну тут варианта, как правило, 3и о них собственно тут :
AM1705_EMIF_A.zip ( 312.57 килобайт )
Кол-во скачиваний: 185
|
|
|
|
|
Dec 10 2011, 20:59
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(PavelG @ Dec 9 2011, 17:23)  Да, Вы правы, 32 Мбайта. Сравнивал с табличкой, должна поддерживаться. И размер страницы меньше 4К. Выяснилось, что во флешку ничего не пишится. Разбираюсь. еще траблы возникнуть могут с правильным размаппиванием nand, лучше сравнить в исходниках структуру конкретной флеш с даташитом да, еще на офиц. сайте TI на AM1705 обновились доки, можно там скачать полноценный даташит на AM1705, с полным описанием регов и периферии
Сообщение отредактировал am1808 - Dec 11 2011, 17:14
|
|
|
|
|
Dec 12 2011, 19:44
|
Участник

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

|
Пока искал где в U-boot'е инициализируются регистры для асинхронной памяти возник вопрос. В исходниках нашел два варианта, на память с размером страницы 2кбита и 4кбита, у меня же страница в 512 бит, может ли быть проблема в этом?
PS При выборе команды nand info, U-boot выводит, что подключена память с размером 32 Mib, напряжение 3,3В, 16k сектор. Так как все это определяется считыванием из флеша, как я понял, то получается проблема именно в работе с областью памяти где хранятся данные, а не с настройками регистров EMIFA?
|
|
|
|
|
Dec 23 2011, 18:57
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
приветствую всех! у кого нибудь была проблема с запуском ядра без использования ubl? я гружу ядро через rs232 по протоколу kermit загрузка ядра и декомпрессия проходят удачно и после передачи управления ядра больше ничего не вижу. процессор AM1705, использую UART2 о своей проблеме написал на http://e2e.ti.com/support/embedded/linux/f...579.aspx#560785подскажите пожалуйста куда копать и в чем может быть проблема?
|
|
|
|
|
Dec 23 2011, 19:25
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(aaarrr @ Dec 23 2011, 23:20)  IDs, как я понимаю, неоднократно проверяли. А с памятью точно все в порядке? да, id проверил и на стороне юбута, и на стороне ядра, по крайней мере юбут передает ядру верный machid и при конфиге ядра такой же machid статически выставляется в исходниках. с паматью, хм, вот тут не могу однозначно сказать. юбут там работает, ядро тоже туда гружу, iminfo из юбута выдает правильную информацию, которую он берет из образа ядра, которое я загрузил в оперативку. поэтому, делаю вывод, что вроде память как нормально работает и нормально сконфигурирована в AISgene
|
|
|
|
|
Dec 23 2011, 19:45
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(aaarrr @ Dec 23 2011, 23:36)  Ну, чтобы быть уверенным, нужно бы ее всю проверить. А то вдруг реально работает 1/4 часть, например? Загрузить uboot и ядро хватит, а вот при распаковке все и упадет. протестировал записью определенного числа так, что бы в цикле поочередно каждая адресная ножка поднималась. потом считывал записанное число и оно было равно всегда тому значению, которое записал. делал это из юбута путем добавления своей тестируемой функцией, ошибок не было. как еще можно проверить полностью память? Цитата(am1808 @ Dec 23 2011, 23:43)  протестировал записью определенного числа так, что бы в цикле поочередно каждая адресная ножка поднималась. потом считывал записанное число и оно было равно всегда тому значению, которое записал. делал это из юбута путем добавления своей тестируемой функцией, ошибок не было.
как еще можно проверить полностью память? протестирую каждую ячейку памяти sdram. если предположить, что с оперативкой все в порядке, куда можно еще смотреть, куда копать?
|
|
|
|
|
Dec 23 2011, 22:39
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 23 2011, 22:57)  загрузка ядра и декомпрессия проходят удачно и после передачи управления ядра больше ничего не вижу. 1 Включите в ядре поддержку early printk и смотрите лог загрузки. (Kernel hacking --->[*] Kernel debugging) - если есть поддержка early printk для этого процессора проблему с ID вы сразу обнаружите если она есть. 2 Проверьте - включена ли поддержка консоли для последовательного порта 3 Проверьте - в какой порт по умолчанию в ядре сконфигуирован вывод консоли. 4 память можно протестировать в u-boot - там есть простейший mtest. К сожалению точные указания не могу дать по ядру - у TI они кастомные для каждого процессора.
Сообщение отредактировал sasamy - Dec 23 2011, 22:46
|
|
|
|
|
Dec 24 2011, 08:17
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 24 2011, 02:39)  1 Включите в ядре поддержку early printk и смотрите лог загрузки. (Kernel hacking --->[*] Kernel debugging) - если есть поддержка early printk для этого процессора проблему с ID вы сразу обнаружите если она есть. 2 Проверьте - включена ли поддержка консоли для последовательного порта 3 Проверьте - в какой порт по умолчанию в ядре сконфигуирован вывод консоли. 4 память можно протестировать в u-boot - там есть простейший mtest. К сожалению точные указания не могу дать по ядру - у TI они кастомные для каждого процессора.
спасибо. пункты 1,3,4 я проделывал, не помогло. на счет поддержки консоли - попробую еще раз посмотреть, хотя по дефолту скорее всего с этим в порядке еще вот можно как нибудь сделать, чтобы буффер консоли как можно раньше вывалился на последовательный порт? если говорить про то, что ядро просто падает до инициализации консоли в ядре
|
|
|
|
|
Dec 24 2011, 08:41
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 24 2011, 12:22)  Вы лучше лог загрузки от начала и до остановки покажите и выложите свой конфиг ядра. Еще я не помню - это не у вас 16М вместо 64M EVM распаяно ? при распаковке ядро может банально само себя затереть если имидж неправильно в RAM разместить. нет, у меня на борде 32 MB оперативки. конфиг ядра отличается только от дефолтного включением early_printk() и отключением NET я ядре для быстроты сборки и загрузки по терминалу ядра в плату (хотя и пробовал с поддержкой сети, результат тот же) вот лог U-Boot > loadb ## Ready for binary (kermit) download to 0xC0700000 at 115200 bps... ## Total Size = 0x0016c1f4 = 1491444 Bytes ## Start Addr = 0xC0700000 U-Boot > bootm ## Booting kernel from Legacy Image at c0700000 ... Image Name: Linux-2.6.33-rc4 Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1491380 Bytes = 1.4 MB Load Address: c0008000 Entry Point: c0008000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. еще хотел добавить, что я не использую ни initrd, ни rootfs. тот же самый юбут и это же ядро через UartBootHost гружу на EVM1707, ядро запускается, лог загрузки ядра вываливается на терминал. и для EVM1707 и для своей платы в параметре bootargs установлено mem=32M, хотя на EVM1707 фактически стоит 64 MB
Сообщение отредактировал am1808 - Dec 24 2011, 08:42
|
|
|
|
|
Dec 24 2011, 08:48
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 24 2011, 12:42)  Дайте прямой линк чтобы я мог скачать ваше ядро (или ссылку на сайт TI откуда скачивали). И какой там defconfig ? при первичной конфигурации вы там делали make ARCH=arm какой-то.defconfig могу выслать и исходный код ядра, и уже собранное ядро. да, конфигурирую ядро под определенную конфигурацию вот так: make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- clean make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- da830_omapl137_defconfig make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- menuconfig make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- uImage ядро: linux-03.20.00.12 из состава DaVinci-PSP-SDK-03.20.00.12, скаченного с офиц. сайта TI для AM1707
Сообщение отредактировал am1808 - Dec 24 2011, 09:29
|
|
|
|
|
Dec 24 2011, 12:11
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 24 2011, 16:01)  Скачал, посмотрел - с uart вроде все в порядке, из подозрительного - у вас сконфигурировано под am1707, у вас как я понял am1705 (нет LCD) а поддержка включена для LCD вместо NAND спасибо, да, я пробовал и с выбирать нанд вместо LCD, но это тоже не влияет
|
|
|
|
|
Dec 24 2011, 12:49
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 24 2011, 16:38)  Не пробовали отключать кеши ? это так - как жест отчаяния
нет, не пробовал. как то можно вывести буффер до start_kernel() и инициализации консоли?
|
|
|
|
|
Dec 24 2011, 13:12
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 24 2011, 16:49)  как то можно вывести буффер до start_kernel() и инициализации консоли? Поддержка вывода отладочной информации до инициализации консоли для davinci есть arch/arm/mach-davinci/include/mach/debug-macro.S так что ничего не мешает ее использовать, странно что вообще все молчит после распаковщика..
|
|
|
|
|
Dec 24 2011, 15:10
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 24 2011, 19:06)  Я забыл сказать - вы добавили в параметры загрузки ядра в u-boot ?
bootargs console=ttyS2,115200n8 earlyprintk нет, такой аргумент не добавлял. даже не знал, и нигде не написано про это
|
|
|
|
|
Dec 24 2011, 15:34
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 24 2011, 19:10)  даже не знал, и нигде не написано про это Да это я прошляпил - забыл сказать. Кстати напрямую в порт выводить символы есть ф-ции printascii, printch, printhex. Нпример в early_write Код static void early_write(const char *s, unsigned n) { while (n-- > 0) { if (*s == '\n') printch('\r'); printch(*s); s++; } } arch/arm/kernel/debug.S UPD Еще - чтобы проверить работоспособность earlyprintk можно намеренно неправильный MACH_ID передать из u-boot - если до загрузки ядра дело доходит и earlyprintk работает - должны увидеть как начальный загрузчик ядра заругается на неправильный MACH_ID. Вернее это даже раньше регистрации отладочной консоли сработает - через ф-ции printch пр. из arch/arm/kernel/debug.S
Сообщение отредактировал sasamy - Dec 24 2011, 16:06
|
|
|
|
|
Dec 24 2011, 16:30
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
sasamy, спасибо преогромное, как раз разбираю эти функции. machid я намеренно передам другой из u-boot, в нем же выставлю правильные параметры для early_printk(). результат к сожалению смогу сказать только в понедельник. скажите пожалуйста, до какого момента я могу использовать функции early_write(), printascii(), printch(), printhex()?
и еще такой момент, я не использую ubl, при портировании u-boot были проблемы с выводом на консоль с его стороны, связанные с неправильной работой UART, помогла запись 0 в регистр MDR UART ( 16× over-sampling ). в драйверах ядра этот регистр никак не используется. Как то можно предположить, что проблемы с ядром связаны с регистром UART MDR?
|
|
|
|
|
Dec 24 2011, 16:55
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 24 2011, 20:30)  скажите пожалуйста, до какого момента я могу использовать функции early_write(), printascii(), printch(), printhex()? Регистры периферии в kernel space всегда мапятся на определенные виртуальные адреса, в макросе проверяется, включен ли MMU Код .macro addruart, rx mrc p15, 0, \rx, c1, c0 tst \rx, #1 @ MMU enabled? moveq \rx, #0x01000000 @ physical base address movne \rx, #0xfe000000 @ virtual base так что до инита UART-ов в ядре должно все работать, а потом они уже в принципе и не нужны. Цитата запись 0 в регистр MDR UART ( 16Ч over-sampling ). в драйверах ядра этот регистр никак не используется. Как то можно предположить, что проблемы с ядром связаны с регистром UART MDR? До инита UART-ов порт остается с настройками кототрые сделаны в u-boot так что до этого момента все равно должно что-то валиться в порт нормально, а там видно будет - проверьте сначала как работает early printk.
Сообщение отредактировал sasamy - Dec 24 2011, 16:56
|
|
|
|
|
Dec 24 2011, 17:19
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 24 2011, 21:01)  в понедельник проверю и отпишусь Есть еще один момент, начальный загрузчик может уходить в бесконечный цикл если включен вывод начальной отладки, в этих местах Код .macro waituart,rd,rx #ifdef FLOW_CONTROL 1001: ldr \rd, [\rx, #UART_MSR << UART_SHIFT] tst \rd, #UART_MSR_CTS beq 1001b #endif Код .macro busyuart,rd,rx 1002: ldr \rd, [\rx, #UART_LSR << UART_SHIFT] and \rd, \rd, #UART_LSR_TEMT | UART_LSR_THRE teq \rd, #UART_LSR_TEMT | UART_LSR_THRE bne 1002b .endm Так что имейте это ввиду. Например я бы вообще временно принудительно убрал управление потоком #undef FLOW_CONTROL
Сообщение отредактировал sasamy - Dec 24 2011, 17:51
|
|
|
|
|
Dec 24 2011, 18:33
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
ага, понял, спасибо.
а где лучше и рекомендательнее убрать FLOW_CONTROL ? и еще вот не совсем понятно, в файле arch/arm/boot/compressed/head.S есть по всей видимости отладка, которая спрятана под #ifdef DEBUG
никак не могу понять, где он определен, то ли через gcc передается, то ли где то статически забит или нет. мне нужно задефайнить DEBUG или же нет? и где это лучше сделать?
и еще вот такой вопрос, как то можно включить фичу при сборке ядра, чтобы посмотреть на исходный модуль(файл) после препроцессора, например, через опцию -E gcc?
|
|
|
|
|
Dec 24 2011, 20:50
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 24 2011, 22:33)  а где лучше и рекомендательнее убрать FLOW_CONTROL ? Прямо перед проверкой #undef FLOW_CONTROL #ifdef FLOW_CONTROL Цитата и еще вот такой вопрос, как то можно включить фичу при сборке ядра, чтобы посмотреть на исходный модуль(файл) после препроцессора, например, через опцию -E gcc? Для файлов С совсем просто, например для arch/arm/kernel/dma.с make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- arch/arm/kernel/dma.i Для ассемблера можно объектный файл дизассемблировать, например arm-none-linux-gnueabi-objdump -d arch/arm/kernel/debug.o
|
|
|
|
|
Dec 24 2011, 21:30
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 25 2011, 00:50)  Прямо перед проверкой
#undef FLOW_CONTROL #ifdef FLOW_CONTROL ясно, так и сделал. я к чему спросил, потому что вдруг какой то модуль тоже максрос этот подцепляет Цитата(sasamy @ Dec 25 2011, 00:50)  Для файлов С совсем просто, например для arch/arm/kernel/dma.с make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- arch/arm/kernel/dma.i
Для ассемблера можно объектный файл дизассемблировать, например arm-none-linux-gnueabi-objdump -d arch/arm/kernel/debug.o ага, ясно. я так понимаю, в первом случае для целей с расширением i выполняется какая то шаблонная цель для препроцессинга? еще раз спасибо большое!
|
|
|
|
|
Dec 24 2011, 21:49
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 25 2011, 01:30)  я так понимаю, в первом случае для целей с расширением i выполняется какая то шаблонная цель для препроцессинга? да - это такая отладочная "фича" в ядре, то же самое можно сделать чтобы посмотреть что сгенерировал компилятор make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- arch/arm/kernel/compat.s
|
|
|
|
|
Dec 26 2011, 14:51
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
итак, earlyprintk выручило. ядро запускалось, и зависало вот где: Код U-Boot >
U-Boot > printenv
bootdelay=5
baudrate=115200
bootfile="uImage"
ethaddr=00:16:76:4e:64:da
bootcmd=bootm 0xC0700000
bootargs=console=ttyS2,115200n8 earlyprintk mem=32M
stdin=serial
stdout=serial
stderr=serial
ver=U-Boot 2009.11 (Dec 09 2011 - 17:49:53)
Environment size: 234/16380 bytes
U-Boot > loadb
## Ready for binary (kermit) download to 0xC0700000 at 115200 bps...
## Total Size = 0x001eb588 = 2012552 Bytes
## Start Addr = 0xC0700000
U-Boot > bootm
## Booting kernel from Legacy Image at c0700000 ...
Image Name: Linux-2.6.33-rc4
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 2012488 Bytes = 1.9 MB
Load Address: c0008000
Entry Point: c0008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux... done, booting the kernel.
Linux version 2.6.33-rc4 (xxx@ubuntu) (gcc version 4.3.3 (Sourcery G++ Lite 20
09q1-203) ) #2 PREEMPT Fri Dec 23 16:24:34 MSK 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: DaVinci DA830/OMAP-L137/AM17xx EVM
Memory policy: ECC disabled, Data cache writethrough
DaVinci da830/omap-l137 rev2.0 variant 0x9
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttyS2,115200n8 earlyprintk mem=32M
bootconsole [earlycon0] enabled
PID hash table entries: 128 (order: -3, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 28268KB available (3736K code, 297K data, 140K init, 0K highmem)
SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Hierarchical RCU implementation.
NR_IRQS:245
Console: colour dummy device 80x30
Calibrating delay loop... в чем причина - не понятно, исследование кода касаемо этой проблемы ни к чему не привело. Но вот что интересно, скачал последнюю версию ядра с kernel.org собрал его с теми же опциями и все удачно! ну плюс тут я грузил ФС через NFS, но ФС не влияет ни на что(я о проблеме выше) вот лог: Код U-Boot > loadb
## Ready for binary (kermit) download to 0xC0700000 at 115200 bps...
## Total Size = 0x001b9f80 = 1810304 Bytes
## Start Addr = 0xC0700000
U-Boot > bootm
## Booting kernel from Legacy Image at c0700000 ...
Image Name: Linux-3.1.6
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1810240 Bytes = 1.7 MB
Load Address: c0008000
Entry Point: c0008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
mem.start: c0000000
mem.size: 2000000 bytes 32 MB
Starting kernel ...
debug: jump to c0008000 address
debug: start boot params address: c0000100
debug: data
debug: machID 1781
Uncompressing Linux... done, booting the kernel.
Linux version 3.1.6 (xxx@ubuntu) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-
203) ) #5 PREEMPT Mon Dec 26 15:22:34 MSK 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: DaVinci DA830/OMAP-L137/AM17x EVM
bootconsole [earlycon0] enabled
Memory policy: ECC disabled, Data cache writethrough
DaVinci da830/omap-l137 rev2.0 variant 0x9
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttyS2,115200n8 mem=32M noinitrd rw earlyprintk ip=1
92.168.2.144:192.168.2.87:192.168.0.1:255.255.240.0:uspd:eth0:bootp root=/dev/nf
s nfsroot=192.168.2.87:/home/xxx/Desktop/sdk_1_10_00_01/filesys,nolock
PID hash table entries: 128 (order: -3, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 28808k/28808k available, 3960k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xff000000 - 0xffe00000 ( 14 MB)
vmalloc : 0xc2800000 - 0xfea00000 ( 962 MB)
lowmem : 0xc0000000 - 0xc2000000 ( 32 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc032389c (3183 kB)
.init : 0xc0324000 - 0xc0346000 ( 136 kB)
.data : 0xc0346000 - 0xc0365e60 ( 128 kB)
.bss : 0xc0365e84 - 0xc038c24c ( 153 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Preemptible hierarchical RCU implementation.
NR_IRQS:245
Console: colour dummy device 80x30
Calibrating delay loop... 148.88 BogoMIPS (lpj=744448)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
DaVinci: 128 gpio irqs
print_constraints: dummy:
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
Switching to clocksource timer0_0
Switched to NOHz mode on CPU #0
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
msgmni has been set to 56
io scheduler noop registered (default)
start plist test
end plist test
Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a 16550A
serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a 16550A
serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a 16550A
console [ttyS2] enabled, bootconsole disabled
console [ttyS2] enabled, bootconsole disabled
brd: module loaded
davinci_mdio davinci_mdio.0: davinci mdio revision 1.5
davinci_mdio davinci_mdio.0: detected phy mask fffffff1
davinci_mdio.0: probed
davinci_mdio davinci_mdio.0: phy[1]: device 0:01, driver unknown
davinci_mdio davinci_mdio.0: phy[2]: device 0:02, driver unknown
davinci_mdio davinci_mdio.0: phy[3]: device 0:03, driver unknown
rtc-test rtc-test.0: rtc core: registered test as rtc0
rtc-test rtc-test.1: rtc core: registered test as rtc1
i2c /dev entries driver
cpuidle: using governor ladder
cpuidle: using governor menu
TCP cubic registered
NET: Registered protocol family 17
davinci_emac davinci_emac.1: using random MAC addr: 5e:8e:3f:87:58:15
console [netcon0] enabled
netconsole: network logging started
rtc-test rtc-test.0: setting system clock to 1970-01-01 00:00:02 UTC (2)
net eth0: no phy, defaulting to 100/full
IP-Config: Complete:
device=eth0, addr=192.168.2.144, mask=255.255.240.0, gw=192.168.0.1,
host=xxx, domain=, nis-domain=(none),
bootserver=192.168.2.87, rootserver=192.168.2.87, rootpath=
VFS: Mounted root (nfs filesystem) on device 0:12.
Freeing init memory: 136K в чем причина такого? и по каким причинам калибровка не происходит?
|
|
|
|
|
Dec 26 2011, 19:07
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата Calibrating delay loop... Скорей всего не работает системный таймер - прерывания не приходят от него, поэтому зацикливается. Цитата pr_info("Calibrating delay loop... "); while ((loops_per_jiffy <<= 1) != 0) { /* wait for "start of" clock tick */ ticks = jiffies; while (ticks == jiffies) /* nothing */; А вот почему не работает - это другой вопрос. Сравните инициализацию таймеров в старом и новом ядре, в старом она тут arch/arm/mach-davinci/time.c я не знаком с этим процессором, тут ничего не подскажу. Еще на рабочем ядре погоняйте на всякий случай мемтестер нормальный - то что в убуте не находит ошибок не дает 100% гарантии, там он слишком примитивный.
Сообщение отредактировал sasamy - Dec 26 2011, 19:17
|
|
|
|
|
Dec 26 2011, 19:17
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 26 2011, 23:07)  Еще на рабочем ядра погоняйте на всякий случай мемтестер нормальный - то что в убуте не находит ошибок не дает 100% гарантии, там он слишком примитивный. извиняюсь, не совсем понял, а как же еще ячейки памяти проверить? разве не запись числа/чтение его и сравнение с записывемым, в юбуте реализовано именно так. еще раз спасибо
Сообщение отредактировал am1808 - Dec 26 2011, 19:24
|
|
|
|
|
Dec 26 2011, 19:26
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(sasamy @ Dec 26 2011, 23:24)  Ядро у вас есть рабочее - запустите там memtester (есть например в составе buildroot), корневую в initramfs соберите, у меня какие смутные воспоминания остались что было такое из-за ошибок памяти, хотя я не уверен - для успокоения своего же потестируйте память  спасибо  , для 100% уверенности, свой тестер напишу
|
|
|
|
|
Dec 26 2011, 19:48
|
Гуру
     
Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448

|
Цитата(am1808 @ Dec 26 2011, 23:26)  спасибо  , для 100% уверенности, свой тестер напишу 100% получить затруднительно. Как минимум прогоните длительно псевдослучайную последовательность и проверьте ground bounce. Но и это не даст гарантии. Например, доработанный хавкборд замечательно проходит любые тесты памяти и работает под linux, но падает буквально за секунды под WinCE. В общем, если есть хоть малейшие подозрения на работу памяти - тестировать безжалостно. Потом будет меньше проблем "неясной этиологии".
|
|
|
|
|
Dec 26 2011, 19:58
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(am1808 @ Dec 26 2011, 23:26)  спасибо  , для 100% уверенности, свой тестер напишу Еще гденибуть перед этим циклом распечатайте содержимое регистров контроллера прерываний, он там как раз незадолго до этого инициализируется Цитата NR_IRQS:245
Console: colour dummy device 80x30
Calibrating delay loop... и проверьте - разрешено ли вообще прервание для таймера который там используется. UPD все же непонятно - если это ядро работает на почти таком же процессоре но на другой плате - как оно там не зависает... и тут как раз такой ключевой момент - ожидание первого тика от таймера - это помоему первое переключение контекста в системе после старта, попробуйте все же кеши отключить, и еще в меню есть такой грозный пункт  тоже можно попробовать отключить
Сообщение отредактировал sasamy - Dec 26 2011, 20:44
|
|
|
|
|
Dec 27 2011, 14:32
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
спасибо, завтра сравню регистры и конфиги для старого ядра. сегодня весь день провел за программированием ФС в нанд. все казалось бы делаю по инструкции, все вроде отрабатывает, а ядро при загрузке вот паникует и вываливает следующий лог: Код U-Boot > loadb
## Ready for binary (kermit) download to 0xC0700000 at 115200 bps...
## Total Size = 0x001d48c0 = 1919168 Bytes
## Start Addr = 0xC0700000
U-Boot > bootm
## Booting kernel from Legacy Image at c0700000 ...
Image Name: Linux-3.1.6
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1919104 Bytes = 1.8 MB
Load Address: c0008000
Entry Point: c0008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
mem.start: c0000000
mem.size: 2000000 bytes 32 MB
Starting kernel ...
debug: jump to c0008000 address
debug: start boot params address: c0000100
debug: data
debug: machID 1781
Uncompressing Linux... done, booting the kernel.
Linux version 3.1.6 (xxx@ubuntu) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-
203) ) #10 PREEMPT Tue Dec 27 11:33:39 MSK 2011
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
CPU: VIVT data cache, VIVT instruction cache
Machine: DaVinci DA830/OMAP-L137/AM17x EVM
bootconsole [earlycon0] enabled
Memory policy: ECC disabled, Data cache writethrough
DaVinci da830/omap-l137 rev2.0 variant 0x9
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
Kernel command line: console=ttyS2,115200n8 mem=32M earlyprintk ip=off root=/dev
/mtdblock0 rw rootfstype=jffs2
PID hash table entries: 128 (order: -3, 512 bytes)
Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Memory: 32MB = 32MB total
Memory: 28584k/28584k available, 4184k reserved, 0K highmem
Virtual kernel memory layout:
vector : 0xffff0000 - 0xffff1000 ( 4 kB)
fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
DMA : 0xff000000 - 0xffe00000 ( 14 MB)
vmalloc : 0xc2800000 - 0xfea00000 ( 962 MB)
lowmem : 0xc0000000 - 0xc2000000 ( 32 MB)
modules : 0xbf000000 - 0xc0000000 ( 16 MB)
.text : 0xc0008000 - 0xc0358508 (3394 kB)
.init : 0xc0359000 - 0xc037a000 ( 132 kB)
.data : 0xc037a000 - 0xc039f080 ( 149 kB)
.bss : 0xc039f0a4 - 0xc03c40ac ( 149 kB)
SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
Preemptible hierarchical RCU implementation.
NR_IRQS:245
Console: colour dummy device 80x30
Calibrating delay loop... 148.88 BogoMIPS (lpj=744448)
pid_max: default: 32768 minimum: 301
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
DaVinci: 128 gpio irqs
print_constraints: dummy:
NET: Registered protocol family 16
bio: create slab <bio-0> at 0
Switching to clocksource timer0_0
Switched to NOHz mode on CPU #0
NET: Registered protocol family 2
IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
TCP established hash table entries: 1024 (order: 1, 8192 bytes)
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
TCP: Hash tables configured (established 1024 bind 1024)
TCP reno registered
UDP hash table entries: 256 (order: 0, 4096 bytes)
UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
NET: Registered protocol family 1
RPC: Registered named UNIX socket transport module.
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
RPC: Registered tcp NFSv4.1 backchannel transport module.
JFFS2 version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc.
msgmni has been set to 55
io scheduler noop registered (default)
start plist test
end plist test
Serial: 8250/16550 driver, 3 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0x1c42000 (irq = 25) is a 16550A
serial8250.0: ttyS1 at MMIO 0x1d0c000 (irq = 53) is a 16550A
serial8250.0: ttyS2 at MMIO 0x1d0d000 (irq = 61) is a 16550A
console [ttyS2] enabled, bootconsole disabled
console [ttyS2] enabled, bootconsole disabled
brd: module loaded
ONFI flash detected
ONFI param page 0 valid
NAND device: Manufacturer ID: 0x2c, Chip ID: 0xf1 (Micron MT29F1G08ABADAWP)
Creating 1 MTD partitions on "davinci_nand.1":
0x000000000000-0x000008000000 : "filesystem"
davinci_nand davinci_nand.1: controller rev. 2.5
spi_davinci spi_davinci.0: DMA: supported
spi_davinci spi_davinci.0: DMA: RX channel: 14, TX channel: 15, event queue: 0
spi_davinci spi_davinci.0: Controller at 0xfec41000
davinci_mdio davinci_mdio.0: davinci mdio revision 1.5
davinci_mdio davinci_mdio.0: detected phy mask fffffff1
davinci_mdio.0: probed
davinci_mdio davinci_mdio.0: phy[1]: device 0:01, driver unknown
davinci_mdio davinci_mdio.0: phy[2]: device 0:02, driver unknown
davinci_mdio davinci_mdio.0: phy[3]: device 0:03, driver unknown
rtc-test rtc-test.0: rtc core: registered test as rtc0
rtc-test rtc-test.1: rtc core: registered test as rtc1
i2c /dev entries driver
watchdog watchdog: heartbeat 60 sec
SoftDog: cannot register miscdev on minor=130 (err=-16)
cpuidle: using governor ladder
cpuidle: using governor menu
TCP cubic registered
NET: Registered protocol family 17
davinci_emac davinci_emac.1: using random MAC addr: d2:0d:54:78:68:1c
console [netcon0] enabled
netconsole: network logging started
rtc-test rtc-test.0: setting system clock to 1970-01-01 00:00:02 UTC (2)
Root-NFS: no NFS server address
VFS: Unable to mount root fs via NFS, trying floppy.
List of all partitions:
No filesystem could mount root, tried: jffs2
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0)
[<c000d830>] (unwind_backtrace+0x0/0xf8) from [<c0284cd4>] (panic+0x60/0x1a8)
[<c0284cd4>] (panic+0x60/0x1a8) from [<c0359dcc>] (mount_block_root+0x1c8/0x224)
[<c0359dcc>] (mount_block_root+0x1c8/0x224) from [<c0359ea8>] (mount_root+0x80/0
xc8)
[<c0359ea8>] (mount_root+0x80/0xc8) from [<c0359ffc>] (prepare_namespace+0x10c/0
x1c8)
[<c0359ffc>] (prepare_namespace+0x10c/0x1c8) from [<c035928c>] (kernel_init+0xec
/0x12c)
[<c035928c>] (kernel_init+0xec/0x12c) from [<c0009c9c>] (kernel_thread_exit+0x0/
0x8)
BOOTME bootargs=console=ttyS2,115200n8 mem=32M earlyprintk root=/dev/mtdblock0 rw rootfstype=jffs2 ip=off корневую ФС базовую скачал с офиц. сайта. распаковал и установил туда kernel headers and modules. собирал jffs2.bin следующим образом: # mkfs.jffs2 -p -d rootfs -s 2048 -e 0x20000 -l -q -o rootfs.jffs2 -v –n NAND Organization: – Page size x8: 2112 bytes (2048 + 64 bytes) – Page size x16: 1056 words (1024 + 32 words) – Block size: 64 pages (128K + 4K bytes) – Device size: 1Gb: 1024 blocks получившийся образ ФС я заливаю по терминалу в оперативку борды, затем делаю: 1. nand erase 0 0x08000000 2. nand write.jffs2 0xc0700000 0 $filesize все удачно программируется, затем гружу ядро( NAND & JFFS2 включены при сборке ядра) куда копать и что делать? подскажите пожалуйста. и еще, почему ядро первым делом пытается примонтировать ФС по NFS, когда я ему четко указал откуда брать корневую ФС?
|
|
|
|
|
Dec 27 2011, 15:23
|
Частый гость
 
Группа: Участник
Сообщений: 125
Регистрация: 29-05-11
Из: Nizhny Novgorod, Russian Federation
Пользователь №: 65 337

|
Цитата(aaarrr @ Dec 27 2011, 19:17)  Кстати, попробовать отключить кэши на "неработающем" ядре - это весьма дельный совет. Если оно после этого начнет запускаться, значит с весьма высокой вероятностью ваша железка имеет проблемы с памятью. Я бы проверил, по крайней мере. да, спасибо, для ядра 3.1.6 кеши точно отключены и пунк "Reset unusing clock during boot" включен. завтра обращу внимание на ядро 2.6.34, которое TI поставляло к EVM1707
Сообщение отредактировал am1808 - Dec 27 2011, 15:24
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|