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

 
 
> О переносимости кода, AVR => ARM
ivainc1789
сообщение Mar 8 2012, 17:54
Сообщение #1


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

Группа: Свой
Сообщений: 1 175
Регистрация: 5-01-05
Пользователь №: 1 807



При портировании кода программы на STM32 возникла трудность. На такой строке
Код
*(struct SensStruct*)(TxBuf + 5) = Sensor;

ловлю устойчивый HardFault и не понимаю, почему? Переменная Sensor типа структуры SensStruct копируется в буфер TxBuf начиная с TxBuf[5] для передачи через USART.

В AVR компилировалось без проблем, что в принципе понятно - там нет исключений... Как правильно оформить под ARM и в чем причина?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zöner
сообщение Mar 9 2012, 06:32
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 195
Регистрация: 16-02-12
Пользователь №: 70 299



посмотрел - для присваивания структур вызывается memcpy, с выравниванием не должно быть проблем

Сообщение отредактировал zöner - Mar 9 2012, 07:48
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 9 2012, 10:16
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (zöner @ Mar 9 2012, 08:32) *
посмотрел - для присваивания структур вызывается memcpy, с выравниванием не должно быть проблем
Структуры и компиляторы бывают разные. Для 4-8-12-16-байтовой структуры один вызов memcpy съест памяти и тактов столько же, сколько LDM/STM.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 15:09
Рейтинг@Mail.ru


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