This is preliminary documentation. It will be updated in the near future
To try the OpenEmbedded based root file system, it is best to install it on an external storage media such as an MMC/SD-Card or an USB drive.
You first have to choose the right rootfs and kernel image according to your system:
taskit-base-image-panelcard.tar
uImage-panelcard.bin
taskit-base-image-stamp9261.tar
uImage-stamp9261.bin
taskit-base-image-portux920t.tar
uImage-portux920t.bin
taskit-base-image-portux-panelpc.tar
uImage-portux-panelpc.bin
Important: You cannot use your old kernel images, as the openembedded based system uses a different ABI than the old rootfs and toolchain.
The next steps should be done with root privileges. Before unpacking the file system onto the memory card or USB drive, it must be formatted with the ext2 file system. You can do this on either on a normal Linux-PC or on the target device with following command:
mke2fs $device
where $device has to be replaced with the device you want to format (e.g. /dev/mmcblk0p1 for MMC/SD-Cards or /dev/sda1 for USB drives on the taskit products)
Mount the device:
mount $device $mountpoint
e.g.:
mount /dev/sda1 /data
Unpack the archive:
tar -xvf $archive -C $mountpoint
e.g.:
tar -xvf taskit-base-image-panelcard.tar -C /data
Unmount the device:
umount $mountpoint
To flash the kernel follow the instructions in the Linux Guide or the Upgrade Guide:
LinuxGuide_v1.25.pdf
2.6.22-install.pdf
To boot from the external storage enter one of the following U-Boot commands:
Panel-Card, Stamp9261
setenv sdboot run \$(ramsize)\;run setbasicargs\;setenv bootargs \$(basicargs) \$(mtdparts) root=/dev/mmcblk0p1 rootdelay=1 ro\;bootm \$(kerneladdr) setenv usbboot run \$(ramsize)\;run setbasicargs\;setenv bootargs \$(basicargs) \$(mtdparts) root=/dev/sda1 rootdelay=5 ro\;bootm \$(kerneladdr)
Portux920T, Portux Panel-PC
setenv sdboot setenv bootargs \$(basicargs) \$(mtdparts) root=/dev/mmcblk0p1 rootdelay=1 ro\;bootm \$(kerneladdr) setenv usbboot setenv bootargs \$(basicargs) \$(mtdparts) root=/dev/sda1 rootdelay=5 ro\;bootm \$(kerneladdr)
Save these variables with saveenv
. You are now able to boot the system with with run usbboot
or run sdboot
.
If you want to automatically boot this system, set the boot command to either run usbboot or
run sdboot
before running saveenv
, e.g.:
setenv bootcmd run sdboot
Differences to the old file system
mount / -o remount,ro
) or shut the system down (halt
) before switching it off.Using the package manager
To use the package manager you have to create the file /etc/ipkg.conf with the following content:
Panel-Card:
src all http://www.armbedded.eu/download/taskit-0.1/ipk/all src armv5te http://www.armbedded.eu/download/taskit-0.1/ipk/armv5te src panelcard http://www.armbedded.eu/download/taskit-0.1/ipk/panelcard
Stamp9261:
src all http://www.armbedded.eu/download/taskit-0.1/ipk/all src armv5te http://www.armbedded.eu/download/taskit-0.1/ipk/armv5te src stamp9261 http://www.armbedded.eu/download/taskit-0.1/ipk/stamp9261
Portux920T:
src all http://www.armbedded.eu/download/taskit-0.1/ipk/all src armv4t http://www.armbedded.eu/download/taskit-0.1/ipk/armv4t src portux920t http://www.armbedded.eu/download/taskit-0.1/ipk/portux920t
Portux Panel-PC:
src all http://www.armbedded.eu/download/taskit-0.1/ipk/all src armv4t http://www.armbedded.eu/download/taskit-0.1/ipk/armv4t src portux-panelpc http://www.armbedded.eu/download/taskit-0.1/ipk/portux-panelpc
If you are not able to download the packages directly from the internet to the device, you can mirror the needed files locally. Use this command to get all the files:
wget -r -np http://www.armbedded.eu/download/taskit-0.1/ipk
Now make the files available to the device by either copying them directly to the device if it has enough memory or mount the directory via nfs.
Example: If the contents of the downloaded directory are mounted or copied to /ipk and you have a Panel-Card, then you have to change the /etc/ipkg.conf to contain the following lines:
src all file:/ipk/all src armv5te file:/ipk/armv5te src panelcard file:/ipk/panelcard
You are now able to pull the list of packages with ipkg update
.
To install additional packages, use the command ipkg install $package
. For further instruction to use ipkg see Using the package manager.
Interesting packages might be xserver-kdrive-fbdev (needed for graphical applications), jamvm (Java virtual machine), classpath-gtk (to start awt/swing applications) and python
, perl
and ruby
as additonal scripting languages.
You have two choices when compiling software with the OpenEmbedded based system:
Using the native toolchain means to compile your program on the target itself. To do that install the package task-native-sdk. You can now copy your source code to the target (or make it available via nfs) and compile it with make
or directly with the C compiller (gcc
).
To use the cross toolchain, you have to download it first from taskit-0.1-arm-linux-gnueabi-taskit.tar.bz2. You now have to unpack it to your development machine into the root directory:
tar -xvjf taskit-0.1-arm-linux-gnueabi-taskit.tar.bz2 -C /
After that, you have a new folder /usr/local/taskit containing the new toolchain. Finally you need to adapt the makefile of your program to use the prefix /usr/local/taskit/arm/bin/arm-linux-gnueabi-
We will use the cross toolchain here. To compile the kernel follow the instructions in the Linux 2.6.22 install guide 2.6.22-install.pdf. You only have to change two things:
First, you should use
export CROSS_COMPILE=/usr/local/taskit/arm/bin/arm-linux-gnueabi-
instead of
export CROSS_COMPILE=arm-linux-3.4.2-
Second, before compiling the kernel with make zImage
you have to enable EABI support in the kernel config. Therefore enter make menuconfig
and enable Kernel Features --> Use the ARM EABI to compile the kernel. Now save the config and continue as described in the install guide.
The OpenEmbedded based system uses a package manager (ipkg) for installing, updating and removing software packages. This chapter contains information on common tasks when using ipkg.
Before you can install additional packages or update them you have to get the current list of available packages. To do this use this command:
ipkg update
From time to time, there might be updates to some packages, mostly because of bugfixes. To get these updated packages run following command after getting the current list of available packages.
ipkg upgrade
If you need a package, that is currently not installed, just use this command (where $package
has to be replaced with the name of the package):
ipkg install $package
If you do not need a package (anymore) and want to get rid of it, run:
ipkg remove $package
There are cases where you might be trying to remove packages that are needed by other packages. If this happens ipkg will list all packages that depend on the package to be removed. You now have three choices:
Choice 1 might be your only choice if you depend on the other packages. If you don't need the other packages, you can of course go with Choice 2 and remove all packages. This can be achieved with the following command:
ipkg remove -recursive $package
Choice 3 is not advised because it is very likely that the dependent packages are broken afterwards, but if you really want to do that, use the following command:
ipkg remove -force-depends $package
Before installing a package you certainly want to know, which packages are available. Just enter
ipkg list
to do this.
As ipkg has no native ability to search in the package list you have to use tools like grep
to search the package list, e.g.
ipkg list|grep mysql
to find all packages containing mysql in their package name oder description.
If you want to know, which packages are currently installed, run
ipkg list_installed
If you want to run graphical applications using Gtk+, Java AWT or other X11 dependent libraries, you need to start an X-Server beforehand. The X-Server used is a minimal version called KDrive. We need the one compiled with Linux frame buffer support.
It is contained in the package xserver-kdrive-fbdev. Install it with
ipkg install xserver-kdrive-fbdev
Now you are able to start the X-Server with the command
Xfbdev &
There are some options that might be interesting:
Option | Function |
---|---|
-mouse tslib | Touch panel support |
-mouse mouse,/dev/input/mice | General mouse support |
-noreset | Do not stop the X-Server, when the last client disconnects |
-s $nr | Set the screensaver timeout to $nr minutes, use 0 for no screensaver |
-screen | Set the screen resolution, color depth and rotation, e.g. -screen 320x240@90x16 for a landscape display with the resolution 320x240 in portrait mode and a color depth of 16 bits per pixel. |
The last thing you have to do before you can run your application is to set the DISPLAY environment variable, so that the X-Clients know, which X-Server they should connect. Normally the X-Server is runnung on display :0 so set the variable accordingly:
export DISPLAY=:0
You should now be able to run your application.
If you are using the touchscreen via tslib, you have to calibrate it first. To do that, install the xtscal:
ipkg install xtscal
Then, after the X-Server is started, execute it:
xtscal
Follow the onscreen instructions. After that, the touchscreen should be calibrated.
Additionally, you might be interested in a window manager. It is recommend to use the matchbox window manager as it is design for fullscreen applications on small screen, but there are other window managers in the repository if you have other preferences. Install it with:
ipkg install matchbox-wm
You can now start it with:
matchbox-window-manager &
You can ignore the warnings from matchbox.