реклама на сайте
подробности

 
 
> memcpy и unaligned, IAR for ARM 7.30.1.7 ( LPC1778 )
megajohn
сообщение Jul 26 2015, 20:48
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 080
Регистрация: 16-11-04
Из: СПб
Пользователь №: 1 143



не помню, чтобы 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;


--------------------
Марс - единственная планета, полностью населенная роботами (около 7 штук).
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 06:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01332 секунд с 7
ELECTRONIX ©2004-2016