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

Работа в ITCMRAM STM32F7xx

Потребовалось использование ITCMRAM для ускорения работы ответственных процедур. Написал такое в ICF и заработало

define symbol __ICFEDIT_region_ITCMRAM_start__ = 0x00000000;
define symbol __ICFEDIT_region_ITCMRAM_end__   = 0x00003FFF;
define region ITCMRAM_region  = mem:[from __ICFEDIT_region_ITCMRAM_start__ to __ICFEDIT_region_ITCMRAM_end__];
define block ITCMRAM   with alignment = 8 { section .itcmram };
initialize by copy { readwrite, section .itcmram };
place in ITCMRAM_region {block ITCMRAM };

А в коде программы применил прагму

#pragma default_function_attributes = @ ".itcmram"
static void FilterTask( void * Param )
{
.....
}

И все работает, быстро, хорошо, проблем нет.

 

Но вот захотелось отправить в эту память еще и обработчик прерывания USB FS Host. Написал так же

#pragma default_function_attributes = @ ".itcmram"
void HAL_HCD_IRQHandler(HCD_HandleTypeDef *hhcd)
{
....
}

И не тут-то было. Вылезла ошибка линкера

  place in ITCMRAM_region {block ITCMRAM };
  ^
"stm32f745xx_flash_sram.icf",50  Warning[Lp005]: 
          placement includes a mix of sections with content (example "ro code s
          ection .itcmram in stm32f7xx_hal_hcd.o symbols: [HAL_HCD_GetCurrentFr
          ame, HAL_HCD_HC_GetURBState, HAL_HCD_ResetPort, HAL_HCD_Stop, HAL_HCD
          _Start, HAL_HCD_IRQHandler, HAL_HCD_HC_GetXferCount, HAL_HCD_GetCurre
          ntSpeed]") and sections without content (example "rw code section .it
          cmram in HalfBandFIR.o symbols: [FBI_Filter2X, FBI_Filter4X, FBI_Filt
          er8X]")

Прошивка грузится с ошибками и не работает.

Смотрю мап:

"P4":                                       0x21a0
  ITCMRAM                      0x00000000   0x21a0  <Block>
    Veneer            ro code  0x00000000      0x8  - Linker created -
    Veneer            ro code  0x00000008      0x8  - Linker created -
    Veneer            ro code  0x00000010      0x8  - Linker created -
    Veneer            ro code  0x00000018      0x8  - Linker created -
    Veneer            ro code  0x00000020      0x8  - Linker created -
    Veneer            ro code  0x00000028      0x8  - Linker created -
    .itcmram          ro code  0x00000030    0x71a  stm32f7xx_hal_hcd.o [1]
    Veneer            ro code  0x0000074c      0x8  - Linker created -
    .itcmram          ro code  0x00000754    0xb38  stm32f7xx_ll_usb.o [1]
    ITCMRAM-1                  0x0000128c    0xf14  <Init block>
      Veneer          inited   0x0000128c      0x8  - Linker created -
      .itcmram        inited   0x00001294     0x50  Filter.o [1]
      Veneer          inited   0x000012e4      0x8  - Linker created -
      .itcmram        inited   0x000012ec    0x6f0  HalfBandFIR.o [1]
      Veneer          inited   0x000019dc      0x8  - Linker created -
      Veneer          inited   0x000019e4      0x8  - Linker created -
      Veneer          inited   0x000019ec      0x8  - Linker created -
      .itcmram        inited   0x000019f4    0x224  heap_4.o [1]
      .itcmram        inited   0x00001c18    0x4d8  IFirInter.o [1]
      Veneer          inited   0x000020f0      0x8  - Linker created -
      Veneer          inited   0x000020f8      0x8  - Linker created -
      .itcmram        inited   0x00002100     0xa0  tasks.o [1]
                             - 0x000021a0   0x21a0

Получается, что код одних функций он кладет в раздел ro code, а других в inited. Пролазил все прагмы по исходниками и заголовкам - не нашел зацепок почему?

Пока не попробовал засунуть в itcmram ST-шные библиотек, туда заползали и функции FreeRTOS. Не подскажите где искать?

Да, использую IAR 7.5.2

Изменено пользователем Мусатов Константин

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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