Jump to content

    

prst

Свой
  • Content Count

    703
  • Joined

  • Last visited

Everything posted by prst


  1. в томто и дело - версия 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 вопрос задавал уже , но ни кто не ответил досе... может все же ктото с таким сталкивался?
  2. Приветствую всех! помогите плиз! включаю плату по этому топику - http://electronix.ru/forum/index.php?showtopic=25634 вот что я сделал... взял u-boot-1.1.1 и вставил в него драйвер от lxt972 вместо rtl8201 и dm9161 и пытаюсь поднять ethernet проблемма следующяя получается... хочу пингануть командой ping по сети компьютер то что получаю на терминале показываю... U-Boot 1.1.1 (Jan 26 2007 - 11:53:23) U-Boot code: 20F00000 -> 20F1A4F8 BSS: -> 20F1ED18 RAM Configuration: Bank #0: 20000000 64 MB Unknown flash manufacturer 0x00900090 Flash: 0 kB *** Warning - bad CRC, using default environment In: serial Out: serial Err: serial eth: setting MAC address to 11:00:11:00:11:00 lxt972_IsPhyConnected lxt972_InitPhy lxt972_InitPhy - ERROR ~~~~~~~~~~~~ >>> MAC: error during MII initialization ret = 0 Hit any key to stop autoboot: 0 ## Booting image at 10020000 ... Bad Magic Number u-boot> ping 192.168.1.1 eth: setting MAC address to 11:00:11:00:11:00 lxt972_IsPhyConnected lxt972_InitPhy lxt972_Speed 100M-Half ping failed; host 192.168.1.1 is not alive u-boot> u-boot> printenv bootcmd=bootm 10020000 bootdelay=3 baudrate=115200 ethaddr=11:00:11:00:11:00 ipaddr=192.168.1.123 serverip=192.168.1.1 netmask=255.255.255.0 bootfile="u-boot.bin.gz" stdin=serial stdout=serial stderr=serial Environment size: 207/65532 bytes u-boot> красным выделено - то что я в коде для отладки вписал ~~~~~~~~~~~~ >>> - это показано что есть при первом поднятии какаято беда, но по логике увиденного она только на этапе старта... как видно - ping не проходит... тоесть какаято беда с обменном... вот это и есть проблемма... так же и tftpboot вполне логично не видит сеть и не получает пакеты... при этом на компьютере с IP=192.168.1.1 - ARP виден, тоесть пакеты типа ушли... root@<skip>:u-boot-1.1.1-lxt972# arp -a arm.vodomer.net (192.168.1.123) at 11:00:11:00:11:00 [ether] on eth1 Подскажите плиз, что за ересь может происходить? и на каком уровне проблема может быть вообще?
  3. новый виток

    ...уже даже запускаем ethernet в u-boot на этой плате..
  4. вроде все одинаково я тут вот на что натолкнулся, похоже что 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 */ так что неудивительно что что прекращяется вывод... но по ходу тут прекращяется все! или ни кто так глубоко ни когда не лез?
  5. Также вопрос к СОМА, 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: не верно чтото, в зависимости от моей схемы?
  6. Судя по всему 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 вопрос все еще остался... просветите кто нибудь плз...
  7. Лично мое мнение - в сторону 9200 однозначно для Ваших проектов пожалуй он просто напрашивается... Хотя, в качестве альтернатив пересмотрите всю линейку по дуступности из AT91SAM9xxx
  8. Вам вероятно в раздел ARM (http://electronix.ru/forum/index.php?showforum=43)... в разделе ARM более вероятно что Вам подскажут !
  9. новый виток

    Это наша плата на работе ее делаем для своих целей ;-) Это плата для запуска так сказать StarterKit, первый вариант. Замечания сделанные правильные местами. Приняты... Паялась плата кстати руками (не на заводе)... На счет LCD и всего остального - специально для этого выведенны все возможнве порты ! на PLD На счет DBGU - там просто один разъем - а джамперами выбирается DBGU/USART (смотрите silk) остальные порты если нужны - еще раз говорю - все порты выведенны.. >Плата на фото вряд ли запустится :) запустилась плата с первого пинка... и сейчас он на столе стоит и работает... кстати плата 4х слойная, и даже моделировалась heperlinx`ом, так что там грешно было не включить ее... проблемки некоторые есть, и было бы странно если бы их не возникло, и сейчас они решаются (здесь http://electronix.ru/forum/index.php?showtopic=25634) плата более чем рабочяя... если когото интересует... >Не запаяны резистивные сборки и около импульсника резистор (ниже) убежал :) Если интересно, уже запаяны (то просто старое фото, скоро ан сайте обновлю по возможности) + резистор не убежал - это запасной...
  10. Это хорошо. А с диагностикой я малость наврал - строку 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. надеюсь передал верно мысль. вообще такое реально?
  11. да кстати вот тест в int AT91F_DataflashInit (void) делаю маленькое изменение // for (i = 0; i < CFG_MAX_DATAFLASH_BANKS; i++) { for (i = 0; i < 1; i++) { и вот что получаю AT91F_LowLevelInit(): Debug channel initialized AT91F_DataflashInit AT91F_SpiInit PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - E0019 dfcode - 3C AT45DB642 press any key to enter bootloader ATMEL LOADER VER 1.01 Jan 16 2007 09:56:44 *----------------------------------------* AT91F_DataflashPrintInfo DataFlash:AT45DB642 Nb pages: 008192 Page Size: 001056 Size=08650752 bytes Logical address: 0xC0000000 AT91F_DataflashPrintInfo ERROR detect - 0 *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash 5: ...test... *----------------------------------------* Enter: Enter: 1 c0000000 Download Dataflash [0xc0000000] Modification of Arm Vector 6 :841a017 Write 11392 bytes in DataFlash [0xc0000000] write_dataflash AT91F_DataflashSelect read_dataflash AT91F_DataflashSelect Hit a Key!CCCCCCCCCCCC AT91F_LowLevelInit(): Debug channel initialized AT91F_DataflashInit AT91F_SpiInit PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - E0019 dfcode - 3C AT45DB642 PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - 70019 dfcode - 0 press any key to enter bootloader Load U-BOOT from dataflash[c0008000] to SDRAM[20f00000] read_dataflash AT91F_DataflashSelect Set PLLA to 180Mhz and Master clock to 45Mhz and start U-BOOT и - УРА!!!!!! зашилось нада зхаметить чтло это случайно....!!!!!!!!! с какойто промежуточной редакцией гдето в коде.... тоесть вот что я вижу
  12. собственно, вот что получил в терминале... Enter: 1 c0000000 Download Dataflash [0xc0000000] CCCCCCCC Modification of Arm Vector 6 :bdf80017 Write 11392 bytes in DataFlash [0xc0000000] write_dataflash - это я выводу для дебага пути AT91F_DataflashSelect novalid - это я выводу для дебага пути -F- Data Abort detected - это я выводу для дебага пути -F- LOOP... - это я выводу для дебага пути --------- ASR --------->: 10201 --------- AASR --------->: EA000494 --------- Address --------->: 11C8 --------- Opcode --------->: E59F002C
  13. Можно Вас попросить изложить свою мысль по этому поводу? Хотелось бы понять что же все таки происходит и куда копать... Вы довольно метко подмечаете особенности вопроса! а то, уже, есть идея начинать пробовать писать свой загрузчик... неделю мыкаюсь и без результата... Правда побаиваюсь что после написания своего загрузчика тоже можем натолкнуться на такой же "глюк, эффект"...
  14. Благодарю Вас... >"Значит линкер нужно попросить" - не совсем понятно, честно говоря что Вы имеете ввиду, а где его можно попросить? кстати, elf32-littlearm.lds - это не линкер скрипт? Кстати, раз проблема близка к проблеме с стеком... как можно проверить вообще стек? как узнать что должно быть и что получаем...? Видимо если - DataAbort - то \то очень вероятно что чтото или с памятью или с стеком... Как выяснилось память SDRAM тут не причем... Мне вообще не ясно что может быть за проблемма??? По следующей логике пытаюсь судить ---> Ведь, romboot этот стандартный(причем написан фирмой ATMEL если я правильно все понимаю) и у других людей этот загрузчик работает видимо корректно, почемуже не работает у нас? Схема то отличается только подключением переферии - ETHRNET и т д Я конечно извеняюсь, такого уровня проект делаю первый раз и подобная проблемма просто как скала перед носом... руки опускать не хочу и не могу себе позволить, а решить нада задачку... Вот и прошу Вас помочь...
  15. если я все правильно вижу - такого файла нет (map-файл линкера) root@server:romboot-evm9200_dmb# ll итого 435 drwxr-xr-x 6 dmb dmb 1320 2007-01-12 17:35 ./ drwxr-sr-x 5 root staff 280 2007-01-11 09:47 ../ -rw-r--r-- 1 root root 732 2007-01-12 17:35 asm_isr.o -rw-rw-rw- 1 dmb dmb 2058 2007-01-09 11:37 asm_isr.S -rw-rw-rw- 1 dmb dmb 23776 2007-01-12 17:15 at45.cpp -rw-r--r-- 1 root root 4792 2007-01-12 17:35 at45.o -rw-rw-rw- 1 dmb dmb 3711 2007-01-09 16:09 com.cpp -rw-rw-rw- 1 dmb dmb 3252 2007-01-09 11:37 com.h -rw-r--r-- 1 root root 2488 2007-01-12 17:35 com.o -rwxr-xr-x 1 dmb dmb 835 2007-01-09 17:34 compile* -rw-r--r-- 1 root root 1208 2007-01-12 17:35 cstartup_ram.o -rw-rw-rw- 1 dmb dmb 5272 2007-01-09 11:37 cstartup_ram.S -rw-rw-rw- 1 dmb dmb 7556 2007-01-12 17:15 dataflash.cpp -rw-rw-rw- 1 dmb dmb 7174 2007-01-12 16:06 dataflash.h -rw-r--r-- 1 root root 3940 2007-01-12 17:35 dataflash.o -rw-rw-rw- 1 dmb dmb 984 2007-01-09 16:09 div0.c -rw-r--r-- 1 root root 648 2007-01-12 17:35 div0.o -rw-rw-rw- 1 dmb dmb 348 2007-01-09 16:10 elf32-littlearm.lds -rw-rw-rw- 1 dmb dmb 27065 2007-01-09 11:37 embedded_services.h -rwxr-xr-x 1 dmb dmb 192 2007-01-09 11:37 env.sh* drwxrwxrwx 2 root root 112 2007-01-11 10:35 exchange/ drwxr-xr-x 2 dmb dmb 144 2007-01-10 10:08 include/ -rwxrw-rw- 1 root root 8429 2007-01-12 17:35 init.cpp* -rw-r--r-- 1 root root 2944 2007-01-12 17:35 init.o -rw-r--r-- 1 root root 508 2007-01-12 17:35 jump.o -rw-rw-rw- 1 dmb dmb 39 2007-01-09 11:37 jump.S -rw-rw-rw- 1 dmb dmb 15700 2007-01-12 16:10 main.cpp -rw-rw-rw- 1 dmb dmb 1352 2007-01-09 16:10 main.h -rw-r--r-- 1 root root 6580 2007-01-12 17:35 main.o lrwxrwxrwx 1 root root 13 2007-01-11 10:32 Makefile -> Makefile_last -rw-rw-rw- 1 dmb dmb 1044 2007-01-12 12:42 Makefile_last drwxr-xr-x 2 root root 1288 2007-01-11 10:30 old/ drwxr-xr-x 3 root root 1280 2007-01-11 10:32 old2/ -rw-r--r-- 1 root root 117345 2007-01-11 13:18 ROMBOOT.asm -rwxr-xr-x 1 root root 11308 2007-01-12 17:35 romboot.bin* -rwxrw-rw- 1 root root 10116 2007-01-09 11:37 romboot.bin.orig* -rw-rw-rw- 1 root root 44010 2007-01-12 17:35 romboot.lss -rwxr-xr-x 1 root root 18007 2007-01-12 17:35 romboot.out* -rw-rw-rw- 1 dmb dmb 5276 2007-01-09 11:37 stdio.cpp -rw-rw-rw- 1 dmb dmb 643 2007-01-09 11:37 stdio.h -rw-r--r-- 1 root root 3776 2007-01-12 17:35 stdio.o -rw-r--r-- 1 root root 900 2007-01-12 17:35 _udivsi3.o -rw-rw-rw- 1 dmb dmb 2219 2004-07-04 11:49 _udivsi3.S -rw-r--r-- 1 root root 892 2007-01-12 17:35 _umodsi3.o -rw-rw-rw- 1 dmb dmb 2767 2004-07-04 11:49 _umodsi3.S значение... посмотрите пожалуста(я не знаю что там искать) в приклепленном файле асмовый код... ROMBOOT.rar
  16. оказуется так просто? вот что в итоге получается... AT91F_LowLevelInit(): Debug channel initialized AT91F_DataflashInit AT91F_SpiInit PIOA->PIO_ABSR - 0 PIOA->PIO_PSR - 3FFFFF80 PMC->PMC_PCSR - 2000 SPI->SPI_SR - 100F2 SPI->SPI_MR - E0019 dfcode - 0 press any key to enter bootloader *----------------------------------------* 1: Download Dataflash [addr] 2: Read Dataflash [addr] 3: Start U-BOOT 4: Clear bootloader section in Dataflash 5: ...test... *----------------------------------------* Enter: 1 c0000000 Download Dataflash [0xc0000000] CCCCC Modification of Arm Vector 6 :34340017 Write 11392 bytes in DataFlash [0xc0000000] write_dataflash AT91F_DataflashSelect novalid -F- Data Abort detected -F- LOOP... --------- ASR --------->: 10201 --------- AASR --------->: EA000490 --------- Address --------->: 11C8 тоесть - 11C8 если я верно понял - это адрес из пространства - Internal Memories на еще и диапазона 0х0..0х100000 (Boot Memory) так а что это теперь может нам сообщить?
  17. Вы были правы полностью: - вспоминается ваш пост: Стоп! Причем здесь корректная работа памяти? С ней, скорее всего, все в порядке. Data Abort возникает из-за некорректного обращения к памяти, а не по причине неисправности оной. с ней таки действительно все в порядке... я это проверил, вставил кусок кода для проверки памяти с топика - http://electronix.ru/forum/index.php?showtopic=20153 Подскажите пожалуста а как "можно попробовать вытащить через inline asm" ? и узнать "<адрес инструкции, вызвавшей Abort>" ?
  18. JTAG спаяем (WIGGLER) - а каким инструментарием "пошагово пробежаться по этому куску"? я не делат этого никогда, не знаю как... в инете конечно посмотрю... но может уже есть правельное отканаттое решение?
  19. в асмовсвом коде я непонял где искать... на всякий случай, в прикрепленном файле асмовкский код этого файлика, если это не испугнет ~100К размер его... оброботчик есть в файле cstartup.S /*- Set up Abort Mode and set Abort Mode Stack*/ msr CPSR_c, #ARM_MODE_ABORT | I_BIT | F_BIT mov r13, r0 /* Init stack Abort*/ sub r0, r0, #ABT_STACK_SIZE ROMBOOT.rar
  20. а как это выснить? и что за LR_abt? я так понимаю если схема правильная, то и romboot должен корректно вести себя и работать, ведь у людей же работает он.... вот тот romboot который я пытаюсь загрузить... http://heavy-online.ru/arm-linux/files/pac...oot-evm9200.tgz
  21. Кстати по ходу дела CRC32 не учавствует в этом всем... дело в том что если верить даташиту страницы 17, то по этому аддресу доступ вообще - undefined следовательно - ерунда какаято...... кто-нибудь что-нибудь может дельное посоветовать? крыша едет...
  22. собрать из линукса и gcc - бинарик для прошивки получилось.... щяс пробую сделать проверку по Вашему совету... я так понимаю Вы говорите про это? The full 32-bit wide abort address is saved in the Abort Address Status Register (MC_AASR). Parameters of the access are saved in the Abort Status Register (MC_ASR) and include: • the size of the request (ABTSZ field) • the type of the access, whether it is a data read or write or a code fetch (ABTTYP field) • whether the access is due to accessing an undefined address (UNDADD bit) or a misaligned address (MISADD bit) • the source of the access leading to the last abort (MST0, MST1, MST2 and MST3 bits) • whether or not an abort occurred for each master since the last read of the register (SVMST0, SVMST1, SVMST2 and SVMST3 bits) except if it is traced in the MST bits. вот что я сделал //*---------------------------------------------------------------------------- //* \fn AT91F_DataAbort //* \brief This function reports an Abort //*---------------------------------------------------------------------------- void AT91F_DataAbort() { int i; AT91F_DBGU_Printk("-F- Data Abort detected\n\r"); AT91F_DBGU_Printk("-F- LOOP... \n\r"); // Abort Address Status Register (MC_AASR) // Abort Status Register (MC_ASR) //int *iii; //iii=(int *AT91C_MC_ASR); printf("\n --------- ASR --------->: %X \n\r", *AT91C_MC_ASR); //iii=(int *AT91C_MC_AASR); printf("\n --------- AASR --------->: %X \n\r", *AT91C_MC_AASR); while (1); } и вот что получилось Enter: 1 c0000000 Download Dataflash [0xc0000000] CCCCC Modification of Arm Vector 6 :34340015 Write 10368 bytes in DataFlash [0xc0000000] --------- ASR --------->: 10201 --------- AASR --------->: EA000438 -F- Data Abort detected -F- LOOP... судя по всему за аддрес EA000438 отвечает этот кусок кода из lib_AT91RM9200.h //*---------------------------------------------------------------------------- //* \fn AT91F_AIC_SetExceptionVector //* \brief Configure vector handler //*---------------------------------------------------------------------------- __inline unsigned int AT91F_AIC_SetExceptionVector ( unsigned int *pVector, // \arg pointer to the AIC registers void (*Handler) () ) // \arg Interrupt Handler { unsigned int oldVector = *pVector; if ((unsigned int) Handler == (unsigned int) AT91C_AIC_BRANCH_OPCODE) *pVector = (unsigned int) AT91C_AIC_BRANCH_OPCODE; else *pVector = (((((unsigned int) Handler) - ((unsigned int) pVector) - 0x8) >> 2) & 0x00FFFFFF) | 0xEA000000; return oldVector; } что это может значит?
  23. Щяс напарник схему положит и ответитит по этой ссылочке ( он в гиперлинксе моделирует )
  24. Вы по ходу правы, если верить огрызку кода... этого я не заметил честно говоря... так...веселье наступает... тогда, вопросиком плавно переходим к новому вопросику связанным с корректной работой схемы... а именно с работой с памятью... вопрос по памяти: используется SAMSUNG K4S561632E-IC75 + абсолютно на всех цепях от МК до RAM стоят резюки на 33 Ом... - могут ли они както влиять? или может проще Вам показать схему, на эту плату, что бы посмотреть правильно ли мы память вообще прицепили к МК?