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

 
 
> есть вопросы при переходе, с АРМ7 на ARM9 от Atmel-а
bookevg
сообщение Apr 17 2009, 06:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 320
Регистрация: 13-09-06
Пользователь №: 20 348



Раньше в разработках использовали АРМ7 от Atmel-а, а именно SAM7x. Теперь подумываем о переходе на АРМ9, а именно на SAM9260 или SAM9XE. При этом хотелосб бы, чтобы была возможность устанвки по выбору или SAM9260 или SAM9XE (т.к. последний еще не запущен в производство). Все разработки программного обеспечения предполагается вести в IAR.
Так вот привожу список вопросов, которые у меня возникли:
1) у SAM9260 есть возможность загрузки программы из внешней flash-SPI памяти, но часть моей программы д.б. во внутр. ОЗУ, а часть во внеш. Значит вначале должна загрузится часть программы, которая заливается во внутр. ОЗУ, затем эта программа д.проинициализировать внешную память и загрузить оставшую часть программы из внешней flash-SPI памяти как во внутр. ОЗУ, так и во внеш.ОЗУ память.
Это все я должен реализовывать сам или IAR это поддерживает (т.е. есть готовый загрузчик, который мне надо только подправить, чтобы правильно проинициализироватьвнешнюю память)?
Для примера: для процессоров ADSP21371/5, у которых есть возможность выполнения программ из внеш.ОЗУ, я описывал проект свой, в котором по сегментам указывал компилятору, где должен располагаться код и данные, а затем к своему проекту я выбирал готовый загрузчик от AD. Т.о. при подачи питания вначале загружается этот загрузчик, а затем он загружает мою прошивку как во внутр., так и во внеш. память
2) может ли выполняться программный код у SAM9XE во внешней памяти?
3) есть ли возможность у SAM9XE выполнить аналогичные действия как в 1-м пункте, т.е. представить внутр.ОЗУ как внеш.память.
Это я должен реализовывать сам или у IAR или Atmel для этого готовые программные решения?
4) есть ли возможность у SAM9XE разместить часть кода как во внутр.ОЗУ, так и во внеш.ОЗУ - отличие от п.3 состоит в том, что программа может также выполняться из внутр.flash памяти - т.е. это что-то похоже на размещение функции директивой __ramfunc__, которая есть у IAR - но вот только как сказать IAR, что функция д.б. размещена во внеш.ОЗУ - я так понимаю все это делается указанием сегмента, в котором д.б. размещена функция + использованием директивы __ramfunc__, тогда при инициализации программа загрузит ее во внеш. ОЗУ - как это было для SAM7x
5) правильно ли я понял, что для SAM9260 SAMBA м.обновить программу, которая должна быть размещена во внеш.SPI памяти?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
defunct
сообщение Apr 25 2009, 03:03
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(bookevg @ Apr 17 2009, 09:16) *
2) может ли выполняться программный код у SAM9XE во внешней памяти?

Может.

Цитата
3) есть ли возможность у SAM9XE выполнить аналогичные действия как в 1-м пункте, т.е. представить внутр.ОЗУ как внеш.память.
Это я должен реализовывать сам или у IAR или Atmel для этого готовые программные решения?

Не совсем ясен вопрос. Внутреннее ОЗУ это внутреннее ОЗУ. Оно быстрое в отличие от внешнего, тратить его надо грамотно на что-то очень критичное по быстродейтствию.
Например удобно размещать там структуры данных ОС, Стеки, и конечно же критичные по времени обработки - обработчики прерываний.
Готовые решения есть, но все зависит от задачи.

Плюс можно также взять во внимание что у процессора есть BUS_MATRIX - это комутатор шин между мастерами и памятью/периферией.
Например DMA может ложить или читать что-то из внутренней памяти, в то время как процессор параллельно может читать инструкции из FLASH и одновременно данные из внешней памяти.
Обычный код можно хранить и в медленной памяти, т.к. ICache'а у этих процессоров всяко больше, чем кеша данных.

Цитата
4) есть ли возможность у SAM9XE разместить часть кода как во внутр.ОЗУ, так и во внеш.

Обязательно. Можно размещать что угодно и как угодно. Туча примеров на сайте Atmel.
В то же время у процессора есть MMU, т.е. любую память можно заремепить на любой адрес.

Цитата
ОЗУ - отличие от п.3 состоит в том, что программа может также выполняться из внутр.flash памяти - т.е. это что-то похоже на размещение функции директивой __ramfunc__, которая есть у IAR - но вот только как сказать IAR, что функция д.б. размещена во внеш.ОЗУ - я так понимаю все это делается указанием сегмента, в котором д.б. размещена функция + использованием директивы __ramfunc__, тогда при инициализации программа загрузит ее во внеш. ОЗУ - как это было для SAM7x

За "что-где положить" отвечает линкер. см. скрипты линкера.
Самые удобные на мой взгляд скрипты в тулчейнах от ARM - SDT / RVDS. А IAR сильно нагружен ненужностями тянущимися от других процессоров.

Цитата
5) правильно ли я понял, что для SAM9260 SAMBA м.обновить программу, которая должна быть размещена во внеш.SPI памяти?
Да правильно. SAMBA нативно поддерживает SPI флеш и NAND. Аналогично для XE + внутренний флеш.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 25 2009, 08:04
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Посмотрите на linux4sam про bootstrap и u-boot. Надеюсь, станет понятней процесс загрузки и исполнения кода.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
bookevg
сообщение Apr 27 2009, 11:02
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 320
Регистрация: 13-09-06
Пользователь №: 20 348



Спасибо за ответы. Так и думал.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 08:32
Рейтинг@Mail.ru


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