Здравствуйте!
Приобрёл плату SK-AT91SAM9G45 и SK-MI0430FT-Plug с Linux, но возникла необходимость подключить другой дисплей:
STN, mono, 4 bit, 1bpp, одиночное сканирование, интерфейс паралельный, работа через fb. Вроде всё просто, но как настроить Linux? Или нужно писать свой драйвер дисплея?
а вы в ядро загляните, в 2.6.37 в драйвере экрана вижу строки STN, т.ч. есть вероятность, что все давно написано за вас..
дело за малым - правильно соединить, обеспечить согласование уровней, ну и драйвер прописать в структурах экрана файла платы..
На моей плате ядро 2.6.36 -rs6 если вы имели в виду путь linux-2.6.36-rc6\drivers\video\display\display-sysfs.c то там STN не упоминается. Не сочтите за труд, ткните пальцем в тот файл, может в моем ядре он немного отличается от вашего. И ещё в скрипте make_menuconfig наверно надо отключить плагин stsrterkita MI0430F. Надо найти этот плагин и распотрошить его может удастся понять что, и где нужно настроить. Может найдется человек который на STN дисплеях собаку скушал, и обозначил где грабли лежат, а я как умный человек грабли тревожить не буду.
как минимум, есть упонминание в драйвере (еле нашел в архивах старое ядро 2.6.36), драйвер для всего атмела. лежит в drivers/video/atmel_lcdfb.c
в нем есть разбор:
после этого ищите в каталоге arch/arm/mach-at91 файлы со словом "stn", смотрите как прописано в девайсах и файле платы - структуры и вызовы - делаете поправку на копыта 9g45, прописываете в таких же файлах для 9g45 и всё должно взлететь..
заодно почитайте в мане на 9g45 в разделе LCDC..
ну и немаловажно - обеспечить правильное подключение и согласование (если требуется) железа..
не лезу в вашу специфику, но tft был бы лучше со всех т.з..
Насчёт TFT вы правы но у меня дисплей не совсем честный STN, я использую дисплей с интерфейсом TFEL, сейчас их производит люминек. Хотя настройка очень похожа на STN. Однако сейчас возникла небольшая проблема, при выводе на экран пингвина и приветствия текст выводится неправильно. Длинная строка заканчивается и буква "о" не переносится а разрезается пополам, вторая половинка буквы вылазит на этой строке но только с левой стороны, а вот следующая буква переносится правильно в левую сторону строкой ниже. Хотя наверно правильно будет переносить слово полностью и писать слово с новой строки. Вероятно есть ещё настройки связанные с FB которые я не откопал.
для ускорения процесса можно было выложить параметры разрешения экрана и по возможности фотку экрана с дефектом вывода.. (о куске с цифрами инита и линком на доку для экрана даже не упоминаю)
наиболее вероятно - вы неправильно определили т.н. служебные зоны в синхроимпульсах.. для растрового экрана достаточно затянуть или подать не вовремя импульс строба (hs, vs) и изображение уедет (я, когда изобретал контроллер tft на фпга такого насмотрелся при отладке)..
в меньшей степени может повлиять размер консольного шрифта - выбирается в меня ядра.. при некратном случае (например 430 пикселей в строке и шрифте 8х8) будет некрасиво..
при наличии осцилла проверьте времянки для экрана - их можно подкрутить через регистры, а потом прописать в структуре фреймбуфера..
Наконец пришло осмысление ситуации, настройки сделал правилно, глюк вылазит из за функции вывода текста в ядре, исправлять ненужно. Пользоватся встроенными шрифтами и функциями нестану. Работать буду напрямую с видеопамятью, спасибо за пример ts_test там нарыл много полезного, добавил своих шрифтов, русифицировал их, разработал графические примитивы. Идея проста на экране должно быть только что, мне надо и там где надо.
Сейчас решаю проблему нужно запустить приложение за 5 секунд, тоесть загрузить ядро и выставить картинку на дисплее. Решил попробовать новый at91bootstrap-3-3.5.2 смотрел тут wiki отказался от использования u-boot.
Ядро и FS оставил с адресами по дефолту перезаписал только bootstrap но ядро не грузится вот лог
Есть некоторые сомнения, где то напортачил с настройками. Начну по порядку, наложил патч, наложил настройки по дефолту, в make menuconfig исправил адреса и размер ядра в логе видно их, изменить 18 МГц на 12 МГц в menuconfig не удалось пришлось выставлять в файле. Затем запускал make и полученный бинарник загружал через JTAG и sam-ba_2.12.
И тут возникает несколько вопросов:
1. Зачем нужно делать инициализацию DDRAM туда не записываем ни чего.
2. Разве bootstrap заливается в NandFlash через а может надо так .
Может кто то собирал at91bootstrap-3-3.5.2 под загрузку linux c NandFlash и поделится опытом и главное настройками.