|
|
  |
Как вызвать WFI или WFE для кортексов?, Неужели в ИАР нет таких интринсиков? |
|
|
|
Aug 12 2010, 16:09
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Потихоньку осваиваю IAR после RealView. Почему то всегда казалось, что в ИАРе полно всяких хитрых ключевых слов и "интринсиков", а РВ в этом деле немного обделён. Однако, сегодня я был немного удивлён, не обнаружив ключевого слова __wfi()  Причём нигде - ни в справке, ни в папке с инклудами. Кое как в примерах нашёл глубоко закопанный файл core_cm3.h, где определяется такой макрос в виде ассемблерной строки.  зачем так обижать кортексы? Это ИАР таким образом "поддерживает" новые камни? Или просто я туплю и всё гораздо веселее?
|
|
|
|
|
Aug 12 2010, 18:47
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (AHTOXA @ Aug 12 2010, 21:30)  Господь с Вами, это просто свалка всяких исходников в стиле "библиотек", как модная эрзац замена документации. Причем там далеко не только от ARM, а от кого попало. Совершено необязательна к использованию. У самого ARM в Realview, кстати, это "интринсик".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 12 2010, 20:10
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(AHTOXA @ Aug 12 2010, 22:30)  Это не ИАР виноват  Это АРМ придумал Вон оно что! Понятно, спасибо. Но что-то я в папках последнего дистрибутива ИАРа для АРМ не нашёл CMSIS. Только в некоторых примерах... Тоже, как и zltigo, почему-то стараюсь избегать всяких "библиотек", так как они обычно не вызывают одобрения у профессионалов
|
|
|
|
|
Aug 13 2010, 04:46
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(zltigo @ Aug 13 2010, 01:20)  Так у чем говорите "польза"? ... В чем "новизна"? Не будете ли вы так любезны процитировать то место из моих сообщений, где я упоминал о "пользе" и "новизне"? Я лишь констатировал факт - есть такой стандарт, и IAR его поддерживает. И именно поэтому не придумал своих инстринсиков для WFI/WFE. Цитата(sonycman @ Aug 13 2010, 02:10)  Тоже, как и zltigo, почему-то стараюсь избегать всяких "библиотек", так как они обычно не вызывают одобрения у профессионалов  Ну, если говорить именно о core_cm3.h, то я рассматриваю его не как "библиотеку", а лишь как хидер. В нём объявлены нужные структуры ядра и инструкции. Конечно можно всё это переписать, но зачем?
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Aug 13 2010, 06:06
|
Участник

Группа: Участник
Сообщений: 16
Регистрация: 18-01-06
Из: Киев
Пользователь №: 13 310

|
Цитата(scifi @ Aug 13 2010, 08:36)  Если так, то не нужно горевать по поводу отсутствия __wfi() и прочего. Ведь по сути интринзики - такие же непереносимые примочки, как и ассемблерные вставки. Ну вот чем вот __wfi() лучше, чем __asm("wfi")? Все в IAR есть. Подключаете файл "cotexm3_macro.s". вызываете " __WFI();" + там много чего есть
|
|
|
|
|
Aug 13 2010, 06:22
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (scifi @ Aug 13 2010, 08:36)  Ну вот чем вот __wfi() лучше, чем __asm("wfi")? Тем, что первый это вставка о которой компилятор знает все и которая по этой причине не сбивает оптимизацию. Второй вариант более грубый с возможными побочными эффектами. Посему в этом случае wfi вообще не макрос, а обернут вызовом функции. QUOTE (AHTOXA @ Aug 13 2010, 07:46)  Не будете ли вы так любезны процитировать то место из моих сообщений, где я упоминал о "пользе" и "новизне"? А я Вам эти слова и не приписываю ни в коем случае. Просто отмечаю, что в таком "стандарте" нет ни новизны ни пользы. QUOTE а лишь как хидер. В нём объявлены нужные структуры ядра и инструкции. Это нормально, если-бы не уродливые имена в стиле "Pos" "Msk": CODE /* SysTick Control / Status Register Definitions */ #define SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */ #define SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */ Эти "_Pos" потокание хидерам в стиле Atmel AVR. Соответственно более распространненное и разумное определение получило в нагрузку совершеннно лишний прибамбас "_Msk". При этом, думаю, те, кто подсажены на AVR, будут не слишком рады добавке "_Pos", как и я "_Msk". В общем я, как и во всех других случаях пользую ПРАВЛЕННЫЕ хидеры, если они меня по стилю не устраивают. Как минимум, так: CODE #define SYSTICK_CTRL_COUNTFLAG BIT16
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Aug 13 2010, 09:08
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (AHTOXA @ Aug 13 2010, 11:27)  Я понимаю это ваше предложение так: вы утверждаете, что я говорю, что есть польза. То есть, именно что приписываете  Нет. В русском языке, есть совершенно обыденный оборот речи, например, стоите Вы и любуетесь на солнышко и подходит к Вам человек, и говорит, "Вот Вы говорите, что погода хорошая....". Вы что, ему начнете для начала рассказывать, что этого не говорили? Или просто согласитесь/опровергните? Еще раз повторяю прямым текстом - я никоим образом не собирался Вам приписывать эти слова. Извините, если был не так понят.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|