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

 
 
> SAM926, простые программы
TigerSHARC
сообщение Jul 29 2010, 19:45
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Может кто нибудь знает ссылку где разжёвываются простые программы (мигаем светодиодом, "Hello World") или может сам пример приведёт (простите за наглость).

Изучаю сей контроллер в IAR. Интересует работы с внешними линиями ввода-вывода. Какие заголовочники включать, как обзываются регистры при написании программы на C, и т.д.

Просто как я вижу AVRовские фишки типа:

" #include "iom16.h"
.
.
.
PORTB = 0; // регистр ножек порта
.
.
.
"
для мигания светодиодами не прокатывают.
Здаётся мне всё намного сложнее.



Сообщение отредактировал TigerSHARC - Jul 29 2010, 19:59
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 18)
dimka76
сообщение Jul 30 2010, 03:21
Сообщение #2


developer
****

Группа: Свой
Сообщений: 902
Регистрация: 12-04-06
Из: Казань
Пользователь №: 16 032



Цитата(TigerSHARC @ Jul 29 2010, 23:45) *
Может кто нибудь знает ссылку где разжёвываются простые программы (мигаем светодиодом, "Hello World") или может сам пример приведёт (простите за наглость).

Изучаю сей контроллер в IAR. Интересует работы с внешними линиями ввода-вывода. Какие заголовочники включать, как обзываются регистры при написании программы на C, и т.д.


Так в IAR есть полно много разных примеров, там и ищите.

Цитата(TigerSHARC @ Jul 29 2010, 23:45) *
Просто как я вижу AVRовские фишки типа:

" #include "iom16.h"
.
.
.
PORTB = 0; // регистр ножек порта
.
.
.
"
для мигания светодиодами не прокатывают.
Здаётся мне всё намного сложнее.


Однозначно не прокатывают и также однозначно сложнее (чутарик wink.gif )




--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
Go to the top of the page
 
+Quote Post
Drozd2
сообщение Jul 30 2010, 19:28
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 19-11-09
Пользователь №: 53 743



AVRовские фишки для моргания светодиодом прокатывают на кристаллах со встроенной flash (sam9xe...). Дальше приходится инициализировать внешнюю память. Для старта удобный проект - bootstrap, скачивается с сайта Atmel.
P.S. Упустил упоминание IAR. На том же сайте раздают копии дисков с проектами для каждого контроллера серии sam9. Среди них есть getting-started. Проект bootstrap для gcc. Тоже есть смысл посмотреть.

Сообщение отредактировал Drozd2 - Jul 30 2010, 19:36
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Jul 31 2010, 10:43
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Спасибо за советы!
Но вот вопрос:
на плате, которая у меня SK-AT91SAM9260 (starterkit.ru) установлен линукс и при подключении питания выдаёт на терминал через COM-порт соответствующие сообщения о загрузке ОС. Так вот хочу стереть полностью весь линукс (тогда как я понимаю, на терминал ничего выдаваться не должно).
Убирал джампер загрузки с dataflash, пробовал самбой очистить DataFlash (erase all) ничего не помогает и при загрузке всё равно грузиться система.
Хочется писать standalone-приложения и Linux меня не интересует, как от него избавиться?

И ещё, все gatting started проекты созданы для фирменных плат и содержат заголовочник board.h
Где нужно "ковырять" чтобы эти примеры заработали на моей плате?

Сообщение отредактировал TigerSHARC - Jul 31 2010, 10:53
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jul 31 2010, 11:56
Сообщение #5


Гуру
******

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



Цитата(TigerSHARC @ Jul 31 2010, 14:43) *
Убирал джампер загрузки с dataflash, пробовал самбой очистить DataFlash (erase all) ничего не помогает и при загрузке всё равно грузиться система.
Хочется писать standalone-приложения и Linux меня не интересует, как от него избавиться?

Перед стиранием перемычку назад не забыли поставить? И что сказала SAM-BA?

Цитата(TigerSHARC @ Jul 31 2010, 14:43) *
И ещё, все gatting started проекты созданы для фирменных плат и содержат заголовочник board.h
Где нужно "ковырять" чтобы эти примеры заработали на моей плате?

Примеры типа "помигать светодиодом", скорее всего, вообще не придется править. В остальных как минимум нужно будет сравнить и внести при необходимости коррективы в инициализацию памяти.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Aug 1 2010, 18:54
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



to aaarrr - большущее спасибо.

дела обстоят так:
самба по поводу стирания флешки пишет

loading history file ... 0 events added
SAM-BA console display active (Tcl8.4.13 / Tk8.4.13)
(SAM-BA v2.10) 1 %
(SAM-BA v2.10) 1 % DATAFLASH::EraseAllDataFlash
(SAM-BA v2.10) 1 %

и всё.

теперь видим на терминале через COM-порт следующее(перемычка оставлена):

RomBOOT
>

всё! так и должно быть?

И, ещё происходит следующее
Если подключить MT-Link к плате

На терминале видно, что идёт загрузка операционной системы и запрашивается логин и пароль.

Почему так происходит? как MT-Link вллияет на загрузку?

Меня пугает сообщение

RomBOOT
>RomBOOT
>Start AT91Bootstrap...
Copy application ...

Это означает что откудато из MT-Link копируется приложение? Если да, то как этого избежать?

Сообщение отредактировал TigerSHARC - Aug 1 2010, 18:57
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 1 2010, 21:09
Сообщение #7


Гуру
******

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



Цитата(TigerSHARC @ Aug 1 2010, 22:54) *
всё! так и должно быть?

Нет, перед любыми действиями с DF нужно выполнить "Enable Dataflash (SPI0 CS0)" или CS1.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Aug 1 2010, 21:48
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Выполнил перед очисткой DataFlash "Enable Dataflash (SPI0 CS0)" или CS1. Затем Erase All.
Вот лог:

loading history file ... 0 events added
SAM-BA console display active (Tcl8.4.13 / Tk8.4.13)
(SAM-BA v2.10) 1 %
(SAM-BA v2.10) 1 % DATAFLASH::SelectDataflash AT91C_SPI0_CS0
-I- Init SPI for DataFlash interfaces
-I- Configure SPI PIOs
-I- Enable PMC for SPI0
-I- Reset the SPI0
-I- Configure SPI in Master Mode (no CS selected)
-I- Configure SPI CS0 for DataFlash AT45
-I- Disable the RX and TX PDC transfer requests
-I- Reset all Counter register Next buffer first
-I- Enable the RX and TX PDC transfer requests
-I- End of Init_DataFlash
-I- Switch to the correct PCS of SPI0 Mode Register (Fixed Peripheral Selected)
-I- Enable the SPI0
-I- Wait for dataflash ready (bit7 of the status register)
-I- End of Select DataFlash
(SAM-BA v2.10) 1 % DATAFLASH::EraseAllDataFlash
(SAM-BA v2.10) 1 %

То же самое происходит. Думаю дело в MT-Link. Почему-то с него грузиться и всё...((

Сообщение отредактировал TigerSHARC - Aug 1 2010, 21:50
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 1 2010, 22:10
Сообщение #9


Гуру
******

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



Цитата(TigerSHARC @ Aug 2 2010, 01:48) *
(SAM-BA v2.10) 1 % DATAFLASH::EraseAllDataFlash
(SAM-BA v2.10) 1 %

То же самое происходит.

Перемычку вернуть точно не забыли? Не должна самба молчать на этом месте.
Попробуйте другую версию - софтина достаточно глочная, может, в 2.10 что-то сломали.

Цитата(TigerSHARC @ Aug 2 2010, 01:48) *
Думаю дело в MT-Link. Почему-то с него грузиться и всё...((

С MT-Link ничего не грузится. Процессор просто стартует с не стертой DF.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Aug 6 2010, 19:45
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Почему же без MT-Link вижу что не грузиться ОС, а с MT-Link грузиться Linux....
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Oct 21 2010, 09:14
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(Drozd2 @ Jul 30 2010, 23:28) *
AVRовские фишки для моргания светодиодом прокатывают на кристаллах со встроенной flash (sam9xe...). Дальше приходится инициализировать внешнюю память. Для старта удобный проект - bootstrap, скачивается с сайта Atmel.
P.S. Упустил упоминание IAR. На том же сайте раздают копии дисков с проектами для каждого контроллера серии sam9. Среди них есть getting-started. Проект bootstrap для gcc. Тоже есть смысл посмотреть.


Допустим bootstrap проинициализировал всю необходимую перифирию, тогда какие модули и дефайны должно содержать приложение, если нужно например посредством printf вывестив DBGU-порт строку?
Кроме того, если этот же bootstrap копирует приложение из DataFlash в SD-RAM и передаёт ему управление, то должно ли это приложение иметь модули, оносящиеся к работе с SD-RAM, если да то какие?


Сообщение отредактировал TigerSHARC - Oct 21 2010, 09:21
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Oct 22 2010, 18:43
Сообщение #12


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



TigerSHARC, как там успехи у Вас? А то читаю Ваши посты - аж прям слезы наворачиваются smile.gif.
пмсм, не с того начинаете.
1. Забейте на самбу, бутсрап и убут.
2. Возмите jlink-клон + иар/кейл (что больше нравиться).
3. Напишите свою программку (мигание светодиодом или что-то в этом роде). Программка получиться маленькая - хватит 2кБ внутреннего ОЗУ для кода и 2кБ для данных. Неплохо бы попутно ознакомиться с линкером (что он делает, как составлять конфигурационный файл для него).
4. Загрузите программку по житагу. Добейтесь, чтобы светодиод мигал.
5. Самбой загрузите программку в датафлэш. Бутсрап не нужен!
Начните хотя бы с этого.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Oct 22 2010, 20:21
Сообщение #13


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(Student Pupkin @ Oct 22 2010, 22:43) *
TigerSHARC, как там успехи у Вас? А то читаю Ваши посты - аж прям слезы наворачиваются smile.gif.
пмсм, не с того начинаете.
1. Забейте на самбу, бутсрап и убут.
2. Возмите jlink-клон + иар/кейл (что больше нравиться).
3. Напишите свою программку (мигание светодиодом или что-то в этом роде). Программка получиться маленькая - хватит 2кБ внутреннего ОЗУ для кода и 2кБ для данных. Неплохо бы попутно ознакомиться с линкером (что он делает, как составлять конфигурационный файл для него).
4. Загрузите программку по житагу. Добейтесь, чтобы светодиод мигал.
5. Самбой загрузите программку в датафлэш. Бутсрап не нужен!
Начните хотя бы с этого.


Спасибо большое!

Протсо до недавнего времени кодил алгоритмы в Matlab, очень хотелось бы их опробовать в железе...

Просто заниматься с платой получается весьма мало по времени... в отрыве от основной работы((( а очень интересно.
IAR и J-link у меня есть.

Смотрю на пректы и русские мануалы (где всё разжовано донельзя) по PIC24 так и руки тянутся им занятся.... НО! Мы же не ищем лёгких путей!)) - см. банер ниже))

Для старта с армом полюбому нужен мануал для начинающих (чем я и хочу занятся). Просто вопросов очень много. И проблема в том что для многих опытных разработчиков некоторые вопросы кажутся само собой разумеющимися, не требующими обсуждения.
Замечу, что в интернете нету, просто НЕТ статей вроде: "быстрый старт с ARM!" "ARM первые шаги!" и пр.
есть только по ARM7 семейства LPC (который присутствует в Proteus).

P.S. Ищу человека, кто ответит на несколько прикладных вопросов в привате.

Сообщение отредактировал TigerSHARC - Oct 22 2010, 20:38
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Oct 22 2010, 20:43
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(TigerSHARC @ Oct 23 2010, 00:21) *
Просто заниматься с платой получается весьма мало по времени... в отрыве от основной работы((( а очень интересно.

Ну и что? Я армами тоже интересуюсь вне рабочее (к сожалению) время, т.к. руководство пока пересесть на них не решается. Поэтому копаюсь (время от времени, к сожалению) с LPC2468.
Плата с AT91SAM9260 у меня есть (тоже стартеркита), но к сожалению, включал ее только один раз. И в ближайшее время пока доставать ее из ящика не планировал (дело с освоением ымбединга, как оказывается, не быстрое - при неосторожности можно и штаны порвать smile.gif) Так что помочь пока делом (исходниками в смысле) не могу sad.gif . Только советами (подобное состояние "как же к этому подступиться" мне хорошо известно).
Цитата(TigerSHARC @ Oct 23 2010, 00:21) *
IAR и J-link у меня есть.

Ну вот и отлично. Обязательно почитайте про скрипты для линкера. Светодиод мигает? smile.gif
Тут Вам, кстати, совет был дан - написать свой загрузчик. По-моему, вполне уместный. Хорошая задача для тренировки. Послее нее, по крайней мере, Вам легче будет разбираться (если потребуется) в исходниках бутстрапа или убута.
Цитата(TigerSHARC @ Oct 23 2010, 00:21) *
Мы же не ищем лёгких путей!)) - см. банер ниже))

Это Вы о проекте "мануал народу"? smile.gif Бросайте это. smile.gif

Попутно хочу еще заметить - имея иар и jtag, можете пока забыть про бутсрапинг. В каталоге иара есть конкретно для атмеловских плат mac-файлы. Можно пока просто линковать программу для работы в SDRAM. В настройках проекта нужно указать соответсвующий mac-файл (возможно что-то подправить), по которому иар перед загрузкой программы будет инициализировать железо (включить клоки, настраивать внешнюю шину и т.д.). И все. Начинаете отладку. И проект бустрапа там тоже есть. Посмотрите его.

Сообщение отредактировал Student Pupkin - Oct 22 2010, 20:54
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Oct 23 2010, 08:03
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(Student Pupkin @ Oct 23 2010, 00:43) *
Это Вы о проекте "мануал народу"? smile.gif Бросайте это. smile.gif


Нет, это я о том, что начал с неновичкового МК.... по пикам же больше инфы... а я за ARM сел)

У меня нормально грузятся bootstrap и U-boot. bootstrap я собирал под себя сам.
Можно же сразу сделать проект и просто указать U-boot откуда и куда его ложить и jump на адрес...

Мне бы узнать каие ещё файлы кроме main.c должен содержать проект в IAR (теперь понятно что mac-файл ещё)...

Большое спасибо за советы!

Сообщение отредактировал TigerSHARC - Oct 23 2010, 10:23
Go to the top of the page
 
+Quote Post
Drozd2
сообщение Oct 26 2010, 20:19
Сообщение #16


Частый гость
**

Группа: Участник
Сообщений: 97
Регистрация: 19-11-09
Пользователь №: 53 743



Цитата
bootstrap проинициализировал всю необходимую перифирию, тогда какие модули и дефайны должно содержать приложение, если нужно например посредством printf вывестив DBGU-порт строку?

Ответ на этот вопрос довольно многоярусный.
bootstrap хорош для изучения своим небольшим размером. Чтобы им вывести строку с помощью printf, несложно найти в исходнике функцию DBGU(). Только радость от нее будет недолгая. Раз уж Вы взялись за 9260, то с инициализацией памяти придется разобраться.
При старте запускается программа из ROM процессора. Она умеет инициализировать DataFlash, EEPROM и NANDFlash. Если она их находит, читает вектор номер 6 из таблицы векторов прерываний, могу ошибиться в номере, в качестве размера, грузит программу того самого размера из первой найденной памяти во ВНУТРЕННЮЮ SRAM процессора и передает ей управление. Если в памяти чисто, или перемычка с ChipSelect снята, то ничего не находит, и выдает то самое >.
Та самая программа, загруженная в SRAM, уже может делать все, что захочет программист (но не всегда, что попросит (точнее, наоборот, шутка)). Для этого Atmel и сделал bootstrap.
bootstrap предлагается Atmelом как раз для упрощения жизни. Он имеет тот размер, который помещается во внутреннюю SRAM процессора, умеет инициализировать загрузочную память любого типа и прост в исходниках, что позволяет перенаправить его загружать приложение из любой доступной памяти по желанию. Размер загружаемого приложения теперь ограничен только размером ОЗУ. В дефайнах bootstrapа определяется участок памяти, в который грузится приложение, ну и, естественно, адрес запуска загруженного приложения.
Теперь погрустнее. Загруженное приложение должно повторно проинициализировать, как минимум, оперативную память. bootstrapовые функции остались уже недоступны. Но его исходный код можно использовать повторно. Что обычно и делается.
Теперь становится доступным все адресное пространство процессора. Можно брать пример с упоминавшегося выше диска, компилировать этот пример с опцией sdram и запускать. На этой стадии уже становятся актуальными sprintf.
Дальше, как вариант, можно запустить U-Boot и Linux.
И немного про геометрию размещения. Скажем, при существующей DataFlash и bootstrap, и приложение будут находиться в ней. Они, естественно, не должны пересекаться по адресам. При перепрошивке нужно зашивать их обоих. SAM-BA это умеет, но лучше для начала разнести их по адресам подальше. На размер одного-двух секторов памяти. Тогда можно будет править только приложение.

Сообщение отредактировал Drozd2 - Oct 26 2010, 20:29
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Nov 12 2010, 07:10
Сообщение #17


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Спасибо! не могли бы вы пояснить что означает загрузчик читает вектор номер 6. Как этот вектор расположе в bootstrap и что он из себя представляет?
Go to the top of the page
 
+Quote Post
SII
сообщение Nov 18 2010, 14:58
Сообщение #18


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



Вы документацию по архитектуре ARM вообще и по конкретному контроллеру в частности изучали? Пытаться программировать микроконтроллер, не понимая, что он из себя представляет, -- дело весьма бессмысленное. Да, можно что-то относительно работоспособное создать, надёргав кусков из чужих программ, но ничего путного не получится, тем более на такой сложной вещи, как ARM (с AVRками или PICами попроще, но и там, чтобы их освоить по-настоящему, а не примитивном уровне, всё равно придётся читать документацию).

Что же касается шестого вектора, то очень подозреваю, что в нём кодируется длина образа программы, которую встроенный в микроконтроллер загрузчик должен загрузить из внешней микросхемы флэш-памяти. Во всяком случае, в AT91SAM9261 дело обстоит именно таким образом.
Go to the top of the page
 
+Quote Post
DpInRock
сообщение Nov 18 2010, 17:38
Сообщение #19


Гуру
******

Группа: Участник
Сообщений: 2 254
Регистрация: 4-05-07
Из: Moscow
Пользователь №: 27 515



Где-нибудь в начале стартапа напишите вот так.

Код
PUBLIC  __vector_0x14


А на месте 6 вектора напишите вот так.

Код
__vector_0x14:
        DCD     SFE(PROGRAM_DATA)


И забудьте о его существовании навсегда.


--------------------
On the road again (Canned Heat)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 20:42
Рейтинг@Mail.ru


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