|
boot LPC2478 STK from external flash |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 15)
|
May 25 2010, 11:59
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075

|
А почему нельзя? Ведь сначала у вас грузиться U-Boot. А он может грузить откуда удобно, только пропишите в нем это и все
|
|
|
|
|
May 25 2010, 12:04
|
Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954

|
Цитата(Совсем старый Бабай @ May 25 2010, 15:59)  А почему нельзя? Ведь сначала у вас грузиться U-Boot. А он может грузить откуда удобно, только пропишите в нем это и все вот я тоже так подумал, осталось понять где в u-boot-е прописывается адрес загрузки и как собствено говоря втиснуть линукс в ту память, есть опыт подобного? копание сырца убута пока ни к чему не привела
|
|
|
|
|
May 25 2010, 14:09
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075

|
Надо смотреть исходники загрузчика Посмотрю отпишусь
Сообщение отредактировал Совсем старый Бабай - May 25 2010, 14:10
|
|
|
|
|
May 26 2010, 06:36
|
Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954

|
вручную по ману, загружая обрз с флешки научился стартовать линукс lpc-2478-stk# usb start lpc-2478-stk# fatload usb 0 0xa0800000 romfs_5.img lpc-2478-stk# fatload usb 0 0xa0008000 vmlinux.bin lpc-2478-stk# go a0008000 а вот как залить его во внешние банки памяти(CS0 CS1 CS2 CS3) ... и ещё - почему то у меня при компиляции образ vmlinux.bin получается порядка 2.5 Гб, что то мне подскзывает что это аномльно и не влезет в чип
|
|
|
|
|
May 27 2010, 01:56
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075

|
Для начала неплохо бы убедиться что в загрузчике прописана поддержка NAND, NOR, ММС. Сделать это мона так? если ничего не путаю flinfo Зактем грузите в SDRAM образ ядра а затем записываете его , то же самое проделывете с rootfs да еще в зависимости от того откуда будете грузиться NOR или NAND - следует изменить bootargs Для NOR: Код bootargs=root=/dev/mtdblock3 console=ttyS0, 115200N8 saveenv Для NAND: Код bootargs=root=/dev/mtdblock1 console=ttyS0, 115200N8 saveenv Гручить ядро и ФС лучше через TFTP Код tftpboot <load address> <boot filename> load address - можно для примера 0хА1500000 boot filename - тут понятно, ядро или ФС Сохрать образ из RAM во флеш Код nand erase tftpboot a1500000 uClinux.bin nand write $(fileaddr) 0 0x00300000 tftpboot a1800000 romfs.img nand write $(fileaddr) 0x00300000 $(filesize)
Сообщение отредактировал Совсем старый Бабай - May 27 2010, 01:56
|
|
|
|
|
May 27 2010, 05:06
|
Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954

|
спасибо, информативно грузится планируется из NOR , пр загрузку образов через tftp была мысль, но в конечной железяке не планировалось присутствие ethernet ибо нет необходимости, но таки думаю уже, что контакты для заливки образов возможно стоит оставить. команда flinfo выдала следующее честно говоря мало для меня понятное lpc-2478-stk # flinfo Bank # 1: Philips: Size: 500 KB in 27 Sectors Sector Start Addresses: 00000000 RO 00001000 RO 00002000 RO 00003000 RO 00004000 RO 00005000 RO 00006000 RO 00007000 RO 00008000 RO 00010000 RO 00018000 RO 00020000 RO 00028000 RO 00030000 E 00038000 E 00040000 E 00048000 E 00050000 E 00058000 E 00060000 E 00068000 E 00070000 E 00078000 E 00079000 E 0007A000 E 0007B000 E 0007C000 RO E можно ли из этого сделать вывод иниацилизирована или нет NOR ... есть подозрение что ничего об этом не скзано, вероятно надо прописать этот момент в u-boot, вопрос как
Сообщение отредактировал andybeg - May 27 2010, 05:07
|
|
|
|
|
May 27 2010, 10:59
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075

|
А почему не FLASH? Насколько я помню, когда работал с данной платой поддержка NOR была несколько корявой, хотя могу и ошибаться -давно это было
u_boot_1.1.6_ea_v1_9_1_incr1.diff.gz ( 18.13 килобайт )
Кол-во скачиваний: 234
u_boot_1.1.6_ea_v1_9_1_incr2.diff.gz ( 3.14 килобайт )
Кол-во скачиваний: 239
Сообщение отредактировал Совсем старый Бабай - May 27 2010, 11:10
|
|
|
|
|
May 27 2010, 11:27
|
Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954

|
Цитата А почему не FLASH? есть подозрение что флеша не хватит для линуха и софта на нём Цитата Насколько я помню, когда работал с данной платой поддержка NOR была несколько корявой, хотя могу и ошибаться -давно это было можно небольшое пояснение сделать по поводу 3х прикреплённый файлов, в частности почему 3
|
|
|
|
|
May 27 2010, 11:34
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075

|
Три файла патчи для u-boot. Почему три? Потому что столько их на сайте изготовителя платы. Вообще для ядра и ФС достаточно 8мегабайт. Так что NAND хватит с головой. Или приведите свои расчеты, а не подозрения
|
|
|
|
|
May 27 2010, 12:16
|
Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954

|
Цитата Три файла патчи для u-boot. сейчас попробую Цитата Вообще для ядра и ФС достаточно 8мегабайт. Так что NAND хватит с головой. Или приведите свои расчеты, а не подозрения честно говоря решение по архитектуре устройства и количестве памяти принималось без меня и подзреваю разработчик платы хотел чтобы какраз нанда хватило с головой, когда устройство будет готово и напичкано полностью, будет понятно сколько рельно памяти надо было
|
|
|
|
|
May 27 2010, 13:20
|
Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954

|
может чего не так сделал, команд у убута появилось визуально больше, но нора походе так и нет, или я чего не понял Код U-Boot 1.3.2 (May 27 2010 - 11:31:22)
CPU: LPC2478 (ARM7tdmi-s from NXP) running at 57.6 MHz (12 MHz crystal) DRAM: 64 MB Flash: 500 kB Код lpc-2478-stk # flinfo
Bank # 1: Philips: Size: 500 KB in 27 Sectors Sector Start Addresses: 00000000 RO 00001000 RO 00002000 RO 00003000 RO 00004000 RO 00005000 RO 00006000 RO 00007000 RO 00008000 RO 00010000 RO 00018000 RO 00020000 RO 00028000 00030000 E 00038000 E 00040000 E 00048000 E 00050000 E 00058000 E 00060000 E 00068000 E 00070000 E 00078000 E 00079000 E 0007A000 E 0007B000 E 0007C000 RO E
|
|
|
|
|
May 27 2010, 15:10
|
Участник

Группа: Участник
Сообщений: 45
Регистрация: 19-03-10
Из: Екатеринбург
Пользователь №: 56 075

|
Отвечу завтра
|
|
|
|
|
May 28 2010, 12:53
|
Частый гость
 
Группа: Участник
Сообщений: 133
Регистрация: 30-11-06
Пользователь №: 22 954

|
в lowlevel_init.c была найдена закомментированная функция, но её раскоментирование и вставка в инициалзацию схемы не решило проблемы  запись в NOR не производится Код /******************************************************************************
** Function name: ConfigureEMC
**
** Descriptions: Configure EMC for external SDRAM, NAND and NOR FLASH
** parameters: None
** Returned value: None
**
******************************************************************************/
void
ConfigureEMC(void)
{
volatile unsigned int i, dummy = dummy;
// SCS &= ~0x00000002;
// SCS |= 0x00000002;
EMC_CTRL = 0x00000001;
PCONP |= 0x00000800; /* Turn on EMC PCLK */
PINSEL4 = 0x50000000;
#ifdef USE_32_BIT_DATABUS
PINSEL5 = 0x55010115;
PINSEL7 = 0x55555555;
#else
PINSEL5 = 0x05050555;
#endif
PINSEL6 = 0x55555555;
PINSEL8 = 0x55555555;
PINSEL9 = 0x50555555;
//all registers...
#ifdef USE_32_BIT_DATABUS
EMC_DYN_RP = 1; //>20ns = 2 clk
EMC_DYN_RAS = 3; //>45ns = 3 clk
EMC_DYN_SREX = 5; //>80-100ns = 6 clk
EMC_DYN_APR = 1; //
EMC_DYN_DAL = 5; //2 clk
EMC_DYN_WR = 1; //2 clk
EMC_DYN_RC = 5; //>65ns = 4 clk
EMC_DYN_RFC = 5; //>80-100ns = 6 clk
EMC_DYN_XSR = 5; //>80-100ns = 6 clk
EMC_DYN_RRD = 1; //>15ns = 1-2 clk
EMC_DYN_MRD = 1; //2 clk
EMC_DYN_RD_CFG = 1; //or 1,2,3
//
EMC_DYN_RASCAS0 = 0x00000202;
//
EMC_DYN_CFG0 = 0x00005480;
#else
EMC_DYN_RP = 2; //>20ns = 2 clk
EMC_DYN_RAS = 3; //>45ns = 3 clk
EMC_DYN_SREX = 7; //>80-100ns = 6 clk
EMC_DYN_APR = 2; //
EMC_DYN_DAL = 5; //2 clk
EMC_DYN_WR = 1; //2 clk
EMC_DYN_RC = 5; //>65ns = 4 clk
EMC_DYN_RFC = 5; //>80-100ns = 6 clk
EMC_DYN_XSR = 7; //>80-100ns = 6 clk
EMC_DYN_RRD = 1; //>15ns = 1-2 clk
EMC_DYN_MRD = 2; //2 clk
EMC_DYN_RD_CFG = 1; //or 1,2,3
//
EMC_DYN_RASCAS0 = 0x00000303;
//
EMC_DYN_CFG0 = 0x00000680;
#endif
//wait 100mS
delayMs(100);
//Send command: NOP
EMC_DYN_CTRL = 0x00000183;
//wait 200mS
delayMs(200);
//Send command: PRECHARGE-ALL, shortest possible refresh period
EMC_DYN_CTRL = 0x00000103;
EMC_DYN_RFSH = 0x00000002;
//wait 128 ABH clock cycles
for(i=0; i<0x40; i++)
asm volatile(" nop");
//Set correct refresh period
EMC_DYN_RFSH = 28;
//Send command: MODE
EMC_DYN_CTRL = 0x00000083;
//Set mode register in SDRAM
#ifdef USE_32_BIT_DATABUS
dummy = *((volatile unsigned int*)(SDRAM_BASE_ADDR | (0x22 << 11)));
#else
dummy = *((volatile unsigned int*)(SDRAM_BASE_ADDR | (0x33 << 12)));
#endif
//Send command: NORMAL
EMC_DYN_CTRL = 0x00000000;
//Enable buffer
EMC_DYN_CFG0 |= 0x00080000;
//initial system delay
delayMs(1);
EMC_STA_WAITWEN0 = 0x2;
EMC_STA_WAITOEN0 = 0x2;
EMC_STA_WAITRD0 = 0x1f;
EMC_STA_WAITPAGE0 = 0x1f;
EMC_STA_WAITWR0 = 0x1f;
EMC_STA_WAITTURN0 = 0xf;
EMC_STA_CFG0 = 0x00000081;
EMC_STA_WAITWEN1 = 0x2;
EMC_STA_WAITOEN1 = 0x2;
EMC_STA_WAITRD1 = 0x8;
EMC_STA_WAITPAGE1 = 0x1f;
EMC_STA_WAITWR1 = 0x8;
EMC_STA_WAITTURN1 = 0xf;
EMC_STA_CFG1 = 0x00000080;
} Код lpc-2478-stk # fatload usb 0 0x80800000 romfs_5.img reading romfs_5.img ........................................................
581632 bytes read lpc-2478-stk # md 0x80800000 80800000: ffffffff ffffffff ffffffff ffffffff ................ 80800010: ffffffff ffffffff ffffffff ffffffff ................ 80800020: ffffffff ffffffff ffffffff ffffffff ................ 80800030: ffffffff ffffffff ffffffff ffffffff ................ 80800040: ffffffff ffffffff ffffffff ffffffff ................ 80800050: ffffffff ffffffff ffffffff ffffffff ................ 80800060: ffffffff ffffffff ffffffff ffffffff ................ 80800070: ffffffff ffffffff ffffffff ffffffff ................ 80800080: ffffffff ffffffff ffffffff ffffffff ................ 80800090: ffffffff ffffffff ffffffff ffffffff ................ 808000a0: ffffffff ffffffff ffffffff ffffffff ................ 808000b0: ffffffff ffffffff ffffffff ffffffff ................ 808000c0: ffffffff ffffffff ffffffff ffffffff ................ 808000d0: ffffffff ffffffff ffffffff ffffffff ................ 808000e0: ffffffff ffffffff ffffffff ffffffff ................ 808000f0: ffffffff ffffffff ffffffff ffffffff ................
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|