Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

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

User Info


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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
sasamy (Guest)
Добавлено 13.01.2009 16:53 Редактировалось 13.01.2009 16:53 Сообщение: 11
sasamy (Guest)

Цитата
Вот думаю пойти Вашим путем и прикрутить S65 (LS020).

Думаю придете к тому же что и я :) Скорости spi для цветного дисплея даже с таким разрешением недостаточно если не поменять логику отрисовки - например 5-10 раз в секунду по таймеру отрисовывать экран а не синхронизировать содержимое виртуального буфера с gram при каждом изенении.
Цитата
Многие советуют сразу использовать TFT типа

хороший совет но эти tft с параллельным интерфейсом и подключить его к обсуждаемой плате к EBI нереально. Если сделать драйвер на gpio то процессор будет только тем и заниматься что гонять данные контроллеру tft :)
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 25.01.2009 16:55 Редактировалось 25.01.2009 16:55 Сообщение: 12
sasamy (Guest)

starterkit Недавно перешел на ядро 2.6.28.1 и решил вернуться к эксперименту с lcd и spi :) Так вот - при выделении памяти для буфера с которого идет передача по spi в lcd
par->scr = kzalloc(MEM_LEN*2, GFP_KERNEL | GFP_DMA);
добавил флаг для аллокатора GFP_DMA - скорости отрисовки это не добавило но зато на порядки разгрузило процеесор - не знаю пока с чем это связано - с тем что ядро обновленное или с тем что с этим флагом pdc стал работать правильно. За правильную работу pdc говорит тот факт что lcd зависает как и положено на частотах выше 20 МГц. Вообще у него предел порядка 6 МГц но в интернете находил что нормально работает на 20 - так и выходит :)
Спуститься к концу Подняться к началу
rw9uao (Guest)
Добавлено 08.02.2009 08:38 Редактировалось 08.02.2009 08:38 Сообщение: 13
rw9uao (Guest)

Саш, а есть фото или лучше видео работы этого экранчика. у меня валяется 128х64 монохромный 8-ми битник на ks0108, дык пары FPS мне хватит.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 08.02.2009 15:23 Редактировалось 08.02.2009 15:23 Сообщение: 14
sasamy (Guest)

В ядре есть драйвер framebuffer для ks108 - 64x64, он умеет работать с составным дисплеем (по моему до 4x4 - 256х256).
linux-2.6.28.1/drivers/video/arcfb.c
что-то мне подсказывает что это тоже самое что и ks0108 и в вашем случае стоят два контроллера ks0108х2 - 128x64. Только нужно его будет на gpio переделывать - на нашей плате к ebi не зацепиться...
Попробовал записать видео - файл получается огромный и камера не фокусируется с близкого расстояния - ничего там вообще не понятно. Маловат экранчик. Вообще сейчас вроде нормально все работает. я не смог запустить xorg - он не запускается на таком маленьком и нестандартном разрешении, разбираться стало лень...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 08.02.2009 г. в 20:06:44
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 09.02.2009 19:38 Редактировалось 09.02.2009 19:38 Сообщение: 15
sasamy (Guest)

Цитата
Только нужно его будет на gpio переделывать - на нашей плате к ebi не зацепиться...


Посмотрел описание - я ошибался , он уже на gpio написан, так что изменения будут минимальные - достаточно указать свои адреса ввода-вывода для данных и управления.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 09.02.2009 г. в 19:40:11
Спуститься к концу Подняться к началу
rw9uao (Guest)
Добавлено 11.02.2009 16:45 Редактировалось 11.02.2009 16:45 Сообщение: 16
rw9uao (Guest)

ну ладно, вместо outb я напишу что надо, подрыгаю ногами. а как быть с обработкой прерывания? тупо выбросить и все?
и где берут разные xorg для графики? компилить из исходников? =)
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 11.02.2009 22:16 Редактировалось 11.02.2009 22:16 Сообщение: 17
sasamy (Guest)

Цитата
как быть с обработкой прерывания? тупо выбросить и все?

Зачем выбрасывать - at91 в linux поддерживает irq на gpio. Смотреть исходники драйверов на gpio где используются прерывания.
Цитата
где берут разные xorg для графики?

я в свое время даже не стал интересоваться когда не заработало - а у меня разрешение экрана в два раза больше :) Куда там xorg :) Через fb многие программы напрямую умеют работать - mplayer, links помоему умеет, потом qt, gtk умеют без xorg напрямую через fb вывод, directfb - в общем xorg не особо и нужен. Если самому что-то писать под fb - не проблема с графическим выводом - экран для программиста представлен как внешняя память - открыл устройство и пиши туда :) Есть ещекитайский minigui - я им еще не пользовался http://www.minigui.org/ но описание многообещающее причем есть готовые апликухи - она как раз для таких нестандартных экранов мобильных устройств расчитана.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 11.02.2009 г. в 22:17:59
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 12.02.2009 06:45 Редактировалось 12.02.2009 06:45 Сообщение: 18
sasamy (Guest)

Можно частично напрямую с регистрами портов at91 работать - например для вывода данных в порт и так будет проще (по адресу dio_addr в драйвере - использовать __raw_writel или at91_sys_write) а частично использовать надстройку linux gpio - например при работе с прерываниями - чтобы облегчить жизнь. В качестве примера с прерываниями на gpio можно взять вот это
linux-2.6.28.1/drivers/input/keyboard/gpio_keys.c
например
Код
error = gpio_direction_input(button->gpio);
if (error < 0) {
pr_err("gpio-keys: failed to configure input"
" direction for GPIO %d, error %d
",
button->gpio, error);
gpio_free(button->gpio);
goto fail2;
}

irq = gpio_to_irq(button->gpio);
if (irq < 0) {
error = irq;
pr_err("gpio-keys: Unable to get irq number"
" for GPIO %d, error %d
",
button->gpio, error);
gpio_free(button->gpio);
goto fail2;
}

error = request_irq(irq, gpio_keys_isr,
IRQF_SAMPLE_RANDOM | IRQF_TRIGGER_RISING |
IRQF_TRIGGER_FALLING,
button->desc ? button->desc : "gpio_keys",
bdata);
if (error) {
pr_err("gpio-keys: Unable to claim irq %d; error %d
",
irq, error);
gpio_free(button->gpio);
goto fail2;
}

В arcfb_probe до вызова request_irq назначить нужный пин как вход и смапить его на irq. Потом в обработчике прерываний заменить
ctl2status = ks108_readb_ctl2(par);

if (!(ctl2status & KS_INTACK)) /* not arc generated interrupt */
return IRQ_NONE;
простым
if(!gpio_get_value(unsigned gpio)) ....

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 12.02.2009 г. в 07:00:24
Спуститься к концу Подняться к началу
rw9uao (Guest)
Добавлено 12.02.2009 10:44 Редактировалось 12.02.2009 10:44 Сообщение: 19
rw9uao (Guest)

а на кой мне прерывание если я вводом не пользуюсь? кто мне мешает в процедуре отрисовки просто ногами подрыгать. статус дисплея я читать не собираюсь, задержками обойдусь.
и еще вопрос, как туда консоль отправить? =)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно rw9uao 12.02.2009 г. в 10:47:15
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 12.02.2009 16:23 Редактировалось 12.02.2009 16:23 Сообщение: 20
sasamy (Guest)

Цитата
задержками обойдусь.


Так у нас ос многозадачная :) Это не микроконтроллер и не дос где процессор занят монопольно. При использовании irq пока дисплей занят процесс замораживается и ядро занято другими задачами.

Цитата
как туда консоль отправить? =)


Это вообще просто - вот кусок моего конфига
Цитата
#
# Graphics support
#
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
# CONFIG_FB_BOOT_VESA_SUPPORT is not set
# CONFIG_FB_CFB_FILLRECT is not set
# CONFIG_FB_CFB_COPYAREA is not set
# CONFIG_FB_CFB_IMAGEBLIT is not set
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
CONFIG_FB_SYS_FILLRECT=y
CONFIG_FB_SYS_COPYAREA=y
CONFIG_FB_SYS_IMAGEBLIT=y
# CONFIG_FB_FOREIGN_ENDIAN is not set
# CONFIG_FB_SYS_FOPS is not set
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set

#
# Frame buffer hardware drivers
#
# CONFIG_FB_S1D15605 is not set
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PCF8833=y
# CONFIG_FB_VIRTUAL is not set
# CONFIG_FB_METRONOME is not set
# CONFIG_FB_MB862XX is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Display device support
#
# CONFIG_DISPLAY_SUPPORT is not set

#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
# CONFIG_FONT_8x16 is not set
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
CONFIG_FONT_MINI_4x6=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
# CONFIG_LOGO is not set


Думаю тут все понятно. Консоль в разделе Console display driver support. И в /etc/inittab добавить например такое
tty1::respawn:/sbin/getty 38400 tty1 linux
Я выкладывал свои конфиги в ветке openwrt - там все есть.
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Embedded Linux