HOWTO Compile a HRI kernel

First of all, you'll need a cross-compiler environment ready like CYGWIN or Linux, then you need the CVS kernel, then compile, then upload/test it. More detailed instructions follows:

// SETUP OUR WORK DIR

# mkdir -p /usr/src/hri

// CVS CHECKOUT OF UCLINUX MODULE FOR REGISTERED USERS
# export CVS_RSH=ssh
# cvs -z9 -d:ext:$EMAIL:/cvsroot/hri co uClinux

// FIXME: test anonymous example
# cvs -z9 -d:pserver:anonymous@cvs.sf.net:/cvsroot/hri co uClinux

// FIXME: download and install sample .config on uClinux/ dir

// SAMPLE CONFIG_CMDLINE for ramdisk boot:
CONFIG_CMDLINE="ro console=ttyS0 single root=/dev/ram0"

// SAMPLE CONFIG_CMDLINE for nfs mounting:
CONFIG_CMDLINE="ro console=ttyS0 single root=/dev/nfs nfsroot=put.server.ip.addr:/nfs ip=this.unit.ip.addr:put.server.ip.addr:put.default.gw.ipaddr:255.255.255.0:hostname-smc:eth0:off"
// FIXME: add server side instructions

// remember to download and install ramdisk.img from CIJ on uClinux/ dir!!

// to be able to make zImage and include a ramdisk on kernel, you will need to:
// 1. edit arch/armnommu/Makefile, comment the line TEXTADDR (until we fix CVS)

ifeq ($(CONFIG_ARCH_CX84200),y)
TEXTADDR         = 0x00008000
ifeq ($(CONFIG_CX84200_SMC),y)
# TEXTADDR       = 0x00040000
endif
MACHINE          = cx84200
endif

// 2. edit arch/armnommu/boot/Makefile, change ZRELADDR & ZTEXTADDR as follow

ifeq ($(CONFIG_ARCH_CX84200),y)
ZRELADDR         = 0x00008000
ZTEXTADDR        = 0x00000000
ifeq ($(CONFIG_CX84200_SMC),y)
# ZRELADDR       = 0x00040000
# ZTEXTADDR      = 0x00000000
ZRELADDR         = 0x00008000
ZTEXTADDR        = 0x00040000
INITRD_PHYS      = 0x00700000
endif
endif

// 3. if you wan't to NFS mount and don't bother the ramdisk, forget
//    the above patches/ramdisk.img and issue "make Image" instead
//    of "make zImage" -- CVS is capable of make Image only

// 4. remember to choose ARM/SMC/CX84200 options (make menuconfig, System Type)

// 5. ATTENTION: if you don't add serial and console, won't see anything!
CONFIG_SERIAL_CX84200=y
CONFIG_SERIAL_CX84200_CONSOLE=y

// NOW WE'RE GOING TO COMPILE THE KERNEL WITH RAMDISK INCLUDED ON IT

# cd /usr/src/hri/uClinux
# make clean

// remember to pick the sample .config!! important lines here are
// (for make zImage/ramdisk.img included on kernel):
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_SIZE=1024
CONFIG_BLK_DEV_INITRD=y
CONFIG_BLK_DEV_RAMDISK_DATA=y
CONFIG_BLK_DEV_RAMDISK_DATA_IN_RAM=y

# make oldconfig
# make dep
# make zImage

// if you forget to add ramdisk.img it will fail. add it and make zImage again!

// when kernel compiles, it will reside on arch/armnommu/boot (Image or zImage)

# cp /usr/src/hri/uClinux/arch/armnommu/boot/zImage /tmp/zImage-smc

// now upload /tmp/zImage-smc to hardware, 0x40000 and execute it there

YOU'RE DONE FOR NOW!

Reported on the list on 28/Jan/2004.


$Id: kernel.html,v 1.3 2004/02/19 20:57:29 bcabral Exp $