boez 0 16 января, 2007 Опубликовано 16 января, 2007 · Жалоба Стас, а ты не пробовал прицеплять к 9200 CrossWorks (он же CrossStudio)?. У меня щас версия 1.6 build 3, но только мы работаем с LPC21xx. Это IDE, основанная на gcc. Без make, собственная система сборки проекта. Субъективно ее отладчик мне понравился больше чем Insight. Интерфейс содран с MS VS 7. Она правда не совсем халявная, но есть методы лечения. В списке поддерживаемых процов есть 9200. Правда не знаю как обстоят дела с загрузчиком. У LPC с этим проще - флеша внутренняя и загрузчик cw ее писать может, через jtag прямо из среды. В числе поддерживаемых отладчиков есть вигглер. Но ты в любом случае вигглер собери, хоть с cw, хоть с gdb+insight+openocd - несравненно удобнее иметь пошаговую отладку и просмотр всех регистров и переменных, чем просто консоль :). К сожалению, именно по твоему загрузчику тебе ничего посоветовать не могу, с 9200 сам не работал. А мапу вывести - линкеру опцию -Map mapfile скормить. Там много интересного пишут. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 16 января, 2007 Опубликовано 16 января, 2007 · Жалоба и - УРА!!!!!! зашилось нада зхаметить чтло это случайно....!!!!!!!!! с какойто промежуточной редакцией гдето в коде.... Это хорошо. А с диагностикой я малость наврал - строку asm volatile("mov %0, r14" : "=r" (i) : ); нужно ставить перед первым printf'ом, иначе LR теряется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 16 января, 2007 Опубликовано 16 января, 2007 · Жалоба и - УРА!!!!!! зашилось нада зхаметить чтло это случайно....!!!!!!!!! с какойто промежуточной редакцией гдето в коде.... Это хорошо. А с диагностикой я малость наврал - строку 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. надеюсь передал верно мысль. вообще такое реально? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 17 января, 2007 Опубликовано 17 января, 2007 · Жалоба первая флэшка стоит на 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 вопрос все еще остался... просветите кто нибудь плз... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба а вот на счет 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: не верно чтото, в зависимости от моей схемы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lelick 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба проверь в rm9200.h значения master_clock и main_clock на сooтветствие настройкам plla в bootloader + проверь в rm9200.h значение brgr_divisor делителя dbgu порта на соответствие master_clock Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба проверь в 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 */ так что неудивительно что что прекращяется вывод... но по ходу тут прекращяется все! или ни кто так глубоко ни когда не лез? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vanokuten 0 18 января, 2007 Опубликовано 18 января, 2007 · Жалоба если используется 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 31 января, 2007 Опубликовано 31 января, 2007 · Жалоба если используется 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 вопрос задавал уже , но ни кто не ответил досе... может все же ктото с таким сталкивался? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
COMA 1 1 февраля, 2007 Опубликовано 1 февраля, 2007 · Жалоба Помочь не чем :( У меня все заработало с полпинка по этому руководству - http://www.heavy-online.ru/arm-linux/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 1 февраля, 2007 Опубликовано 1 февраля, 2007 · Жалоба Помочь не чем :( У меня все заработало с полпинка по этому руководству - http://www.heavy-online.ru/arm-linux/ дык по этой же статье и делаю... ну хоть за попытку, и то всем спасибо большое! кстати, поднял это дело... - запинговалось, tftp поднял... пробую идти дальше... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 6 февраля, 2007 Опубликовано 6 февраля, 2007 · Жалоба пробую идти дальше... пытаюсь загрузить линуксовое ядро, то что с сайта 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" ? или речь идет о чем-то ином...? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vanokuten 0 7 февраля, 2007 Опубликовано 7 февраля, 2007 · Жалоба пробую идти дальше... пытаюсь загрузить линуксовое ядро, то что с сайта 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 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prst 0 8 февраля, 2007 Опубликовано 8 февраля, 2007 · Жалоба пробую идти дальше... пытаюсь загрузить линуксовое ядро, то что с сайта 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 а куда в иное место или еще чтото - не знаю и проверить не знаю как... ...Вариации разные испробовал... проясните плиз, кто нибудь - что происходит или что не так? ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vanokuten 0 12 февраля, 2007 Опубликовано 12 февраля, 2007 · Жалоба С каким bootargs запускаемся ? Поставь пару printk чтобы посмотреть где останавливается Судя по тому что ты таки исправил ошибку machine ID кернел у тебя таки грузится Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться