Dlinyj (dlinyj) wrote,
Dlinyj
dlinyj

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

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

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


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


О моих терханиях можно почитать в комментариях к тому посту 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 <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
#include <string.h>


#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. Но это отдельный гемморой. Готов выслушать мысли и предложения.
Tags: arm, c, linux, prs-505
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 20 comments