Debian on the Efika MX and Efika Smartbook ARM based devices
Contents
What is EfikaMX?
The EFIKA MX Open Client is a network computer based around the EFIKA MX micro-motherboard. Thist hardware is now discontinued.
The specifications are as follows (T03):
- Freescale i.MX515 (ARM Cortex-A8 800MHz)
- 3D Graphics Processing Unit
- WXGA display support (HDMI)
- Multi-format HD video decoder and D1 video encoder
- 512MB RAM
- 8GB Internal USB
802.11 b/g/n WiFi (Ralink rt3070)
- SDHC card reader
- 2x USB 2.0 ports
- Audio jacks for headset
- Built-in speaker
- Bluetooth (Broadom 2043?)
This device lacks of hardware schematics or documentation on the board, but you have access to several resources at Gitorious GIT infrastructure and power developer site sources. There is a slightly effort to port Linux kernel sources into mainline kernel, but Freescale should be taking the leadership in this task to be a feasible goal.
user@efikamx:~$ cat /proc/cpuinfo Processor : ARMv7 Processor rev 1 (v7l) BogoMIPS : 799.53 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 CPU implementer : 0x41 CPU architecture: 7CPU variant : 0x2 CPU part : 0xc08 CPU revision : 1 Hardware : Efika MX Revision : 51020 Serial : 0000000000000000
Note that old T02 have a hardware bug on the NEON (floating point co-processor) silicon.
Quick start
- Unboxing the EfikaMX - Nice little device!
- Remove screw on the lower part and attach serial board connector to the EfikaMX
- Attach a serial-USB cable to the EfikaMX serial board
You need to run some serial terminal to hook into the EfikaMX, default user and password are: oem:oem
$ sudo reboot -f or do a hard reset and press space bar in short time, you should get an uboot prompt, try to execute boot> printenv
If you want to boot from an external SD card, try to run from U-boot boot> run sd_boot
- you can see if it's booting from SD because the led is blue, otherwise it's green/yellow
Preparing an SD card
Genesi image approach
Genesi provides 2 armhf images for Debian:
- armhf-2GB_xxxxxx.img. (Beware, the root partition is 98 % full, and the uncompressed image did not fit on my 2GB card)
- efika-armhf+3d-xxxxxxx.img
See http://www.powerdeveloper.org/platforms/efikamx/linux
To copy the image on a SD card, run something like:
$ sudo dd if=armhf-xxxxxxx.img of=/dev/mmcblk0
Other images
Some other handy images are provided by talon at Steuben Technologies. These images includes steup scripts that make easy to run Debian from SD card or to install Debian directly in the Smarttop.
Konstantinos Margaritis has provided more recent Wheezy and Jessie images.
Parted approach
- Insert an SD card into your SD card reader:
$ dmesg [...] [ 9916.960194] mmc0: new SD card at address fb8d [ 9917.620844] mmcblk0: mmc0:fb8d SD02G 1.83 GiB [ 9917.620909] mmcblk0: p1 p2
- Run parted
$ parted /dev/mmcblk0 $ mkpart primary 0% 128M $ mkpart primary 128M 100% $ quit
- For U-Boot 2009.01-1.x.x (shipped on Efika MX Smarttop by default)
mkfs.vfat /dev/mmcblk0p1 mkfs.ext4 /dev/mmcblk0p2
You can now mount them as the root filesystem and boot disk.
- For U-Boot 2009.01-2.0.x (shipped on Efika MX Smartbook, or as an update to Smarttop)
mkfs.ext2 /dev/mmcblk0p1 mkfs.ext4 /dev/mmcblk0p2
You will also need a valid "boot.scr" to boot systems from 2.0.x U-Boot revisions, as the boot method changed to be controlled by the script and not automated in the bootloader for reasons of flexibility. Making your own boot script TBW.
JTAG support
- TODO: Need to check if later OpenOCD in Debian has support for these devices.
What bootloader?
Limitations
EfikaMX board uses asix driver for Ethernet, so basically, to perform network boot, one needs good support of USB on the bootloader (at the time being 09-2010) uboot has rather naive support for USB, and there is no ASIX ethernet driver available, which basically means network boot is not planned for the foreseeable future.
- Other alternatives could be studied:
barebox -- Sascha Hauer's uboot v2 (a rewrite from original uboot with candy for imx platforms and other pengutronix platforms). Currently doesn't boot from filesystems except cramfs in NOR, but will happily netboot a kernel.
kexecboot -- Jay7: we have plan to add switch_root() method to kexecboot, this will allow to boot from loop mounts and from network
buildroot initrd kernel chainloading another kernel via magic scripts
initramfs-tools hooks using kexec, which then download the kernel/initrd and kexec boot them. proof of concept
Default U-Boot Environment
For 2009.01 1.x.x:
printenv
bootdelay=1
baudrate=115200
loadaddr=0x90007FC0
netdev=eth0
ethprime=smc911x
kernel=uImage
uboot_addr=0x00000000
uboot_size=0x00040000
loadaddr=0x90007FC0
sd_boot=run bootargs_base bootargs_sdhc
pata_boot=run bootargs_base bootargs_pata
bootinfo=rw
bootargs_sdhc=setenv bootargs ${bootargs} root=/dev/mmcblk0p2 ${bootinfo};run boot_sdhc
bootargs_pata=setenv bootargs ${bootargs} root=/dev/sda2 ${bootinfo};run boot_pata
base_cmd1=pmic 15 0x00400022;mw.l 0x73fa84b8 0xe7 1;mw.l 0x73fd4014 0x59239100 1
base_cmd2=mw.l 0x83fd9010 0xcaaaf6d0 1;mw.l 0x73f88000 0x01025200 1;mw.l 0x73f84000 0x20 1
base_cmd3=mw.l 0x83fd9004 0x333574aa 1;mw.l 0x83fd900c 0x333574aa 1;
base_cmd4=mw.l 0x83fd9020 0x00f48b00 1;mw.l 0x83fd9024 0x00f49700 1;mw.l 0x83fd9028 0x00f48700 1
base_cmd5=mw.l 0x83fd902c 0x00f48400 1;mw.l 0x83fd9030 0x00f44e00 1;
base_cmds=run base_cmd1;run base_cmd2;run base_cmd3;run base_cmd4;run base_cmd5;run base_cmd99
boot_sdhc=run base_cmds;mmcinit;fatload mmc 0:1 ${loadaddr} ${kernel}; bootm ${loadaddr}
boot_pata=run base_cmds;ide reset;fatload ide 0:1 ${loadaddr} ${kernel}; bootm ${loadaddr}
prog_nor_flag=1
prog_nor_uboot=mmcinit;fatload mmc 0:1 ${loadaddr} u-boot.bin;sf probe 0:1 25000000 3;sf erase ${uboot_size} 0x10000;sf erase ${uboot_addr} ${uboot_size};sf write ${loadaddr} ${uboot_addr} ${filesize}
check_nor_flash=sf probe 0:1 25000000 3;sf read ${loadaddr} 0 4
check_ext_boot=1
default_env=sf probe 1 25000000 3;sf erase ${uboot_size} 0x10000
filesize=4
bootargs_base=setenv bootargs noinitrd console=ttymxc0,115200 console=tty1 rootwait
stdin=serial
stdout=serial
stderr=serial
bootcmd=run pata_boot
Environment size: 1623/65532 bytesFor U-Boot 2009.01-2.0.6:
bootdelay=3
baudrate=115200
loadaddr=0x90007FC0
firmware_version=20101102171353
uboot_addr=0x00000000
uboot_size=0x00040000
env_addr=0x00040000
kerneladdr=0x90007FC0
scriptaddr=0x91000000
ramdiskaddr=0x92000000
console=ttymxc0,115200
model=mx
bootcmd=for device in "mmc ide"; do if strcmp ${device} == mmc; then; mmcinit; setenv units "0 1"; else; setenv units "0"; fi; for interface in ${units}; do if strcmp ${device} == mmc; then mmcprobe ${interface}; else; ide reset; fi; for fs in "ext2 fat"; do setenv loadcmd "${fs}load ${device} 0:1"; if ${loadcmd} ${scriptaddr} boot.scr; then; if imi ${scriptaddr}; then; autoscr ${scriptaddr}; fi; fi; done; done; done;
stdin=serial
stdout=serial
stderr=serial
Environment size: 706/65532 bytes
U-Boot# Smartbook is identical except model code.
Instructions for upgrading
Download Powerdeveloper.org U-Boot Updater
Uncompress xzcat efikamx-updater.img.xz > efikamx-updater.img
Copy image into SD card dd if=efikamx-updater.img of=/dev/mmcblk0
- Now get your Efika device and boot it with SD card inserted.
U-Boot 2009.01-1.1.7-efikamx (Dec 21 2009 - 14:00:56)
CPU: Freescale i.MX51 family 2.5V at 400 MHz
mx51 pll1: 800MHz
mx51 pll2: 665MHz
mx51 pll3: 216MHz
ipg clock : 66500000Hz
ipg per clock : 665000000Hz
uart clock : 66500000Hz
cspi clock : 54000000Hz
Board: Genesi Efika MX [POR]
DRAM: 512 MB
JEDEC ID: 0xbf:0x25:0x4a
Reading SPI NOR flash 0x40000 [0x10000 bytes] -> ram 0x975f06e8
.SUCCESS
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
Boot Source: SPI NOR FLASH BOOT
board rev1.1
SD card.
Vendor: Man 02 OEM TM "SD02G" Date 03/2010
Product: 2863884823
Revision: 6.0
board rev1.1
SD card.
Vendor: Man 02 OEM TM "SD02G" Date 03/2010
Product: 2863884823
Revision: 6.0
3275204 uimage
5 type_id.bin
165060 ubootsb.bin
1093 boot.scr
4 file(s), 0 dir(s)
reading type_id.bin
4 bytes read
Type ID = 2336
Boot Cmd: run sd_boot
Hit any key to stop autoboot: 10 9 8 7 6 5 4 3 2 0
EfikaMX > boot
Write reg = 15 value = 0x00400022
board rev1.1
SD card.
Vendor: Man 02 OEM TM "SD02G" Date 03/2010
Product: 2863884823
Revision: 6.0
reading uImage
3275204 bytes read
## Booting kernel from Legacy Image at 90007fc0 ...
Image Name: Linux-2.6.31.99-efikamx
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 3275140 Bytes = 3.1 MB
Load Address: 90008000
Entry Point: 90008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
Starting kernel ...
Uncompressing Linux......................................................................................................................................................................... done, booting the kernel.
[ 0.000000] Linux version 2.6.31.99-efikamx (misc@linux) (gcc version 4.4.4 (GCC) ) #39 Fri Dec 3 11:53:31 CET 2010
[ 0.000000] CPU: ARMv7 Processor [412fc081] revision 1 (ARMv7), cr=10c53c7f
[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[ 0.000000] Machine: Genesi Efika MX (Smarttop)
[ 0.000000] Ignoring unrecognised tag 0x54410009
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 105664
[ 0.000000] Kernel command line: console=ttymxc0,115200 root=/dev/ram0
[ 0.000000] PID hash table entries: 2048 (order: 11, 8192 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Memory: 416MB = 416MB total
[ 0.000000] Memory: 416432KB available (3764K code, 510K data, 1212K init, 0K highmem)
[ 0.000000] SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] NR_IRQS:368
[ 0.000000] MXC IRQ initialized
[ 0.000000] MXC_Early serial console at MMIO 0x73fbc000 (options '115200')
[ 0.000000] console [ttymxc0] enabled
[ 0.000000] Console: colour dummy device 80x30
[ 0.000000] Calibrating delay loop... 799.53 BogoMIPS (lpj=3997696)
[ 0.000000] Mount-cache hash table entries: 512
[ 0.000000] CPU: Testing write buffer coherency: ok
[ 0.000000] regulator: core version 0.5
[ 0.000000] NET: Registered protocol family 16
[ 0.000000] i.MX IRAM pool: 128 KB@0x9a840000
[ 0.000000] IRAM READY
[ 0.000000] CPU is i.MX51 Revision 2.5
[ 0.000000] MXC GPIO hardware
[ 0.000000] mx51_efikamx_init_spi()
[ 0.000000] mx51_efikamx_init_pmic()
[ 0.000000] mx51_efikamx_init_nor()
[ 0.000000] Efika MX: IOMUX for ATA (29 pins)
[ 0.000000] Genesi Efika MX (Smarttop) Revision 1.1
[ 0.000000] Using SDMA I.API
[ 0.000000] MXC DMA API initialized
[ 0.000000] bio: create slab <bio-0> at 0
[ 0.000000] SCSI subsystem initialized
[ 0.000000] IPU DMFC NORMAL mode: 1(0~1), 5B(4,5), 5F(6,7)
[ 0.000000] NET: Registered protocol family 2
[ 0.666298] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.674031] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[ 0.681848] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.688667] TCP: Hash tables configured (established 16384 bind 16384)
[ 0.695205] TCP reno registered
[ 0.698513] NET: Registered protocol family 1
[ 0.788485] regulator: Unable to get requested regulator: SW1
[ 0.794394] LPMode driver module loaded
[ 0.798276] Static Power Management for Freescale i.MX51
[ 0.803822] PM driver module loaded
[ 0.807754] sdram autogating driver module loaded
[ 0.812721] Bus freq driver module loaded
[ 0.816902] DVFS driver module loaded
[ 0.820578] i.MXC CPU frequency driver
[ 0.824345] regulator: Unable to get requested regulator: SW1
[ 0.830131] mxc_cpufreq_driver_init: failed to get gp regulator
[ 0.836200] DVFS PER driver module loaded
[ 0.841660] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[ 0.847593] msgmni has been set to 813
[ 0.854551] alg: No test for stdrng (krng)
[ 0.859003] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[ 0.866465] io scheduler noop registered (default)
[ 0.871275] io scheduler cfq registered
[ 0.875610] sii9022_probe
[ 0.879153] mxc_init_fb: vmode passed
[ 0.883864] mode_option=800x600-16@60
[ 0.887588] desired pixel clock (25000)
[ 0.891431] pixel clock 25000 rate 80000000
[ 0.895661] current PLL rates pll3 216000000 ipu_di0_clk 27000000
[ 0.901805] new PLL rates pll3 80000000 ipu_di0_clk 40000000
[ 0.907581] skip sii9022_reinit!
[ 0.911617] mxc_ipu mxc_ipu: Channel already disabled 9
[ 0.911628] mxc_ipu mxc_ipu: Channel already uninitialized 9
[ 0.911640] desired pixel clock (25000)
[ 0.911646] pixel clock (25000) unchanged
[ 0.911676] mxc_ipu mxc_ipu: WARNING: adapt panel end blank lines
[ 0.930534] Console: switching to colour frame buffer device 100x37
[ 0.969044] sii9022 lcd_probe
[ 0.972019] sii9022 lcd_init_fb
[ 0.977258] mxcfb_read_edid2
[ 0.980572] read_edid error!
[ 0.983631] mxcfb_update_default_var mode_opt=<NULL> vmode=
[ 0.989237] desired pixel clock (13468)
[ 0.993080] pixel clock 13468 rate 148500000
[ 0.997395] current PLL rates pll3 80000000 ipu_di0_clk 40000000
[ 1.003408] new PLL rates pll3 148500000 ipu_di0_clk 74250000
[ 1.009271] reinit 1280x720 13468 fail!
[ 1.155934] desired pixel clock (13468)
[ 1.155940] pixel clock (13468) unchanged
[ 1.175939] IPU DMFC DP HIGH RESOLUTION: 1(0,1), 5B(2~5), 5F(6,7)
[ 1.452834] Serial: MXC Internal UART driver
[ 1.457433] mxcintuart.0: ttymxc0 at MMIO 0x73fbc000 (irq = 31) is a Freescale i.MX
[ 1.465126] console handover: boot [ttymxc0] -> real [ttymxc0]
[ 1.471868] mxcintuart.1: ttymxc1 at MMIO 0x73fc0000 (irq = 32) is a Freescale i.MX
[ 1.480448] mxcintuart.2: ttymxc2 at MMIO 0x7000c000 (irq = 33) is a Freescale i.MX
[ 1.492551] loop: module loaded
[ 1.496854] spi_gpio_init()
[ 1.500174] mc13892 Rev 0.0 FinVer 0 detected
[ 1.504565] pmic_spi: probe of spi0.0 failed with error -1
[ 1.510610] m25p80 spi0.1: sst25vf032b (4096 Kbytes)
[ 1.515585] Creating 3 MTD partitions on "spi_nor_flash":
[ 1.521025] 0x000000000000-0x000000040000 : "u-boot"
[ 1.527507] 0x000000040000-0x000000050000 : "config"
[ 1.533452] 0x000000050000-0x000000400000 : "spare"
[ 1.540456] mice: PS/2 mouse device common for all mice
[ 1.545853] MXC keypad loaded
[ 1.549462] i2c /dev entries driver
[ 1.553675] Linux video capture interface: v2.00
[ 1.559326] MXC Video Output MXC Video Output.0: Registered device video0
[ 1.566371] MXC WatchDog Driver 2.0
[ 1.569974] clk: Unable to get requested clock: wdog_clk
[ 1.575702] MXC Watchdog # 0 Timer: initial timeout 60 sec
[ 1.581421] cpuidle: using governor ladder
[ 1.585521] cpuidle: using governor menu
[ 1.590011] PMIC Character device: successfully loaded
[ 1.595768] VPU initialized
[ 1.598986] Registered led device: power:green
[ 1.603585] Registered led device: power:red
[ 1.608060] Registered led device: power:blue
[ 1.612872] Advanced Linux Sound Architecture Driver Version 1.0.20.
[ 1.620002] regulator: Unable to get requested regulator: VDDIO
[ 1.625988] regulator: Unable to get requested regulator: VDDA
[ 1.631824] regulator: Unable to get requested regulator: VDDD
[ 1.656601] sgtl5000-i2c 1-000a: SGTL5000 revision 17
[ 1.683489] No device for DAI imx-ssi-1-0
[ 1.687530] No device for DAI imx-ssi-1-1
[ 1.691572] No device for DAI imx-ssi-2-0
[ 1.695585] No device for DAI imx-ssi-2-1
[ 1.700325] DMA Sound Buffers Allocated:UseIram=1 buf->addr=1fff6000 buf->area=9a856000 size=24576
[ 1.709441] DMA Sound Buffers Allocated:UseIram=1 buf->addr=a85a0000 buf->area=f9e98000 size=24576
[ 1.718420] asoc: SGTL5000 <-> imx-ssi-2-0 mapping ok
[ 1.767586] ALSA device list:
[ 1.770561] #0: imx-3stack (SGTL5000)
[ 1.775194] TCP cubic registered
[ 1.778484] NET: Registered protocol family 17
[ 1.782956] ThumbEE CPU extension supported.
[ 1.787257] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 2
[ 1.796502] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[ 1.803041] Freeing init memory: 1212K
mount: mounting sys on /sys failed: No such device
mdev: /sys/class: No such file or directory
Upgrading U-Boot firmware
Clearing U-Boot env area
16+0 records in
16+0 records out
65536 bytes (64.0KB) copied, 3.386105 seconds, 18.9KB/s
Writing U-Boot to NOR spi
291+1 records in
291+1 records out
149496 bytes (146.0KB) copied, 9.396456 seconds, 15.5KB/s
All done. Reboot.
swapoff: /etc/fstab: No such file or directory
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system reboot
[ 16.618457] MXC Watchdog # 0 shutdown
[ 16.622997] Restarting system.
[ 16.627980] clk: Unable to get requested clock: wdog_clk
U-Boot 2009.01-2.0.6-efikamx (Nov 02 2010 - 17:13:53)
CPU: Freescale i.MX51 family 2.5V at 400 MHz
mx51 pll1: 800MHz
mx51 pll2: 665MHz
mx51 pll3: 216MHz
ipg clock : 66500000Hz
ipg per clock : 665000000Hz
uart clock : 66500000Hz
cspi clock : 54000000Hz
Board: MX51 Efika MX 3.0 [WDOG]
DRAM: 512 MB
JEDEC ID: 0xbf:0x25:0x4a
Reading SPI NOR flash 0x40000 [0x10000 bytes] -> ram 0x975f06e8
.SUCCESS
*** Warning - bad CRC, using default environment
In: serial
Out: serial
Err: serial
board id: 1.1.1, rev1.1
Boot Source: SPI NOR FLASH BOOT
Boot Cmd: for device in "mmc ide"; do if strcmp ${device} == mmc; then; mmcinit; setenv units "0 1"; else; setenv units "0"; fi; for interface in ${units}; do if strcmp ${device} == mmc; then mmcprobe ${interface}; else; ide reset; fi; for fs in "ext2 fat"; do setenv loadcmd "${fs}load ${device} 0:1"; if ${loadcmd} ${scriptaddr} boot.scr; then; if imi ${scriptaddr}; then; autoscr ${scriptaddr}; fi; fi; done; done; done;
Hit any key to stop autoboot: 3 2 1 0
SD card.
Vendor: Man 02 OEM TM "SD02G" Date 03/2010
Product: 2863884823
Revision: 6.0
No MMC card found
Please initial the Card first
** Can't read partition table on 0:0 **
** Bad partition 1 **
Please initial the Card first
** Can't read from device 0 **
** Unable to use mmc 0:1 for fatload **
SD card.
Vendor: Man 02 OEM TM "SD02G" Date 03/2010
Product: 2863884823
Revision: 6.0
MMC interface 1 selected
Failed to mount ext2 filesystem...
** Bad ext2 partition or disk - mmc 0:1 **
reading boot.scr
## Checking Image at 91000000 ...
Legacy image found
Image Name: Efika MX Installer
Image Type: ARM Linux Script (uncompressed)
Data Size: 1029 Bytes = 1 kB
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 1021 Bytes = 1 kB
Verifying Checksum ... OK
## Executing script at 91000000
Unknown command 'poweroff' - try 'help'
Unknown command 'poweroff' - try 'help'
Reset IDE: Bus 0: OK
Device 0: Model: Flash Module Firm: Ver2.M1B Ser#: 38A30798060000001667
Type: Hard Disk
Capacity: 3679.5 MB = 3.5 GB (7535808 x 512)
Failed to mount ext2 filesystem...
** Bad ext2 partition or disk - ide 0:1 **
reading boot.scr
** Unable to read "boot.scr" from ide 0:1 **
U-Boot# - If you do not have serial adapter, power LED will turn from blue to green, then a blue LED flashing light for EfikaMX should happen, then the board reboots itself and you get a stable blue LED light. It should be safe to turn it off.
- Remove the SD card and delete its contents with newer kernel and rootfs of your preference (see next kernel and rootfs sections).
Mainline U-Boot support
Which kernel?
Mainline
Genesi/Pegatron/Freescale SDK kernel
EfikaMX and EfikaSB boards uses Linux kernel (efikamx-10.08.00 branch), kernel is based on Freescale SDK 10.07.11 with patches backported from 10.08.00, 10.09.00 and 10.10.00.
Read more up to date information at Efika blog site
Hands on dirt
First you need a developer framework to compile from source. You probably want to use a cross compiler.
Then grab Linux kernel sources (efikamx-10.08.00 branch) for EfikaMX
Above link is outdate. Use git://github.com/genesi/linux-legacy.git . See https://github.com/genesi/linux-legacy
$ git clone https://gitorious.org/efikamx/linux-kernel.git $ git checkout -b efikasb-10.08.00 $ git merge origin/efikasb-10.08.00 $ make ARCH=arm mx51_efikamx_devtmpfs_config $ cd linux-kernel $ make-kpkg --arch=armel --revision=10.08.00 --initrd --rootcmd=fakeroot --cross-compile=arm-linux-gnueabi- kernel_image
You may want to hack flash-kernel to do something like this or run mkimage manually.
For uImage
mkimage -A arm -O linux -T kernel -C none -a 0x90008000 \
-e 0x90008000 -n "$desc" -d "$kfile" "$tmp.uboot" >&2 1>/dev/nulland for uInitrd
mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 \
-e 0x0 -n "$idesc" -d "$ifile" "$tmp.uboot" >&2 1>/dev/nullSample boot script for new U-Boot on Smartbook and Smarttop:
setenv ramdisk uInitrd;
setenv kernel uImage;
setenv bootargs console=tty1 root=/dev/sda2 rootwait rw quiet splash;
${loadcmd} ${ramdiskaddr} ${ramdisk};
if imi ${ramdiskaddr}; then; else
setenv bootargs ${bootargs} noinitrd;
setenv ramdiskaddr "";
fi;
${loadcmd} ${kerneladdr} ${kernel}
if imi ${kerneladdr}; then
bootm ${kerneladdr} ${ramdiskaddr}
fi; Then make it with
mkimage -A arm -O linux -a 0 -e 0 -T script -C none -n "EfikaMX Boot Script" -d myboot.script boot.scr
You will need the latest firmware for rt3070sta from Ralink - "Firmware RT28XX/RT30XX USB series (RT2870/RT2770/RT3572/RT3070)" version 22 or better. The file is named rt2870.bin but needs to be renamed to rt3070.bin and placed in /lib/firmware to operate.
Which rootfs?
EfikaMX is able to run latest Debian and/or Emdebian root filesystems for armel and armhf
Hands on dirt
Use debootstrap or even better multistrap, either with Debian or Emdebian
Please read instructions from EmDebian/CrossDebootstrap page.
After rootfs is generated you might manually have to do some tweaks to the rootfs:
- Add serial port (/dev/ttymxc0) to inittab and securetty
- Make sure you get root passwd and /proc mounts properly
- Tune it adding users, root pwd, fstab file and do not forget to add serial support.
Now pack the filesystem and install it in your device
manual System installation
Place the uImage file in the SD card partition 1.
Place kernel modules on partition 2.
Place filesystem on partition 2.
Installing Debian (sid and wheezy) via serial console
http://http.debian.net/debian/dists/testing/main/installer-armhf/current/images/mx5/ has images for testing == wheezy
http://http.debian.net/debian/dists/sid/main/installer-armhf/current/images/mx5/ has images for unstable == sid.
Just copy those four files on a vfat formatted SD card and boot the efika. Access debian-installer via serial console.
Currently these images are broken due to 675017 - "no disk found".
Installing Debian (sid and wheezy) pre-seeded without a serial console
TBD...
Get a serial port
Efika MX nettop
- Remove screw on the bottom part.
- Attach special serial dongle to the connector, which provides JTAG and serial.
Efika SB smartbook
- Remove keyboard, using a flat screw driver make pop the keyboard by gently inserting the screwdriver in the top part gaps. BE CAREFUL!
- Attach special dongle board to the FFC connector.
- You'll see there is 4-way DIP switch in device:
- Default settings: 1,2,3 ON; 4 OFF
- Reverting defaults 1,2,3 OFF; 4 ON allows to fully boot from SD card (u-boot, kernel and rootfs).
References
Thanks
/me and Debian would like to thank Genesi since they provided us some hardware to do this porting and they've been very helpful.
