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

memcpy и unaligned

не помню, чтобы memcpy требовал выравнивания src и dst, а наоборот сам выбирал лучший способ копирования.

 

что наблюдаю:

#include <string.h>

unsigned char src[ 24 ] @ 0x0000F0F0 = "012345678901234567890123";
unsigned char dst[ 24 + 4 ] @ 0x10001000;

int main()
{
    memcpy( &dst[2], src, sizeof( src ) );
    return 0;
}

 

копирую выровненное на невыровненное. Вываливаюсь в HardFault на реальном железе. В железе и симуляторе наблюдаю причину - некорректный НА МОЙ ВЗГЛЯД код.

 

перед вызовом iar_unaligned_aeabi_memcpy

R0 = 0x10001002

R1 = 0x0000F0F0

R2 = 0x00000018

 

post-1143-1437943585_thumb.png

 

 

 

все работало в железе ( по крайней мере проблем не наблюдал ) пока не включил выключеные фаулты ( согласно доке Using Cortex-M3 and Cortex-M4 Fault Exceptions apnt209.pdf )

SCB->SHCSR |= 0x00007000;

SCB->CCR |= 0x18;

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


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

копирую выровненное на невыровненное. Вываливаюсь в HardFault на реальном железе. В железе и симуляторе наблюдаю причину - некорректный НА МОЙ ВЗГЛЯД код.

Он корректный: для выровненного src используется LDM, для не выровненного dst - единичные STR.

 

А какую цель преследует установка UNALIGN_TRP?

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


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

Он корректный: для выровненного src используется LDM, для не выровненного dst - единичные STR.

бррр, у меня же указана инструкция STR а вы говорите про STRB. Да и ( The .W suffix forces a 32-bit instruction encoding )

 

А какую цель преследует установка UNALIGN_TRP?

 

Да глюки отловливал, уже отключил

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


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

бррр, у меня же указана инструкция STR а вы говорите про STRB. Да и ( The .W suffix forces a 32-bit instruction encoding )

Именно про STR.W я и говорю. Для выровненного dst использовалась бы STM.

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


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

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

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

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

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

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

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

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

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

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