megajohn 3 26 июля, 2015 Опубликовано 26 июля, 2015 · Жалоба не помню, чтобы 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 56 26 июля, 2015 Опубликовано 26 июля, 2015 · Жалоба копирую выровненное на невыровненное. Вываливаюсь в HardFault на реальном железе. В железе и симуляторе наблюдаю причину - некорректный НА МОЙ ВЗГЛЯД код. Он корректный: для выровненного src используется LDM, для не выровненного dst - единичные STR. А какую цель преследует установка UNALIGN_TRP? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
megajohn 3 27 июля, 2015 Опубликовано 27 июля, 2015 · Жалоба Он корректный: для выровненного src используется LDM, для не выровненного dst - единичные STR. бррр, у меня же указана инструкция STR а вы говорите про STRB. Да и ( The .W suffix forces a 32-bit instruction encoding ) А какую цель преследует установка UNALIGN_TRP? Да глюки отловливал, уже отключил Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 56 27 июля, 2015 Опубликовано 27 июля, 2015 · Жалоба бррр, у меня же указана инструкция STR а вы говорите про STRB. Да и ( The .W suffix forces a 32-bit instruction encoding ) Именно про STR.W я и говорю. Для выровненного dst использовалась бы STM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться