summaryrefslogtreecommitdiffstats
path: root/oncology/dpfhack_display
diff options
context:
space:
mode:
authorroot <root@filebitch>2011-08-28 18:28:51 +0200
committerroot <root@filebitch>2011-08-28 18:28:51 +0200
commitc8c27e3af96a84ccf8ecdfd7610e49dba0598e7d (patch)
tree3cb1a59b301f91b6a1524b48fb9d828a78a43dac /oncology/dpfhack_display
parent99bdbc04f2be1f0d27c4a4dde692e8a5b6eb8a7e (diff)
parent7a97f9d4baff89bbcfa4bef93ab4d4246b2b82e6 (diff)
Merge branch 'master' of https://github.com/krebscode/painload
Diffstat (limited to 'oncology/dpfhack_display')
-rw-r--r--oncology/dpfhack_display/Changelog33
-rwxr-xr-xoncology/dpfhack_display/Debug/dpf.sobin0 -> 63565 bytes
-rwxr-xr-xoncology/dpfhack_display/Debug/libdpf.sobin0 -> 63565 bytes
-rw-r--r--oncology/dpfhack_display/Makefile72
-rw-r--r--oncology/dpfhack_display/README63
-rwxr-xr-xoncology/dpfhack_display/build-dpf-lcd4linux.sh52
-rw-r--r--oncology/dpfhack_display/dpf.conf205
-rw-r--r--oncology/dpfhack_display/dpfbig.conf268
-rw-r--r--oncology/dpfhack_display/dpflib/Makefile24
-rw-r--r--oncology/dpfhack_display/dpflib/dpf.h143
-rw-r--r--oncology/dpfhack_display/dpflib/dpflib.c707
-rw-r--r--oncology/dpfhack_display/dpflib/fwload.c140
-rw-r--r--oncology/dpfhack_display/dpflib/rawusb.c177
-rw-r--r--oncology/dpfhack_display/dpflib/sglib.h19
l---------oncology/dpfhack_display/fw/Debug1
-rw-r--r--oncology/dpfhack_display/fw/README115
-rwxr-xr-xoncology/dpfhack_display/fw/chartbl.py96
-rwxr-xr-xoncology/dpfhack_display/fw/detect.py94
-rw-r--r--oncology/dpfhack_display/fw/font4x8.binbin0 -> 65536 bytes
-rwxr-xr-xoncology/dpfhack_display/fw/fulldump.py29
-rwxr-xr-xoncology/dpfhack_display/fw/hackit.py167
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/cmdhandler_14e5.ihx64
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/cmdhandler_14f4.ihx64
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/cmdhandler_14fb.ihx63
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/cmdhandler_big_14fb.ihx64
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/fw_blue.ihx660
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/fw_focal.ihx678
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/fw_focal_landscape.ihx679
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/fw_pearl.ihx686
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/fw_pearl_landscape.ihx686
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/fw_pink.ihx657
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/fw_white.ihx657
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl0.ihx3
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl1.ihx3
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl2.ihx3
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl3.ihx3
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl_black.ihxbin0 -> 12288 bytes
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl_blue.ihx2
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl_pearl.ihx2
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl_pink.ihx2
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/jmptbl_white.ihx2
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start0.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start1.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start2.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start3.ihx6
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start_black.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start_blue.ihx6
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start_pearl.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start_pink.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_start_white.ihx5
-rw-r--r--oncology/dpfhack_display/fw/hexfiles/p_usbdesc.ihx16
-rwxr-xr-xoncology/dpfhack_display/fw/profiles.py142
-rw-r--r--oncology/dpfhack_display/fw/struct16846
-rw-r--r--oncology/dpfhack_display/fw/sys38759
-rwxr-xr-xoncology/dpfhack_display/fw/update.py15
-rw-r--r--oncology/dpfhack_display/include/flash.h19
-rw-r--r--oncology/dpfhack_display/include/usbuser.h27
-rw-r--r--oncology/dpfhack_display/lcd4linux-svn1142-dpf.patch2713
-rw-r--r--oncology/dpfhack_display/python/Makefile69
-rw-r--r--oncology/dpfhack_display/python/py_device.c492
-rw-r--r--oncology/dpfhack_display/reverse/Makefile76
-rw-r--r--oncology/dpfhack_display/reverse/README169
-rw-r--r--oncology/dpfhack_display/reverse/common.in213
-rw-r--r--oncology/dpfhack_display/reverse/dump.py470
-rw-r--r--oncology/dpfhack_display/src/jmptbl4.s22
-rw-r--r--oncology/dpfhack_display/src/jmptbl_black.s22
-rw-r--r--oncology/dpfhack_display/src/jmptbl_blue.s23
-rw-r--r--oncology/dpfhack_display/src/jmptbl_pearl.s22
-rw-r--r--oncology/dpfhack_display/src/jmptbl_pink.s23
-rw-r--r--oncology/dpfhack_display/src/jmptbl_white.s22
-rw-r--r--oncology/dpfhack_display/src/p_start_black.s32
-rw-r--r--oncology/dpfhack_display/src/p_start_blue.s34
-rw-r--r--oncology/dpfhack_display/src/p_start_pearl.s32
-rw-r--r--oncology/dpfhack_display/src/p_start_pink.s32
-rw-r--r--oncology/dpfhack_display/src/p_start_white.s32
-rw-r--r--oncology/dpfhack_display/src/p_usbdesc.s139
-rw-r--r--oncology/dpfhack_display/unixdll.mk101
78 files changed, 67997 insertions, 0 deletions
diff --git a/oncology/dpfhack_display/Changelog b/oncology/dpfhack_display/Changelog
new file mode 100644
index 00000000..77fd1929
--- /dev/null
+++ b/oncology/dpfhack_display/Changelog
@@ -0,0 +1,33 @@
+v0.1alpha
+ * Pure hack, no own firmware.
+ * Only provides extension of the command set to support blitting
+
+Mon, 11 Apr 2011 11:55:52 +0200
+v0.11alpha
+ * Actually starting a changelog
+ * This is a full firmware replacement, but we still talk about a
+ hack". Once we have a fully bootable replacement, we'll reset
+ version counting and start a new project.
+ LCD4linux (dpflib):
+ * Changed resolution query
+ * Support for orientation and backlight control
+ * Allow addressing of several frames ("Port" statement)
+ Firmware:
+ * Support for USB communication with restricted command set
+ (kinda compatible to 0.1alpha)
+ * Support for various LCD controllers/screens (Sitronix, Orisetech,
+ Ilitek, etc.)
+ * Locked flash access ('no-brick' mode for future upgrades)
+ * Power down mode: Full "deep sleep" with only RTC running
+ * Auto power down on low power
+ * Optional/experimental:
+ - Log ADC values to log sector on flash
+ - ADC voltage drawing over time (Menu: "Mon")
+ - Better Load/Exec support to download applets into the DPF via USB
+ * Frame specific issues:
+ - The default orientation of the Pearl 320x240 frame was changed such
+ that the USB connector is pointing down on normal display (i.e. we
+ show "Portrait"). Use the pearl_landscape TYPE option for
+ the original landscape mode.
+ - The display rotation on the 128x128 DPFs is freely configureable
+ using the Orientation option in the lcd4linux config file
diff --git a/oncology/dpfhack_display/Debug/dpf.so b/oncology/dpfhack_display/Debug/dpf.so
new file mode 100755
index 00000000..dc354c56
--- /dev/null
+++ b/oncology/dpfhack_display/Debug/dpf.so
Binary files differ
diff --git a/oncology/dpfhack_display/Debug/libdpf.so b/oncology/dpfhack_display/Debug/libdpf.so
new file mode 100755
index 00000000..dc354c56
--- /dev/null
+++ b/oncology/dpfhack_display/Debug/libdpf.so
Binary files differ
diff --git a/oncology/dpfhack_display/Makefile b/oncology/dpfhack_display/Makefile
new file mode 100644
index 00000000..c6c32e4f
--- /dev/null
+++ b/oncology/dpfhack_display/Makefile
@@ -0,0 +1,72 @@
+DISTVERSION = 0.12devel
+
+CURDIR = $(shell pwd)
+
+# Make sure this path is correct. Needs to point to dpf.h and libdpf.a
+DPFLIB = dpflib
+PYDPF = python
+
+FILES = Makefile lcd4linux-svn1142-dpf.patch README Changelog
+
+ifndef DESTDIR
+DESTDIR = /tmp
+endif
+
+default: $(DPFLIB)/libdpf.a
+ -[ -e src ] && (cd src; ./buildall.sh)
+ $(MAKE) -C $(PYDPF) install
+
+all: default lcd4linux/lcd4linux
+
+$(DPFLIB)/libdpf.a:
+ $(MAKE) -C $(DPFLIB) install
+
+lcd4linux/lcd4linux: $(DPFLIB)/libdpf.a
+ ./build-dpf-lcd4linux.sh $(CURDIR)
+
+dist: installdist
+ tar cfz /tmp/dpfhack-$(DISTVERSION).tgz --numeric-owner -C $(DESTDIR) dpf
+
+
+PYSCRIPTS += detect.py fulldump.py profiles.py hackit.py
+PYSCRIPTS += chartbl.py update.py
+
+LIBFILES += Makefile dpflib.c fwload.c rawusb.c
+LIBFILES += sglib.h dpf.h
+
+FILES += fw/README unixdll.mk
+FILES += $(PYDPF)/Makefile $(PYDPF)/py_device.c
+FILES += include/usbuser.h include/flash.h
+FILES += $(LIBFILES:%=$(DPFLIB)/%)
+FILES += $(wildcard src/p_*.s) $(wildcard src/jmptbl*.s)
+
+FILES += reverse/common.in reverse/dump.py reverse/Makefile reverse/README
+
+DPFINST = $(DESTDIR)/dpf
+
+installdist:
+ install -d $(DPFINST)
+ install -d $(DPFINST)/include
+ install -d $(DPFINST)/reverse
+ install -d $(DPFINST)/src
+ install -d $(DPFINST)/fw
+ install -d $(DPFINST)/dpflib
+ install -d $(DPFINST)/python
+ install -d $(DPFINST)/fw/hexfiles
+ install -m644 include/flash.h $(DPFINST)/include
+ cp -r fw/hexfiles $(DPFINST)/fw
+ install -m644 fw/font4x8.bin $(DPFINST)/fw
+ install -m755 $(PYSCRIPTS:%=fw/%) $(DPFINST)/fw
+ install -m755 build-dpf-lcd4linux.sh $(DPFINST)
+ for i in $(FILES); do \
+ install -m644 $$i $(DPFINST)/$$i; \
+ done
+ install -m600 dpf.conf $(DPFINST)
+ install -m600 dpfbig.conf $(DPFINST)
+ cd $(DPFINST)/fw; ln -sf ../Debug .
+
+clean:
+ rm -fr $(DPFINST)
+ $(MAKE) -C $(DPFLIB) clean
+ $(MAKE) -C $(PYDPF) clean
+ -[ -e lcd4linux/Makefile ] && (cd lcd4linux; make distclean)
diff --git a/oncology/dpfhack_display/README b/oncology/dpfhack_display/README
new file mode 100644
index 00000000..d7a57d8a
--- /dev/null
+++ b/oncology/dpfhack_display/README
@@ -0,0 +1,63 @@
+Usage:
+
+* Verify that you have a decent development system (GCC, development
+ libraries, subversion -- if you want to build lcd4linux) installed.
+ You might also have to install the package "pkg-config", or else the
+ configure procedure will likely fail.
+
+* Configure lcd4linux: normally, the default settings will do. If you wish
+ to use other drivers or cross compile, check build-dpf-lcd4linux.sh
+ for configure options
+
+* Note: For lcd4linux, you may want to have some development libraries
+ installed, for example:
+ libgd2-noxpm-dev -- to display images
+
+* Build the stuff using "make all". You need an internet connection. because
+ lcd4linux is pulled from their server.
+
+* Try it:
+ > cd lcd4linux; lcd4linux -f ../dpf.conf -F
+
+NOTE: The orientation for the Pearl type display was changed (Details, see
+Changelog) DO NOT INSTALL if you wish to keep your landscape orientation.
+Later, we'll make this configureable, if there turns out to be a good
+solution (there currently isn't).
+
+The source for this firmware is not yet included. Please don't ask
+questions when it will be released, it will happen, once we have a fully
+fool proof and working firmware including boot loader support (if you can
+help there, let us know).
+
+Also note: NO SUPPORT! NO WARRANTY! FRIENDS DON'T MAKE FRIENDS HACK THEIR
+DPF! LET ALONE NON-FRIENDS! (Bottomline: Don't ask me if I can hack your DPF).
+
+If you wish to hack your DPF, please check the sites listed below.
+
+----------------------------------------------------------------------------
+Troubleshooting
+
+If the lcd4linux build process fails, you may want to start over without
+running the entire build procedure.
+See build-dpf-lcd4linux.sh for the single steps. Right, this could also
+be in a makefile to be more fool proof..
+
+----------------------------------------------------------------------------
+Features
+
+For features of this firmware, see Changelog
+
+----------------------------------------------------------------------------
+Find updates and documentation here:
+
+http://tech.section5.ch/news/?p=68
+
+or here:
+
+http://picframe.spritesserver.nl/wiki/index.php/DPF_with_AppoTech_AX206
+
+For our german users, a very good explanation is found here:
+
+http://geekparadise.de/2011/04/digitaler-bilderrahmen-von-pearl-als-statusdisplay-fur-dockstar/
+
+(c) 4/2011, hackfin
diff --git a/oncology/dpfhack_display/build-dpf-lcd4linux.sh b/oncology/dpfhack_display/build-dpf-lcd4linux.sh
new file mode 100755
index 00000000..f2b8ceb2
--- /dev/null
+++ b/oncology/dpfhack_display/build-dpf-lcd4linux.sh
@@ -0,0 +1,52 @@
+#!/bin/bash
+
+PREREQUISITES='pkg-config aclocal automake autoconf'
+
+for i in $PREREQUISITES; do
+ if [ -z `which $i` ]; then
+ echo missing tool "'$i'". Please install package.
+ err=1
+ fi
+done
+
+if [ $err ]; then
+ echo "Error, cancelling"
+ exit
+fi
+
+# Allow to pass on dpf distribution location, if not pwd:
+
+if [ -z $1 ]; then
+ DPFLIB_LOCATION=`pwd`
+else
+ DPFLIB_LOCATION=$1
+fi
+
+if [ -e lcd4linux ]; then
+ echo "lcd4linux installed, not fetching"
+else
+ # Check out source from SVN
+ svn co -r1142 https://ssl.bulix.org/svn/lcd4linux/trunk lcd4linux
+fi
+
+cd lcd4linux
+
+# Apply patch
+if [ -e drv_dpf.c ]; then
+ echo "Existing drv_dpf.c found, not patching"
+else
+ patch -p1 < ../lcd4linux-svn1142-dpf.patch
+fi
+
+export CPPFLAGS="-I$DPFLIB_LOCATION/dpflib -I$DPFLIB_LOCATION/include"
+export LDFLAGS=-L$DPFLIB_LOCATION/dpflib
+
+if [ -e Makefile ]; then
+ echo "Not configuring, Makefile found"
+else
+ ./bootstrap
+ # Feel free to configure this differently:
+ ./configure --with-drivers=DPF --with-plugins=all --prefix=/usr
+fi
+
+make
diff --git a/oncology/dpfhack_display/dpf.conf b/oncology/dpfhack_display/dpf.conf
new file mode 100644
index 00000000..dc712675
--- /dev/null
+++ b/oncology/dpfhack_display/dpf.conf
@@ -0,0 +1,205 @@
+Display dpf {
+ Driver 'DPF'
+ Port 'usb0'
+ Font '6x8'
+ Foreground 'ffffff'
+ Background '000000'
+ Basecolor '000000'
+ Orientation 3 # Orientation value from 0-3
+ Backlight backlight # Backlight variable control
+}
+
+Widget OS {
+ class 'Text'
+ expression '*** '.uname('sysname').' '.uname('release').' - dpf driver by hackfin ***'
+ width 21
+ align 'M'
+ speed 200
+ update tick
+ Background '008000'
+ Foreground 'ffffff'
+}
+
+Widget CPU {
+ class 'Text'
+ expression uname('machine')
+ prefix 'CPU '
+ width 10
+ align 'L'
+ update tick
+ Background 'FFFFFF00'
+}
+
+
+Widget RAM {
+ class 'Text'
+ expression meminfo('MemTotal')/1024
+ postfix ' MB RAM'
+ width 11
+ precision 0
+ align 'R'
+ update tick
+ Background 'FFFFFF00'
+}
+
+Widget Busy {
+ class 'Text'
+ expression proc_stat::cpu('busy', 500)
+ prefix 'Busy'
+ postfix '%'
+ width 10
+ precision 1
+ align 'R'
+ update tick
+ Foreground 'ffffff'
+ Background 'FFFFFF00'
+}
+
+Widget BusyBar {
+ class 'Bar'
+ expression proc_stat::cpu('busy', 500)
+ expression2 proc_stat::cpu('system', 500)
+ length 21
+ direction 'E'
+ update tack
+ Foreground 'ffffff'
+ Background '00000080'
+ BarColor0 '5f5fff'
+ BarColor1 'ff5f5f'
+}
+
+Widget Load {
+ class 'Text'
+ expression loadavg(1)
+ prefix 'Load'
+ postfix loadavg(1)>1.0?'!':' '
+ width 10
+ precision 1
+ align 'R'
+ update tick
+ Foreground 'ffffff'
+ Background 'FFFFFF00'
+}
+
+Widget LoadBar {
+ class 'Bar'
+ expression loadavg(1)
+ max 2.0
+ length 21
+ direction 'E'
+ update tack
+ Foreground 'ffffff'
+ Background '00000080'
+ BarColor0 '5f5fff'
+ BarColor1 'ff5f5f'
+}
+
+
+Widget Disk {
+ class 'Text'
+ # disk.[rw]blk return blocks, we assume a blocksize of 512
+ # to get the number in kB/s we would do blk*512/1024, which is blk/2
+ # expression (proc_stat::disk('.*', 'rblk', 500)+proc_stat::disk('.*', 'wblk', 500))/2
+ # with kernel 2.6, disk_io disappeared from /proc/stat but moved to /proc/diskstat
+ # therefore you have to use another function called 'diskstats':
+ expression diskstats('hd.', 'read_sectors', 500) + diskstats('hd.', 'write_sectors', 500)
+ prefix 'disk'
+ postfix ' '
+ width 10
+ precision 0
+ align 'R'
+ update tick
+ Foreground 'ffffff'
+ Background 'FFFFFF00'
+}
+
+Widget DiskBar {
+ class 'Bar'
+ #expression proc_stat::disk('.*', 'rblk', 500)
+ #expression2 proc_stat::disk('.*', 'wblk', 500)
+ # for kernel 2.6:
+ expression diskstats('sd.', 'read_sectors', 500)
+ expression2 diskstats('sd.', 'write_sectors', 500)
+ length 21
+ direction 'E'
+ update tack
+ Foreground 'ffffff'
+ Background '00000080'
+ BarColor0 '5f5fff'
+ BarColor1 'ff5f5f'
+}
+
+Widget Eth0 {
+ class 'Text'
+ expression (netdev('wlan0', 'Rx_bytes', 500)+netdev('wlan0', 'Tx_bytes', 500))/1024
+ prefix 'wlan0'
+ postfix ' '
+ width 10
+ precision 0
+ align 'R'
+ update tick
+ Foreground 'ffffff'
+ Background 'FFFFFF00'
+}
+
+Widget Eth0Bar {
+ class 'Bar'
+ expression netdev('wlan0', 'Rx_bytes', 500)
+ expression2 netdev('wlan0', 'Tx_bytes', 500)
+ length 21
+ direction 'E'
+ update tack
+ Foreground 'ffffff'
+ Background '00000080'
+ BarColor0 '5f5fff'
+ BarColor1 'ff5f5f'
+}
+
+Widget Uptime {
+ class 'Text'
+ expression uptime('%d days %H:%M:%S')
+ width 20
+ align 'R'
+ prefix 'Up '
+ update 1000
+ Background 'FFFFFF00'
+}
+
+Widget Bgnd {
+ class 'Image'
+ file 'bgnd.png'
+ reload 1
+ update 5000
+ inverted 0
+ visible 1
+}
+
+Display 'DPF'
+
+Layout mylayout {
+ Row01.Col01 'OS'
+ Row02.Col02 'CPU'
+ Row03.Col10 'RAM'
+ Row05.Col01 'Busy'
+ Row06.Col01 'BusyBar'
+ Row07.Col01 'Load'
+ Row08.Col01 'LoadBar'
+ Row09.Col01 'Disk'
+ Row10.Col01 'DiskBar'
+ Row11.Col01 'Eth0'
+ Row12.Col01 'Eth0Bar'
+ Row16.Col01 'Uptime'
+ Layer 2 {
+ X1.Y1 'Bgnd'
+ }
+}
+
+Layout 'mylayout'
+
+Variables {
+ backlight