|
SAM926, простые программы |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 18)
|
Jul 30 2010, 03:21
|

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; // регистр ножек порта . . . " для мигания светодиодами не прокатывают. Здаётся мне всё намного сложнее. Однозначно не прокатывают и также однозначно сложнее (чутарик  )
--------------------
Все может быть и быть все может, и лишь того не может быть-чего уж точно быть не может, хотя..и это может быть.
|
|
|
|
|
Jul 31 2010, 11:56
|
Гуру
     
Группа: Свой
Сообщений: 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 Где нужно "ковырять" чтобы эти примеры заработали на моей плате? Примеры типа "помигать светодиодом", скорее всего, вообще не придется править. В остальных как минимум нужно будет сравнить и внести при необходимости коррективы в инициализацию памяти.
|
|
|
|
|
Aug 1 2010, 22:10
|
Гуру
     
Группа: Свой
Сообщений: 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.
|
|
|
|
|
Oct 21 2010, 09:14
|
Знающий
   
Группа: Свой
Сообщений: 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
|
|
|
|
|
Oct 22 2010, 18:43
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760

|
TigerSHARC, как там успехи у Вас? А то читаю Ваши посты - аж прям слезы наворачиваются  . пмсм, не с того начинаете. 1. Забейте на самбу, бутсрап и убут. 2. Возмите jlink-клон + иар/кейл (что больше нравиться). 3. Напишите свою программку (мигание светодиодом или что-то в этом роде). Программка получиться маленькая - хватит 2кБ внутреннего ОЗУ для кода и 2кБ для данных. Неплохо бы попутно ознакомиться с линкером (что он делает, как составлять конфигурационный файл для него). 4. Загрузите программку по житагу. Добейтесь, чтобы светодиод мигал. 5. Самбой загрузите программку в датафлэш. Бутсрап не нужен! Начните хотя бы с этого.
|
|
|
|
|
Oct 22 2010, 20:21
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(Student Pupkin @ Oct 22 2010, 22:43)  TigerSHARC, как там успехи у Вас? А то читаю Ваши посты - аж прям слезы наворачиваются  . пмсм, не с того начинаете. 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
|
|
|
|
|
Oct 22 2010, 20:43
|
Местный
  
Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760

|
Цитата(TigerSHARC @ Oct 23 2010, 00:21)  Просто заниматься с платой получается весьма мало по времени... в отрыве от основной работы((( а очень интересно. Ну и что? Я армами тоже интересуюсь вне рабочее (к сожалению) время, т.к. руководство пока пересесть на них не решается. Поэтому копаюсь (время от времени, к сожалению) с LPC2468. Плата с AT91SAM9260 у меня есть (тоже стартеркита), но к сожалению, включал ее только один раз. И в ближайшее время пока доставать ее из ящика не планировал (дело с освоением ымбединга, как оказывается, не быстрое - при неосторожности можно и штаны порвать  ) Так что помочь пока делом (исходниками в смысле) не могу  . Только советами (подобное состояние "как же к этому подступиться" мне хорошо известно). Цитата(TigerSHARC @ Oct 23 2010, 00:21)  IAR и J-link у меня есть. Ну вот и отлично. Обязательно почитайте про скрипты для линкера. Светодиод мигает? Тут Вам, кстати, совет был дан - написать свой загрузчик. По-моему, вполне уместный. Хорошая задача для тренировки. Послее нее, по крайней мере, Вам легче будет разбираться (если потребуется) в исходниках бутстрапа или убута. Цитата(TigerSHARC @ Oct 23 2010, 00:21)  Мы же не ищем лёгких путей!)) - см. банер ниже)) Это Вы о проекте "мануал народу"?  Бросайте это.  Попутно хочу еще заметить - имея иар и jtag, можете пока забыть про бутсрапинг. В каталоге иара есть конкретно для атмеловских плат mac-файлы. Можно пока просто линковать программу для работы в SDRAM. В настройках проекта нужно указать соответсвующий mac-файл (возможно что-то подправить), по которому иар перед загрузкой программы будет инициализировать железо (включить клоки, настраивать внешнюю шину и т.д.). И все. Начинаете отладку. И проект бустрапа там тоже есть. Посмотрите его.
Сообщение отредактировал Student Pupkin - Oct 22 2010, 20:54
|
|
|
|
|
Oct 23 2010, 08:03
|
Знающий
   
Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195

|
Цитата(Student Pupkin @ Oct 23 2010, 00:43)  Это Вы о проекте "мануал народу"?  Бросайте это.  Нет, это я о том, что начал с неновичкового МК.... по пикам же больше инфы... а я за ARM сел) У меня нормально грузятся bootstrap и U-boot. bootstrap я собирал под себя сам. Можно же сразу сделать проект и просто указать U-boot откуда и куда его ложить и jump на адрес... Мне бы узнать каие ещё файлы кроме main.c должен содержать проект в IAR (теперь понятно что mac-файл ещё)... Большое спасибо за советы!
Сообщение отредактировал TigerSHARC - Oct 23 2010, 10:23
|
|
|
|
|
Oct 26 2010, 20:19
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Nov 18 2010, 14:58
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414

|
Вы документацию по архитектуре ARM вообще и по конкретному контроллеру в частности изучали? Пытаться программировать микроконтроллер, не понимая, что он из себя представляет, -- дело весьма бессмысленное. Да, можно что-то относительно работоспособное создать, надёргав кусков из чужих программ, но ничего путного не получится, тем более на такой сложной вещи, как ARM (с AVRками или PICами попроще, но и там, чтобы их освоить по-настоящему, а не примитивном уровне, всё равно придётся читать документацию).
Что же касается шестого вектора, то очень подозреваю, что в нём кодируется длина образа программы, которую встроенный в микроконтроллер загрузчик должен загрузить из внешней микросхемы флэш-памяти. Во всяком случае, в AT91SAM9261 дело обстоит именно таким образом.
|
|
|
|
|
Nov 18 2010, 17:38
|

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

|
Где-нибудь в начале стартапа напишите вот так. Код PUBLIC __vector_0x14 А на месте 6 вектора напишите вот так. Код __vector_0x14: DCD SFE(PROGRAM_DATA) И забудьте о его существовании навсегда.
--------------------
On the road again (Canned Heat)
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|