Загружаем картинку на книжку!

Oct 04, 2012 18:52

Уж простят меня люди не в теме, но я пишу о том что мне важно и интересно!

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



Тот самый график, о котором я писал ранее

О моих терханиях можно почитать в комментариях к тому посту http://dlinyj.livejournal.com/609201.html

Собственно говоря, я поставил тулчейн, который мне посоветовал pekka22 мне не подошёл. И какие ухищрения я не использовал, заставить работать программу я не смог (спасибо за помощь vshmuk и paracloud ) . Путём многократного гугления, а так же с наводки товарища 22021977 оказалось, что для данного устройства энтузиастами пишется целый свой линукс! http://openinkpot.org/wiki (А вы говорите vogue-плееры) А следовательно должен быть и рабочий тулчейн.

Поиском "prs-505 toolchain" он был найден тут http://code.google.com/p/prs-plus/downloads/detail?name=arm-toolchain-sony-300.tar.gz&can=4&q= . После чего хелло ворд завёлся без проблем (даже без статика!). Ну дальше дело техники, согласно http://systemsand.me/sony-prs-300prs-505-hack/ набросал небольшую программку

/* showpic.c */
#include
#include
#include
#include
#include
#include
#include

#define FBIO_EINK_GET_TEMPERATURE 0x46A1 //Returns temperature in degree Celsius
#define FBIO_EINK_DISP_PIC 0x46A2 //Displays picture

int main (int argc, char* argv[])
{
printf ("Show image\n");

int *fb, *image;
int pio_fd = open ( "/dev/fb0", O_RDWR);
int f_image = open ( argv[1], O_RDWR); //open file into arg
int t= ioctl (pio_fd, FBIO_EINK_GET_TEMPERATURE, NULL); //configure framebuffer

fb= mmap(0, 800*600, PROT_WRITE, MAP_SHARED, pio_fd, 0); //map device into memory
image= mmap(0, 800*600, PROT_READ, MAP_SHARED, f_image, 0); //load image into memory

memcpy(fb,image,800*600);
ioctl (pio_fd, FBIO_EINK_DISP_PIC, 0);

close(pio_fd);
close(f_image);
return 0;
}

Дефайны взял из кода драёвера с сайта Sony http://www.sony.net/Products/Linux/Audio/PRS-505.html файл 8track20070714.tgz (спасибо paracloud за наводку.

Компилировал примитивнной коммандой с минимум опций : path to toolchain/arm-unknown-linux-gnu-gcc -static showpic.c -o showpic

Без статика не захотел работать. Дальше после монтирования всех устройств, запускаем:

root@(none):/tmp/t1# ./showpic send.raw
Show image
root@(none):/tmp/t1#

И наслаждаемся картинкой в заглавии :).

Из неприятных багов было замечено, что картинку после гнуплота надо повернуть. Лечится переписыванием скрипта гнуплота.

Теперь осталось научится гасить консоль, пока не знаю как. Из процессов активно-запущенных, никто не вызывает подозрение

ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.8 1292 532 ? S 00:00 0:00 init
root 2 0.0 0.0 0 0 ? SW 00:00 0:00 [keventd]
root 3 0.0 0.0 0 0 ? SWN 00:00 0:00 [ksoftirqd_CPU0]
root 4 0.0 0.0 0 0 ? SW 00:00 0:00 [kswapd]
root 5 0.0 0.0 0 0 ? SW 00:00 0:00 [bdflush]
root 6 0.0 0.0 0 0 ? SW 00:00 0:00 [kupdated]
root 7 0.0 0.0 0 0 ? SW 00:00 0:13 [mtdblockd]
root 31 0.0 0.0 0 0 ? SWN 00:00 0:00 [jffs2_gcd_mtd16]
root 52 0.0 0.0 0 0 ? SW 00:00 0:00 [sdbdrv_thread]
root 68 0.0 0.0 0 0 ? SW 00:00 0:06 [file-storage-ga]
root 69 0.0 0.0 0 0 ? SW 00:00 0:00 [fsg-mediacheck]
root 147 0.0 1.7 2264 1072 ? S 00:00 0:00 /bin/bash /opt/so
root 150 0.0 2.1 2348 1348 ? S 00:00 0:00 -bash
root 151 0.0 30.6 40968 19180 ? SL 00:00 0:12 /opt/sony/ebook/a
root 154 0.0 30.6 40968 19180 ? SL 00:00 0:00 /opt/sony/ebook/a
root 155 0.0 30.6 40968 19180 ? SL 00:00 0:00 /opt/sony/ebook/a
root 156 0.0 30.6 40968 19180 ? SL 00:00 0:00 /opt/sony/ebook/a
root 158 0.0 30.6 40968 19180 ? SL 00:00 0:00 /opt/sony/ebook/a
root 159 0.0 30.6 40968 19180 ? SL 00:00 0:00 /opt/sony/ebook/a
root 183 0.0 30.6 40968 19180 ? RL 00:01 0:00 /opt/sony/ebook/a
root 184 0.0 30.6 40968 19180 ? SL 00:01 0:00 /opt/sony/ebook/a
root 239 0.0 1.3 2660 844 ? R 04:53 0:00 ps aux

Поговаривают, что можно сделать usb-gadget, типа чтобы книжка виделась USB-Ethernet. Но это отдельный гемморой. Готов выслушать мысли и предложения.

prs-505, arm, c, linux

Previous post Next post
Up