Jump to content

    
Gradient

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

Recommended Posts

Да.

Вот например макро для отладки программного пин-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);
}

 

Share this post


Link to post
Share on other sites
18.07.2021 в 01:28, Obam сказал:

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

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

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

Share this post


Link to post
Share on other sites

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


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

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


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

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites
37 minutes ago, Dr.Alex said:

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

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

39 minutes ago, Dr.Alex said:

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

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

Share this post


Link to post
Share on other sites

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

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

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

 

 

DFF.png

Edited by Gradient

Share this post


Link to post
Share on other sites
1 час назад, Gradient сказал:

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

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

image.thumb.png.480bf21cbc6af13ef7b309eac222aa1f.png

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.