Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263
Пишу проект в карме для lpc2214. В частности кусок передачи в уарт данных с внешенй срам. Написал функцию, которая этим занимается. Компилится нормально, а вот в дебагере валят ошибки: Non-aligned Access: Thumb Instruction at 00000CC6H, Memory Access at 4000070DH при попытке записи в переменную, адресуемую указателем какого либо значения: unsigned long data; unsigned long *ptr_to_data; unsigned long *ptr_to_addr; unsigned char i,j;
ptr_to_addr = (unsigned long*)((&skatnet.buf[0]) + RX_MEM_ADDR); //Вычисляем адрес 32 битного окна ptr_to_data = (unsigned long*)(&data); i = 0; do { *ptr_to_addr = i;
data = Ext_Mem_Sram_Read(&err_code, ((*ptr_to_addr)>>2));
Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474
Это точно. Поэтому считается хорошим тоном делать так, чтобы не пришлось применять директиву __packed Учитывать выравнивание на этапе проектирования, так сказать. Хотя признаюсь, не всегда так получается.