Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите моргнуть светодиодом
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Bender
Не выходит каменный цветок sad.gif
Не могу разобраться с IARом, не мигает светодиод
У кого есть самый простой проект - дайте посмотреть, а?
Желательна загрузка через x-modem
VladislavS
Про отладку через X-modem можешь забыть. Это не такой простой проц, чтобы все с ходу работало. Запускай J-TAG и отлаживай. Самый простой проект, что нашел и уже как-то постил - флэшлоадер.

PS: Не плоди темы. Понятно, что только начинаешь, потому в одной теме все грабли последовательно и будем обходить - не надо форум засорять.
Bender
Спасибо, смотрю
Но дело в другом - все попытки загрузить бутлоадер ни к чему не приводят, ибо плата самодельная : нет АТ29, память только 16 разрядная, кварц не 18МГц а 20. ВсЁ чего я добился - запуск RomBoot.bin и только. Дальше он ничего не грузит. На АТ91.сом лекарства не нашел.
С Вигглером то же беда- OCD Commander работает, проц виден, Баньян даже определяет тип арма, а вот IAR плевал на это - не работает ни через вигглер ни через RDI. (8 и 15 выводы DB25 замкнуты)
Поэтому хотелось бы увидеть рабочий небольшой проектик с работой с UART и кнопкой/лампочкой, загружающийся через DBGU, чтобы разобраться .

Чао!
dch
Цитата(Bender @ Aug 24 2005, 14:55)
RomBoot.bin

Что есть RomBoot.bin?
С уважением, Дмитрий.
Bender
RomBoot.bin - приблуда из состава U-boot. Грузится в RAM проца по x-modem'у, и начинает загрузку опять же по x-modem'у только уже U-boot, и прописывает его (U-boot) во флэш. После чего U-boot загружается сам по сбросу.
Вроде так
Bender
Неужели никто не знает как помигать светодиодом? Вроде простой вопрос?
Хотя бы где взять сэмплы для ИАРа? Ссылочку не жалко? или письмом?

...

Вроде многие ИАРом пользуются, а как сами начинали - расскажите, интересно.
VladislavS
Начинали так:

1. Рисуем схему
2. Покупаем комплектуху и J-LINK
3. Разводим плату и отдаем ее в печать
4. Собираем плату
5. Делаем первое включение
6. Качаем IAR и лекарство к нему
7. Создаем ПУСТОЙ проект и начинаем его настраивать на наш проц
8. Отлаживаем макрос настройки проца для подключения по J-TAG
9. Правим настройки линкера (файл .xcl) под свою схему
10. Пробуем программить "Hello, World!" (мигать светодиодами)
11. Пишем FlashLoader для своих микрух
12. Начинаем запускать по кусочкам всю периферию проца
13. ПРограммим, программим и еще раз программим.

Не претендую на истину в последней инстанции. В зависимости от поставленной задачи последовательность может сильно измениться.
Bender
Цитата
1. Рисуем схему
2. Покупаем комплектуху .....
3. Разводим плату и отдаем ее в печать
4. Собираем плату


Было сделано до меня.

Цитата
5. Делаем первое включение


Угу

Цитата
6. Качаем IAR и лекарство к нему
7. Создаем ПУСТОЙ проект и начинаем его настраивать на наш проц


Так

Цитата
8. Отлаживаем макрос настройки проца для подключения по J-TAG
9. Правим настройки линкера (файл .xcl) под свою схему
10. Пробуем программить "Hello, World!" (мигать светодиодами)


А вот тут засада - не понимаю принципа настроки линкера и макросов
Какой файл для чего нужен? раньше было bin и hex, а тут d79,s79,a79,...
Что находится в cstartup?

Не поделитесь ли своими первыми проектами п.8, п.9, п.10 ?

Чао!
dch
Цитата(Bender @ Aug 25 2005, 08:00)
RomBoot.bin - приблуда из состава U-boot. Грузится в RAM проца по x-modem'у, и начинает загрузку опять же по x-modem'у только уже U-boot, и прописывает его (U-boot) во флэш. После чего U-boot загружается сам по сбросу.

Если RomBoot.bin у Вас загружается и выполняется, и выдает свое приглашение, и Вы умеете его компилировать, то значит светодиодом уже мигнули. Настройте порт как output и выдайте туда 0 или 1.
VladislavS
Benfer

По поводу пункта 8.

Для того чтобы отлаживать и загружать софт по J-TAG необходимо минимально сконфигурировать процессор - запустить основной генератор, сделать ремэп, подать клоки на проц. Можно также PLL запустить, SDRAM инициализировать, но не обязательно. Это делается с помощью специального макроса, подключаемого к проекту в настройках в секции Debugger. Пример такого файла смотри в проекте флэшлоадера, который я уже кидал.

По поводу пункта 9.

Для того чтобы объяснить компилятору сколько и какой памяти вы поставили в схему, а также как ее надо использовать существует файл xcl. Пример для пустого проекта, использующего только внутреннюю SRAM процессорат тоже в проекте флэшлоадера смотри. Для того чтобы моргнуть светодиодом этого достаточно.

По поводу cstartup, low_level_init, segment_init.

Пока вам туда не надо лезть. Моргать светодиодом можно и без этого. А вообще, в докумантации на IAR это все подробнейшим образом изложено. Стоит не полениться и заглянуть в меню Help. Без этого все равно ничего не получится - любым инструментом надо уметь работать, будь то молоток или компилятор.
Bender
Ну все, светодиод моргает. Даже 3. Гружусь все таки через икс-модем.СДрамина работает.
Но вот еще вопрос к знатокам - я настроил ПЛЛ на 180/60 МГц, а светодиды моргают максимум 360кГц - не должно ли быть выше?
Может чего я не сделал - а?
И с Вигглером непонятки - софт OCD Commander, Banyan видят и работают с ним, а ИАР пытается конектится, но не выходит . Даже до исполнения скрипта не доходит дело
?

Чао!
IgorKossak
Цитата(Bender @ Aug 31 2005, 16:18)
...И с Вигглером непонятки - софт OCD Commander, Banyan видят и работают с ним, а ИАР пытается конектится, но не выходит . Даже до исполнения скрипта не доходит дело
...
*

Для работы с эмулятором в IAR нужно сформировать дополнительный выходной файл в формате *.sim (simple) для загрузки.
См. настройки линкера.
VladislavS
Bender

Кэш включи - пошустреет. При условии что все клоки правильно расставил.

Что значит "я настроил ПЛЛ на 180/60 МГц" PLLA =180 , MCK = 60? А на процессор солько?
Bender
Цитата(VladislavS @ Sep 1 2005, 12:57)
Bender

Кэш включи - пошустреет. При условии что все клоки правильно расставил.

Что значит "я настроил ПЛЛ на 180/60 МГц"  PLLA =180 , MCK = 60? А на процессор солько?
*


Да, только не PLLA , а PLLB=(MAIN*(8+1)) to PCK
MCK=PLLB/3, a MAIN=20

*(AT91C_CKGR_MOR)=0x00000600;// включаем внешний задающий генератор
*(AT91C_CKGR_PLLBR)=0x00089c01;
*(AT91C_PMC_MCKR)=0x00000203;

А кэш это какой регистр включает?
А сильно пошустреет? а то маловато 1/3 МГц на пине мне

Чао!
Bender
Цитата(IgorKossak @ Sep 1 2005, 11:18)
Цитата(Bender @ Aug 31 2005, 16:18)
...И с Вигглером непонятки - софт OCD Commander, Banyan видят и работают с ним, а ИАР пытается конектится, но не выходит . Даже до исполнения скрипта не доходит дело
...
*

Для работы с эмулятором в IAR нужно сформировать дополнительный выходной файл в формате *.sim (simple) для загрузки.
См. настройки линкера.
*



Не помогает. Сначала выдается - ОШИБКА НЕИЗВЕСТНА код 14
жму ресет, потом пропустить - и снова сообщение - Не могу перевести в бэкграунд режим.
вот и все на этом кончается

Чао!
VladislavS
Кэш включить можно вот так:
Код
  ;-------------------------------------------
  ; Read/modify/write CP15 Register 1, Control
  ;-------------------------------------------
   MRC    p15, 0, r0, c1, c0, 0 ; read cp15 control registre (cp15 r1) in r0
   ldr    r4, =0x00001004               ; Set bit : DCache Enable | ICache enable
   ORR    r0, r0, r4
   MCR    p15, 0, r0, c1, c0, 0; write r0 in cp15 control registre (cp15 r1)

Я это прописал в cstartup.s79. Если писать то же на С, то смотри описание

Код
__intrinsic void            __MCR( __ul coproc, __ul opcode_1, __ul src, __ul CRn, __ul CRm, __ul opcode_2 );
__intrinsic unsigned long   __MRC( __ul coproc, __ul opcode_1, __ul CRn, __ul CRm, __ul opcode_2 );


Выигрыш в скорости большой получишь. Но и без кэша 1/3 МГц что-то маловато. Проверь все ли клоки куда надо переключились. А почему от PLLB заводишься? PLLB обычно на 96 МГц заводят, чтобы на USB 48 МГц подать.
Bender
С кэшем чуть позже, щас будем разбираться с клоками sad.gif((
А все это что еще кроме MCK и PCK ? икуда еще надо их подавать?

Чао!
VladislavS
Цитата(Bender @ Sep 1 2005, 15:35)
С кэшем чуть позже, щас будем разбираться с клоками sad.gif((
А все это что еще кроме MCK и PCK ? икуда еще надо их подавать?

Чао!
*


Если ты почитаешь Errata, то увидишь, что установка нужных битов еще не гарантирует переключение на нужный генератор. Я бы посоветовал контролировать какие клоки у тебя РЕАЛЬНО выводя их (с деленнием) на PCK0 и контролируя осциллографом.

А клоки подавать надо на всю периферию которой пользуешься.
Bender
Цитата(VladislavS @ Sep 2 2005, 08:59)
  Если ты почитаешь Errata, то увидишь, что установка нужных битов еще не гарантирует переключение на нужный генератор. Я бы посоветовал контролировать какие клоки у тебя РЕАЛЬНО выводя их (с деленнием) на PCK0 и контролируя осциллографом.

А клоки подавать надо на всю периферию которой пользуешься.
*


В принципе я и так контролирую - по SDRAM- клок строго 60, ну процессор в 3 раза больше соответственно
Благодаря вашим советам включил кэш, оптимизацию, немного разогнал - до 200/100, в итоге ножка дергается с f=4.7 МГц. Прогресс?
Есть еще цель - хватать данные с f=27 МГц, прерывание приходит на FIQ.Объем до мегабайта.

Успею? или нет?

Чао!
Bender
Кэш включил используя данный код:

Код
#include "intrinsic.h"
...

__MCR(15,0,__MRC(15,0,1,0,0) | 0x00001004,1,0,0);
vvj
Цитата(Bender)
Кэш включил
Рад видеть что кто-то уже поделился!
Цитата(Bender @ Aug 26 2005, 07:46)
засада - не понимаю принципа настроки линкера и макросов
Какой файл для чего нужен? раньше было bin и hex,  а тут d79,s79,a79,...
Что находится в cstartup?
Не поделитесь ли своими первыми проектами п.8, п.9, п.10 ?
Чао!
Тоже вот ищу что-либо подобное - т.к. нахожусь на той же стадии - loder из GreenHill's GettingStarted грузится по Xmodemу (т.е. приселает комент по DBGU) а всё остальное (топо BasicFlash) молчит angry.gif

Не могли бы поделится результатом поисков, ув. Bender ?
Bender
Мог бы поделиться, пиши kuleschov(a)alpha/tula/net
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.