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

 
 
 
Reply to this topicStart new topic
> sam7s64 + iar5.10 -> flash run, загрузка в flash и выполнение
cpl
сообщение Oct 3 2007, 22:10
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Установил IAR5.10 запустил пример моргание светодиодов для платы OLIMEX SAM7-P64
в RAM все работает, в FLASH тоже все работает(шью J-LINKом).

решил проверить как будет работат автономно, все отключил, перезапустил плату, в ответ тишина.

Просмотрел адресса 0x10000+ лежит программа но не подает признаков жизни,
что не так не пойму пример простой и дубовый должени работать ан нет....
smile3046.gif
отсюда возникают вопросы:
1. что нетак ? пример под данную плату, пробовал заливать бинарик готовый через самбу все в порядке работает, свеже компиленый не пашет...
непойму кто виноват толи не донастроил в самой среде IAR или переферия или ремап не прошел ?
2. каков порядок инициализации переферии первоначальный WD, PLL, AIC, MC в какой последовательности и что надо незабывать настроить обязательно и что можно потом типа SPI UART TIMER PDC ?
smile3009.gif
пример прилагаю.
Прикрепленные файлы
Прикрепленный файл  TANK_v1.rar ( 137.5 килобайт ) Кол-во скачиваний: 35
 
Go to the top of the page
 
+Quote Post
_dem
сообщение Oct 4 2007, 06:39
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 2-02-07
Из: CN, Ukraine
Пользователь №: 24 970



шьете из-под J-Flash или с помощью IAR ?
Go to the top of the page
 
+Quote Post
cpl
сообщение Oct 4 2007, 06:44
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Цитата(_dem @ Oct 4 2007, 10:39) *
шьете из-под J-Flash или с помощью IAR ?


Да прошил через jtag jlink-ом в IAR в отладчике
тамже запустил все работает...
передернул питание .... тишина sad.gif
пробовал через самбу тоже тишина....
Go to the top of the page
 
+Quote Post
ljerry
сообщение Oct 4 2007, 07:07
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-02-06
Из: Зеленоград
Пользователь №: 14 071



Бит GPNVM2 (загрузка из Flash) установлен?
Go to the top of the page
 
+Quote Post
cpl
сообщение Oct 4 2007, 07:23
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Цитата(ljerry @ Oct 4 2007, 11:07) *
Бит GPNVM2 (загрузка из Flash) установлен?

он должен прописываться в программе ?
в system.c нашел строчку
AT91PS_MC p_pMC = AT91C_BASE_MC;
но на нее некто нессылается... закоментирывал некаких изменений (не используется)
в каком месте нужно устанавливать данный бит ?
при инициализации всей переферии ?
Go to the top of the page
 
+Quote Post
ljerry
сообщение Oct 4 2007, 07:35
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-02-06
Из: Зеленоград
Пользователь №: 14 071



И еще, есть замечания по инициализации генератора тактовой частоты:

1. В регистр PLLR пишутся какие-то не те значения, не то, что указаны в комментариях. В поле делителя должно быть прописано значение 5 (а не 3), в поле умножителя - 25 (а не 24);

2. До кучи (для полной икебаны smile.gif ) можно сразу прописать и правильное значение делителя USB (1:2);

3. Запись в MCKR выполнена откровенно неправильно. Нужно сначала прописать поле прескалера, дождаться установления флага MCKRDY, затем прописать поле выбора источника тактовой частоты и снова дождаться флага MCKRDY. Что-то типа:

Код
  pPMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK | AT91C_PMC_PRES_CLK_2;
  while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
  pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK_2;
  while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));


В общем, внимательно прочтите раздел 29.7 руководства.

Цитата(cpl @ Oct 4 2007, 11:23) *
он (бит GPNVM2) должен прописываться в программе ?


Нет, этот бит программируется с помощью самбы. На вкладке Flash нужно выбрать макрос Boot from Flash (из списка) и нажать кнопку Execute

Удачи!

P.S. Еще вспомнил: нужно перед инициализацией генератора настроить Embedded Flash Controller - установить нужное число wait states. Правильное значение смотрите в описании на свой контроллер. У меня в AT91SAM7SE512 при питании ядра 1.8 В требуется 1 WS.

Сообщение отредактировал ljerry - Oct 4 2007, 07:53
Go to the top of the page
 
+Quote Post
Fusion
сообщение Oct 4 2007, 18:27
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 19-07-06
Пользователь №: 18 920



И еще в Iar надо *.xcl указать.

Proekt -> Options -> Linker -> Config -> Override default -> *.xcl
Go to the top of the page
 
+Quote Post
cpl
сообщение Oct 4 2007, 21:07
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Цитата(ljerry @ Oct 4 2007, 11:35) *
И еще, есть замечания по инициализации генератора тактовой частоты:

1. В регистр PLLR пишутся какие-то не те значения, не то, что указаны в комментариях. В поле делителя должно быть прописано значение 5 (а не 3), в поле умножителя - 25 (а не 24);

2. До кучи (для полной икебаны smile.gif ) можно сразу прописать и правильное значение делителя USB (1:2);

3. Запись в MCKR выполнена откровенно неправильно. Нужно сначала прописать поле прескалера, дождаться установления флага MCKRDY, затем прописать поле выбора источника тактовой частоты и снова дождаться флага MCKRDY. Что-то типа:

Код
  pPMC->PMC_MCKR = AT91C_PMC_CSS_SLOW_CLK | AT91C_PMC_PRES_CLK_2;
  while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));
  pPMC->PMC_MCKR = AT91C_PMC_CSS_PLL_CLK | AT91C_PMC_PRES_CLK_2;
  while(!(pPMC->PMC_SR & AT91C_PMC_MCKRDY));


В общем, внимательно прочтите раздел 29.7 руководства.
Нет, этот бит программируется с помощью самбы. На вкладке Flash нужно выбрать макрос Boot from Flash (из списка) и нажать кнопку Execute

Удачи!

P.S. Еще вспомнил: нужно перед инициализацией генератора настроить Embedded Flash Controller - установить нужное число wait states. Правильное значение смотрите в описании на свой контроллер. У меня в AT91SAM7SE512 при питании ядра 1.8 В требуется 1 WS.


a14.gif
Заработало ! yeah.gif
проинитил PLL как рекомедовано и все сразу заработало, (прошивал и через самбу и через jtag, мигает вовсю) (вот и доверяй поле этого исходникам прилагаемым в комплекте....)

Значит получается инит в xcl правильный а в программе неправильный, потому и работало после jtag ?

>>>>В общем, внимательно прочтите раздел 29.7 руководства.
какого руководства ?
почитываю AT91SAM7S Series Preliminary(rev G) там нет данного пункта... smile3009.gif

Непойму зачем частота сначала подымается до 95 МГц а потом делится ?
насколько понял из даташита максимальная частота ядра и переферии 50 МГц.... wacko.gif

wait states это для flash которая выше 30 МГц небудет работать ?
те если частота 48 МГц то wait states=2 ?

PS
ARM стоящая штука, да поначалу одуреть можно что где и зачем после 8-разрядных,
мозги кипят laughing.gif но результа уже радует !!!
Go to the top of the page
 
+Quote Post
ljerry
сообщение Oct 5 2007, 06:23
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 7-02-06
Из: Зеленоград
Пользователь №: 14 071



Цитата(cpl @ Oct 5 2007, 01:07) *
a14.gif
Заработало ! yeah.gif
проинитил PLL как рекомедовано и все сразу заработало, (прошивал и через самбу и через jtag, мигает вовсю) (вот и доверяй поле этого исходникам прилагаемым в комплекте....)

Отлично smile.gif

Цитата(cpl @ Oct 5 2007, 01:07) *
Значит получается инит в xcl правильный а в программе неправильный, потому и работало после jtag ?

По сути так. Когда инициализация была сделана заранее - все работало.

Цитата(cpl @ Oct 5 2007, 01:07) *
>>>>В общем, внимательно прочтите раздел 29.7 руководства.
какого руководства ?
почитываю AT91SAM7S Series Preliminary(rev G) там нет данного пункта... smile3009.gif

Сорри, я сослался на доку для SAM7SE rolleyes.gif . В Вашей доке нужно читать пункт 26.7.

Цитата(cpl @ Oct 5 2007, 01:07) *
Непойму зачем частота сначала подымается до 95 МГц а потом делится ?
насколько понял из даташита максимальная частота ядра и переферии 50 МГц.... wacko.gif

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

Цитата(cpl @ Oct 5 2007, 01:07) *
wait states это для flash которая выше 30 МГц небудет работать ?
те если частота 48 МГц то wait states=2 ?

Да, возможны сбои (особенно при понижении питания и повышении температуры). Правильное значение смотрите в таблице 36-24 на странице 512. На максимальной тактовой частоте достаточно 1 WS. 2 и 3 WS использовать можно, но не нужно (примечание 2 к таблице).

Цитата(cpl @ Oct 5 2007, 01:07) *
PS
ARM стоящая штука, да поначалу одуреть можно что где и зачем после 8-разрядных,
мозги кипят laughing.gif но результа уже радует !!!

Еще раз пожелаю успехов! smile.gif

Сообщение отредактировал ljerry - Oct 5 2007, 06:31
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 14:17
Рейтинг@Mail.ru


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