Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: запись программы во флеш на отладочной плате EDB9315
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Pole
на сайте arm.cirrus.com имеется программа download которая позволяет загружать образ (.bin) во флеш на отладочной плате EDB9312/9315 через COM порт. Изначальна это программа служила для загрузок образов ОС. Можно ли откомпилировать в IAR программу с расширением .bin, а затем загрузить её таким образом в флеш, чтобы процессор затем запускался с флешки. И если можно, то что нужно писать в файле .xcl, какие адреса? И в файле .bin созданный в IAR будет ключевое слово "CRUS" или "SURC" вначале?
aaarrr
Цитата(Pole @ May 31 2006, 00:31) *
Можно ли откомпилировать в IAR программу с расширением .bin, а затем загрузить её таким образом в флеш, чтобы процессор затем запускался с флешки. И если можно, то что нужно писать в файле .xcl, какие адреса?

Можно. Адреса будут 0x00 для флеш и 0xC0000000 и выше - для SDRAM. В зависимости от конфигурации и количества SDRAM, она может быть разбита на несколько страниц.
SDRAM, кеширование и т.п. нужно инициализировать в стартапе.

Цитата(Pole @ May 31 2006, 00:31) *
И в файле .bin созданный в IAR будет ключевое слово "CRUS" или "SURC" вначале?

Будет, если попросить хорошо smile.gif
Ключевое слово нужно только для загрузки из EEPROM или через UART.

Эта тема уже неоднократно обсуждалась, так что поиск рулит.
Pole
Цитата(aaarrr @ May 31 2006, 15:48) *
Ключевое слово нужно только для загрузки из EEPROM или через UART.

По поводу загрузки из флеш в документации написано следующие:

To boot from FLASH, put the “CRUS” or “SURC” HeaderID at one of the
following locations...

Цитата
Эта тема уже неоднократно обсуждалась, так что поиск рулит.

Я искал в поиске но на нужные вопросы ответов не нашел. Там было про загрузку, но другими способами.

Цитата
Будет, если попросить хорошо smile.gif

И как это сделать?
aaarrr
Цитата(Pole @ May 31 2006, 17:28) *
По поводу загрузки из флеш в документации написано следующие:

To boot from FLASH, put the “CRUS” or “SURC” HeaderID at one of the
following locations...

Это для режима Internal boot. Лучше использовать External boot, тогда проблемы с ID отпадут сами собой.
Pole
Цитата(aaarrr @ May 31 2006, 21:05) *
Это для режима Internal boot. Лучше использовать External boot, тогда проблемы с ID отпадут сами собой.


Я бы с радостью но у меня отладочная плата EDB9315A в котором только два режима загрузки либо через UART, либо Internal boot из флешки. Остальные варианты недоступны (все намертво припаяно и джамперов нет). Вот и мучаюсь sad.gif .
Был бы очень признателен если бы мне подсказали, как откомпилировать программу в IARе чтобы её можно было таким образом загрузить. Я даже не могу загружать программу через JTAG sad.gif
aaarrr
Цитата(Pole @ May 31 2006, 22:20) *
Я бы с радостью но у меня отладочная плата EDB9315A в котором только два режима загрузки либо через UART, либо Internal boot из флешки. Остальные варианты недоступны (все намертво припаяно и джамперов нет). Вот и мучаюсь sad.gif .

Да, плата жутковатая. Правда, можно подтянуть EECLK на землю - получится как раз то, что нужно.

Цитата(Pole @ May 31 2006, 22:20) *
Был бы очень признателен если бы мне подсказали, как откомпилировать программу в IARе чтобы её можно было таким образом загрузить. Я даже не могу загружать программу через JTAG sad.gif

IAR я не использую, но подскажу smile.gif Достаточно в стартовом asm файле положить сигнатуру CRUS по адресу 0x00 (DCD 0x53555243). По-идее, там должен быть вектор reset, но при internal boot он все равно не может использоваться.
Pole
Цитата(aaarrr @ Jun 1 2006, 00:32) *
Да, плата жутковатая. Правда, можно подтянуть EECLK на землю - получится как раз то, что нужно.

Распаять можно конечно. Нужно будет над этим подумать, страшновато как-то...

Спасибо! Попробуем.
Pole
Тоесть мне нужно в стартовом asm файле прописать DCD 0x53555243?
Код
MODULE    ?RESET
        COMMON    INTVEC:CODE:NOROOT(2)
        PUBLIC  __program_start
        EXTERN    ?cstartup

        EXTERN    irq_handler
        CODE32; Always ARM mode after reset    
        org    0x00
__program_start
        DCD 0x53555243; CRUS
                  ldr    pc,=?cstartup ; Absolute jump can reach 4 GByte
...

И еще один вопрос. Я попробовал с помощью редактора вставить вначала бинарного файла сигнатуру CRUS. Пограмма начала загружаться, но не делает того что нужно. Может ли быть причина в том, что на плате установлена 16 битная загрузка и сама флешка 16 разрядная. Это может повлиять на загрузку?
aaarrr
Цитата(Pole @ Jun 6 2006, 22:29) *
Тоесть мне нужно в стартовом asm файле прописать DCD 0x53555243?

Да.

Цитата(Pole @ Jun 6 2006, 22:29) *
И еще один вопрос. Я попробовал с помощью редактора вставить вначала бинарного файла сигнатуру CRUS. Пограмма начала загружаться, но не делает того что нужно. Может ли быть причина в том, что на плате установлена 16 битная загрузка и сама флешка 16 разрядная. Это может повлиять на загрузку?


Похоже, я ввел Вас в заблуждение относительно адреса флеш памяти. На циррусовских платах флеш
подключена к CS6, т.е. адрес будет 0x60000000, а не 0x00. Может быть, поэтому и не работает.
Pole
У меня возникают следующие сомнения.

Длина команды 32 бита, а флешка 16 битная. Программа грузится из 16 разрядной флешки. Чтобы прочитать одну команду нужно два цикла чтения. может быть в этом проблема, что для загрузки нужна 32 разрядная флешка?
aaarrr
Сколько сделать циклов чтения контроллер разберется сам, на
основании состояния пинов CS6 и CS7.
MemoryTest
Цитата(Pole @ Jun 7 2006, 00:19) *
У меня возникают следующие сомнения.

Длина команды 32 бита, а флешка 16 битная. Программа грузится из 16 разрядной флешки. Чтобы прочитать одну команду нужно два цикла чтения. может быть в этом проблема, что для загрузки нужна 32 разрядная флешка?


У Вас есть под нее БСП ? какой нибудь? к этоц отладочной плате сиррус дает БСП под WinCE там
есть бутлоадер (eboot.nb0). посмотрите как он работает... и можно сделать так же.. но он там хитро работаетsmile.gif) ..
А чтобы заработало из иара нужно для РОМ использовать адреса с 0x60000000
а для РАМ или буффер EMACа или SDRAM но СДРАМ надо проинитить перед использованием.
Смотрите исходники на бутлоадер от цирруса smile.gif там все есть.
Pole
Спасибо. Обезательно все посмотрю smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.