2009年8月18日 星期二

Kill u-boot in the beagle board

If you want to boot up Linux kernel on the beagle board. You need to have two different-phase bootloaders for kernel. The first phase is xloader which take cares CPU, memory, vector table setup stuff. The second one is uboot, it provides interactive commands, verbose booting environment setup, initialization for lots perhiphals of SoC. Of course, it loads the kernel image eventually. But it might not be the best choice for you. Sometimes you just want to get into the kernel, that's it.

I did some dirty hack here:

http://0xlab.org/~matt/kill-uboot-patches/

which against xloader
http://gitorious.org/x-load-omap3/mainline/commit/319b26586fafb86f919f514bcd175838aaab96b3

After applying these patches, you just need to put your xloader(MLO) and your kernel into SD card. Make beagle board boot from SDcard then. You will get a running kernel. But this is still not flexible somehow. Like, you need to edit and re-compile the xloader to change your kernel cmdline. My next plan is to support Qi boot loader in the beagle board.

2009年8月2日 星期日

Dual MMC/SDIO support on Beagle board.

My recent work is to add 2nd MMC/SD support for Beagle board.
The reason is simple, the 1st MMC/SD slot could be used as bootable device, the 2nd one could be the WLAN card interface (SDIO).

To achieve this, you need to tinker your beagle board like the following.

1. Attach the jumper on the location of J3(see schematic).
2. Make a home brew cable to wire up the SDIO interface.

The WLAN module shown on the below picture is GH600 from Azurewave.
Its corresponding GPL-ed driver is available.

http://android.git.kernel.org/?p=platform/system/wlan/broadcom.git;a=summary



In the host side, couple patches could make this work.

http://gitorious.org/0xlab-kernel

Enabling the 2nd MMC/SDIO slot has two approaches. The first one is to wire up the MMC2 slot directly. But the operating voltage of these ports are based on 1v8. Fortunately, the SDIO of this module could be signaling as low as 1v8. In this case,
wiring up to the module directly is much simple.

If the operating voltage of your WLAN module is around 2v6~3v3, transceiver is you plan B. Either designing a level shift circuit or using available voltage level translator could fulfill this requirement. I would suggest using level shift IC such as TXS0108E. TXS0108E is a level shift IC, whcih is designed for the expansion of MMC/SD/SDIO interface particularly.