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

 
 
> как сделать, чтоб асм не ругался
Gemm
сообщение Aug 26 2008, 08:58
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 2-08-05
Из: Коломна
Пользователь №: 7 283



Начал поднимать data cache-MMU в железке на базе SAM9263. Компилер - IAR 5.1. Нашел на атмеле примерный проектик с драйстоун тестом, где кеши активно используются, но немножко не под мой компилятор smile.gif . И вот такая конструкция не компилится по причине того, что в асмовской инструкции я не могу использовать свою переменную ctl. Хотя это неправильно, она же регистровая...

Не хотелось бы ломать красивый код, а настроить свой асм, чтоб он понимал такой синтаксис.

И еще вопрос, если кто занимался - у at91rm9200 и at91sam9263 принципиально чем-то отличается работа с MMU и дата кешем?

__inline unsigned int AT91F_ARM_ReadControl()
{
register unsigned int ctl;
__asm("MRC p15, 0, ctl, c1, c0, 0");
return ctl;
}


Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Rst7
сообщение Aug 26 2008, 10:43
Сообщение #2


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Не вижу проблем в обеспечении универсальности:
Код
#ifdef __IAR_SYSTEMS_ICC__
__arm unsigned int AT91F_ARM_ReadControl(void)
{
return __MRC(15,0,ctl,1,0,0);
}
#else
__inline unsigned int AT91F_ARM_ReadControl()
{
register unsigned int ctl;
__asm("MRC p15, 0, ctl, c1, c0, 0");
return ctl;
}
#endif


Только вот в даташит гляньте, что надо вместо ctl поставить (численное значение, я имею в виду)


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 13:34
Рейтинг@Mail.ru


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