Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: memcpy и unaligned
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
megajohn
не помню, чтобы 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

Нажмите для просмотра прикрепленного файла



все работало в железе ( по крайней мере проблем не наблюдал ) пока не включил выключеные фаулты ( согласно доке Using Cortex-M3 and Cortex-M4 Fault Exceptions apnt209.pdf )
SCB->SHCSR |= 0x00007000;
SCB->CCR |= 0x18;
aaarrr
Цитата(megajohn @ Jul 26 2015, 23:48) *
копирую выровненное на невыровненное. Вываливаюсь в HardFault на реальном железе. В железе и симуляторе наблюдаю причину - некорректный НА МОЙ ВЗГЛЯД код.

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

А какую цель преследует установка UNALIGN_TRP?
megajohn
Цитата(aaarrr @ Jul 27 2015, 00:01) *
Он корректный: для выровненного src используется LDM, для не выровненного dst - единичные STR.

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

Цитата(aaarrr @ Jul 27 2015, 00:01) *
А какую цель преследует установка UNALIGN_TRP?


Да глюки отловливал, уже отключил
aaarrr
Цитата(megajohn @ Jul 27 2015, 07:28) *
бррр, у меня же указана инструкция STR а вы говорите про STRB. Да и ( The .W suffix forces a 32-bit instruction encoding )

Именно про STR.W я и говорю. Для выровненного dst использовалась бы STM.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.