ЗАО «ЗЭО»

Пожалуйста, войдите или зарегистрируйтесь.

Расширенный поиск  

Новости:

Автор Тема: Сборка ядра и фс  (Прочитано 34533 раз)

0 Пользователей и 1 Гость просматривают эту тему.

zverro

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 59
Re: Сборка ядра и фс
« Ответ #45 : 16 Января, 2010, 19:13:07 »

    Я тоже проверил, заработало звук, тачскрин и QT c мышью (пробовал пример tabdialog),  тачскрин в QT-приложении пока не получается запустить, над этим работаю. В остальном всё класно, всё есть для полного счастья.
Записан

zverro

  • Jr. Member
  • **
  • Оффлайн Оффлайн
  • Сообщений: 59
Re: Сборка ядра и фс
« Ответ #46 : 20 Января, 2010, 20:07:37 »

Тачскрин в QT приложении запускается если в /etc/profile вписать строку

export QWS_MOUSE_PROTO=tslib:/dev/input/event0


Таким образом я получил всё что нужно для счастья. Драйверы для своего железа я думаю напишу сам, не впервый раз.

Всем огромное спасибо за помощь !  Просто спасли меня. Без вашей помощи мои попытки неизвестно окончились бы чем-нибудь или нет.
Записан

Bolick

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 15
Re: Сборка ядра и фс
« Ответ #47 : 11 Марта, 2010, 11:05:17 »

А почему бы в дефолтном конфиге ядра для Тиона :
1) не устанавливать "CONFIG_PACKET=y" для нормальной работы udhcp client (иначе по DHCP не получить ip платочке).

2) не устанавливать "CONFIG_AEABI=y" что бы соответствовало настройке по умолчанию билдрута с патчем buildroot-2009.08_20100111a.patch.gz
Иначе получается что при загрузке платы, в момент маунта файловой системы все молчаливо зависает.

Спасибо.
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Сборка ядра и фс
« Ответ #48 : 11 Марта, 2010, 11:47:58 »

> для Тиона

Тион270, Тион-Про270

Это сделано в svn876 и svn888, но патчи ещё не выложены.
Записан

Bolick

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 15
Re: Сборка ядра и фс
« Ответ #49 : 11 Марта, 2010, 12:16:58 »

Спасибо, ждем патчей :)
Записан

Bolick

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 15
Re: Сборка ядра и фс
« Ответ #50 : 15 Марта, 2010, 13:06:18 »

Интересный момент:
Собрал текущей версией билдрута (2009.08 с текущим патчем) тулчейн и файловую. По умолчанию в настройках тулчейна указан GCC версии 4.3.4

После чего собрал свою нехитрую программу на QT.
И обнаружил, что при отведении памяти оператором "new()" (QT подразумевает код в С++) не происходит инициализации выделенной памяти (обнуления).

К сожалению, не нашел пока номера ошибки в багзилле GCC, как найду, напишу.

Проблема решилась выбором GCC версии 4.4.x (4.4.1 по факту) в настройках тулчейна.

И, собственно, вопрос: не стоит ли в конфиге билдрута по умолчанию выставлять версию GCC в 4.4.x?
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Сборка ядра и фс
« Ответ #51 : 15 Марта, 2010, 18:02:06 »

Разве new обязан обнулять?
Записан

Bolick

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 15
Re: Сборка ядра и фс
« Ответ #52 : 16 Марта, 2010, 00:03:15 »

http://ru.wikipedia.org/wiki/New_(C%2B%2B)
Цитировать
Для инициализации новой переменной, созданной при помощи new нужно использовать следующий синтаксис:
p_var = new type(initializer);

То есть без круглых скобок new не инициализирует выделяемую память, а с круглыми скобками инициализирует.
« Последнее редактирование: 16 Марта, 2010, 00:04:47 от Bolick »
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Сборка ядра и фс
« Ответ #53 : 16 Марта, 2010, 11:49:05 »

Код покажите.
Записан

Bolick

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 15
Re: Сборка ядра и фс
« Ответ #54 : 17 Марта, 2010, 13:49:51 »

Прошу прощения за задержку.
Вот пример кода, который дает разный результат, будучи собранный G++ разных версий:
(Код не чистый C++, а с элементами QT, то есть и собирать его надо при помощи qmake и make)

Файл проекта QT (qt_test_console.pro):
TEMPLATE = app
TARGET = qt_test_console
QT += core
SOURCES += main.cpp

Собственно файл с исходным текстом:
#include <QtCore>
#include <QCoreApplication>
#include <QDebug>
#include <QDebug>

struct struct_t {
    int test_int;
    QChar test_qstring;
};

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    struct_t * test_struct = new struct_t();
    qDebug() << "test_int: " << test_struct->test_int;

    return a.exec();
}
Для изменения версии G++, которым собирается исходник, необходимо в файле конфигурации QT:
/usr/share/qt4/mkspecs/common/g++.conf
Указать компилятор:
QMAKE_CXX = g++-4.3для использования G++ 4.3,
QMAKE_CXX = g++-4.4для использования G++ 4.4

Так вот только при использовании G++ версии 4.4 (поведение одинаковое на разных платформах: x86 32-bit desktop linux, ARM xScale linux, MS Windows XP 32-bit), значение "test_int" равно нулю после инициализации.
« Последнее редактирование: 17 Марта, 2010, 14:01:40 от Bolick »
Записан

asv

  • Hero Member
  • *****
  • Оффлайн Оффлайн
  • Сообщений: 1405
Re: Сборка ядра и фс
« Ответ #55 : 17 Марта, 2010, 14:54:22 »

С какими флагами вызывается g++?

Со следующим кодом

#include <iostream>
using namespace std;

const int size = 10*1024*1024;

struct struct_t {
    int test_int;
    int a;
    int b[size];
};

int main(int argc, char *argv[])
{
    struct_t *test_struct = new struct_t();

    cout << "test_int: " << test_struct->test_int << endl;
    cout << "a: " << test_struct->a << endl;
    test_struct->b[size-1] = 1; // mark last element
    for (int i = 0; i < size; i++)
    if (test_struct->b[i])
    cout << "b[" << i << "]: " << test_struct->b[i] << endl;

    return 0;
}

На
gcc version 4.3.4 (GCC) arm-linux-uclibcgnueabi arm920t
gcc version 4.3.4 (GCC) arm-linux-uclibcgnueabi xscale
gcc version 4.3.2 (Debian 4.3.2-1.1) i486-linux-gnu

получается одинаковый результат:

test_int: 0
a: 0
b[10485759]: 1
Записан

Bolick

  • Newbie
  • *
  • Оффлайн Оффлайн
  • Сообщений: 15
Re: Сборка ядра и фс
« Ответ #56 : 17 Марта, 2010, 16:03:38 »

Да, я проверял пример типа вашего. В чистом С++ все корректно.
А вот если в структуру добавить QString или QChar (остальные классы не пробовал), то при инициализции структуры происходит повреждение соседних элементов. Могу предположить, что это связано с неверным вычислением размера блока памяти под класс QT.
« Последнее редактирование: 19 Марта, 2010, 09:10:45 от Bolick »
Записан