Jump to content

    

Odiemus

Участник
  • Content Count

    40
  • Joined

  • Last visited

Posts posted by Odiemus


  1. Да. После того, как он запустился, его надо послать еще раз. Уже для прошивки во флешь. На heavy-online есть хорошая инструкция. Там все это описано.

    я эту инструкцию уже чуть ли не наизусть выучил :blink:

    я пробовал второй раз посылать и romboot.bin еще раз, и u-boot.bin - передача по x-modem не проходит, из-за ошибок при передаче x-modem отваливается. такое впечатление что или

    порт неправильно сконфигурен или память или что еще :(

    т.е. когда сам проц работает от slowclock после резета то x-modem еще как-то пашет, а вот после запуска romboot и егойных переинициализий железа x-modem самого romboot'а не пашет - не принимает ничего.

    да, кварц я сейчас перепаял с 16000 kHz на 18432 kHz.

    я еще попробовал добавить простейший тест памяти в сам romboot - записав числа начиная с адреса 0x20000000 объёмом около 16 метров (хотя памяти запаяно 64 метра суммарно) и сравнив потом то что я записал с тем что там на самом деле лежит после записи - там какая-то лажа :(

    когда я пробую проверить тож самое начиная с адреса 0xC0000000 то получаю практически сразу после запуска этого теста:

    -F- Data Abort detected

    вот что у меня за тест:

                case '5': {
    #define MEMTEST_ADDR_START      0x20000000
    #define MEMTEST_SIZE            16777210
                    int *ptr, i;
                    printf("Starting memory test.\n\r");
                    printf("Writting.\n\r");
                    ptr = (int *)MEMTEST_ADDR_START;
                    for (i = 0; i < MEMTEST_SIZE; i++) {
                        *ptr = i;
                        ptr++;
                    }
                    printf("Reading.\n\r");
                    ptr = (int *)MEMTEST_ADDR_START;
                    for (i = 0; i < MEMTEST_SIZE; i++) {
                        int x;
                        x = *ptr;
                        if (x == i) {
    
                        } else {
                            printf("Error @ 0x%x: expected 0x%x found 0x%x.\n\r",
                                    ptr, i, x);
                        }
                        ptr++;
                    }
                }
                command = 0;
                break;

    а при тесте с 0x20000000 я получаю такой результат:

    AT91F_LowLevelInit(): Debug channel initialized                                                                             
    press any key to enter bootloader                                                                                           
                                                                                                                                
    ATMEL LOADER VER 1.01 Apr 27 2007 23:48:13                                                                                  
    *----------------------------------------*                                                                                  
    DataFlash[0x0]:AT45DB642                                                                                                    
    Nb pages: 008192                                                                                                            
    Page Size: 001056                                                                                                           
    Size=08650752 bytes                                                                                                         
    Logical address: 0xC0000000                                                                                                 
    Main = 18432000 Hz                                                                                                          
    CPU = 48054841 Hz                                                                                                           
    *----------------------------------------*                                                                                  
    1: Download Dataflash [addr]                                                                                                
    2: Read Dataflash [addr]                                                                                                    
    3: Start U-BOOT                                                                                                             
    4: Clear bootloader section in Dataflash                                                                                    
    5: Simple SDRAM test                                                                                                        
    *----------------------------------------*                                                                                  
    Enter: 5                                                                                                                    
    Starting memory test.
    Writting.                                                                                                                   
    Reading.                                                                                                                    
    Error @ 0x20000000: expected 0x0 found 0x820000.                                                                            
    Error @ 0x20000004: expected 0x1 found 0x820001.                                                                            
    Error @ 0x20000008: expected 0x2 found 0x820002.                                                                            
    Error @ 0x2000000c: expected 0x3 found 0x820003.                                                                            
    Error @ 0x20000010: expected 0x4 found 0x820004.                                                                            
    Error @ 0x20000014: expected 0x5 found 0x820005.                                                                            
    Error @ 0x20000018: expected 0x6 found 0x820006.                                                                            
    Error @ 0x2000001c: expected 0x7 found 0x820007.                                                                            
    Error @ 0x20000020: expected 0x8 found 0x820008.                                                                            
    Error @ 0x20000024: expected 0x9 found 0x820009.                                                                            
    Error @ 0x20000028: expected 0xa found 0x82000a.
    ...

     

    я не пойму - то-ли память не так инициализирована, то-ли память битая, так как чипы выпаяны из диммов (но вроде выпаивал аккуратно, не перегревал особо).

     

    сейчас сижу изучаю даташиты на микросхемы памяти

    я-то взял не 8-ми или 16-ти метровые чипы, как это сделано в оригинале rainbow, а поставил два 32-х метровых HY57V56160FTP-H.

  2. так ромбут и убут прошиты во флеш?

    нет, во flash еще ничего не прошито

    а надо прошить программатором извне или можно romboot залить по xmodem и он себя прошьет?

  3. Теперь другая беда - после загрузки romboot.bin он запускается, но грузить u-boot.bin не хочет :( :

    CCCCCCCCCCpress any key to enter bootloader
    
    ATMEL LOADER VER 1.01 Apr 24 2007 00:56:07
    *----------------------------------------*
    DataFlash[0x0]:AT45DB642
    Nb pages: 008192
    Page Size: 001056
    Size=08650752 bytes
    Logical address: 0xC0000000
    *----------------------------------------*
    1: Download Dataflash [addr]
    2: Read Dataflash [addr]
    3: Start U-BOOT
    4: Clear bootloader section in Dataflash
    ---
    *----------------------------------------*
    Enter: 1 c0000000
    Download Dataflash [0xc0000000]
    CCCCCCC

    пока буду пытаться сам по даташитам что-то выудить....

    Кто может сказать какие значения констант для PLL и вообще для клоков 16MHz кварца надо указать при компиляции romboot чтоб он правильно проинитил всё?

  4. А не подскажите, что такое "(16 - 4)" ?

     

    16Kb - суммарный объём встроенной SRAM в проце, 4Kb Atmel рекомендует резервировать под stack, так что для апликух остаётся всего 12 кил, куда они и должны влезть.

     

    Да, RomBoot я уже вполне запустил ;) . не сразу заметил что надо быстро нажать any key для выхода в меню. скомпилённый мной нормально работает. теперь буду терзать его на предмет заливки его-же во flash и заливки u-boot.

  5. продвижение!

    оказывается надо сначала запустить передачу, только потом нажать reset чтоб с перым же C началась передача - так работает!

     

    Переписывал инициализацию СДРАМ.

    вот так:

    http://electronix.ru/forum/index.php?showtopic=25634

    это надо смотреть на даташит Ваших микросхем.

     

    сейчас буду по этому треду идти и смотреть что у меня не работает.

    у меня сейчас выводит строку

    Добро пожаловать в minicom 2.1                                                 
                                                                                   
    ОПЦИИ: History Buffer, F-key Macros, Search History Buffer, I18n               
    Дата компиляции Feb  6 2007, 00:07:27.                                         
                                                                                   
    Нажмите CTRL-A Z для получения подсказки по клавишам                           
                                                                                   
                                                                                   
    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Ъ

    но по крайней мере проц пашет! :)

  6. Доходит до конца и что? висит дальше, или выводит меню?

    в том-то и дело что до конца загрузка не доходит и висит, зависает при передаче x-modem'ом.

    если бы он доводил до конца загрузку и что-то запускалось уже внутри на процессоре я был бы куда более спокоен. я боюсь что мог попалить проц при монтаже :( или какую-то его часть могло выбить статикой?

    Ромбут действительно запускается из внутренней памяти процессора, отсюда мораль: он должен быть не больше этой памяти. Я сначала тоже перепутал на сайте Хэви ромбут (11к) и у-бут (113к). Если он превысит этот размер, то передача зависнет, что, как я понимаю, у Вас и происходит.

    это-то я как раз не перепутал!

    я гружу именно romboot который у меня объмом 10116 байт.

    до u-boot'а еще далеко :(

    ... У меня были проблемы, пока я не переписал инициализацию памяти под свои микросхемы.

    а что именно пришлось переписывать?

    у меня сейчас стоят два чипа памяти HY57V561620FTP-H

  7. Без памяти РомБут работать не будет, с не работающей памятью, тоже, с неправильно проинициализированной памятью...

     

    Вообще в самом процессоре 16 Kb SRAM встроено, ромбут занимает около 11 кил, т.е. влазит в рекомендованные атмелом 12 Kb (16 - 4). Я потому и не увидел причин ему не загрузиться и не запуститься выведя хоть что-то на консоль. когда я почитал об инициализации и процессе загрузки то там сказано что как раз ромбут первым попадает в память, ему отдаётся девственно чистое свежерезетнутое hardware и он должен сам всё начать инициализировать, в том числе и память, flash, usart...

     

    по крайней мере, что-то он в консоль выдаст. Если есть джитаг, то стоит загнать в камень тест памяти и посмотреть осциллографом на всех выводах памяти на отсутствие сопель. Если нет джитага и осциллографа, то пробовать минимальные примеры от Атмела, где есть только инициализация уарта и выдача строки в консоль. Пока консоль не заработает, ничего не получится.

     

    "сопли" - это закоротки и/или непропаи при пайке?

    jtag пока нет, но схему я нашел и собираюсь уже его паять. какой со стороны виндов для него софт?

    пока jtag паяется буду пробовать примеры от атмела, если смогу их скомпилить...

     

    Потом уже пробовать тест памяти.

     

    ага, это уже стоит в плане

     

    P.S. а DBGU подключили? Я, просто не уверен, буковка Ц может бежать и на основном уарте.

     

    на основном не бежит, я проверил. всё работает именно на DBGU.

     

    да, еще момент: при загрузке одной версии romboot'а загрузка проходит до конца. При загрузке того робмута который скомпилировал я (или взял с heavy-online) - передача в какой-то момент останавливается и стоит :(

  8. Спаял я версию Rainbow 1.1

    по мере сборки проверил питание - работает.

    запаял сетевой контроллер, запаял RJ45, запаял flash (AT45DB642D) и AT91RM9200.

    как рекомендовали, включил - на терминале побежали 'CCCCC' x-modem'а, типа работает.

    попробовал залить romboot.bin - вроде как залился, но после него на консоли тишина.

    было предположение что это потому что память еще не впаяна. Впял память.

    Ситуация не изменилась.

    Пробовал сам собрать romboot из исходников на heavy-online.ru и залить, пробовал залить уже готовый romboot.bin оттуда же, пробовал заливать который поставляется атмелом - изменений нет.

    Есть-ли какие рекомендации как узнать-проверить в каком месте у меня затык?

    MAX2323 пашет и проц работает (судя по тому что на терминал откликается), но дальше - молчок.

    может у проца какая-то часть вылетела при его монтаже? :(

  9. Итак, будет правиться, пока не соберем все баги на текущей плате с методами лечения.

    COMA поконтролируй плиз :)

    а о найденных ошибках в тексе подписей на плате тоже сюда?

  10. все нашел:

    вопрос, оставлять на прямую или делать джампер?

    еще по поводу конфронтации SD и дебаг порта... я хочу 2ой дебаг порт вывести через макс, благо есть у него еще 2 тригера... вот только он болтается как раз на SDных ногах...

    как лучше?

     

    сделать жестко вот это решение?

    А можно поставить джампер для выбора SD - DEBUG ?

    Я понимаю что джамперов получится дохрена, IMHO уж пусть лучше они чем плату потом перекраивать скальпелем и паяльником.

     

    Я понимаю что джамперов получится дохрена, IMHO уж пусть лучше они чем плату потом перекраивать скальпелем и паяльником.

    вдогонку: джамперы можно ставить маленькие, как на винчестерах ставят!

  11. Прикуплю у народа резюки 49.9, 1к27, 1к96. Нигде не достать в питере, да и в инет магазах пусто..

    Нужно хотя бы по 3 штуки, лучше по 5-6.

    Или скажите, где их достать...

    Остальное почти все худо-бедно заказано.

     

    Часть заказал с дельты, часть будет заказано с платана... Посмотрим, что с дельты пойдет, они уже частично заказ покоцали.. Ироды :(

    И деталей на 400р, они 700+ хотят.

    Есть народ в мск, кто помочь может? Получить и через проводников передать? Или почтой.

    Заодно с платаном легче будет..

    49.9 ома можно прекрасно распаять со старых сетевух, в том числе ISA, которые в некоторых конторах просто выкидывают.

    Заменять на 50 ом, или, тем более,на 51 (из ряда E24) я не советовал бы - может уменьшиться скорость работы сети и увеличиться количество ошибок. как я почитал эти резюки именно _прецизионные_ ставят для того чтоб согласовать всякие волновые сопротивления линий передач (собсно после этого я и понял где их следует искать ;) ).

    Один 3Com и еще какую-то сетеуху на Via распаял и четыре резюка 0805 и два 1206 у меня уже есть (не говоря уж о кучке прочих деталей SMD).

    1K96 я выбирал омметром из кучи резюков по 2K0, перемеряв-перелопатив полсотни выбрал....

    аналогично 1K27 из кучи 1K3.

    Вот что делать с 6К49 я пока окончательно не решил, слишком далеко отстоит от ближайших соседей по E24 :( . В продаже нет, на сетевухах я не нашел еще :( видимо буду делать составной или из двух "домиком" (подобранная пара 5K6+910 ом) или "пирогом" (подобранная пара по 13K0).

     

    p.s. резистивные матрицы по 68 ом я заменил на выпаянные из матерей по 56 ом :)

  12. 1. А каким кросс-компилятор вы под Win32 пользовались?

     

    2. :) С армами я уже давно работаю (QNX + ARM9). Просто там был весь набор средств под винду, а под линух на Win32 что-то сложнее найти. Вот я и спрашиваю, мож кто чем пользовался...

    по поводу пункта 1 могу сказать не стесняясь - cygwin - порт gcc под win32.

    работает прекрасно! в плане работы.

    Но все makefile'ы и всякие батники для сборок писать/править надо текстовыми редакторами, никаких визуальных сред к gcc особо нет.

  13. Всем привет.

    Собираюсь ставить Linux на AT91RM9200. Какие дистрибутивы (и где их взять) посоветуете?

    Еще очень важный вопрос - сборка всего этого под Виндой. Делал ли кто-либо это? Готов даже купить средство разработки под Винду.

    Дистрибут в принципе любой, просто его надо будет пересобрать кросс-компилятором чтоб получить бинарники под ARM.

    Где работает кросс-компилятор - совершенно фиолетово, хоть под Unix, хоть под Win32, я и там и там собирал вполне успешно.

    Можете посмотреть в сторону дистрибутива Linux BlueCat. Он специально заточен под всякие embeded штуки, правда, не знаю как там сейчас в халявно распространяемом варианте...

    Так же у LynuxWorks есть готовые комплекты/наборы для кросс-компиляции, в том числе и под Win32, можете попробовать обратиться к ним, если не хотите сами перекомпилировать/пересобирать.

    Но, IMHO, лучше Вам самим собственноручно всё скомпилировать. Если Вы не в состоянии сами скомпилировать программы для дистрибутива то и с программированием под ARM вы тож, скорее всего, не справитесь.