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

 
 
 
Reply to this topicStart new topic
> Выравнивание данных в batteryRAM LPC23xx
vitko
сообщение Jul 8 2010, 13:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066



Наблюдаю такую картину.
Есть массив __packed структур в BatteryRAM, размер структуры не кратен 32. При записи в массив DWORD, лежащие на стыке двух структур, портятся, если граница не совпадает с границей DWORD. А именно, все его байты заполняются тем байтом, который пишется в старший байт.
В обычной RAM запись в такой массив идет нормально.

Чем это объяснить ? Может чего-то недочитал, с ARM работаю недавно...

Компилятор Keil 4.10
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 8 2010, 14:02
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (vitko @ Jul 8 2010, 16:44) *
Может чего-то недочитал.

Да именно так. К батарейной RAM только 32bit доступ. Документировано черным по белому.



--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
vitko
сообщение Jul 8 2010, 14:28
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 8-03-06
Из: Kyiv, UA
Пользователь №: 15 066



Цитата(zltigo @ Jul 8 2010, 17:02) *
Да именно так. К батарейной RAM только 32bit доступ. Документировано черным по белому.


Да, в общем-то, видел. Просто внутри структуры есть байтовые поля, и они нормально прописываются через memcpy, кроме стыковых.
Go to the top of the page
 
+Quote Post

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

 


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


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