Compiling the iMote2 kernel: Difference between revisions
From University of Washington - Ubicomp Research Page
Jump to navigationJump to search
mNo edit summary |
mNo edit summary |
||
Line 1: | Line 1: | ||
== Downloads == | == Downloads == | ||
* PlatformX 1.0 Release from [http://prdownloads.sourceforge.net/platformx/SG2Release-1_0.tgz?download sourceforge.net] | * PlatformX 1.0 Release from [http://prdownloads.sourceforge.net/platformx/SG2Release-1_0.tgz?download sourceforge.net] mirrored [{{SERVER}}/files/imote2/mirrors/platformX/SG2Release-1_0.tgz here] | ||
* MSB2 Patches from <tt>msp/system/kernel</tt> [{{SERVER}}/files/imote2/patches/msb2_patches.tgz available here] | * MSB2 Patches from <tt>msp/system/kernel</tt> [{{SERVER}}/files/imote2/patches/msb2_patches.tgz available here] | ||
* iMote2 Toolchain (either the normal handheld.org toolchain or perferably the [{{SERVER}}/files/imote2/toolchain/imote2_toolchain_3.4.3_binutils.tgz Mainstone version with an updated version of binutils] | * iMote2 Toolchain (either the normal handheld.org toolchain or perferably the [{{SERVER}}/files/imote2/toolchain/imote2_toolchain_3.4.3_binutils.tgz Mainstone version with an updated version of binutils] | ||
* the 2.6.14 linux kernel available from [http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.gz kernel.org] | * the 2.6.14 linux kernel available from [http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.14.tar.gz kernel.org] mirrored [{{SERVER}}/files/imote2/mirrors/kernel/linux-2.6.14.tar.gz here] | ||
* The Zydas ZD1211(b) wifi driver available [{{SERVER}}/files/imote2/zd1211/zd1211-driver-r83.tgz here] | * The Zydas ZD1211(b) wifi driver available [{{SERVER}}/files/imote2/mirrors/zd1211/zd1211-driver-r83.tgz here] | ||
** Official version is available from [http://www.atheros.com/RD/downloads/download_ZD1211B.htm atheros.com] | ** Official version is available from [http://www.atheros.com/RD/downloads/download_ZD1211B.htm atheros.com] | ||
** Non-officail versions (with bug fixes) are available from [http://zd1211.ath.cx/download/ zd1211.ath.cx] | ** Non-officail versions (with bug fixes) are available from [http://zd1211.ath.cx/download/ zd1211.ath.cx] |
Revision as of 02:24, 7 December 2006
Downloads
- PlatformX 1.0 Release from sourceforge.net mirrored here
- MSB2 Patches from msp/system/kernel available here
- iMote2 Toolchain (either the normal handheld.org toolchain or perferably the Mainstone version with an updated version of binutils
- the 2.6.14 linux kernel available from kernel.org mirrored here
- The Zydas ZD1211(b) wifi driver available here
- Official version is available from atheros.com
- Non-officail versions (with bug fixes) are available from zd1211.ath.cx
Steps
Extracting all the Images
-
Assuming you placed the platformX release, patches, and kernel in the same directory you could extract them all using the following commands:
<bash>tar zxf linux-2.6.14.tar.gz
tar zxf SG2Release-1_0.tgz
tar zxf msb2_patches.tgz</bash>
Patch the kernel
-
First we apply the SG2 release patches then we apply our MSB2 patches:
<bash>cd linux-2.6.14
echo "Applying SG2 Patches"
patch -p1 < ../SG2Release-1_0/src/patch-2.6.14-sg2-10
echo "Applying MSB2 Patches"
patch -p1 < ../msp-linux-2.6.14-pxa-mmc.patch
patch -p1 < ../msp-linux-2.6.14-uart.patch
patch -p1 < ../msp-linux-2.6.14-sd-detect.patch</bash>
Configure the kernel
-
At this point you can either use the normal SG2 configuration or apply the msb2 standard configuration. Be sure to add your toolchain to your path, if you've installed it in /usr/local/arm/3.4.3_binutils you could do something like this:
<bash>export PATH=/usr/local/arm/3.4.3_binutils/bin/:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-</bash>
- Device Drivers
- USB Support
- USB GadgetSupport
- Support for USB Gadgets (compile into the kernel)
- USB Gadget Drivers (compile into the kernel)
- Make sure 'Ethernet Gadget (with CDC Ethernet Support)' is selected
- Select 'RNDIS support (EXPERIMENTAL)'
- USB GadgetSupport
- USB Support
- Networking
- Networking options
- IP: Advanced router
- IP: Policy routing (will not appear unless "Advanced router" is set)
- Networking options
SG2 Configuration
-
<bash>export ARCH=arm
export CROSS_COMPILE=arm-linux-
make stargate2_defconfig
make oldconfig</bash>
MSB2 Configuration
-
<bash>export ARCH=arm
export CROSS_COMPILE=arm-linux-
cp ../msp-linux-2.6.14-config ./.config
make oldconfig</bash>
RNDIS (Windows XP) Ethernet Gadget Configuration
-
If you'd like to be able to connect the iMote2 to a Windows XP host instead of a linux host you can use the RNDIS patch to add Windows XP support to the kernel. Download the patch from here to your build directory. Note, that this patch currently compiles support into the kernel and not as a module.
<bash>export ARCH=arm
export CROSS_COMPILE=arm-linux-
cp ../msp-linux-2.6.14-config ./.config
patch -p1 < ../msp-linux-2.6.14-winXP-rndis.patch
make oldconfig</bash>
Next you will need to do a make menuconfig (after setting up the ARCH/CROSS_COMPILE/path) and select:
Configuring the kernel to use multiple Internet connections
-
In order for the iMote to selectively use multiple Internet connections simultaneously, you must enable "policy routing" in the kernel:
<bash>make menuconfig</bash>
Select the following:
Compile the kernel
-
You can then build the kernel as you normally would or perform any additional steps you want to before building. Note that if you are using the Mainstone tools instead of a 3.4.1 toolchain installed in /usr/local/arm/3.4.1 you will need to edit Makefile.platx and comment out the export lines at the top.
<bash>...
- export ARCH=arm
- export CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-
- export PATH:=${PATH}:/usr/local/arm/3.4.1/bin/
Building the zd1211(b) wireless driver
-
While the newest versions of Linux support the zd1211(b) out-of-the-box, the kernel used on the iMote does not. Therefore, you must download and compile the driver seperately:
- Obtain and extract the latest version from [1]. As of the time of this edit, this was r83. You can do this in one step with: <bash>wget http://zd1211.ath.cx/download/zd1211-driver-r83.tgz -O - | tar xvzf -</bash>
- cd to the newly-created directory.
- Edit the Makefile, and change the MODPATH (on line 13) to point at your modules/lib/modules/2.6.14_r1.0/ directory.
- Compile and install:
Flashing the kernel
-
You will need to specify the platform (SG2/Intel Mote2) and JTAG cable that you are using (Intel(R) JTAG Cable/JTAG CPU) to XFlash. The following assumes you are programming an Intel Mote2 with a Macraigor Raven JTAG:
xflash -p intelmote2 -tt "JTAG CPU" blob -offset 0x00000000
xflash -p intelmote2 -tt "JTAG CPU" zImage -offset 0x00040000
xflash -p intelmote2 -tt "JTAG CPU" fs.jffs2 -offset 0x00240000
And the following assumes you are programming an Intel Mote2 with an Intel JTAG
xflash -p intelmote2 -tt "Intel(R) JTAG Cable" blob -offset 0x00000000
xflash -p intelmote2 -tt "Intel(R) JTAG Cable" zImage -offset 0x00040000
xflash -p intelmote2 -tt "Intel(R) JTAG Cable" fs.jffs2 -offset 0x00240000
Typical Build
<bash> tar zxf linux-2.6.14.tar.gz tar zxf SG2Release-1_0.tgz tar zxf msb2_patches.tgz
cd linux-2.6.14 echo "Applying SG2 Patches" patch -p1 < ../SG2Release-1_0/src/patch-2.6.14-sg2-10
echo "Applying MSB2 Patches" patch -p1 < ../msp-linux-2.6.14-pxa-mmc.patch patch -p1 < ../msp-linux-2.6.14-uart.patch patch -p1 < ../msp-linux-2.6.14-sd-detect.patch
export ARCH=arm export CROSS_COMPILE=arm-linux- cp ../msp-linux-2.6.14-config ./.config patch -p1 < ../msp-linux-2.6.14-winXP-rndis.patch make oldconfig make menuconfig </bash>