Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
Глюк в QT и связанными с ней либами (libpng и zlib) ?
sdteam
Добавлено 17.01.2012 16:40
0
Сообщение: 1
sdteam
0

Пункты: 1268
Регистрация: 23.09.2011
Кит SK-9G45-OEM

Стандартное ядро из поставки кита
Собранное QT 4.7.1 из билдрута
Либы libpng 1.4.5 и libz 1.2.5

Проблема в слующем при работе с графикой (png файлики)

простой код

QPixmap bgImg;
bgImg.load("bg.png");


часто возникает такая ошибка libpng error: incorrect data check
причем закономерность ее появления не прослеживается

И так происходит со всеми файликами png по ходу программы

Может кто сталкивался с таким ?

Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sdteam
Добавлено 18.01.2012 16:07 Сообщение: 2
sdteam
0

Пункты: 1268
Регистрация: 23.09.2011
Решил залезть в libz , а имеено функуцию inflate, ее использует
libpng и именно там возникает ошибка incorrect data check


if ((
#ifdef GUNZIP
state->flags ? hold :
#endif
REVERSE(hold)) != state->check)
{
strm->msg = (char *)"incorrect data check";
state->mode = BAD;
break;
}


решил посмтотреть, какие контрольные суммы он сравнивает
добавил перед кодом, который выше

unsigned long ztmp;
ztmp = REVERSE(hold);
fprintf(stderr, "%8X\n",ztmp);
fprintf(stderr, "%8X\n",state->check);

Собственно результат в вел в ступор.
когда контрольные сумы совпадают, то естественно png отображается на экране и проблем нет.

Когда ошибка (incorrect data check) результат функции REVERSE(hold) совсем другой.
P.S было не сколько раз такой вариант, REVERSE(hold) вернула правильное значение, а state->check содержал не правильную контрольную сумму.

У кого есть мысли, почему идут такие пляски
Еще раз повторюсь это происходит с любым файлом png, четкой закономерности появления ошибки нет :(

P.P.S пробовал с разными версиями libz - эффект то же.

Спасибо
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.01.2012 16:25 Редактировалось 18.01.2012 16:27 Сообщение: 3
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Если в багтрекере Qt или вообще в Инете не находите описания подобных проблем то скорей всего связано с ошибками этапа сборки - возможно с конкретным компилятором которым собирали. Примеры работают из Qt ? libpng - это достаточно зрелый проект, ошибок на пустом месте там 100% нет.
Спуститься к концу Подняться к началу
Персональная информация
sdteam
Добавлено 18.01.2012 18:01 Сообщение: 4
sdteam
0

Пункты: 1268
Регистрация: 23.09.2011
С QT проблем нет все остальное работает нормально. (навремя пришлось png заменить gif картинками)
Я так же пробовал собирать qt со встроенным lippng и libz картина такая же, проблема именно в libz внешнем или встроенным.

Компилятор, тот который идет в комплекте в образе виртуальной машины.

P.S есть еще SK-AT91SAM9G45 попробую на ней
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 18.01.2012 18:24 Сообщение: 5
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Цитата

С QT проблем нет все остальное работает нормально. (навремя пришлось png заменить gif картинками)


Тогда возможно проблема с самим рисунком png. Я например не смог подсунуть Qt Creator-у логотоп starterkit.ru (из шапки этого сайта) - не видит его браузер ресурсов в дезигнере QML, хотел летающий логотип сделать :)
Спуститься к концу Подняться к началу
Персональная информация
sdteam
Добавлено 18.01.2012 18:27 Сообщение: 6
sdteam
0

Пункты: 1268
Регистрация: 23.09.2011
нет файлы png я разные пробовал
Причем пять раз подряд может показать, а на 6 и 7 не показать
на 8 запуск опять будет работать
Спуститься к концу Подняться к началу
Персональная информация
sdteam
Добавлено 19.01.2012 00:54 Сообщение: 7
sdteam
0

Пункты: 1268
Регистрация: 23.09.2011
Попробовал на SK-AT91SAM9G45
Скопировал rootfs от OEM платы.
Все работает, глюков нет с png

Теперь ума не приложу, что может быть в oem ките такого, что вызывает глюки у libz
У кого есть еще мысли ?
Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 19.01.2012 10:41 Сообщение: 8
sasamy
4.71

Пункты: 83558
Регистрация: 14.08.2009
Мысли две - тестировать DDR мемтестером и второе - на OEM модуле нет SDRAM, только DDR, на SK-AT91SAM9G45 есть SDRAM и помоему в качестве видеопамяти она используется - надо смотреть, т.е. на DDR нет такой нагрузки от контроллера LCD - ему надо постоянно обращаться к памяти.
Спуститься к концу Подняться к началу
Персональная информация
sdteam
Добавлено 19.01.2012 12:20 Редактировалось 19.01.2012 12:21 Сообщение: 9
sdteam
0

Пункты: 1268
Регистрация: 23.09.2011
Цитата
Мысли две - тестировать DDR мемтестером

Есть еще несколько модулей OEM попробую протестить
Цитата
второе - на OEM модуле нет SDRAM, только DDR
, на SK-AT91SAM9G45 есть SDRAM и помоему в качестве видеопамяти она используется

Верно в нотации к этой плате так и написано, что используется для хранения видео буфера, он наверное потом через DMА переливается в основной кусок памяти.
Кстати на этой плате Android мне удалось поднять, правда в усеченном варианте (вкинуть пришлось не нужные app), а вот на OEM модуле Android постоянно падает.

Спасибо.
Спуститься к концу Подняться к началу
Персональная информация
sdteam
Добавлено 20.01.2012 15:37 Редактировалось 20.01.2012 15:38 Сообщение: 10
sdteam
0

Пункты: 1268
Регистрация: 23.09.2011
В OEM модуле нужно убрать перемычку R25 и поставить ее на R24
После этого больше глюков нет, png работает нормально, libz без ошибок.
P.S Модуль из старых поставок
P.P.S Павел давно об этом говорил, но вот несколько модулей остались без этого внимания.
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux