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

IAR ARM 8.40 крошится на запуске симулятора или дебагера

Да.

Вот например макро для отладки программного пин-UART для 51го ядра Кипарис.

Очень помогло.

 

//==============================================================================
//File name:    ".mac"
//Processor:    CY7C68013A
//Toolkit:      IAR Systems
//Purpose:      Header File
//Version:      1.00
//==============================================================================
__var _file_handle;
__var _interrupt_Timer0;
__var _read_break_ID;
__var _write_break_ID;

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
execUserReset()
{
  __message "execUserReset() called\n";

  if( _file_handle )
  {
    __resetFile( _file_handle );
  }
}

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
execUserSetup()
{
  __message "execUserSetup() called\n";
  SimulationSetup();
}

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
execUserExit()
{
  __message "execUserExit() called\n";
  SimulationShutdown();
}

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
SimulationSetup()
{  
  //----------------------------------------------------------------------
  //System Timer interrupt 
  //----------------------------------------------------------------------
  _interrupt_Timer0 = __orderInterrupt("TF0_int", 4000, 8000, 0, 1, 0, 100);

  if(_interrupt_Timer0 < 0)
  {
    __message "ERROR: failed to order System Timer0 interrupt";
  }

/*
  _read_break_ID  = __setSimBreak("SBUF", "R", "ReadSBUF()");
  
  if(_read_break_ID == -1)
  {
    __message "ERROR: failed to set ReadSBUF()";
  }
  
  _write_break_ID = __setSimBreak("SBUF", "W", "WriteSBUF()");
  if(_write_break_ID == -1)
  {
    __message "ERROR: failed to set WriteSBUF()";
  }
  */
  //-------------------------------------------------------------------
}

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
ReadSBUF()
{
  // read the uart value from file
  __var _value;

  if( 0 == __readFile( _file_handle, &_value ) )
  {
    SBUF = _value;
  }
  else
  {
    __message "\nerror reading value from file, cancel interrupt\n";
    __cancelInterrupt( _interrupt_ID );
  }

  __message "ReadSBUF() called << 0x", _value:%X;
}

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
WriteSBUF()
{
  
  //SCON = 0x02;   // Simulate UART filled at once.
  ///SCON1.TI_1 = 1;
  //SCON1_bit.TI_1 = 1;

  __message "WriteSBUF() called", "  >> 0x", SBUF:%X;

}

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
SimulationShutdown()
{
  __cancelInterrupt(_interrupt_Timer0);
  __clearBreak(_read_break_ID);
  __clearBreak(_write_break_ID);
  __closeFile (_file_handle);
}

 

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


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

18.07.2021 в 01:28, Obam сказал:

Периферию в симуляторе? Ну таймеры ещё туда-сюда, а SPI, I2c (ведомого ;-) ), UART и особенно кварцевый генератор... \-8Ж
А вот алгоритмы (чисто ядро) - это да: даже без железа чётко результат будет.

Алгоритмы (если так уж нужно отдельно) гораздо удобнее отлаживать на ПК. Тем более если речь о 32-битном коде.

А отладка периферии: полностью согласен - симулятор тут совершенно бесполезен, а иногда и вреден.

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


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

программного пин-UART


Нуууу, это и есть алгоритм в чистом виде; так не интересно.

Алгоритмы (если так уж нужно отдельно) гораздо удобнее отлаживать на ПК. Тем более если речь о 32-битном коде.


Дык оно так и получается, что на ПК ( ;-) iar на xbox ещё не портировали), только сразу на "целевом ядре" (вы ж чуть что, сразу ассемблерным кодом оппонента, а тут... ((-8Ж )

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


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

Подтверждаю, IAR 8 и 9 - глюкалово, на 2 разных машинах с 2 разными j-линками (один из которых настоящий :-)) валится на прошивке, причём если данный прожект начал валиться, то это уже навсегда (больше ни разу не прошьётся, хоть 100 раз запусти). Пересоздашь прожект с нуля - какое-то время поработает.

Откатился на 7.40.

 

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


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

37 minutes ago, Dr.Alex said:

IAR 8 и 9 - глюкалово

IAR 8.32, IAR 8.40 используются более года на рахных машинах с разными ОС (7, 10). Никаких проблем нет, кроме редких глюков типа подвисания среды или ошибки прошивки. Но это было и на предыдущих версиях. Возможно, в Вашем случае действительно как-то окружение системы влияет.

39 minutes ago, Dr.Alex said:

валится на прошивке

А из сеггеровской утилиты шьётся? Может быть проблема с их ПО?

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


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

Нашел очередная IAR ошибка.

Файл дебагера для семейства g071 - кривой.

В SPI регистрах управления нет поля DFF, а есть оно в I2S...

 

 

DFF.png

Изменено пользователем Gradient

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


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

1 час назад, Gradient сказал:

В SPI регистрах управления нет поля DFF, а есть оно в I2S...

Вы не поверите, но в самом свежем STM32G0x1 Reference manual RM0444 версии 5 от ноября прошлого года его тоже нет. Между CRCNEXT и RXONLY там описан битик CRCL:

image.thumb.png.480bf21cbc6af13ef7b309eac222aa1f.png

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


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

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

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

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

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

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

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

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

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

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