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

 
 
 
Reply to this topicStart new topic
> Пустая структура после присвоения адресса
cpl
сообщение Jan 10 2008, 11:21
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Прикрепленное изображение
Здравствуйте

Подымаю FAT () -SD CARD на ADUC, использую IAR5.10
один и тотже код отказался работать после переноса с AVR,
после разбора полета выяснилось что ступор наступает в момент присвоения адресса указателю:

bpb = (FAT16_BOOT_SECT *) _FF_buff;

сам _FF_buff содержит данные прочитанного сектора, но сама структура bpb после присвоения содержит нули, видимо из-за того что размер структуры bpb = 588 байт за место 512 байт.....
некоторые значения занимают 2 байта за место одного !

Что не так может чего упустил ? help.gif
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 10 2008, 12:46
Сообщение #2


Гуру
******

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



Цитата(cpl @ Jan 10 2008, 13:21) *
Что не так может чего упустил ? help.gif
Несколько сумбурно, но полагаю дело в выравнивании данных внутри структуры. Поищите в документации по ключевому слову alignment. Обрамите описание вашей структуры прагмами #pragma pack (push,1) и #pragma (pop)


--------------------
На любой вопрос даю любой ответ
"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
cpl
сообщение Jan 10 2008, 13:30
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 6-12-04
Пользователь №: 1 340



Цитата(Сергей Борщ @ Jan 10 2008, 15:46) *
Несколько сумбурно, но полагаю дело в выравнивании данных внутри структуры. Поищите в документации по ключевому слову alignment. Обрамите описание вашей структуры прагмами #pragma pack (push,1) и #pragma (pop)


Прошу прощения за сумбур голова совсем уже не варит.... twak.gif wacko.gif
Большое спасибо помогло !!! a14.gif 1111493779.gif
пришлось еше корректировать типы данных int занимал 4 байта за место прежних 2.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 10 2008, 13:41
Сообщение #4


Гуру
******

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



Цитата(cpl @ Jan 10 2008, 15:30) *
пришлось еше корректировать типы данных int занимал 4 байта за место прежних 2.
Пользуйтесь stdint.h и объявленными в нем uint16_t, uint8_t, uint_fast8_t и т.д. Избавитесь от подобных проблем.


--------------------
На любой вопрос даю любой ответ
"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 Текстовая версия Сейчас: 21st July 2025 - 14:58
Рейтинг@Mail.ru


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