Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 27.02.2013, 12:16  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

да по сути и нет никакого вызова ... Насколько я вижу это просто передача параметров вызова сопроцессору, вычисление и сохранение результата ...
Если отвечать непосредственно на ваш вопрос, то ответ "никак" (IAR) ... Насколько я знаю, компилятор будет инлайнить лишь ту функцию, которая в том же файле располагается... Если ф-ция библиотечная либо внешняя, то компилятор её не увидит, а подключаться она будет на этапе линковки ... Таким образом вызов ф-ции из прерывания приводит к сохранению всех scratch регистров, даже если ф-ция их не использует ... На первый взгляд это кажется бессмысленным, но если понимаешь суть, то всё на своих местах ... Существуют некоторые "выверты" они обсуждались на электрониксе, но это нюансы ... Общий принцип, надёюсь, я донёс ...
===
Теперь о деталях ... В вашем случае инлайнить не надо ... Компилятор, по идее, при оптимизации должен убрать промежуточные пересылки ... Если математика сложная, то надо пользоваться более крупными ф-циями или использовать свою на асме с использованием сопроцессора ...
Реклама:
SasaVitebsk вне форума  
Непрочитано 27.02.2013, 13:23  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от SasaVitebsk Посмотреть сообщение
Теперь о деталях ... В вашем случае инлайнить не надо ... Компилятор, по идее, при оптимизации должен убрать промежуточные пересылки ... Если математика сложная, то надо пользоваться более крупными ф-циями или использовать свою на асме с использованием сопроцессора ...

Скажи проще - не использовать IAR.
Потому что даже при оптимизации все так же плохо ...
Код:
    0x8000308: 0x00000244     DC32      580                     ; 'D...'
    0x800030c: 0x20000000     DC32      testInput
    0x8000310: 0x00000000     DC32      0                       ; '....'
        arm_sqrt_f32(testInput, &testOutput);
main:
Region$$Table$$Limit:
    0x8000314: 0x4805         LDR.N     R0, ??main_0            ; testInput
    0x8000316: 0xed90 0x0a00  VLDR      S0, [R0]
    0x800031a: 0xeeb5 0x0a40  VCMP.F32  S0, #0.0
    0x800031e: 0xeef1 0xfa10  VMRS      APSR_nzcv, FPSCR
    0x8000322: 0xbfc8         IT        GT
    0x8000324: 0xf000 0xf804  BLGT      _sqrtf                  ; 0x8000330
        while (1)
??main_1:
    0x8000328: 0xe7fe         B.N       ??main_1                ; 0x8000328
    0x800032a: 0xbf00         NOP
??main_0:
    0x800032c: 0x20000000     DC32      testInput
_sqrtf:
sqrtf:
    0x8000330: 0xeeb5 0x0ac0  VCMPE.F32 S0, #0.0
    0x8000334: 0xeef1 0xfa10  VMRS      APSR_nzcv, FPSCR
    0x8000338: 0xd402         BMI.N     0x8000340
    0x800033a: 0xeeb1 0x0ac0  VSQRT.F32 S0, S0
    0x800033e: 0x4770         BX        LR
    0x8000340: 0xf06f 0x4c00  MVN.W     R12, #-2147483648       ; 0x80000000
    0x8000344: 0xee00 0xca10  VMOV      S0, R12
    0x8000348: 0xf000 0xb800  B.W       __iar_edom              ; 0x800034c
__iar_edom:
    0x800034c: 0xb51f         PUSH      {R0-R4, LR}
    0x800034e: 0xf000 0xf803  BL        __aeabi_errno_addr      ; 0x8000358
    0x8000352: 0x2121         MOVS      R1, #33                 ; 0x21
    0x8000354: 0x6001         STR       R1, [R0]
__________________
Осторожно , злой кот

Последний раз редактировалось dosikus; 27.02.2013 в 13:30.
dosikus вне форума  
Непрочитано 27.02.2013, 14:19  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от dosikus Посмотреть сообщение
Скажи проще - не использовать IAR.
Использовать или не использовать тот либо иной инструмент, выбирает для себя пользователь ... Я вас не агитирую за IAR ...
С другой стороны вы, собственно, вызываете ф-цию из библиотеки arm_math.h. Она случайно не ARM написана? Что-то подсказывает ...
У вас есть возможность использовать мат библиотеку от st ...
Честно скажу я не разбирался с этим, хотя вот-вот придётся ... У меня в приборе будет определятся свойства газов, включая динамическую вязкость, плотность и прочую хренотень ... там, по каждому газу трёхэтажные формулы, десятки страниц. Только коэффициенты занимают несколько килобайт ... Так что мне это ещё предстоит ...
Кинте проект, если не затруднит .. гляну.
SasaVitebsk вне форума  
Непрочитано 27.02.2013, 14:27  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от SasaVitebsk Посмотреть сообщение
С другой стороны вы, собственно, вызываете ф-цию из библиотеки arm_math.h. Она случайно не ARM написана? Что-то подсказывает ...
У вас есть возможность использовать мат библиотеку от st ...
Это и есть CMSIS .
Спасибо за "подсказку" юзать SPL которая в свою очередь юзает ту же либу CMSIS.
Весьма оригинальная помощь...
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 27.02.2013, 15:23  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Ну извините, я написал, что не разбирался в составе библиотек и во взаимоувязке .. Если это CMSIS, то претензии к IAR тем более напонятны ... Вроде, насколько я читал, у GCC чуть по лучше абстоит с оптимизацией на уровне асма. По крайней мере по AVR такое имеет место быть.
Я насколько понял у вас stm4f киньте проект попробую посмотреть, хотя врятли чем я помогу ...
Я такой же как и все. Бывают случаи что мне что-то не нравится в результирующем коде. Тогда я пытаюсь найти узкое место и в первую очередь пытаюсь "объяснить" компилятору. Если это не помогает, то закасываю рукова, локализую кусок и переписываю на асме. Оформляю в виде п/п и вперёд на мины ...
С другой стороны выбор у вас небольшой ... )) Писать на асме для ARM с плавучкой, это не на AVR баловаться. И даже не на x86. Перепишите вашу sqrt. Кто мешает?
Возможно вам вот это будет интересно http://electronix.ru/forum/index.php?showtopic=107703 скажем от создателя сборок GCC
SasaVitebsk вне форума  
Непрочитано 27.02.2013, 15:59  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от SasaVitebsk Посмотреть сообщение
Я насколько понял у вас stm4f киньте проект попробую посмотреть,
Дык нет проекта . Все что было нацарапано , выложено выше.
Я так же только осваиваю STM32. Попутно сравниваю IDE и компиляторы.
И пока выбор явно не в пользу IAR . Ну я пляски с Eclipse убьют все прелести GCC.
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 27.02.2013, 16:56  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Хорошо, постараюсь завтра посмотреть ...
Сообщение от dosikus Посмотреть сообщение
Попутно сравниваю IDE и компиляторы.
И пока выбор явно не в пользу IAR . Ну я пляски с Eclipse убьют все прелести GCC.
Так а тут вариантов не густо ... IAR, Keil (MDK), GCC... остальное всё экзотика...
С GCC я не работал сказать затрудняюсь. С Keil и IAR работаю сейчас. Так несколько проектов LPC176x у меня на Keil и один текущий проект у меня под IAR. С IAR работал очень много.
Высскажу своё мнение (не навязываю!!!!). Среда дерьмовая и там и там. Мне субъетивно Keil нравится меньше. Это касается закладок, окошек, опций проекта и так далее ... Будут вопросы - могу в отдельной ветке. Масса была хвалебных отзывов о Keil в плане отладки и симулирования ... У меня прямо противоположные отзывы. Так же могу в отдельной ветке детально. Самое простое - Keil. ОС RTX (своя!). Создаю 2 задачи по обслуживанию USART. Точнее 2 копии одной задачи. Во время отладки вообще не верно вычисляет смещения и в результате в окне отладки я вижу неверные значения локальных переменных! Более того полностью отсутствует возможность их указать!
Приведу пример как это возможно сделать в IAR (в Keil это просто не доступно).
Представим себе что идут команды в прибор из COM порта. Команда представляет собой объект (структуру). Имя команды и поля разные. В зависимости от имени - поля разные. Прибор их размещает в буфере и обрабатывает. Грубо говоря у меня динамически размещается некоторая структура данных. Так вот я в окне watch открываю просмотр объекта своего (команды) и указываю его реальный адрес. И всё! Я сразу вижу свой объект, со всеми полями, где бы он не находился! Проделать такое в Keil я не смог.
Короче Keil попроще конечно. Но Iar получше. Но главное преимущество - можно между процами ползать легко. Это очень удобно. Проекты перетягиваются на раз.
SasaVitebsk вне форума  
Непрочитано 27.02.2013, 20:06  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

ИАР, похоже текстовый редактор переделывает:
26.02.2013 вышла версия ЕWSТМ8 1.40.1
Highlights Version 1.40.1:
• New text editor A new text editor and source browser are introduced in this version. The new features include auto completion, parameter hint, code folding, block select, block indent, bracket matching, zoom and word/paragraph navigation.
• New source browser The new source browser adds features like Go to Declaration and Find All References to symbols but also a possiblity to display a call graph for easy navigation of the function hierarchy.
• Subversion The version control integration has been extended with support for Subversion (SVN).
oleg110592 вне форума  
Непрочитано 27.02.2013, 20:38  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от SasaVitebsk Посмотреть сообщение
Но Iar получше. Но главное преимущество - можно между процами ползать легко. Это очень удобно. Проекты перетягиваются на раз.
Собственно я не буду вставать в позу защитника/ фаната чего либо.
Но, а что вы скажете на то, что перетащить в Keil на другой камень еще проще чем в IAR ?
В том же проекте создать другую конфигурацию.
__________________
Осторожно , злой кот
dosikus вне форума  
Непрочитано 28.02.2013, 00:18  
SasaVitebsk
Гражданин KAZUS.RU
 
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
SasaVitebsk на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Я работаю с stm8 - ARM(stm32/lpc) - msp430 - AVR...
IAR это всё поддерживает. Keil - нет. У меня есть один проект где выбирается проц lpc2106/ atmega640. Есть один проект где выбирается stm8s208/ at90can128.
Не совсем понимаю, что значит создать другую конфигурацию ...
Как правило и та и та среда содержит 2 вкладки проекта. debug/ target (для Keil) и debug/ release для IAR. Для IAR можно создать хоть 10 вкладок таких. Я это делал. Более того, Atmel поставляет apnotes с bootloader-ом c AES, так там вообще типа выбираешь закладку проца и компилишь. 1 общий проект под все процы. У меня попроще сделано, но сделано. Это вообще не сложно. Сейчас речь не об этом. Keil поддерживает только 3 среды x51, ARM, и x86 siemens. IAR поддерживает десятки включая даже PIC.
Вот у меня, к примеру сейчас HART модем написан на atmega8/88. А я хочу перенести его на stm32f100. Так я минимум переделывать буду. И будет проект с общими исходниками.

Последний раз редактировалось SasaVitebsk; 28.02.2013 в 00:21.
SasaVitebsk вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 19:22.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot