Перейти к содержанию
    

Не хочет инлайнить

Пишу программу в IAR Kickstart for ARM 6.10.

Есть небольша функция, которая вызывается из обработчика перываний. Объявил ее как inline при чем force:

 

 #pragma inline=forced
  __interwork int HexToBin( char* chr)
  {
    if ( *chr <= 0x39 )
                    ..........
               else 
                       return (ERR_BAD_SYMBOL);
    return (OK);
  };

 

Вызываю так

__irq __nested __arm void UART1_Handler( void )
{
  char chr[2];
..........................
      if ( HexToBin(chr) != OK ) 
      {
        RS485_buff.RxLastError = ERR_BAD_SYMBOL;
        continue; 
      }
.....................

 

Компановщик как ни в чем не бывало выдает предупреждение: [Go004] Could not inline function.

Больше эту функцию нигде не использую. Фунция определена в одном файле с вызывающей.

Уровень оптимизации максимальный.

Ради эксперимента пытался заменить в параметре указатель на char просто - ноль эмоций.

Может быть кто-нибудь подскажет как с этим бороться? Можно ли где-нибудь прочитать при каких условиях возможен inline, а при каких нет? В IAR C/C++ Development Guide сведения крайне скудные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Убрать __interwork
и добавить __arm. Проект глобально, вероятно, в thumb собирается.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и добавить __arm. Проект глобально, вероятно, в thumb собирается.

Точно! Большое спасибо! Зарботало! Не подумал, что код-то получается разный - в обработчике Arm, а функция в interwork. Весь проект действительно собирается в режиме Thumb. Замена _interwork на _arm решила проблему.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...