Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Программирование AT91SAM9260 на Си в IAR EWARM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Didro
Добрый день,

По работе требуется реализовать на ARM обмен с ПК по USB. Ранее решал эту задачу на AVR (ATMega16+v-usb) - теперь нужно на ARM.
Установил IAR EWARM 5.40, из книг нашел Редькина ("32-16 битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel" (П.П. Редькин, 2008)) и примеры из его книги. Сама книга Редькина это скорее перевод спецификации на ARM, особенности программирования в книге не отражены. Все примеры, также как и примеры из самого IAR (нпр., интересный мне "arm\examples\Atmel\at91sam9260-ek\usb-device-core-project") построены вокруг конкретных отладочных плат (файлы "board.h"\"board.c"). Моей платы (SK-MAT91SAM9260) там нет.

Подскажите, пожалуйста, литературу\примеры, в которых бы описовалось непосредственно программирование, не архитектура ядра или регистры, а то как до них добраться, используя компилятор IAR. Документы ala "IAR C/C++ Development Guide" описывают нюансы использования компилятора\линковщика\.... В даташитах на сам процессор AT91SAM9260 примеры работы на Си также отсутствуют (в противоположность спецификациям на ATMega's).

Грубо говоря, хочу начать с того, чтобы найти аналоги для avr'овских DDRx\_BV\... из библиотеки avr-libc, и пр. В IAR нашел функции PIO_Set\PIO_Clear, но они реализованы не в библиотеке, а в самих примерах и под конкретную отладочную плату.

Заранее спасибо
aaarrr
Цитата(Didro @ Nov 7 2009, 22:12) *
из книг нашел Редькина ("32-16 битные микроконтроллеры ARM7 семейства AT91SAM7 фирмы Atmel" (П.П. Редькин, 2008)) и примеры из его книги.

Книгу вместе с примерами советую сразу выбросить.

Цитата(Didro @ Nov 7 2009, 22:12) *
Подскажите, пожалуйста, литературу\примеры, в которых бы описовалось непосредственно программирование, не архитектура ядра или регистры, а то как до них добраться, используя компилятор IAR.
...
Грубо говоря, хочу начать с того, чтобы найти аналоги для avr'овских DDRx\_BV\... из библиотеки avr-libc, и пр. В IAR нашел функции PIO_Set\PIO_Clear, но они реализованы не в библиотеке, а в самих примерах и под конкретную отладочную плату.

Добраться до них можно средствами языка C. От рюшечек и оберточек типа PIO_Set\PIO_Clear более вреда, чем пользы.
sherr
Если сильно хочется PIO_Set\PIO_Clear пишутся через #define и добавляются в хидер описания контроллера
примерно так:

#define P3_31_OUT FIO3DIR |= (1<<31)
............
#define P3_0_HIGH FIO3SET |= (1<<0)
#define P3_1_HIGH FIO3SET |= (1<<1)
это для Keil . Для IAR надо уточнять (смотреть в файле ioat91sam9260.h)
sergeeff
Цитата(Didro @ Nov 7 2009, 22:12) *
Моей платы (SK-MAT91SAM9260) там нет.


Вы зайдите на официальный сайт Atmel'a, там есть примеры для всех выпускаемых этой фирмой процессоров. Последняя версия библиотек имеет версию 1.5.
Didro
Цитата(aaarrr @ Nov 7 2009, 23:05) *
Книгу вместе с примерами советую сразу выбросить.
Сделано.

Цитата(aaarrr @ Nov 7 2009, 23:05) *
Добраться до них можно средствами языка C. От рюшечек и оберточек типа PIO_Set\PIO_Clear более вреда, чем пользы.
Если не затруднит, укажите, пожалуйста, ссылку на примеры или сам пример (набросок).

Цитата(sherr @ Nov 7 2009, 23:32) *
Если сильно хочется PIO_Set\PIO_Clear пишутся через #define и добавляются в хидер описания контроллера
примерно так:

#define P3_31_OUT FIO3DIR |= (1<<31)
............
#define P3_0_HIGH FIO3SET |= (1<<0)
#define P3_1_HIGH FIO3SET |= (1<<1)
это для Keil . Для IAR надо уточнять (смотреть в файле ioat91sam9260.h)
Понятно, да я что-то подобное и ожидал (после avr), но неужели "смотреть в файле ioat91sam9260.h" - это единственный кошерный путь ? smile.gif На первый взгляд (в файл) это путь для настоящих джедаев

Цитата(sergeeff @ Nov 7 2009, 23:50) *
Вы зайдите на официальный сайт Atmel'a, там есть примеры для всех выпускаемых этой фирмой процессоров. Последняя версия библиотек имеет версию 1.5.
Все примеры, которые нахожу (тут) заточены под конкретную плату. Вот, например:
Цитата
AT91RM9200-Basic-ARM1_2-2_0.zip (346 KB)
This zip file shows AT91 ARM-Based Software Package and how to configure a software cross compilation tool-chain to get a binary code downloadable on an AT91RM9200EK board. Includes main.html file for help. For use under ARM® ADS 1.2 software tool.

Библиотеки найти не могу, буду признателен любым ссылкам.

Наверное, вы имели в виду эти библиотеки - http://www.atmel.com/dyn/products/tools_ca...sp?tool_id=4343 ?

Спасибо
aaarrr
Цитата(Didro @ Nov 8 2009, 00:38) *
Если не затруднит, укажите, пожалуйста, ссылку на примеры или сам пример (набросок).

Да очень просто все. Подключаем "at91sam9260.h", а дальше прямо по регистрам:
Код
#define PIN (1UL << 0)

*AT91C_PIOA_PER = PIN;  // Разрешили PIO
*AT91C_PIOA_OER = PIN;  // Переключили вывод на выход
*AT91C_PIOA_SODR = PIN; // Установили '1'
*AT91C_PIOA_CODR = PIN; // Установили '0'

И так с любой периферией.
sergeeff
Цитата(Didro @ Nov 8 2009, 00:38) *
Библиотеки найти не могу, буду признателен любым ссылкам.


Вам Atmel все примеры в исходных кодах дает. Библиотеку из них для своих нужд сделать влом? Или вам было бы легче, если вы получили какой-нибудь файл AT91SAM9260ALL.LIB в виде черного ящика под какую-нибудь конкретную версию компилятора/линкера не совместимую с вашими?

Что-такого у вас на плате не такого, как на 9260EK? Только, может то, что вы специфического на эту плату поставили. Все что касается периферии собственно процессора у вас все тоже самое.

Замечаю в последнее время многие хотят получить все сразу на блюдечке с голубой каемочкой даже не пошевелив хоть немного своей головой.
Didro
Цитата(aaarrr @ Nov 8 2009, 00:57) *
Да очень просто все. Подключаем "at91sam9260.h", а дальше прямо по регистрам:
Код
#define PIN (1UL << 0) ...
'

И так с любой периферией.
Большое спасибо за пример, понял.

Цитата(sergeeff @ Nov 8 2009, 01:25) *
Что-такого у вас на плате не такого, как на 9260EK?

Дык почти ничего нет - у меня дешевая плата, урезанная smile.gif
Цитата
Данная отладочная плата основывается на печатной плате от SK-AT91SAM9260/9XE512-SIMXXX, на нее просто не устанавливается часть компонентов.

Библиотеки я конечно же ожидал в исходниках, смущает их привязка к платам - точнее искал библиотеку без такой привязки (ala avr-libc).
_Pasha
Цитата(Didro @ Nov 8 2009, 01:39) *
Библиотеки я конечно же ожидал в исходниках, смущает их привязка к платам - точнее искал библиотеку без такой привязки (ala avr-libc).

Такого нету, но есть ведь например lib_at91sam7s256.h - куча static inline оберток с претензией заменить собою даташит. Только оно более вредно, чем полезно. Надо свои инлайны и макросы писать под конкретную железяку и с конкретным функционально-ориентированным смыслом. С avr-libc такой фокус пролез потому, что периферия там бедненькая и кросс-зависимостей между модулями маловато. Поэтому и живет, например <util/setbaud.h> - здесь такой калькулятор не катит из-за необходимости принимать во внимание PLL
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.