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