Пока грандиозными результатами похвастать не могу, но всё же.
Задача: показывать раз в N секунд заданное изображение (график из gnuplot) на экране.
Решение: Оказалось достаточно тривиальным. У нас есть консоль, по которой идёт общение с линуксом. По этой консоли мы отдаём комманды в линуксе книжки (благодаря ей собственно и возможна эта петрушка), и по ней же мы можем перебрасывать данные(!). Не буду же я каждый раз перетыкать флешку.
Первое, что я сделал, это вывел отладочную консоль на бесполезный разъём наушников (кто будет слушать музыку с читалки?). При чём даже мудрившись обойтись всего двумя проводами, поскольку земля звука и цифры одна.
Вывод консоли
Книжку пока не собрал, поскольку боюсь ка бы какой косяк не всплыл. Если за сегодня всё будет хорошо, то уберу обратно в корпус (благо это занимает три минуты).
Управление и приём-передача файлов Задача чуть более сложная, но решаемая, по крайней мере у меня сработала передача от ридера в комп.
Как вы помните, в посте о железе
http://dlinyj.livejournal.com/607475.html я говорил о скрипте, который записывает изображение во фрейм буффер. Напомню этот кусочек
NUM=`grep BootImg /proc/mtd | awk -F: '{print $1}' | awk -Fd '{print$2}'`
dd if=/dev/mtd$NUM of=/dev/fb0 bs=256 count=1875
/opt/sony/ebook/bin/writescreen init 0
Первая комманда определяет нормер раздела (точнее блочного устройства) NUM на котором содержится образ загрузочной картинки. Для тех кто в танке, это тупо область памяти на флешке, которая в линуксе видится как отдельный файл.
Выполнив её, я узнал, что у меня этот номер равен девяти. Ну дальше вторую комманду я немного поправил, чтобы передача велась в СОМ-порт. Опытным путём установил, что консоль для приёмо-передачи - это файл /dev/tty . Перебрасываем картинку, для этого на компе закрываем терминал и выполняем:
cat /dev/ttyUSB2 > bootimg.raw , где ttyUSB2 - это мой интерфейс VCP на базе ft232rl.
После чего в другой консоли компьютера даём комманду:
echo "dd if=/dev/mtd9 of=/dev/tty bs=256 count=1875" > /dev/ttyUSB2 , что посылает через консоль комманду передачи образа по консоли.
Всё отлично сработало, правда картинку слегка перекособочило, но это отрабатывает. После небольшой обработки согласно комментарию
http://dlinyj.livejournal.com/607545.html?thread=7800633#t7800633 камрада lapinmax.ya.ru я преобразовал её в png.
Картинка с читалки
Полагаю, что её перекособочило из-за неверного старта или появившихся откуда-то лишних байт.
Обратная процедура передачи файла у меня не получилась
Если быть кратким, то gnuplot позволяет создавать pgm-файлы с заданными параметрами. В скрипте для вывода графика это выглядит так:
set terminal pbm gray medium size 800,600
set output "result.pgm"
А реультирующий файл выглядит так:
Некий график
После чего срезаем заголовок (ровно 15 байт), это можно сделать с помощью комманды dd. С вашего позволения не буду приводить этот пример,т.к. его можно найти на википедии. И получаем файл размером ровно 480000 байт (битовый образ). После чего пытаемся его передать на целевое устройство. На устройстве выполняем, например
cat /dev/tty > testgraph.raw
А на компьютере
dd if=send.raw of=/dev/ttyUSB2 bs=1 count=480000
И... Чуда не произошло, терминал захлёбывается от непечатных (в прямом смысле слова) символов и передача не идёт. Необходимо отключать стандартное устройство ввода от СОМ-порта на время передачи. К слову сказать, текстовые файлы таким макаром передаются на ура.
Полагаю, что основная причина неудачи получения файла на книжку заключается в том, что это стандартное устройство ввода, надо каким-то чудесным образом отключить консоль от стандартного устройства ввода на время передачи, а потом его включить! По моему товарищ
cluster_d мне подсказывал как это сделать для роутера, быть может он мне поможет и сейчас.
На счёт вывода изображения на экран
К сожалению тупо с помощью консоли мне этого не удалось сделать. Вероятно придётся писать небольшую свою программулинку, как было сделано тут
http://systemsand.me/sony-prs-300prs-505-hack/ . Товарищ, который писал этот пост, обещал в выходные посмотреть исходники, но видимо забыл про меня :(. Сегодня возможно попробую написать hello world. Можете мне посоветовать тулчейн и где его скачать (ОСь Ubuntu 10.10)