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

 
 
> Переход с AVR на ARM, Переход с AVR на ARM
HSA
сообщение Jan 10 2005, 05:37
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 42
Регистрация: 10-01-05
Из: Санкт-Петербург
Пользователь №: 1 862



Господа разработчики, программисты... Просидел достаточно долго на AVR-ах (в основном - 8535), теперь встал вопрос ребром о переходе на работу с ARM. Посоветуйте литературу и ПО для этого дела. Понимаю, что описал сумбурно, но пока ничего не могу сказать точнее.
Go to the top of the page
 
+Quote Post
4 страниц V  « < 2 3 4  
Start new topic
Ответов (45 - 58)
Сергей Борщ
сообщение Jun 8 2006, 21:45
Сообщение #46


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(AVR @ Jun 9 2006, 00:29) *
Мне для примера хотя бы увидеть программу, которая бы устанавливала в единицу все разряды. help.gif

Код
#include <stdint.h>
#include <ioAT91SAM7S64.h>
void main() {
    AT91C_BASE_PIOA->PIO_PER = (uint32_t)-1;        // all outputs are IO
    AT91C_BASE_PIOA->PIO_OWER = (uint32_t)-1;        // direct write to all pins allowed


    for(;;) {
        AT91C_BASE_PIOA->PIO_ODSR = 0;        // all outputs = 0
        AT91C_BASE_PIOA->PIO_ODSR = (uint32_t)-1;    // all outputs = 1
        AT91C_BASE_PIOA->PIO_SODR = (1<<0);    // PIOA.0 = 1
        AT91C_BASE_PIOA->PIO_CODR = (1<<0);    // PIOA.0 = 0
    }
}
примерно так...

Сообщение отредактировал Сергей Борщ - Jun 8 2006, 21:48


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 8 2006, 23:05
Сообщение #47


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Спасибо. smile.gif
Как увидеть содержимое регистров в EW-ARM? т.е. как по мере выполнения программы у меня меняется AT91C_BASE_PIOA->PIO_PDSR и любой другой регистр? Регистры общего назначения, статуса при отладке отображаются, но непонятно где посмотреть все прочие регистры. Добаления в список watch не помогает...


--------------------
Go to the top of the page
 
+Quote Post
vet
сообщение Jun 9 2006, 05:17
Сообщение #48


Знающий
****

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



В IAR все спец.регистры показываются там же, где и обычные. Ничего добавлять/настраивать не нужно.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jun 9 2006, 08:33
Сообщение #49


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(AVR @ Jun 9 2006, 02:05) *
Спасибо. smile.gif
Как увидеть содержимое регистров в EW-ARM? т.е. как по мере выполнения программы у меня меняется AT91C_BASE_PIOA->PIO_PDSR и любой другой регистр? Регистры общего назначения, статуса при отладке отображаются, но непонятно где посмотреть все прочие регистры. Добаления в список watch не помогает...
Или в том же окне (там в верхней части окна есть выпадающее меню периферии-где написано CPU registers) или открыть еще одно такое же (View->Registers) и в нем выбрать какую периферию смотреть.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
AVR
сообщение Jun 10 2006, 13:33
Сообщение #50


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Спасибки, всё нашел a14.gif
Ещё вот вопросец есть: есть ли какой-нибудь симулятор, чтобы тестировать работу контроллера в окружении периферии? Например, в Proteus'е есть некоторые LPC21xx контроллеры, скоро ли там появятся и AT91?.. rolleyes.gif


--------------------
Go to the top of the page
 
+Quote Post
Wano
сообщение Jun 11 2006, 13:10
Сообщение #51


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Людиии HELP.
Что за примудрости в Keil. Мигал я светодиодами на платке. Вот стандартная фирмовая запись обработчика прерывания:

long timeval;

/* Timer Counter 0 Interrupt executes each 10ms @ 60 MHz CPU Clock */
void tc0 (void) __irq {
++timeval;
T0IR = 1; // Clear interrupt flag
VICVectAddr = 0; // Acknowledge Interrupt
}

Пытаюсь внешнюю переменную timeval из головной программы изменить, а ничё не выходит. Зато сравнивать могу. Неужели тут уже критические секции мудрить надо как в вижуале?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение Jun 11 2006, 14:22
Сообщение #52


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Может оптимизатор возомнил из себя слишком умного и перемудрил. Попробуйте объявить переменную так:

volatile long timeval;

А мигает то с нормальной скоростью?

Цитата
Неужели тут уже критические секции мудрить надо как в вижуале?

А вы что думали? Прерывание может произойти в любой момент. Сосбсно в любом проце так. Если будете просто обнулять переменную (записывать в неё любое число), то без проблем. Запрещать прерывания не надо. А если в команде попытаетесь её прочитать, что-то добавить например и записать обратно, то учтите что она могла уже измениться.

Сообщение отредактировал GetSmart - Jun 11 2006, 14:36


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
Wano
сообщение Jun 12 2006, 19:52
Сообщение #53


Местный
***

Группа: Свой
Сообщений: 272
Регистрация: 3-06-06
Пользователь №: 17 737



Агааааааа volatile long timeval; прокатило. О как. biggrin.gif
Go to the top of the page
 
+Quote Post
e-tarasov
сообщение Jun 19 2006, 09:38
Сообщение #54


Участник
*

Группа: Свой
Сообщений: 44
Регистрация: 30-05-06
Пользователь №: 17 578



Люди помогите разобраться с примерами от атмела от их либов голова кругом идет. Может книгу какую нибудь посоветуете.
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Jun 19 2006, 09:50
Сообщение #55


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Ручками, ручками. Пока не лезть в USB и прерывания, все достаточно просто - главное помнить:
1.Переключение преиферии
2.Подачу тактовой на каждый блок.
3.Отдельные пары регистров, для enable/disable.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Playnet
сообщение Oct 13 2006, 08:52
Сообщение #56


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

Группа: Свой
Сообщений: 132
Регистрация: 10-05-06
Пользователь №: 16 930



http://troosh.pp.ru/arm/

не находится... Если у кого сохранил, просьба скинуть...

И еще.. Вроде, были ARM, стали SAM... Что произошло и что с совместимостью?
Go to the top of the page
 
+Quote Post
SpiritDance
сообщение Oct 13 2006, 09:55
Сообщение #57


Дух погибшего транзистора
****

Группа: Свой
Сообщений: 877
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 288



Были RM стали Smart ARM, смена названия исключительно маркетоидная на мой взгляд.


--------------------
Yes, there are two paths you can go by But in the long run Theres still time to change the road youre on.
Go to the top of the page
 
+Quote Post
vxzxc
сообщение Oct 16 2006, 05:41
Сообщение #58





Группа: Участник
Сообщений: 6
Регистрация: 6-03-06
Пользователь №: 15 007



ARM - 32bit
AVR - 8bit
не значит ли это, что при переходе с AVR на ARM памяти потребуется больше?
т.е. например, есть проект на IAR C под mega128(128кбайта flash + 32кбайта ОЗУ внешнее)
пусть и flash, и ОЗУ занято полностью
переносим проект под ARM, например sam7(128 flash, 32 ОЗУ)
и вот вопрос: хватит ли памяти у ARM'а, или памяти надо заведомо больше (как по flash так и/или по ОЗУ)?

есть ли возможность мудрить с выравниванием данных? но видимо лучше этого не делать
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Oct 16 2006, 09:05
Сообщение #59


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(vxzxc @ Oct 16 2006, 08:41) *
ARM - 32bit
AVR - 8bit
не значит ли это, что при переходе с AVR на ARM памяти потребуется больше?
т.е. например, есть проект на IAR C под mega128(128кбайта flash + 32кбайта ОЗУ внешнее)
пусть и flash, и ОЗУ занято полностью
переносим проект под ARM, например sam7(128 flash, 32 ОЗУ)
и вот вопрос: хватит ли памяти у ARM'а, или памяти надо заведомо больше (как по flash так и/или по ОЗУ)?

Собирал один и тот же тестовый пример (dhrystone) для AVR, ARM и ARM(Thumb). В последнем случае расход флеш был наиболее экономный. По ОЗУ ситуация чуть хуже, но я не делал ручной оптимизации данных, т. е. не заменял int на short и т. д.
Цитата(vxzxc @ Oct 16 2006, 08:41) *
есть ли возможность мудрить с выравниванием данных? но видимо лучше этого не делать

Такая возможность есть и делать это можно, но в разумных пределах, т. к. доступ к упакованным данным длительнее и накладнее по размеру программы.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 30th June 2025 - 17:23
Рейтинг@Mail.ru


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