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

 
 
> at91sam7s256-ek, Вопросы по программированию, настройке iar и первой программе
mempfis_
сообщение Mar 24 2010, 14:19
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Разбираюсь с at91sam7s256-ek.
Пытаюсь заставить мигать 4 светодиода на PA0-PA3
Установил iar 5.40, samba v1.8.
Создал простой проект с таким кодом:


CODE
void main(void)
{
#include "C:\Program Files\IAR Systems\IAR ARM\arm\inc\Atmel\ioat91sam7s256.h"

//разрешение тактирования pio
AT91C_BASE_PMC->PMC_PCER = (1ul<<AT91C_ID_PIOA);

//попытка настройки gpio
AT91C_BASE_PIOA->PIO_OER = (1ul<<3)|(1ul<<2)|(1ul<<1)|(1ul<<0);
for(;;)
{
//устанавливаем ножку
AT91C_BASE_PIOA->PIO_SODR = (1ul<<3)|(1ul<<2)|(1ul<<1)|(1ul<<0);
for(long i=1000000; i; i--);

//сбрасываем ножку
AT91C_BASE_PIOA->PIO_CODR = (1ul<<3)|(1ul<<2)|(1ul<<1)|(1ul<<0);
for(long i=1000000; i; i--);

}
}


В настройках IAR указал файл конфигурации линкеру $TOOLKIT_DIR$\examples\Atmel\at91lib\boards\at91sam7s-ek\at91sam7s256\flash.icf
Проект скомпилироваля с одним предупреждением:
Код
Warning[Lp012]: no sections with name FIQ_STACK included - special symbol FIQ_STACK$$Limit (referenced from cstartup.o(rt4t_al.a)) will be zero


Залил через самбу bin-файл в контроллер. Естественно ничего сразу не заработало, но светодиоды приблизительно раз в 10 секунд мерцают или сразу после нажатия кнопочки RESET.

Теперь собственно вопросы:

1. При заливке через самбу прошивки в МК пишется что всё ОК. Но чтобы перепрошить МК новой прошивкой необх стереть память, востановить загрузчик? Или я както неправильно заливаю прошивку в МК?

2. Нигде в папках IARа не могу найти стартап для данного МК. Нужно ли его добавлять к проекту или он добавляется автоматически?

3. Связано ли это предупреждение с тем что у меня нет стартапа в проекте?

4. Ну и по коду программы - в симуляторе всё крутится нормально, в железе не работает. Есть ли какието особенности при начальном запуске SAMов?
Когдато тренеровался на LPC2468 - там подобный код шёл даже без настройки PLL (нужен был только корректный .icf).

Также просьба подсказать какие разделы в документации следует читать в первую очередь (761 страница - сложновать осилить всё за раз).

Заранее спасибо всем кто поможет и направит на путь истинный smile.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aurochs
сообщение Mar 24 2010, 21:30
Сообщение #2


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



Цитата(mempfis_ @ Mar 24 2010, 16:19) *
1. При заливке через самбу прошивки в МК пишется что всё ОК. Но чтобы перепрошить МК новой прошивкой необх стереть память, востановить загрузчик? Или я както неправильно заливаю прошивку в МК?


Да, именно так. Если писать код во флеш с адреса 0x200000, то он затрет собой самбу.
Чтобы не восстанавливать каждый раз самбу - нужно загружать код либо в RAM, либо во флеш, но с адреса, например, 0x204000 и стартовать его самбой вручную.

Цитата(mempfis_ @ Mar 24 2010, 16:19) *
3. Связано ли это предупреждение с тем что у меня нет стартапа в проекте?


Конечно связано - не объявлена секция для стека режима FIQ
А почему без стартапа то? Старая ковбойская привычка? wink.gif

Цитата(mempfis_ @ Mar 24 2010, 16:19) *
4. Ну и по коду программы - в симуляторе всё крутится нормально, в железе не работает. Есть ли какието особенности при начальном запуске SAMов?


А что именно не работает?
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Mar 25 2010, 08:54
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(Aurochs @ Mar 25 2010, 01:30) *
Да, именно так. Если писать код во флеш с адреса 0x200000, то он затрет собой самбу.
Чтобы не восстанавливать каждый раз самбу - нужно загружать код либо в RAM, либо во флеш, но с адреса, например, 0x204000 и стартовать его самбой вручную.


Спасибо за ответ по поводу самбы.
Разобрался в атмеловском примере 'getting-started-project' для sam7s-board - откопал оттуда пример стартапа, подключение его к проекту и файл конфигурации flash.icf. Светодиоды моргают.

Появился вопрос связанный с размещением программы и ремапом.
Не могу понять распределение адресов на рисунке и как с ними соотносятся реальные размеры flash и sram.
Напримерпо рисунку internal flash имеет диапазон 0x0010 0000 - 0x001F FFF что никак не соответствует реальному размеру flash моего контроллера 0x3ffff (sam7s256). Как вообще следует понимать это распределение памяти?

Если я захочу исполнять код из оперативной памяти (насколько я понял оттуда быстродействие будет выше) то обозначает ли это то что я сначала должен скопировать код из flash в sram начиная с того адреса где у меня будет располагаться main и сделать ремап чтобы процессор переключился на исполнение кода из оперативной памяти?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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