Running a C program on mini2440

Am creating a simple Hello World program in C.This is the program

#include<stdio.h>
int main(){
 printf("Hello World\n");
}

saved it as hello.c..Now compiling it for our target or mini2440.

open terminal and change directory to the folder where c program is presnt and issue this command

arm-linux-gcc hello.c -o hello

The arm-linux-gcc command was present bcoz we setup the toolchain early.Now a binary hello will be present in the folder.use file command to know the type of the binary it will suitable for ARM.

Move the bianry to mini2440 using pendrive or sdcard.To see the output execute the binary like this..

./hello

Setting up cross compilation toolchain to compile kernel and vivi for mini 2440

To compile kernel and vivi for our target device (mini2440) we need to  set up a cross compilation environment on our host system.The trick is that we generate binaries for the target(mini2440) on our host system.

So frst we need some packages installed in our system they are

sudo apt-get install build-essential make ncurses gcc g++ libncurses5 libncueses5-dev

After that we need to download some packages

ARM Linux gcc   –  http://www.friendlyarm.net/dl.php?file=arm-linux-gcc-4.3.2.tgz

Cross compiler toolchain   –  http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/cross-2.95.3.tar.bz2

Linux kernel source   –  http://www.friendlyarm.net/dl.php?file=linux-2.6.32.2-mini2440_20110413.tgz

Vivi source  –  http://www.friendlyarm.net/dl.php?file=bootloader_20090728.zip

Now setup cross compiler toolchain and Arm gcc on our system

Configuring cross compiler

tar -xvf cross-2.95.3.tar.bz2
sudo mkdir -p /usr/local/arm
sudo mv 2.95.3/ -v /usr/local/arm/
ls /usr/local/arm/
export PATH=/usr/local/arm/2.95.3/bin:$PATH
echo $PATH

Configuring Arm gcc

tar -xvf arm-linux-gcc-4.3.2.tgz
sudo mv ./usr/local/arm/ /usr/local/arm/
sudo mv /usr/local/arm/arm/4.3.2/ /usr/local/arm/
export PATH=/usr/local/arm/4.3.2/bin:$PATH
echo $PATH

On doing echo $PATH we can see if path variable is set or not

Now compile vivi to generate binary

extract vivi
cd bootloader_20090728/vivi/
cp smdk2440 ./.config
make menuconfig

You may get a error like this

error-Preparing scripts: functionsYour lxdialog utility does not exist

To fix this error we need to give permission to lxdialog

cd scripts/lxdialog/
sudo chmod +x lxdialog
make menuconfig
Load an Alternate config file
make vivi
sudo ../../usbpush/usbpush/usbpush ./vivi

The vivi binary will be generated now on the folder ,Now using usb push utility we can push it to mini2440

Next compiling Linux kernel

cd linux-2.6.32.2/
cp config_mini2440_n35 ./.config
cat .config |grep CPU_S3C2440

Check whether the out put is Y

make menuconfig

An error may occur like this

error –include/linux/compiler-gcc.h:86: linux/compiler-gcc2.h: No such file or directory

make mrproper
make menuconfig

check - system type-->sc32440 machines-->Friendlyarm mini2440 dev board
make
make zImage

make mrproper will eliminate that error and will build necessary dependencies.If everything goes correct you will get an output like this

The zImage is available in this path arch/arm/boot/zImage

Using usbpush push it to mini2440

sudo ../usbpush/usbpush/usbpush arch/arm/boot/zImage