Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как вызвать WFI или WFE для кортексов?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
sonycman
Потихоньку осваиваю IAR после RealView.
Почему то всегда казалось, что в ИАРе полно всяких хитрых ключевых слов и "интринсиков", а РВ в этом деле немного обделён.

Однако, сегодня я был немного удивлён, не обнаружив ключевого слова __wfi() sad.gif
Причём нигде - ни в справке, ни в папке с инклудами.

Кое как в примерах нашёл глубоко закопанный файл core_cm3.h, где определяется такой макрос в виде ассемблерной строки.

crying.gif зачем так обижать кортексы?

Это ИАР таким образом "поддерживает" новые камни?
Или просто я туплю и всё гораздо веселее?
AHTOXA
Цитата(sonycman @ Aug 12 2010, 22:09) *
Это ИАР таким образом "поддерживает" новые камни?
Или просто я туплю и всё гораздо веселее?

Это не ИАР виноватsmile.gif Это АРМ придумал CMSIS. Типа, перенеся часть периферии в ядро, заодно стандартизировали и софтовый интерфейс...
zltigo
QUOTE (AHTOXA @ Aug 12 2010, 21:30) *
Это АРМ придумал CMSIS.

Господь с Вами, это просто свалка всяких исходников в стиле "библиотек", как модная эрзац замена документации. Причем там далеко не только от ARM, а от кого попало.
Совершено необязательна к использованию. У самого ARM в Realview, кстати, это "интринсик".
AHTOXA
А если вот такая ссылка? smile.gif
И плюс факт, что все (мне известные) производители компиляторов этот стандарт поддерживают (посмотрите на список партнёров)?
А использовать - да, не обязательноsmile.gif
zltigo
QUOTE (AHTOXA @ Aug 12 2010, 22:01) *
этот стандарт поддерживают (посмотрите на список партнёров)?

"Поддержка" заключается в том, что эту кучу кидают в дистрибутив? Причем в качестве ответной любезности позволяют в кучу кидать опционально и cвой мусор до кучи. Так у чем говорите "польза"? Тот-же Atmel свои уродливые хидеры (в том числе и для ARM) раздет для включения в дистрибутивы. В чем "новизна"? Тот-же TI/Luminary, хотя в поставке болтается от ARM, в своих примерах эту муть не использует, предпочитая совершенно smile.gif аналогичную свою smile.gif
CODE
//*****************************************************************************
//
// cpu.c - Instruction wrappers for special CPU instructions needed by the
//         drivers.
//
// Copyright (c) 2006-2010 Texas Instruments Incorporated.  All rights reserved.
// Software License Agreement
//
// This is part of revision 5821 of the Stellaris Peripheral Driver Library.
//
//*****************************************************************************
sonycman
Цитата(AHTOXA @ Aug 12 2010, 22:30) *
Это не ИАР виноватsmile.gif Это АРМ придумал

Вон оно что! Понятно, спасибо.
Но что-то я в папках последнего дистрибутива ИАРа для АРМ не нашёл CMSIS.
Только в некоторых примерах...

Тоже, как и zltigo, почему-то стараюсь избегать всяких "библиотек", так как они обычно не вызывают одобрения у профессионалов laughing.gif
AHTOXA
Цитата(zltigo @ Aug 13 2010, 01:20) *
Так у чем говорите "польза"?
...
В чем "новизна"?

Не будете ли вы так любезны процитировать то место из моих сообщений, где я упоминал о "пользе" и "новизне"? Я лишь констатировал факт - есть такой стандарт, и IAR его поддерживает. И именно поэтому не придумал своих инстринсиков для WFI/WFE.

Цитата(sonycman @ Aug 13 2010, 02:10) *
Тоже, как и zltigo, почему-то стараюсь избегать всяких "библиотек", так как они обычно не вызывают одобрения у профессионалов laughing.gif

Ну, если говорить именно о core_cm3.h, то я рассматриваю его не как "библиотеку", а лишь как хидер. В нём объявлены нужные структуры ядра и инструкции. Конечно можно всё это переписать, но зачем?
scifi
Цитата(sonycman @ Aug 13 2010, 00:10) *
... стараюсь избегать всяких "библиотек", так как они обычно не вызывают одобрения у профессионалов laughing.gif


Если так, то не нужно горевать по поводу отсутствия __wfi() и прочего. Ведь по сути интринзики - такие же непереносимые примочки, как и ассемблерные вставки. Ну вот чем вот __wfi() лучше, чем __asm("wfi")?
Faterland
Цитата(scifi @ Aug 13 2010, 08:36) *
Если так, то не нужно горевать по поводу отсутствия __wfi() и прочего. Ведь по сути интринзики - такие же непереносимые примочки, как и ассемблерные вставки. Ну вот чем вот __wfi() лучше, чем __asm("wfi")?

Все в IAR есть. Подключаете файл "cotexm3_macro.s". вызываете " __WFI();" + там много чего есть
zltigo
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
AHTOXA
Цитата(zltigo @ Aug 13 2010, 12:22) *
А я Вам эти слова и не приписываю ни в коем случае.

Ну как же, я ведь специально процитировал:
Цитата(zltigo @ Aug 13 2010, 01:20) *
Так у чем говорите "польза"?

Я понимаю это ваше предложение так: вы утверждаете, что я говорю, что есть польза. То есть, именно что приписываетеsmile.gif

zltigo
QUOTE (AHTOXA @ Aug 13 2010, 11:27) *
Я понимаю это ваше предложение так: вы утверждаете, что я говорю, что есть польза. То есть, именно что приписываетеsmile.gif

Нет. В русском языке, есть совершенно обыденный оборот речи, например, стоите Вы и любуетесь на солнышко и подходит к Вам человек, и говорит, "Вот Вы говорите, что погода хорошая....". Вы что, ему начнете для начала рассказывать, что этого не говорили? Или просто согласитесь/опровергните? Еще раз повторяю прямым текстом - я никоим образом не собирался Вам приписывать эти слова. Извините, если был не так понят.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.