реклама на сайте
подробности

 
 
10 страниц V  « < 2 3 4 5 6 > »   
Reply to this topicStart new topic
> AT91RM9200 - мистика? SPI? или romboot.bin?, задачка не для слабонервных....
boez
сообщение Jan 16 2007, 11:22
Сообщение #46


Частый гость
**

Группа: Новичок
Сообщений: 79
Регистрация: 1-11-06
Пользователь №: 21 868



Стас, а ты не пробовал прицеплять к 9200 CrossWorks (он же CrossStudio)?. У меня щас версия 1.6 build 3, но только мы работаем с LPC21xx. Это IDE, основанная на gcc. Без make, собственная система сборки проекта. Субъективно ее отладчик мне понравился больше чем Insight. Интерфейс содран с MS VS 7. Она правда не совсем халявная, но есть методы лечения. В списке поддерживаемых процов есть 9200. Правда не знаю как обстоят дела с загрузчиком. У LPC с этим проще - флеша внутренняя и загрузчик cw ее писать может, через jtag прямо из среды. В числе поддерживаемых отладчиков есть вигглер.

Но ты в любом случае вигглер собери, хоть с cw, хоть с gdb+insight+openocd - несравненно удобнее иметь пошаговую отладку и просмотр всех регистров и переменных, чем просто консоль smile.gif.

К сожалению, именно по твоему загрузчику тебе ничего посоветовать не могу, с 9200 сам не работал.

А мапу вывести - линкеру опцию -Map mapfile скормить. Там много интересного пишут.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 16 2007, 11:36
Сообщение #47


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(PrSt @ Jan 16 2007, 11:09) *
и - УРА!!!!!!
зашилось
нада зхаметить чтло это случайно....!!!!!!!!!
с какойто промежуточной редакцией гдето в коде....

Это хорошо. А с диагностикой я малость наврал - строку asm volatile("mov %0, r14" : "=r" (i) : ); нужно ставить перед первым printf'ом, иначе LR теряется.
Go to the top of the page
 
+Quote Post
PrSt
сообщение Jan 16 2007, 16:29
Сообщение #48


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(aaarrr @ Jan 16 2007, 10:36) *
Цитата(PrSt @ Jan 16 2007, 11:09) *

и - УРА!!!!!!
зашилось
нада зхаметить чтло это случайно....!!!!!!!!!
с какойто промежуточной редакцией гдето в коде....

Это хорошо. А с диагностикой я малость наврал - строку asm volatile("mov %0, r14" : "=r" (i) : ); нужно ставить перед первым printf'ом, иначе LR теряется.


Всем спасибо!
помогли! серьезно!
надо заметить - локализовал проблемму(!как мне кажется!)
завелась схема прошивкой после следующего
1 - скорость SPI инициализировани с снижением скорости в 32 раза
2 -
#define AT91C_PLLA_MCK
назначили как 0x302
3 - сменил в
int AT91F_DataflashInit (void)
...
// for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) {
for (i = 0; i < 1; i++) {

....
этот пункт отметим как FFF так как это временное решение, сами понимаете...

дело втом, что на флешку все сигналы кроме MISO идут через буфер (если посмотреть на схему - то можно это увидить), и стояла HC244 но она оказалась медленной, там какаято беда с тормозами фронтов, именно - по этому снижение скорости SPI помоло...
сменил ее на AC244 как рукой сняло эту проблемму...
Видимо из-за этого все и было...хотя может и не только...
за исключением еще одной.... которая отмечена ранее FFF

порвая флэшка стоит на CS0, как положенно....
у нас в схеме вторая флэшка используется на CS1
а в этом лоадере используется CS0 и CS3
вопрос:
что мне сменить в программе что бы использовать не CS3 а CS1 ?
и еще такой вопрос - как сделать что бы размер памяти 2 флэшек был виден как единая память?
тоесть у нас стоит 8M+8M а хочется сумарно видеть все 16M. надеюсь передал верно мысль.
вообще такое реально?


--------------------
Go to the top of the page
 
+Quote Post
PrSt
сообщение Jan 17 2007, 14:16
Сообщение #49


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(PrSt @ Jan 16 2007, 15:29) *
первая флэшка стоит на CS0, как положенно....
у нас в схеме вторая флэшка используется на CS1
а в этом лоадере используется CS0 и CS3
вопрос:
что мне сменить в программе что бы использовать не CS3 а CS1 ?
и еще такой вопрос - как сделать что бы размер памяти 2 флэшек был виден как единая память?
тоесть у нас стоит 8M+8M а хочется сумарно видеть все 16M. надеюсь передал верно мысль.
вообще такое реально?

Судя по всему CS0 и CS1 заработали если верить сообщению на терминале
Nb pages: 008192
Page Size: 001056
Size=08650752 bytes
Logical address: 0xC0000000
DataFlash:AT45DB642
Nb pages: 008192
Page Size: 001056
Size=08650752 bytes
Logical address: 0xD0000000
*----------------------------------------*
1: Download Dataflash [addr]
2: Read Dataflash [addr]
3: Start U-BOOT
4: Clear bootloader section in Dataflash
*----------------------------------------*
Enter:


а вот на счет 8M+8M вопрос все еще остался... просветите кто нибудь плз...


--------------------
Go to the top of the page
 
+Quote Post
PrSt
сообщение Jan 18 2007, 10:10
Сообщение #50


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(PrSt @ Jan 17 2007, 13:16) *
а вот на счет 8M+8M вопрос все еще остался... просветите кто нибудь плз...


Также вопрос к СОМА, aaarrr и к другим опытным ребятам...
...плюс ко всему не работает U-Boot.
вот в этой статье(http://heavy-online.ru/arm-linux/) сказано
" Если все нормально - то после ресета - u-boot будет грузиться автоматически (если ничего не нажимать) "

ВОПРОС! - а если не нормально?

объясняю проблемку:
прошит - romboot.bin
его исход ник в вложении

если не нажимать интер то после вклоючения
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader
Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000]
Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT

и тут висит....

если с нажатием после включения
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader

ATMEL LOADER VER 1.01 Jan 17 2007 09:45:22
*----------------------------------------*
DataFlash:AT45DB642
Nb pages: 008192
Page Size: 001056
Size=08650752 bytes
Logical address: 0xC0000000
DataFlash:AT45DB642
Nb pages: 008192
Page Size: 001056
Size=08650752 bytes
Logical address: 0xD0000000
*----------------------------------------*
1: Download Dataflash [addr]
2: Read Dataflash [addr]
3: Start U-BOOT
4: Clear bootloader section in Dataflash
*----------------------------------------*
Enter:


собрал U-Boot

запись U-Boot`a
*----------------------------------------*
Enter: 1 c0008000
Download Dataflash [0xc0008000]
CCCCCCCCCCCC
Modification of Arm Vector 6 :841a0bc

Write 95744 bytes in DataFlash [0xc0008000]
Hit a Key!aflash: OK


снимаю питание
при включении надеюсь увидеть U-Boot а вижу следующее
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader
Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000]
Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT


это означает что U-Boot мягко говоря - не стартанул вообще...
зотя если проверить пунктом 2 по адрессу 20008000, из romboot, то вижу что таки в flash находится бействительно U-Boot.bin

что за проблемма?
может в файле include/configs/RM9200.h: не верно чтото, в зависимости от моей схемы?


--------------------
Go to the top of the page
 
+Quote Post
Lelick
сообщение Jan 18 2007, 12:36
Сообщение #51


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 14-06-05
Пользователь №: 6 007



проверь в rm9200.h значения master_clock и main_clock на сooтветствие настройкам plla в bootloader + проверь в rm9200.h значение brgr_divisor делителя dbgu порта на соответствие master_clock
Go to the top of the page
 
+Quote Post
PrSt
сообщение Jan 18 2007, 14:48
Сообщение #52


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(Lelick @ Jan 18 2007, 11:36) *
проверь в rm9200.h значения master_clock и main_clock на сooтветствие настройкам plla в bootloader + проверь в rm9200.h значение brgr_divisor делителя dbgu порта на соответствие master_clock

вроде все одинаково

я тут вот на что натолкнулся, похоже что U-boot не умеет вообще грузиться с последовательно flash а только с параллельной... если верить содержимому файла
/usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/flash.c

а с другой стороны в
/usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/at45.c
инициализация SPI и т д (такие жу куски кода как и в изходнике от romboot)

и вот теперь вопрос - с какой он флешки всеже грузится? и где это можно указать?

+ ко всему еще вот на что наткнулся

на терминале наблюдаю следующее
AT91F_LowLevelInit(): Debug channel initialized
press any key to enter bootloader
Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000]
Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT
AT91F_ResetRegisters

если смотреть на исходный код от romboot, то видим следующее...

void AT91F_StartUboot(unsigned int dummy, void *pvoid)
{
printf("Load U-BOOT from dataflash[%x] to SDRAM[%x]\n\r", AT91C_UBOOT_DATAFLASH_ADDR, AT91C_UBOOT_ADDR);
read_dataflash(AT91C_UBOOT_DATAFLASH_ADDR, AT91C_UBOOT_SIZE, (char *)(AT91C_UBOOT_ADDR));
printf("Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT\n\r");
//* Reset registers
AT91F_ResetRegisters();
printf("Jump(AT91C_UBOOT_ADDR)\n\r");
Jump(AT91C_UBOOT_ADDR);
printf("Jump(AT91C_UBOOT_ADDR) - DONE \n\r");
while(1);
}



//*--------------------------------------------------------------------------------------
//* Function Name : AT91F_ResetRegisters
//* Object : Restore the initial state to registers
//* Input Parameters :
//* Output Parameters :
//*--------------------------------------------------------------------------------------
static void AT91F_ResetRegisters(void)
{
volatile int i = 0;

printf("AT91F_ResetRegisters\n\r");

//* set the PIOs in input
*AT91C_PIOA_ODR = 0xFFFFFFFF; /* Disables all the output pins */
*AT91C_PIOA_PER = 0xFFFFFFFF; /* Enables the PIO to control all the pins */

printf("1 \n\r");
AT91F_AIC_DisableIt (AT91C_BASE_AIC, AT91C_ID_SYS);

printf("2 \n\r");
/* close all peripheral clocks */
AT91C_BASE_PMC->PMC_PCDR = 0xFFFFFFFC;

printf("3 \n\r");
//* Disable core interrupts and set supervisor mode
__asm__ ("msr CPSR_c, #0xDF"); //* ARM_MODE_SYS(0x1F) | I_BIT(0x80) | F_BIT(0x40)

printf("4 \n\r");
//* Clear all the interrupts
*AT91C_AIC_ICCR = 0xffffffff;

/* read the AIC_IVR and AIC_FVR */
i = *AT91C_AIC_IVR;
i = *AT91C_AIC_FVR;

printf("5 \n\r");
/* write the end of interrupt control register */
*AT91C_AIC_EOICR = 0;

AT91F_SetPLL();
printf("AT91F_ResetRegisters - DONE \n\r");
}



и вопросик теперь что тут предпологается ?
делается ведь тупое
//* set the PIOs in input
*AT91C_PIOA_ODR = 0xFFFFFFFF; /* Disables all the output pins */
*AT91C_PIOA_PER = 0xFFFFFFFF; /* Enables the PIO to control all the pins */

так что неудивительно что что прекращяется вывод...
но по ходу тут прекращяется все!

или ни кто так глубоко ни когда не лез?


--------------------
Go to the top of the page
 
+Quote Post
vanokuten
сообщение Jan 18 2007, 22:16
Сообщение #53


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 18-12-04
Из: Минск
Пользователь №: 1 550



если используется romboot.bin и uboot загрузка из dataflash то должен быть define
#define CONFIG_SKIP_LOWLEVEL_INIT
иначе uboot будет виснуть

Embedded Linux Engineer
Promwad Company



>а с другой стороны в
>/usr/local/arm9/src/u-boot-1.1.6/board/at91rm9200dk/at45.c
>инициализация SPI и т д (такие жу куски кода как и в изходнике от romboot)
>
>и вот теперь вопрос - с какой он флешки всеже грузится? и где это можно указать?

romboot.bin грузит из dataflash u-boot в SDRAM и передает управление uboot


--------------------
Go to the top of the page
 
+Quote Post
PrSt
сообщение Jan 31 2007, 13:47
Сообщение #54


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(vanokuten @ Jan 18 2007, 21:16) *
если используется romboot.bin и uboot загрузка из dataflash то должен быть define
#define CONFIG_SKIP_LOWLEVEL_INIT
иначе uboot будет виснуть

в томто и дело - версия u-boot-1.1.6 и u-boot-1.2.0 виснет...
версию u-boot-1.1.1 чуть пропатчил, вставил драйвер lxt-972, но с этимдрайвером оно только посылает в сеть ARP, а пинговать не получается...
такое впечатление что не верно инициализировалась... или еще чтото...
по этой теме - я тут http://electronix.ru/forum/index.php?showtopic=26464 вопрос задавал уже , но ни кто не ответил досе...

может все же ктото с таким сталкивался?


--------------------
Go to the top of the page
 
+Quote Post
COMA
сообщение Feb 1 2007, 08:59
Сообщение #55


Знающий
****

Группа: Свой
Сообщений: 851
Регистрация: 28-08-04
Пользователь №: 559



Помочь не чем sad.gif

У меня все заработало с полпинка по этому руководству -
http://www.heavy-online.ru/arm-linux/
Go to the top of the page
 
+Quote Post
PrSt
сообщение Feb 1 2007, 11:42
Сообщение #56


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(COMA @ Feb 1 2007, 07:59) *
Помочь не чем sad.gif

У меня все заработало с полпинка по этому руководству -
http://www.heavy-online.ru/arm-linux/

дык по этой же статье и делаю...

ну хоть за попытку, и то всем спасибо большое!

кстати, поднял это дело...
- запинговалось, tftp поднял...
пробую идти дальше...


--------------------
Go to the top of the page
 
+Quote Post
PrSt
сообщение Feb 6 2007, 13:03
Сообщение #57


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(PrSt @ Feb 1 2007, 10:42) *
пробую идти дальше...


пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online....
и вот наткнулся на следующее не совсем понятное поведение...

AT91RM9200 > bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1124113 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...


и стоит тут (затрял), что это может быть за ерунда?

иду дальше, пересобрал ядро
пробую стартануть и вот что получаю
Starting kernel ...

Error: unrecognized/unsupported machine ID (r1 = 0x000000fb).

Available machine support:

ID (hex) NAME
00000106 uCrouter EVM9200

Please check your kernel config and/or bootloader


корень вопроса...
у меня в U-Boot - CFG_PROMPT объявлен как "AT91RM9200_board# "
кокое в ядре нада правильно имя указать?
"AT91RM9200_board# " ?
или
"AT91RM9200_board" ?

или речь идет о чем-то ином...?


--------------------
Go to the top of the page
 
+Quote Post
vanokuten
сообщение Feb 7 2007, 13:04
Сообщение #58


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 18-12-04
Из: Минск
Пользователь №: 1 550



Цитата(PrSt @ Feb 6 2007, 12:03) *
Цитата(PrSt @ Feb 1 2007, 10:42) *

пробую идти дальше...


пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online....
и вот наткнулся на следующее не совсем понятное поведение...

AT91RM9200 > bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1124113 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...


и стоит тут (затрял), что это может быть за ерунда?

иду дальше, пересобрал ядро
пробую стартануть и вот что получаю
Starting kernel ...

Error: unrecognized/unsupported machine ID (r1 = 0x000000fb).

Available machine support:

ID (hex) NAME
00000106 uCrouter EVM9200

Please check your kernel config and/or bootloader


корень вопроса...
у меня в U-Boot - CFG_PROMPT объявлен как "AT91RM9200_board# "
кокое в ядре нада правильно имя указать?
"AT91RM9200_board# " ?
или
"AT91RM9200_board" ?

или речь идет о чем-то ином...?



Речь идет об ином а именно об соответствии machine ID между uboot и linux kernel
см
linux-source/arch/arm/tools/mach-types

а также

u-boot-source/include/asm-arm/mach-types.h


--------------------
Go to the top of the page
 
+Quote Post
PrSt
сообщение Feb 8 2007, 16:15
Сообщение #59


http://uschema.com
****

Группа: Свой
Сообщений: 708
Регистрация: 16-02-06
Из: UK(Ukrainian_Kingdom) Kharkov
Пользователь №: 14 394



Цитата(vanokuten @ Feb 7 2007, 12:04) *
Цитата(PrSt @ Feb 6 2007, 12:03) *

Цитата(PrSt @ Feb 1 2007, 10:42) *

пробую идти дальше...

пытаюсь загрузить линуксовое ядро, то что с сайта heavy-online....
и вот наткнулся на следующее не совсем понятное поведение...
AT91RM9200 > bootm
## Booting image at 20800000 ...
Image Name:
Image Type: ARM Linux Kernel Image (gzip compressed)
Data Size: 1124113 Bytes = 1.1 MB
Load Address: 20008000
Entry Point: 20008000
Verifying Checksum ... OK
Uncompressing Kernel Image ... OK

Starting kernel ...


и стоит тут (затрял), что это может быть за ерунда?

Речь идет об ином а именно об соответствии machine ID между uboot и linux kernel
см
linux-source/arch/arm/tools/mach-types
а также
u-boot-source/include/asm-arm/mach-types.h

не получается дальше чем Starting kernel ...
Ну неужели ни у кого не было такой проблеммы?
уже пол ядра перерыл - не могу найти в чем проблемма....

ядро 2.6.16 с патчами на AT91RM9200 кроме DS1307, но он щяс ни не нужен....
пробовал также собранное ядро с сайта heavy-online, такое же самое поведение...
или ядро не стартует(что маловероятно)
или оно данные выводит не на DBGU а куда в иное место
или еще чтото - не знаю и проверить не знаю как...
...Вариации разные испробовал...

проясните плиз, кто нибудь - что происходит или что не так?
?


--------------------
Go to the top of the page
 
+Quote Post
vanokuten
сообщение Feb 12 2007, 13:36
Сообщение #60


Частый гость
**

Группа: Участник
Сообщений: 116
Регистрация: 18-12-04
Из: Минск
Пользователь №: 1 550



С каким bootargs запускаемся ?
Поставь пару printk чтобы посмотреть где останавливается

Судя по тому что ты таки исправил ошибку machine ID кернел у тебя таки грузится


--------------------
Go to the top of the page
 
+Quote Post

10 страниц V  « < 2 3 4 5 6 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th July 2025 - 15:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01504 секунд с 7
ELECTRONIX ©2004-2016