Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: sam7s64 + iar5.10 -> flash run
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
cpl
Установил 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
пример прилагаю.
_dem
шьете из-под J-Flash или с помощью IAR ?
cpl
Цитата(_dem @ Oct 4 2007, 10:39) *
шьете из-под J-Flash или с помощью IAR ?


Да прошил через jtag jlink-ом в IAR в отладчике
тамже запустил все работает...
передернул питание .... тишина sad.gif
пробовал через самбу тоже тишина....
ljerry
Бит GPNVM2 (загрузка из Flash) установлен?
cpl
Цитата(ljerry @ Oct 4 2007, 11:07) *
Бит GPNVM2 (загрузка из Flash) установлен?

он должен прописываться в программе ?
в system.c нашел строчку
AT91PS_MC p_pMC = AT91C_BASE_MC;
но на нее некто нессылается... закоментирывал некаких изменений (не используется)
в каком месте нужно устанавливать данный бит ?
при инициализации всей переферии ?
ljerry
И еще, есть замечания по инициализации генератора тактовой частоты:

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.
Fusion
И еще в Iar надо *.xcl указать.

Proekt -> Options -> Linker -> Config -> Override default -> *.xcl
cpl
Цитата(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 но результа уже радует !!!
ljerry
Цитата(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
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.