Month: December 2012

LEGO and the open source BrickOS

It is not easy to any company to see your device hacked, they probably fell violated inside.

But this is a different case, LEGO saw open source as an opportunity and used it to improve their product.

I hope more companies start to think this way and use open source to improve themselves.

Sources:

http://www.digitaltrends.com/computing/lego-goes-open-source/

http://www.davidsudjiman.info/2006/02/13/how-should-lego-protect-its-trademark-operating-system-and-applications/

Created patch to add ssd1935 support on linux kernel 2.6.24

I created a patch to simplify adding support to SSD1935 on Linux kernel.

Then instead of downloading many files from my github you just need to download this small patch:

https://www.4shared.com/archive/F8UtHqnz/patch_kernel_2624_solomon_ssd1.html

You can apply it over linux kernel 2.6.24 this way:

$ tar xvf patch_kernel_2.6.24_solomon_ssd1935.tar.gz
$ cd linux-2.6.24
$ patch -p1 < ../kernel_2.6.24_solomon_ssd1935.patch

Very easy!

Mapping Flash partition from command line

Yesterday we saw how to map the NOR flash of VStarcam H6837WI camera.

Now we need to create the partitions to it.

We know from original linux kernel log it has 5 partitions:

[ 0.870000] Creating 5 MTD partitions on "NOR flash on ipcam":
[ 0.870000] 0x000000000000-0x000000030000 : "ARMboot"
[ 0.880000] 0x000000030000-0x0000001a0000 : "Kernel"
[ 0.890000] 0x0000001a0000-0x0000005a0000 : "RootFS"
[ 0.900000] 0x0000005a0000-0x0000007f0000 : "IpcamFS"
[ 0.910000] 0x0000007f0000-0x000000800000 : "param"

Then I need to pass this mtdparts to Linux kernel command line:

mtdparts=physmap-flash.0:192k(ARMboot)ro,1472k(Kernel),4096k(RootFS),2368k(IpcamFS),-(param)

This is my complete bootargs line:

bootargs=mtdparts=physmap-flash.0:192k(ARMboot)ro,1472k(Kernel),4096k(RootFS),2368k(IpcamFS),-(param) mem=20M console=ttyS0,115200n8 init=/sbin/init root=/dev/mtdblock2

Excellent, it can boots to camera Linux file system:

$ bootm

 Starting kernel ...

Uncompressing Linux............................................................................................. done, booting the kern
el.
[    0.000000] Linux version 2.6.24ssl (alan@aureo) (gcc version 3.4.6) #1 PREEMPT Sat Dec 15 16:13:03 BRST 2012
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[    0.000000] Machine: Solomon Magus Accio P1
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] CPU0: D VIVT write-back cache
[    0.000000] CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
[    0.000000] CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
[    0.000000] Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 5080
[    0.000000] Kernel command line: mtdparts=physmap-flash.0:192k(ARMboot)ro,1472k(Kernel),4096k(RootFS),2368k(IpcamFS),-(param) mem=20
M console=ttyS0,115200n8 init=/sbin/init root=/dev/mtdblock2
[    0.000000] intc: init info - ver=1,0
[    0.000000] gpio: init info - ver=1,0 
[    0.000000] clock: init info - ver=1,0 
[    0.000000] MAGUS Clocks : ARM-240.000 MHz, HCLK-120.000 MHz, PCLK-60.000 MHz, PERCLK1-60.000 MHz, PERCLK2-24.000 MHz
[    0.000000] PID hash table entries: 128 (order: 7, 512 bytes)
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [ttyS0] enabled
[    0.010000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.020000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.030000] Memory: 20MB = 20MB total
[    0.040000] Memory: 17280KB available (2680K code, 219K data, 72K init)
[    0.270000] Mount-cache hash table entries: 512
[    0.270000] CPU: Testing write buffer coherency: ok
[    0.290000] net_namespace: 64 bytes
[    0.300000] NET: Registered protocol family 16
[    0.330000] dma: init info - ver 1.0 fifosize=128, 8 channels
[    0.330000] MAGUS cpu freq change driver v1.0
[    0.340000] 
[    0.340000] cpufreq: magus_set_target: request for target_freq = 240000 KHz
[    0.350000] cpufreq: magus_set_target: cur_pll_out = 240000 KHz, cur_arm_freq = 240000 KHz
[    0.380000] SCSI subsystem initialized
[    0.390000] usbcore: registered new interface driver usbfs
[    0.400000] usbcore: registered new interface driver hub
[    0.400000] usbcore: registered new device driver usb
[    0.470000] NET: Registered protocol family 2
[    0.570000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.580000] TCP established hash table entries: 1024 (order: 1, 8192 bytes)
[    0.590000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.590000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.600000] TCP reno registered
[    0.630000] Power Management for MAGUS. V0.1.1
[    0.630000] NetWinder Floating Point Emulator V0.97 (extended precision)
[    0.650000] JFFS2 version 2.2. (NAND) �© 2001-2006 Red Hat, Inc.
[    0.660000] io scheduler noop registered
[    0.660000] io scheduler deadline registered (default)
[    0.690000] Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
[    0.700000] ttyS0: autoconf (0x0000, 0xf000300c): uart: id=7000041
[    0.700000] type=16550A
[    0.710000] serial8250: ttyS0 at MMIO 0x0 (irq = 16) is a 16550A
[    0.710000] ttyS1: autoconf (0x0000, 0xf000400c): uart: id=7000041
[    0.720000] type=16550A
[    0.720000] serial8250: ttyS1 at MMIO 0x0 (irq = 17) is a 16550A
[    0.730000] Driver 'sd' needs updating - please use bus_type methods
[    0.740000] Driver 'sr' needs updating - please use bus_type methods
[    0.750000] physmap platform flash device: 00800000 at 10000000
[    0.760000] physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
[    0.770000]  Amd/Fujitsu Extended Query Table at 0x0040
[    0.770000] number of CFI chips: 1
[    0.770000] cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
[    0.780000] 5 cmdlinepart partitions found on MTD device physmap-flash.0
[    0.790000] Creating 5 MTD partitions on "physmap-flash.0":
[    0.800000] 0x00000000-0x00030000 : "ARMboot"
[    0.800000] 0x00030000-0x001a0000 : "Kernel"
[    0.810000] 0x001a0000-0x005a0000 : "RootFS"
[    0.820000] 0x005a0000-0x007f0000 : "IpcamFS"
[    0.830000] 0x007f0000-0x00800000 : "param"
[    0.840000] spi: init info - ver=1.0 fifo=16 slaves=5 master=1
[    0.850000] spi: init info - ver=1.0 fifo=16 slaves=5 master=1
[    0.970000] ehci ehci: ssl ehci
[    0.970000] ehci ehci: new USB bus registered, assigned bus number 1
[    0.980000] ehci ehci: irq 14, io mem 0x08403000
[    1.000000] ehci ehci: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004
[    1.010000] usb usb1: configuration #1 chosen from 1 choice
[    1.010000] hub 1-0:1.0: USB hub found
[    1.020000] hub 1-0:1.0: 1 port detected
[    1.130000] usb usb1: Product: ssl ehci
[    1.130000] usb usb1: Manufacturer: Linux 2.6.24ssl ssl ehci
[    1.140000] usb usb1: SerialNumber: ssl_ehci
[    1.140000] Initializing USB Mass Storage driver...
[    1.370000] CI reset done
[    1.430000] usb 1-1: new high speed USB device using ehci and address 2
[    1.550000] CI reset done
[    1.660000] usb 1-1: configuration #1 chosen from 1 choice
[    1.680000] usb 1-1: Product: 802.11 n WLAN
[    1.680000] usb 1-1: Manufacturer: Ralink
[    1.690000] usb 1-1: SerialNumber: 1.0
[    1.690000] usbcore: registered new interface driver usb-storage
[    1.700000] USB Mass Storage support registered.
[    1.710000] usbcore: registered new interface driver libusual
[    1.710000] i2c /dev entries driver
[    1.720000] i2c: init info - ver=1,0
[    1.730000] 
[    1.730000] cpufreq: magus_set_target: request for target_freq = 240000 KHz
[    1.740000] cpufreq: magus_set_target: cur_pll_out = 240000 KHz, cur_arm_freq = 240000 KHz
[    1.750000] TCP cubic registered
[    1.750000] NET: Registered protocol family 1
[    1.760000] NET: Registered protocol family 17
[    1.770000] VFS: Can't find an ext2 filesystem on dev mtdblock2.
[    1.780000] VFS: Mounted root (cramfs filesystem) readonly.
[    1.790000] Freeing init memory: 72K
/usr/bin/sdupdate: error while loading shared libraries: libgpioctrl.so: cannot open shared object file: No such file or directory
[    4.240000] jffs2: Too few erase blocks (1)
mount: mounting /dev/mtdblock4 on /mnt failed: Invalid argument
/etc/init.d/rcS: line 132: /mnt/init/ipcam.sh: not found
/ #                                                       

Adding NOR Flash support on H6837WI

The VStarCAM H6837WI uses a NOR Flash to store file system, this is a Spansion S29GL064N chip.

Unfortunately the original kernel source code released by TEAC (and developed by Solomon Systech) uses NAND instead of NOR flash.

This is the kernel log message of vstarcam h6837wi linux:

[ 0.830000] SPAN-NOR:0x00800000 at 0x10000000
[ 0.830000] nor flash cfi probe
[ 0.830000] NOR flash on ipcam: Found 1 x16 devices at 0x0 in 16-bit bank
[ 0.840000] Amd/Fujitsu Extended Query Table at 0x0040
[ 0.850000] number of CFI chips: 1
[ 0.850000] cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.

Then I started search for Linux support to Spansion S29GL064N and found these patches:
http://comments.gmane.org/gmane.linux.drivers.mtd/21085

After applying these patches I selected these configs:

CONFIG_MTD_CFI=y
CONFIG_MTD_JEDECPROBE=y
CONFIG_MTD_GEN_PROBE=y
CONFIG_MTD_MAP_BANK_WIDTH_1=y
CONFIG_MTD_MAP_BANK_WIDTH_2=y
CONFIG_MTD_MAP_BANK_WIDTH_4=y
CONFIG_MTD_CFI_I1=y
CONFIG_MTD_CFI_I2=y
CONFIG_MTD_CFI_AMDSTD=y
CONFIG_MTD_CFI_UTIL=y

But it still not working.

Then I still reading more about NOR flash support on Linux and found these articles:
http://www.righthandtech.com/embedded-linux-managing-memory.php
http://www.compulab.co.il/workspace/mediawiki/index.php5/CM-X270:_Linux:_MTD_drivers

Hmm, I need to define physical base address for my NOR flash chip. In fact NOR subsystem is not smart as NAND flash subsystem, it cannot discover where is in whole system memory.

So, I setup this information using as base above log from original Linux kernel:

CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x10000000
CONFIG_MTD_PHYSMAP_LEN=0x800000
CONFIG_MTD_PHYSMAP_BANKWIDTH=2

And now I got NOR flash chip detected:

[    0.760000] physmap platform flash device: 00800000 at 10000000
[    0.770000] physmap-flash.0: Found 1 x16 devices at 0x0 in 16-bit bank
[    0.770000]  Amd/Fujitsu Extended Query Table at 0x0040
[    0.780000] Using buffer write method
[    0.780000] number of CFI chips: 1
[    0.790000] cfi_cmdset_0002: Disabling erase-suspend-program due to code brokenness.
[    0.790000] RedBoot partition parsing not available
[    0.800000] mtd: Giving out device 0 to physmap-flash.0

Next step will be setting partition layout as on original camera’s linux kernel.

Stay tuned!

Solomon SSD1935 Datasheet

I contacted Solomon Systech asking for datasheet of SSD1935.

It is amazing, Solomon sent me the file very fast. Thank you very much Solomon Systech!

Because this datasheet doesn’t have Confidencial notification I will share it here:
https://www.4shared.com/office/raM31JEo/SSD1935_10.html

Unfortunately this “datasheet” is not an real datasheet, you will not see registers addresses and so on there.

Now, let us to compare it with i.MX51 processor from Freescale. You can download the datasheet (reference manual) directly from company web site, just need to log-in, and it very complete with more than 4000 pages.

I suggested to Solomon Systech to be more open and to follow other companies example, like Freescale, Texas Instruments and Marvel which are more open and contribute more with open source projects.

Testando o Yocto para o i.MX51

Comece instalando os pacotes necessários no Ubuntu:

sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm texi2html

Crie um diretório para instalar o yocto:

$ mkdir /workspace/yocto
$ cd /workspace/yocto

Clone o repositório do Yocto, OE e meta-fsl-arm branch denzil:

$ git clone git://git.yoctoproject.org/poky -b denzil
$ cd poky
$ git clone git://git.openembedded.org/meta-openembedded -b denzil
$ git clone git://github.com/Freescale/meta-fsl-arm.git -b denzil

Se você não estiver no branch denzil você receberá estas mensagens de erro ao tentar rodar o bitbake:

ERROR: No recipes available for:
  /workspace/yocto/poky/meta-fsl-arm/recipes-qt/qt4/qt4-x11-free_4.8.1.bbappend
  /workspace/yocto/poky/meta-fsl-arm/recipes-qt/qt4/qt4-embedded_4.8.1.bbappend
  /workspace/yocto/poky/meta-fsl-arm/recipes-core/udev/udev_173.bbappend
ERROR: Command execution failed: Exited with 1

Retorne ao diretório principal e inicialize o ambiente com um nome sugestivo (buildmx51), se você não colocar nada, o padrão chamará build.

$ cd ..
$ source poky/oe-init-build-env buildimx51

Edite o arquivo ‘conf/local.conf’ :

$ vi conf/local.conf

E configure com as informações necessárias para sua placa:

BB_NUMBER_THREADS = "8"
PARALLEL_MAKE = "-j 8"
MACHINE ?= "imx51evk"

Edite o arquivo ‘conf/bblayers.conf’ e acrescente o diretório do meta-fsl-arm:

# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
LCONF_VERSION = "6"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /comum/workspace/backup/yocto/poky/meta \
  /comum/workspace/backup/yocto/poky/meta-yocto \
  /comum/workspace/backup/yocto/poky/meta-yocto-bsp \
  /comum/workspace/backup/yocto/poky/meta-fsl-arm \
  /comum/workspace/backup/yocto/poky/meta-openembedded/meta-oe \
  "

Agora tente compilar o ambiente:

$ bitbake core-image-minimal

A maioria das dicas para resolver os problemas encontrei aqui: https://groups.google.com/forum/#!msg/meta-fsl-arm/8duwT0vbhGQ/ALW9utxGib0J

Finally a kernel compiled from source code is starting on VStarCam H6837WI

If you are following this blog you know I’m hacking an Wireless IP Camera VStarCam H6837WI and I have good news!

I found the Linux source code for SSD1935, thanks TEAC for releasing it. But I was wrong when I thought it should be very easy to get it working on my camera.

First, the machine ID used on TEAC WAP R8900 didn’t match the machine passed by u-boot, it was supposed to happen. I think neither Solomon Systech or TEAC was thinking to integrate it in the Linux mainline because they are using an invalid board ID (registered by other company).

Then I just need to select the right board ID, but Solomon used this board ID, used on VStarCam H6837WI, at least in three other boards. Then I just selected the board with same name used on the u-boot (it was a fault as you will see further below).

After compiling it and uploading the resulting uImage in the camera using ymodem transfer protocol on u-boot it didn’t start correctly.

Then I start debugging the low level kernel initialization, at first using ‘printascii’ (with DEBUG_LL activated), but with no luck. After many trials I decide to use other strategy, I decided to disassemble the original uImage retrieved from camera flash memory. This is the information from original uImage:

$ file uImage_h6837wi.bin 
uImage_h6837wi.bin: u-boot legacy uImage, Linux-2.6.24ssl, Linux/ARM, OS Kernel Image (Not compressed), 1467600 bytes, Mon Apr  8 17:01:50 2013, Load Address: 0x50C08000, Entry Point: 0x50C08000, Header CRC: 0xFFA94C01, Data CRC: 0xA90B8571

First I extracted the zImage from uImage and then decompressed it. After decompressing it to an Image I disassembled it and started to compare with the Image which I compiled.

This site helped too much: http://chdk.wikia.com/wiki/Gpl_Disassembling

I used these commands to create a disassembled file:

strings -t x Image | ./renumber.pl 0x50C08000 > Image.strings
hexdump -C Image |./renumber.pl 0x50C08000 > Image.hex
arm-linux-objcopy --change-addresses=0x50C08000 -I binary -O elf32-littlearm -B arm Image Image.elf
arm-linux-objcopy --set-section-flags .data=code Image.elf
arm-linux-objdump -d Image.elf > Image.dis

Then I noticed a visible difference at this position:

image_difference

Then using ‘arm-linux-addr2line’ it returned:

$ arm-linux-addr2line -f -e vmlinux 0xc00080dc
__create_page_tables
.tmp_kallsyms2.S:0

I searched for ‘__create_page_tables’ and it returned the file ‘arch/arm/kernel/head.S’ then I opened this file and started comparing the assembly code, and found the difference at this line:

orr     r6, r6, #(PHYS_OFFSET & 0x00f00000)

Then I searched for ‘PHYS_OFFSET’ and found this file: ‘kernel/include/asm-arm/arch-magus/memory.h’ :

#ifdef CONFIG_ARCH_MAGUS_FPGA
#define PHYS_OFFSET     UL(0xE2000000)
#elif defined CONFIG_ARCH_MAGUS_ADS
#define PHYS_OFFSET     UL(0x51000000)
#elif defined CONFIG_ACCIO_CM5208
#define PHYS_OFFSET     UL(0x51000000)
#elif defined CONFIG_ACCIO_CM5210
#define PHYS_OFFSET UL(0x51000000)
#elif defined CONFIG_ACCIO_A2818T
#define PHYS_OFFSET     UL(0x51000000)
#elif defined CONFIG_ACCIO_LITE
#define PHYS_OFFSET UL(0x50400000/*0x50C00000*/)
#else
#define PHYS_OFFSET     UL(0x51000000)
#endif

I noticed the address 0x50C00000 was commented (for my luck) and should be used for ‘ACCIO_LITE’, hmm I was using ‘ACCIO_A2818T’ because this was the board name I saw at u-boot bootloader source code. Then after removing 0x50400000 and using 0x50C00000 I reconfigured the kernel to use ACCIO_LITE.

Then I compiled the source code again, but no luck, it still no starting.

What should be wrong now?

I decide to compiled the kernel again and paying more attention at log messages, then I noticed these lines:

Data Size:    1471920 Bytes = 1437.42 kB = 1.40 MB
Load Address: 0x50408000
Entry Point:  0x50408000
  Image arch/arm/boot/uImage is ready

Ouch, it should be 0x50C08000, as in the original uImage file!

“Let’s search again like we did last year!”, replace ‘search’ by ‘twist’ to understand the lyrics 🙂

Searching for 0x50408000 returned this file:

kernel/arch/arm/mach-magus/Makefile.boot

This is the content:

        zreladdr-$(CONFIG_ACCIO_LITE)           := 0x50408000

Bingo! Replacing it by 0x50C08000 and compiling again fixed the booting issue.

See my compiled kernel booting here:

object$ loady
## Ready for binary (ymodem) download to 0x50C07FC0 at 115200 bps...                               
CxyzModem - CRC mode, 11503(SOH)/0(STX)/0(CAN) packets, 8 retries
## Total Size      = 0x001675f0 = 1471984 Bytes

object$ bootm 0x50C07FC0

 Starting kernel ...

Uncompressing Linux............................................................................................. done, .
[    0.000000] Linux version 2.6.24ssl (alan@aureo) (gcc version 3.4.6) #1 PREEMPT Sun Dec 9 17:37:11 BRST 2012
[    0.000000] CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00053177
[    0.000000] Machine: Solomon Magus Accio P1
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] CPU0: D VIVT write-back cache
[    0.000000] CPU0: I cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
[    0.000000] CPU0: D cache: 8192 bytes, associativity 4, 32 byte lines, 64 sets
[    0.000000] Built 1 zonelists in Zone order, mobility grouping off.  Total pages: 5080
[    0.000000] Kernel command line: mem=20M console=ttyS0,115200n8 init=/sbin/init root=/dev/mtdblock3
[    0.000000] intc: init info - ver=1,0
[    0.000000] gpio: init info - ver=1,0 
[    0.000000] clock: init info - ver=1,0 
[    0.000000] MAGUS Clocks : ARM-240.000 MHz, HCLK-120.000 MHz, PCLK-60.000 MHz, PERCLK1-60.000 MHz, PERCLK2-24.000 MHz
[    0.000000] PID hash table entries: 128 (order: 7, 512 bytes)
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [ttyS0] enabled
[    0.020000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.020000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.030000] Memory: 20MB = 20MB total
[    0.040000] Memory: 17268KB available (2680K code, 229K data, 72K init)
[    0.280000] Mount-cache hash table entries: 512
[    0.280000] CPU: Testing write buffer coherency: ok
[    0.300000] net_namespace: 64 bytes
[    0.310000] NET: Registered protocol family 16
[    0.340000] dma: init info - ver 1.0 fifosize=128, 8 channels
[    0.340000] MAGUS cpu freq change driver v1.0
[    0.350000] 
[    0.350000] cpufreq: magus_set_target: request for target_freq = 240000 KHz
[    0.360000] cpufreq: magus_set_target: cur_pll_out = 240000 KHz, cur_arm_freq = 240000 KHz
[    0.390000] SCSI subsystem initialized
[    0.400000] usbcore: registered new interface driver usbfs
[    0.410000] usbcore: registered new interface driver hub
[    0.420000] usbcore: registered new device driver usb
[    0.480000] NET: Registered protocol family 2
[    0.580000] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.590000] TCP established hash table entries: 1024 (order: 1, 8192 bytes)
[    0.600000] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
[    0.600000] TCP: Hash tables configured (established 1024 bind 1024)
[    0.610000] TCP reno registered
[    0.640000] Power Management for MAGUS. V0.1.1
[    0.640000] NetWinder Floating Point Emulator V0.97 (extended precision)
[    0.660000] yaffs Dec  9 2012 17:36:12 Installing. 
[    0.670000] io scheduler noop registered
[    0.670000] io scheduler deadline registered (default)
[    0.680000] lcdc: init info - dsg=0 ver=0
[    0.680000]       abc=1, dbc=1 rdback=1 pp=0 lut=1 stn=1 dma=1
[    0.690000] lcdc: init warn - actually ver 0001
[    0.690000] SSL_FB: disable wid: 1
[    0.700000] SSL_FB: disable wid: 2
[    0.720000] Serial: 8250/16550 driver $Revision: 1.90 $ 2 ports, IRQ sharing disabled
[    0.730000] ttyS0: autoconf (0x0000, 0xf000300c): uart: id=7000041
[    0.740000] type=16550A
[    0.740000] serial8250: ttyS0 at MMIO 0x0 (irq = 16) is a 16550A
[    0.750000] ttyS1: autoconf (0x0000, 0xf000400c): uart: id=7000041
[    0.760000] type=16550A
[    0.760000] serial8250: ttyS1 at MMIO 0x0 (irq = 17) is a 16550A
[    0.770000] Driver 'sd' needs updating - please use bus_type methods
[    0.780000] Driver 'sr' needs updating - please use bus_type methods
[    0.790000] NAND Driver, (c) 2007 Solomon Systech
[    0.790000] nfc: init info - ver=100 buf=4224
[    1.800000] nfc nand reset tout
[    1.800000] nfc: init info - ver=100 buf=4224
[    1.800000] No NAND device found!!!
[    1.810000] spi: init info - ver=1.0 fifo=16 slaves=5 master=1
[    1.820000] spi: init info - ver=1.0 fifo=16 slaves=5 master=1
[    1.940000] ehci ehci: ssl ehci
[    1.940000] ehci ehci: new USB bus registered, assigned bus number 1
[    1.950000] ehci ehci: irq 14, io mem 0x08403000
[    1.970000] ehci ehci: USB 0.0 started, EHCI 1.00, driver 10 Dec 2004
[    1.980000] usb usb1: configuration #1 chosen from 1 choice
[    1.980000] hub 1-0:1.0: USB hub found
[    1.990000] hub 1-0:1.0: 1 port detected
[    2.100000] usb usb1: Product: ssl ehci
[    2.100000] usb usb1: Manufacturer: Linux 2.6.24ssl ssl ehci
[    2.110000] usb usb1: SerialNumber: ssl_ehci
[    2.110000] Initializing USB Mass Storage driver...
[    2.340000] CI reset done
[    2.400000] usb 1-1: new high speed USB device using ehci and address 2
[    2.520000] CI reset done
[    2.630000] usb 1-1: configuration #1 chosen from 1 choice
[    2.650000] usb 1-1: Product: 802.11 n WLAN
[    2.650000] usb 1-1: Manufacturer: Ralink
[    2.660000] usb 1-1: SerialNumber: 1.0
[    2.660000] usbcore: registered new interface driver usb-storage
[    2.670000] USB Mass Storage support registered.
[    2.680000] usbcore: registered new interface driver libusual
[    2.680000] i2c /dev entries driver
[    2.690000] i2c: init info - ver=1,0
[    2.700000] 
[    2.700000] cpufreq: magus_set_target: request for target_freq = 240000 KHz
[    2.710000] cpufreq: magus_set_target: cur_pll_out = 240000 KHz, cur_arm_freq = 240000 KHz
[    2.720000] TCP cubic registered
[    2.720000] NET: Registered protocol family 1
[    2.730000] NET: Registered protocol family 17
[    2.730000] VFS: Cannot open root device "mtdblock3" or unknown-block(0,0)
[    2.740000] Please append a correct "root=" boot option; here are the available partitions:
[    2.750000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

There is too much work to be done. I need to add flash memory support and layout to it load the file-system. No problem, now I can see it starting, then everything will be more easy 😉

Rodando o uClinux nos microcontroladores ARM Cortex-M3

Se você está querendo rodar o uClinux num processador Cortex-M3/M4 então estes links poderão ajudar:

http://electronicdesign.com/article/embedded/practical-advice-running-uclinux-cortexm3m4-74443

https://video.linux.com/videos/running-uclinux-on-arm-cortex-m3-platform

https://github.com/EmcraftSystems\

Alguns microcontroladores que seriam interessantes para rodar o uClinux:

– STM32F427VGT6 (LQFP100) com 1MB e 256KB de RAM
– STM32F437IIH6 (UFBGA176) com 2MB e 256KB de RAM

Leituras sobre reconhecimento de voz

Dicas de como melhorar o reconhecimento de voz usando o Julius:
http://www.ibm.com/developerworks/opensource/library/os-tweakaudiomodel/index.html

Site com vários posts sobre o Julius e Sphinx:
http://srwoes.smargav.com

Identificação das características da voz para autenticar usuário:
http://expertpages.com/news/voiceprint_identification.htm

Site com vários posts sobre reconhecimento de voz:
http://it4gh.com/wp/

Reconhecedor de voz online chamado KIKU implementado usando o julius (correção, apenas na versão Desktop ele usa o julius) :
http://www.workinprogress.ca/KIKU/dictation.php