While I might be a little late in getting it, I finally have it. The STM32F0-Discovery Kit. This little board is awesome! Besides having a ton of usable I/O pins, it has pads for your own crystal (PTH or SMT) and has a nice speed on it with no crystal. You can get 48Mhz with a internal 8MHz OSC. and a 6x PLL!

It sports the STM32F051R8, Here is what I think makes it stand out.

ARM 32-bit Cortex®-M0 CPU (48 MHz max)
64 Kbytes of Flash memory
8 Kbytes of SRAM with HW parity checking

Up to 55 fast I/Os (Up to 36 I/Os with 5 V tolerant capability)
Up to 11 timers

It also has 96-bit unique ID… perfect for security in reprogramming prevention.

5-channel DMA controller
1 × 12-bit, 1.0 μs ADC (up to 16 channels)
One 12-bit D/A converter (yes! a DAC ) I can see composite video in the future Open-mouthed smile

As well as most other things you expect from a ARM type MCU. And its all packed on a nice PCB with a free Prototype PCB included! That should help a ton of people start off.

ST includes a on board programmer as usual. With the ability to use it as a standalone programmer. Which is awesome! Compared to the STM32F4-Discovery it’s a slight bit smaller but almost the same size.


BeagleBoard-xM – Part 2. SD Card Setup

Ok I was going to write a whole thing on how to do this but it makes more sense to make a small video with captions. No sound sorry. I dont have one of those sexy over the internet voices 🙂

Also… I am usually listening to music when working on my PC its relaxing and helps me concentrate.

Some settings to know if you’re a pro already:

Create Partition #1:
SIZE:  117.63MB (MAX)

Create Partition #2:
SIZE:  > 1GB
LABEL: Angstrom

Note: To install gparted - sudo apt-get install gparted

BeagleBoard-xM – Part 1. Some Basic Info

As you may know i got my hands on a Beagleboard-xM. This things seems so cool but is the most fustrating board i experienced. Perhaps that’s because im not that linux savvy.

From what can tell the most important first step in this stuff is booting the uSD(micro sd) card it came with. Which is simple… Make sure everything is plugged except power. The last thing you should plug is power… to avoid any voltage spikes.

Ok since i know my board works the next thing i wanted to do is create my own uSD card with linux and stuff. The way i see it is… YOU NEED LINUX… lets leave it at that. Without linux you will have headaches. I have linux installed in a VM and on a second PC/Laptop. I use the laptop for my work mainly because it has a built in SD reader which simplifies things a lot.

Ok from what i can tell the SD card has to have 2 partitions.
Partition #1. FAT32 (Should have BOOT & LBA flags) Should be at least 128MB to be safe.
Partition #2. EXT3 This should fill the rest of the card.

The FAT32 partition is what we would call the BOOT partition. It will hold the uImage (linux image) and some other files. Ill get into that when the time comes.

The EXT3 partition is what we would call the ROOTFS or Root Filesystem which will hold the actual linux filesystem and everything you ever do on this beast.

I would recommend getting a 4GB SD card for a good performance amount of space. What i will be covering in the upcoming parts are:

1. How to Partition the SD card
2. Using Narcissus to build a test uImage and RootFS.
3. Loading SD card with our newly built uImage and RootFS.
4. Creating scripts for booting the board and placing them on SD card.
5. Testing our creation on live hardware.

Wish me luck. As this is something im learning on the fly and plan on explaining here to help others. There is documention online on this but nothing that good to get someone started up from nothing. I have had my board for about 2 days now and still have not been able to boot a custom linux file system. So as soon as i can… you can bet you all will be able to as well.

Beagleboard-xM Startup

Copied from Putty:

Texas Instruments X-Loader 1.4.4ss (Aug 19 2010 - 02:49:27)
Beagle xM Rev A
Reading boot sector
Loading u-boot.bin from mmc

U-Boot 2010.03-dirty (Aug 20 2010 - 20:50:46)

OMAP3630/3730-GP ES2.0, CPU-OPP2, L3-165MHz,
OMAP3 Beagle board + LPDDR/NAND
I2C:   ready
DRAM:  512 MB
NAND:  0 MiB
*** Warning - bad CRC or NAND, using default environment

In:    serial
Out:   serial
Err:   serial

Probing for expansion boards, if none are connected you'll see a harmless I2C error.

No EEPROM on expansion board
Beagle xM Rev A
Die ID #440000019ff80000015eeaa102011004
Hit any key to stop autoboot:  3  2  1  0
mmc1 is available
The user button is currently PRESSED.
reading user.scr

755 bytes read
Running bootscript from mmc ...
## Executing script at 80200000
mmc1 is available
reading ramdisk.gz

19960110 bytes read
reading uImage

3190568 bytes read
Booting from ramdisk ...
## Booting kernel from Legacy Image at 80200000 ...
   Image Name:   Angstrom/2.6.32/beagleboard
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3190504 Bytes =  3 MB
   Load Address: 80008000
   Entry Point:  80008000
   Verifying Checksum ... OK
   Loading Kernel Image ... OK

Starting kernel ...

Uncompressing Linux................................................................................................................................................................................................................ done, booting the kernel.
[    0.000000] Linux version 2.6.32 (ubuntu@ip-10-204-115-71) (gcc version 4.3.3 (GCC) ) #3 PREEMPT Wed Aug 18 15:53:03 UTC 2010
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=10c53c7f
[    0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: OMAP3 Beagle Board
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] OMAP3630/DM3730 ES1.0 (l2cache iva sgx neon isp 192mhz_clk )
[    0.000000] SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x100000
[    0.000000] Reserving 16777216 bytes SDRAM for VRAM
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 117760
[    0.000000] Kernel command line: console=tty0 console=ttyS2,115200n8 mem=80M@0x80000000 mem=384M@0x88000000 mpurate=1000 buddy=none camera=lbcm3m1 vram=16M omapfb.vram=0:8M,1:4M,2:4M omapfb.mode=dvi:1024x768MR-16@60 omapdss.def_disp=dvi root=/dev/ram0 rw ramdisk_size=131072 initrd=0x88000000,128M rootfstype=ext2
[    0.000000] Beagle expansionboard: none
[    0.000000] Beagle cameraboard: lbcm3m1
[    0.000000] PID hash table entries: 2048 (order: 1, 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: 80MB 384MB = 464MB total
[    0.000000] Memory: 316288KB available (5880K code, 671K data, 204K init, 0K highmem)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:402
[    0.000000] Clocking rate (Crystal/Core/MPU): 26.0/332/600 MHz
[    0.000000] Reprogramming SDRC clock to 332000000 Hz
[    0.000000] GPMC revision 5.0
[    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
[    0.000000] Total of 96 interrupts on 1 active controller
[    0.000000] OMAP GPIO hardware version 2.5
[    0.000000] OMAP clockevent source: GPTIMER12 at 32768 Hz
[    0.000000] Console: colour dummy device 80x30
[    0.000000] console [tty0] enabled
[    0.000000] Calibrating delay loop... 498.87 BogoMIPS (lpj=1945600)
[    0.000000] Mount-cache hash table entries: 512
[    0.000000] CPU: Testing write buffer coherency: ok
[    0.000000] tmpfs: No value for mount option 'mode'
[    0.000000] devtmpfs: initialized
[    0.000000] regulator: core version 0.5
[    0.000000] NET: Registered protocol family 16
[    0.000000] Beagle cameraboard: registering i2c2 bus for lbcm3m1
[    0.000000] Found NAND on CS0
[    0.000000] Registering NAND on CS0
[    0.000000] Unable to get DVI reset GPIO
[    0.000000] omap_init_mbox: platform not supported
[    0.000000] Target VDD1 OPP = 4, VDD2 OPP = 2
[   66.129547] OMAP DMA hardware revision 5.0
[   66.135864] bio: create slab <bio-0> at 0
[   66.137145] SCSI subsystem initialized
[   66.138519] usbcore: registered new interface driver usbfs
[   66.138671] usbcore: registered new interface driver hub
[   66.138854] usbcore: registered new device driver usb
[   66.139251] i2c_omap i2c_omap.1: bus 1 rev4.0 at 2600 kHz
[   66.141937] twl4030: PIH (irq 7) chaining IRQs 368..375
[   66.141998] twl4030: power (irq 373) chaining IRQs 376..383
[   66.142303] twl4030: gpio (irq 368) chaining IRQs 384..401
[   66.144012] regulator: VUSB1V5: 1500 mV normal standby
[   66.144256] regulator: VUSB1V8: 1800 mV normal standby
[   66.144500] regulator: VUSB3V1: 3100 mV normal standby
[   66.148132] twl4030_usb twl4030_usb: Initialized TWL4030 USB module
[   66.148559] regulator: VMMC1: 1850 <--> 3150 mV normal standby
[   66.148834] regulator: VDAC: 1800 mV normal standby
[   66.149078] regulator: VPLL2: 1800 mV normal standby
[   66.149322] regulator: VSIM: 1800 <--> 3000 mV normal standby
[   66.149688] regulator: VAUX3: 1800 mV normal standby
[   66.150054] regulator: VAUX4: 1800 mV normal standby
[   66.150238] i2c_omap i2c_omap.2: bus 2 rev4.0 at 400 kHz
[   66.157714] i2c_omap i2c_omap.3: bus 3 rev4.0 at 100 kHz
[   66.158935] Switching to clocksource 32k_counter
[   66.167877] musb_hdrc: version 6.0, musb-dma, otg (peripheral+host), debug=0
[   66.168212] musb_hdrc: USB OTG mode controller at fa0ab000 using DMA, IRQ 92
[   66.168243] musb_hdrc musb_hdrc: MUSB HDRC host driver
[   66.168395] musb_hdrc musb_hdrc: new USB bus registered, assigned bus number 1
[   66.168548] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[   66.168609] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   66.168640] usb usb1: Product: MUSB HDRC host driver
[   66.168670] usb usb1: Manufacturer: Linux 2.6.32 musb-hcd
[   66.168731] usb usb1: SerialNumber: musb_hdrc
[   66.169372] hub 1-0:1.0: USB hub found
[   66.169433] hub 1-0:1.0: 1 port detected
[   66.170501] NET: Registered protocol family 2
[   66.170745] IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
[   66.171325] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[   66.171722] TCP bind hash table entries: 16384 (order: 4, 65536 bytes)
[   66.171966] TCP: Hash tables configured (established 16384 bind 16384)
[   66.171997] TCP reno registered
[   66.172058] UDP hash table entries: 256 (order: 0, 4096 bytes)
[   66.172088] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[   66.172363] NET: Registered protocol family 1
[   66.172790] RPC: Registered udp transport module.
[   66.172851] RPC: Registered tcp transport module.
[   66.172882] RPC: Registered tcp NFSv4.1 backchannel transport module.
[   66.173187] Trying to unpack rootfs image as initramfs...
[   66.176055] rootfs image is not initramfs (no cpio magic); looks like an initrd
[   66.741271] Freeing initrd memory: 131072K
[   66.742065] omap-iommu omap-iommu.0: isp registered
[   66.743927] VFS: Disk quotas dquot_6.5.2
[   66.744049] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[   66.745239] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[   66.746124] JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat, Inc.
[   66.746948] msgmni has been set to 874
[   66.750671] alg: No test for stdrng (krng)
[   66.750976] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 254)
[   66.751037] io scheduler noop registered
[   66.751068] io scheduler deadline registered
[   66.751220] io scheduler cfq registered (default)
[   66.807617] OMAP DSS rev 2.0
[   66.807678] OMAP DISPC rev 3.0
[   66.807769] OMAP VENC rev 2
[   66.808013] OMAP DSI rev 1.0
[   67.144470] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[   67.162353] serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a ST16654
[   67.179565] serial8250.1: ttyS1 at MMIO 0x4806c000 (irq = 73) is a ST16654
[   67.196746] serial8250.2: ttyS2 at MMIO 0x49020000 (irq = 74) is a ST16654
[   67.796722] console [ttyS2] enabled
[   67.806976] brd: module loaded
[   67.813385] loop: module loaded
[   67.817687] omap2-nand driver initializing
[   67.822113] No NAND device found!!!
[   67.825836] No NAND device found!!!
[   67.830352] usbcore: registered new interface driver catc
[   67.835876] catc: v2.8:CATC EL1210A NetMate USB Ethernet driver
[   67.841949] usbcore: registered new interface driver kaweth
[   67.847625] pegasus: v0.6.14 (2006/09/27), Pegasus/Pegasus II USB Ethernet driver
[   67.855285] usbcore: registered new interface driver pegasus
[   67.860992] rtl8150: v0.6.2 (2004/08/27):rtl8150 based usb-ethernet driver
[   67.868011] usbcore: registered new interface driver rtl8150
[   67.873840] usbcore: registered new interface driver asix
[   67.879394] usbcore: registered new interface driver cdc_ether
[   67.885345] usbcore: registered new interface driver dm9601
[   67.891113] usbcore: registered new interface driver smsc95xx
[   67.897003] usbcore: registered new interface driver gl620a
[   67.902740] usbcore: registered new interface driver net1080
[   67.908538] usbcore: registered new interface driver plusb
[   67.914184] usbcore: registered new interface driver rndis_host
[   67.920257] usbcore: registered new interface driver cdc_subset
[   67.926330] usbcore: registered new interface driver zaurus
[   67.932037] usbcore: registered new interface driver MOSCHIP usb-ethernet driver
[   67.940124] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[   67.947021] ehci-omap ehci-omap.0: OMAP-EHCI Host Controller
[   67.953094] ehci-omap ehci-omap.0: new USB bus registered, assigned bus number 2
[   67.960754] ehci-omap ehci-omap.0: irq 77, io mem 0x48064800
[   67.979400] ehci-omap ehci-omap.0: USB 2.0 started, EHCI 1.00
[   67.985321] usb usb2: New USB device found, idVendor=1d6b, idProduct=0002
[   67.992218] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[   67.999511] usb usb2: Product: OMAP-EHCI Host Controller
[   68.004913] usb usb2: Manufacturer: Linux 2.6.32 ehci_hcd
[   68.010375] usb usb2: SerialNumber: ehci-omap.0
[   68.015655] hub 2-0:1.0: USB hub found
[   68.019531] hub 2-0:1.0: 3 ports detected
[   68.049804] Initializing USB Mass Storage driver...
[   68.054901] usbcore: registered new interface driver usb-storage
[   68.061004] USB Mass Storage support registered.
[   68.066040] mice: PS/2 mouse device common for all mice
[   68.071716] input: gpio-keys as /devices/platform/gpio-keys/input/input0
[   68.079589] input: twl4030_pwrbutton as /devices/platform/i2c_omap.1/i2c-1/1-0049/twl4030_pwrbutton/input/input1
[   68.090362] i2c /dev entries driver
[   68.094451] Linux video capture interface: v2.00
[   68.099456] omap-iommu omap-iommu.0: isp: version 1.1
[   68.105895] vpfe_init
[   68.108764] OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec
[   68.221923] mmci-omap-hs mmci-omap-hs.1: err -16 configuring card detect
[   68.229003] Registered led device: beagleboard::usr0
[   68.234191] Registered led device: beagleboard::usr1
[   68.240814] Registered led device: beagleboard::pmu_stat
[   68.247924] usbcore: registered new interface driver usbhid
[   68.253601] usbhid: USB HID core driver
[   68.257659] Advanced Linux Sound Architecture Driver Version 1.0.21.
[   68.264587] usbcore: registered new interface driver snd-usb-audio
[   68.330627] No device for DAI omap-mcbsp-dai-0
[   68.335174] No device for DAI omap-mcbsp-dai-1
[   68.339691] No device for DAI omap-mcbsp-dai-2
[   68.344177] No device for DAI omap-mcbsp-dai-3
[   68.348693] No device for DAI omap-mcbsp-dai-4
[   68.353179] OMAP3 Beagle SoC init
[   68.357360] asoc: twl4030 <-> omap-mcbsp-dai-0 mapping ok
[   68.368774] ALSA device list:
[   68.371856]   #0: omap3beagle (twl4030)
[   68.375823] oprofile: using arm/armv7
[   68.379821] TCP cubic registered
[   68.383087] NET: Registered protocol family 17
[   68.387664] NET: Registered protocol family 15
[   68.392211] lib80211: common routines for IEEE802.11 drivers
[   68.397979] ThumbEE CPU extension supported.
[   68.402343] Power Management for TI OMAP3.
[   68.406860] usb 2-2: new high speed USB device using ehci-omap and address 2
[   68.414978] Unable to set L3 frequency (400000000)
[   68.419921] Switched to new clocking rate (Crystal/Core/MPU): 26.0/332/1000 MHz
[   68.427337] IVA2 clocking rate: 800 MHz
[   68.596557] SmartReflex driver initialized
[   68.600799] omap3beaglelmb: Driver registration complete
[   68.611511] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[   68.619812] registered taskstats version 1
[   68.624664] fbcvt: 1024x768@60: CVT Name - .786M3-R
[   68.722015] usb 2-2: New USB device found, idVendor=0424, idProduct=9514
[   68.728790] usb 2-2: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   68.743133] Console: switching to colour frame buffer device 128x48
[   68.756652] hub 2-2:1.0: USB hub found
[   68.762817] hub 2-2:1.0: 5 ports detected
[   68.766967] regulator_init_complete: incomplete constraints, leaving VAUX4 on
[   68.774353] regulator_init_complete: incomplete constraints, leaving VAUX3 on
[   68.782165] regulator_init_complete: incomplete constraints, leaving VDAC on
[   68.789550] omap_vout omap_vout: probed for an unknown device
[   68.796508] RAMDISK: gzip image found at block 0
[   68.932678] mmc0: new high speed SDHC card at address 1234
[   68.948272] mmcblk0: mmc0:1234 SA04G 3.67 GiB
[   68.953125]  mmcblk0: p1 p2
[   69.081817] usb 2-2.1: new high speed USB device using ehci-omap and address 3
[   69.215911] usb 2-2.1: New USB device found, idVendor=0424, idProduct=ec00
[   69.229614] usb 2-2.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   69.248626] smsc95xx v1.0.4
[   69.343872] usb0: register 'smsc95xx' at usb-ehci-omap.0-2.1, smsc95xx USB 2.0 Ethernet, 22:44:84:e2:ca:f9
[   71.429687] VFS: Mounted root (ext2 filesystem) on device 1:0.
[   71.438354] devtmpfs: mounted
[   71.443817] Freeing init memory: 204K

INIT: version 2.86 booting

Please wait: booting...
Starting udev
[   73.628021] FAT: bogus number of reserved sectors
[   73.635284] VFS: Can't find a valid FAT filesystem on dev mmcblk0.
[   74.051391] FAT: bogus number of reserved sectors
[   74.058776] VFS: Can't find a valid FAT filesystem on dev mmcblk0p2.
Remounting root file system...
Caching udev devnodes
Populating dev cache
Configuring network interfaces... ifconfig: SIOCGIFFLAGS: No such device
udhcpc (v1.13.2) started
Sending discover...
Sending discover...
Sending discover...
No lease, forking to background
Setting up IP spoofing protection: rp_filter.
hwclock: can't open '/dev/misc/rtc': No such file or directory
Fri Aug 20 20:54:00 UTC 2010
hwclock: can't open '/dev/misc/rtc': No such file or directory
Configuring update-modules.
Configuring ti-dsplink-module.
Configuring ti-lpm-module.
Configuring util-linux-ng.
update-alternatives: Linking //bin/dmesg to dmesg.util-linux-ng
update-alternatives: Linking //bin/kill to kill.util-linux-ng
update-alternatives: Linking //bin/more to more.util-linux-ng
update-alternatives: Linking //sbin/mkswap to mkswap.util-linux-ng
update-alternatives: Linking //sbin/pivot_root to pivot_root.util-linux-ng
update-alternatives: Linking //sbin/sln to sln.util-linux-ng
update-alternatives: Linking //sbin/mkfs.minix to mkfs.minix.util-linux-ng
update-alternatives: Linking //sbin/fsck.minix to fsck.minix.util-linux-ng
update-alternatives: Linking //usr/bin/hexdump to hexdump.util-linux-ng
update-alternatives: Linking //usr/bin/last to last.sysvinit
update-alternatives: Linking //usr/bin/logger to logger.util-linux-ng
update-alternatives: Linking //usr/bin/mesg to mesg.sysvinit
update-alternatives: Linking //usr/bin/renice to renice.util-linux-ng
update-alternatives: Linking //usr/bin/wall to wall.sysvinit
update-alternatives: Linking //usr/bin/chfn to chfn.util-linux-ng
update-alternatives: Linking //usr/bin/newgrp to newgrp.util-linux-ng
update-alternatives: Linking //usr/bin/chsh to chsh.util-linux-ng
update-alternatives: Linking //bin/login to login.util-linux-ng
update-alternatives: Error: not linking //sbin/vipw to vipw.util-linux-ng since //sbin/vipw exists and is not a link
update-alternatives: Linking //sbin/vigr to vigr.util-linux-ng
update-alternatives: Linking //usr/bin/reset to reset.util-linux-ng
update-alternatives: Linking //usr/bin/setsid to setsid.util-linux-ng
update-alternatives: Linking //usr/bin/chrt to chrt.util-linux-ng
update-alternatives: Linking //sbin/hwclock to ../bin/busybox
update-alternatives: Linking //sbin/shutdown to shutdown.sysvinit
update-alternatives: Linking //sbin/reboot to reboot.sysvinit
update-alternatives: Linking //sbin/halt to halt.sysvinit

INIT: Entering runlevel: 5

Creating Dropbear SSH server RSA host key.
Will output 1024 bit rsa secret key to '/etc/dropbear/dropbear_rsa_host_key'
Generating key, this may take a while...
Public key portion is:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgwCOCoZMwVprkTNHaNnmANYJZ7pwtScgwtL1yBqkXHuH3pbMhBgznK6MDYPMTeRXJRjJHtBvyfQu35Yepn3U0QzwkccAm2Kd++fo265yAe7LQTcI1nN1O+0jWArse401bU+I27Unb4RP2QnOanScVGiPxFhHgM9fqFb6IXhimEtLS+Pn root@beagleboard
Fingerprint: md5 c3:d9:32:e3:94:2c:c1:43:66:9f:8e:ab:d1:28:12:a9
Starting Dropbear SSH server: dropbear.
Starting syslogd/klogd: done

|       |                  .-.                      
|   |   |-----.-----.-----.| |   .----..-----.-----.
|       |     | __  |  ---'| '--.|  .-'|     |     |
|   |   |  |  |     |---  ||  --'|  |  |  '  | | | |
'---'---'--'--'--.  |-----''----''--'  '-----'-'-'-'
                -'  |

The Angstrom Distribution beagleboard ttyS2

Angstrom 2010.7-test-20100820 beagleboard ttyS2

beagleboard login: root

WonderMedia Part 2.

Ok i found some great info on this WonderMedia WM8505 part. Using my awesome google-ing skills i found some great stuff including a Data sheet for the WM8505… On a side note… Still not able to get into original U-Boot.bin 😦

I uploaded it to my site for all:

I havent completely checked out the files yet only the datasheet. So im off to investigate some more 😀

UPDATE: Looking at the PDF my worst fears have came true. It has a built in LCD controller which means i wont find a ton of info on the LCD. But im sure i can still get some INIT code and Pinouts if i look hard enough 🙂

Chinese Wonder* (pun)

Ok i have one of those tiny 7 inch laptops which has a ARM and WinCE/Android running on it..

While this is pretty cool to have i have no use for it. Unless i start learning how to program for android. Which i will not even get into. The cool thing i like about this laptop is the 7in LCD and the fact it has a mouse and keyboard built in. I would love to be able to use this for something other than what it has.

This so called PC uses a WM8505 Processor which in it self is quite hard to find good info on..

Here are some specs on my model:

Max Resolution: 800 x 480 px
OS Language: English
Operating System: Windows CE 6.0 or Android
CPU: ARM-WM8505 or VIA VT8505( ARM926EJ-S)
Chipset: WM8505
Memory: 128 MB
Flash Disk: 2GB Built-in
External Memory: SD/MMC card (16GB Max.)
LAN: RJ45, 10/100Mbps
WLAN: 802.11b/g Wifi / Wireless LAN
Speaker: Internal Speaker x 2
Touchpad: Yes
Keyboard: 80-key keyboard
2 * USB External
1 * USB Internal
1 * RJ45 LAN
1 * 3.5mm Microphone
1 * 3.5mm Headphone
1 * SD/MMC card slot

Now for the GOOD the BAD and the UGLY!

The Good… The main board has a UART port on it and i am able to get valuable information from it. I can even access a terminal on it.

Here is what i get on boot:

WonderMedia Technologies, Inc. W-Load Version : ethaddr............found U-Boot 1.1.4 (Apr  1 2010 - 16:26:54) WonderMedia Technologies, Inc. WMT U-Boot Version : U-Boot code: 03F80000 -> 03FB9294  BSS: -> 040076AC RAM Configuration: Bank #0: 00000000 128 MB boot from spi flash. flash:      Bank1: FFF80000 -- FFFFFFFF      Bank2: FF780000 -- FFF7FFFF Flash:  8.5 MB In:    serial Out:   serial Err:   serial ### main_loop entered: bootdelay=1 bootcmd="nand read 3c00000 12f00000 100000;logo show;run text1" CE0: NAND FLASH ID: 0xECD514B6 CE0: NAND FLASH Name: SAMSUNG_K9XXG08UXM (2048 MB) block4095 tag=74624230  version =1 block4094 tag=62743142  version =1 g_nfinfo[0].id = 0xE, g_nfinfo[1].id = 0xFFFF Read finsih show logo ..... LCD param (setting): 1,30000,8,800,480,48,40,40,3,29,13 PWM param (setting): 0,4,599,599 LCD FrameBuffer = 0x07900000, BMP Address = 0x03C00000 Loading BMP ..... ok no string .... PWM0 input freq = 47916666 Hz, output freq = 19998 Hz PWM0 register setting: scalar = 3, period = 598, duty = 598 "V1.5.2" Execute register operation:   reg op: 0xD8110064 | 0xC   reg op: 0xD811008C | 0xC   reg op: 0xD81100B4 & 0xFFFFFFFB   reg op: 0xD81100B4 | 0x8   reg op: 0xD8130054 | 0x1 ### main_loop: bootcmd="nand read 0 0 300000;bootm 0" Hit any key to stop autoboot:  0 WMT # 

When I type help this is what i get:

WMT # help
?       - alias for 'help'
autoscr - run script from memory
base    - print or set address offset
bdinfo  - print Board Info structure
boot    - boot default, i.e., run 'bootcmd'
bootd   - boot default, i.e., run 'bootcmd'
bootm   - boot application image from memory
bootp   - boot image via network using BootP/TFTP protocol
cleanlcd - clean LCD screen
cmp     - memory compare
coninfo - print console devices and information
cp      - memory copy
crc32   - checksum calculation
dhcp    - invoke DHCP client to obtain IP/boot params
diskboot- boot from IDE device
dmacp     - dma memory copy
echo    - echo args to console
erase   - erase FLASH memory
fatinfo - print information about filesystem
fatload - load binary file from a dos filesystem
fatls   - list files in a directory (default /)
fatstore - store binary file to a dos filesystem
flinfo  - print FLASH memory information
go      - start application at address 'addr'
help    - print online help
ide     - IDE sub-system
iminfo  - print header information for application image
imls    - list all images found in flash
itest   - return true/false on integer compare
lcdinit - initialize LCD
loadb   - load binary file over serial line (kermit mode)
loads   - load S-Record file over serial line
show    -
loop    - infinite loop on address range
md      - memory display
mii     - MII utility commands
mm      - memory modify (auto-incrementing)
mmcinit - init mmc card
mtest   - simple RAM test
mw      - memory write (fill)
nand    - NAND sub-system
nfs     - boot image via network using NFS protocol
nm      - memory modify (constant address)
ping    - send ICMP ECHO_REQUEST to network host
printenv- print environment variables
protect - enable or disable FLASH write protection
randmac - generate a random MAC address and save to "ethaddr" environment variable
rarpboot- boot image via network using RARP/TFTP protocol
reset   - Perform RESET of the CPU
run     - run commands in an environment variable
saveenv - save environment variables to persistent storage
sdwaitins - wait sd card inserted or removed
sdwaitins 0 -- waiting removed
sdwaitins 1 -- waiting inserted
setenv  - set environment variables
sleep   - delay execution for some time
textout - show text to the screen
textout x y "str" color
color is 24bit Hex, R[23:16], G[15:8], B[7:0]
for example: textout 0 0 "hello world" FFFFFF
tftpboot- boot image via network using TFTP protocol
tmpt     - execute Mass Production Tool
uploadfile- Transfer the spi flash image to the server.
version - print monitor version

While this maybe cool and usefull it will suck if i can not create my own code.

The BAD…. Since im mostly interested in the LCD and keyboard and could care less about the processor or anything else i am stuck.
As you might expect there is no datasheet for either and manually reverse engineering both is beyond me since i dont have the necessary tools.

The Ugly… Now what i am trying to figure out is how do i get into a U-Boot.bin file to get all the source. This is beyond me as well. The U-Boot.bin file has the bootloader and from what i can see some LCD init stuff and a ton more. To find out what can be expected in the file i used my Linux OS (debian) to search for strings in the file…

(this is from Cygwin tho easier to copy/paste)

Jason@Jason-PC ~/ARM8505/script
$ strings u-boot.bin
U-Boot 1.1.4 (Apr  1 2010 - 16:26:54)
Font 12x22
LCD panel ID????
Un-Support LCD panel ID ( %d )
LCD FrameBuffer = 0x%08X, BMP Address = 0x%08X
LCD param (default): 1,25000,8,800,480,48,40,40,3,29,13
LCD param (setting): %s
LCD param Error: expected version 1, but get %d
LCD param Error: need %d arg count, but get %d
So use default LCD param: 1,25000,8,800,480,48,40,40,3,29,13
LCD param Error: the string length of extra register opreation length = %d, it is too long, it should be less than %d
Not excute extra register operation for LCD
LCD already initialized
Loading BMP .....
no string ....
Execute register operation for LCD:

Obviously there is more but i clipped out what wasnt relevant to save scroll space…

I know know there are quite a few things related to the LCD in there which is something i will need. I ran across a program called binwalk and tried it on the uboot bin file and got:

Scan Time:    Jan 10, 2012 @ 22:04:41
Magic File:   /usr/local/etc/binwalk/magic.binwalk
Signatures:   75
Target File:  u-boot.bin
MD5 Checksum: d2c6f4e628ee5594caaccedb95fda7a6
184350         0x2D01E        LZMA compressed data, properties: 0x01, dictionary size: 8388608 bytes, uncompressed size: 128 bytes
185224         0x2D388        LZMA compressed data, properties: 0x03, dictionary size: 8388608 bytes, uncompressed size: 64 bytes
186634         0x2D90A        LZMA compressed data, properties: 0x01, dictionary size: 8388608 bytes, uncompressed size: 4194432 bytes
231695         0x3890F        LZMA compressed data, properties: 0xD8, dictionary size: 65011712 bytes, uncompressed size: 1 bytes

This leads me to believe that there is something i can extract and decompress … Look at address 186634 (0x2D90A) the uncompressed size is 4,194,432 bytes.

That is just about 4MB big… Also since there are strings easily readable in there it also leads me to think that there are most likely normal files i can open. (i hope)


The Only BIG problem im having is… getting the data out of the u-boot.bin which is the main goal. I made a simple program to extract data from a file at a specific offset for a specifiv length and output it to a file. All in binary. While it does the job it doesnt work . I think its because i dont know when the archive ends? Or when it starts really.

While the above binwalk gives me a address i doubt its to the actual compressed file. LZMA compressed file have a magic number which usually is something like :

0x5D, 0x00,0x00,0x08 or something similar. I know the 0x5D is correct. But the above binwalk points to the Properties of said location… like 186634 offset is a 0x01 and not a 0x5D…

So if anyone knows how to extract this stuff please help me out.

STM32 Intro Using Crossworks

I will be release a small series on how to get started using the STM32F4-Discovery which can be applied to STM32 in general.

The series isnt planned out much but i intend to show how to blink a LED from CrossStudio Project creation to Programming the device.

I hope you all will enjoy this series and feel free to comment.

Create a free website or blog at

Up ↑