使用天漠公司新移植的内核Linux-2.6.29 for
Devkit8000,也可成功运行于SBC8100上,但由于硬件的差异性导致某些硬件不能正常工作。
DVSDK:DVSDK_3_00
3_00_02_44
软件列表
1.
OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin(Include
kernel source code)
2.
arm-2008q1-126-arm-none-linux-gnueabi.bin
3.
linux-02.01.03.11-devkit8000-2.patch
(http://devkit8000.googlecode.com/files/linux-02.01.03.11-devkit8000-2.patch)
1.
安装内核源码:
#./
OMAP35x-PSP-SDK-setuplinux-02.01.03.11.bin
安装目录:/omap3530/dvsdk/OMAP35x-PSP-SDK-02.01.03.11
2.
解压内核源码:
#cd /omap3530/dvsdk/OMAP35x-PSP-SDK-02.01.03.11/src/kernel
#tar zxvf linux-02.01. 03.11.tar.gz
3.
为内核打补丁
将patch文件拷贝到内核根目录:
#cp linux-02.01.03.11-devkit8000-2.patch linux-02.01.03.11
#cd linux-02.01.03.11
#patch -p1 < linux-02.01.03.11-devkit8000-2.patch
4.
将SBC8100光盘自带的UBOOT源码拷贝到src/u-boot目录,并解压:
#tar jxvf u-boot-1.3.3.tar.bz2
会解压出文件夹”u-boot-1.3.3”,为其改名:
#mv u-boot-1.3.3 u-boot-1.3.3-omap3sbc8100
#cd u-boot-1.3.3-omap3sbc8100
1.
查看uboot支持的开发板类型
#cd include/configs
#ls
可以看到很多.h文件,其中包括omap3devkit8000.h和omap3sbc8100.h,说明同时支持Devkit8000和SBC8100。本次编译将使用SBC8100版本。
2.
修改omap3sbc8100.h
1.
启动参数
/* for ubifs */
#define CONFIG_BOOTARGS
"console=ttyS2,115200n8 ubi.mtd=4 root=ubi0:rootfs rootfstype=ubifs
video=omapfb:mode:7inch_LCD mem=88M"
#define CONFIG_BOOTCOMMAND "nand
read.i 80300000 280000 300000\;bootm 80300000"
2.
IP设置
#define
CONFIG_ETHADDR aa:bb:cc:dd:ee:ff
#define
CONFIG_IPADDR 192.168.1.200
#define
CONFIG_SERVERIP 192.168.1.108
#define
CONFIG_GATEWAYIP 192.168.1.1
#define CONFIG_NETMASK 255.255.255.0
3.
命令行符(可选)
#define V_PROMPT "SBC8100UM # "
3.
修改Board ID,在omap3sbc8100.c文件中
#cd board/omap3sbc8100
#gedit omap3sbc8100.c
找到 int
board_init(void),修改如下:
/*****************************************
* Routine: board_init
* Description: Early hardware
init.
*****************************************/
int board_init(void)
{
DECLARE_GLOBAL_DATA_PTR;
gpmc_init(); /* in SRAM or SDRAM, finish GPMC
*/
//gd->bd->bi_arch_number =
MACH_TYPE_OMAP3EVM; /* board id for Linux */
gd->bd->bi_arch_number = MACH_TYPE_DEVKIT8000; /* board id for Linux */
gd->bd->bi_boot_params =
(OMAP34XX_SDRC_CS0 + 0x100); /* boot param addr */
return 0;
}
因为新内核对应的Board ID为“MACH_TYPE_DEVKIT8000”,两者必须一致,否则系统将不能正常启动。
4.
编译
#touch build-uboot.sh
#gedit build-uboot.sh
make
CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean
make CROSS_COMPILE=arm-none-linux-gnueabi-
ARCH=arm omap3sbc8100_config
make
CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm
#./build-uboot.sh
在根目录下会生产u-boot.bin文件,并在tools文件夹下生成mkimage文件。将mkimage拷贝到arm-2008q1/bin目录,编译内核时将使用。
1.
查看新内核支持的config文件:
#cd /linux-02.01.03.11/arch/arm/configs
#ls
可以看到很多config文件,包括omap3_devkit8000_defconfig,感谢天漠。
2.
编辑脚本文件build_devkit8000_defconfig.sh
#cd
/linux-02.01.03.11/
#gedit
build_devkit8000_defconfig.sh
make
CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm distclean
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm
omap3_devkit8000_defconfig
make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm uImage
3.
执行编译
#./
build_devkit8000_defconfig.sh
将生成新内核映像文件:arch/arm/boot/uImage。
1.
进入文件系统目录
#cd omap3530/dvsdk/OMAP35x-PSP-SDK-02.01.03.11
#cd image/fs
2.
解压跟文件系统nfs-base.tar.gz
#mkdir rootfs
#tar zxvf nfs-base.tar.gz –C
rootfs
3.制作文件系统
#/omap3530/tools/mkfs.ubifs
-r rootfs -m 2048 -e 129024 -c 812 -o ubifs.img
#/omap3530/tools/ubinize
-o ubi.img -m 2048 -p 128KiB -s 512 /omap3530/tools/ubinize.cfg
在当前目录会生成新的文件系统映像文件:ubi.img。
1)
将SBC8100/svn目录下的MLO、u-boot.bin、x-load.bin.ift_for_NAND、 logo4.3.bmp文件按顺序拷入SD卡,并将新生成的u-boot.bin改名为flash-uboot.bin并拷入SD,将新生成的uImage和ubi.img拷入SD卡。文件说明如下:
MLO:能从SD卡启动的x-loader;
u-boot.bin:从SD卡启动并自动烧写映像文件的U-BOOT,烧写对象:x-load.bin.ift_for_NAND,uImage,ubi.img,logo4.3.bmp;
x-load.bin.ift_for_NAND:能从NAND Flash启动的x-loader;
logo4.3.bmp:启动Logo文件。
2)
将SD卡插入SBC8100,并选择从SD卡启动,系统会自动将新的映像文件烧入到NAND Flash。如果不能自动烧写,请先擦除NAND Flash再重新从SD卡启动。
SCB8100 # nand erase //NAND Flash全部擦除
将新生成的系统映像文件u-boot.bin、uImage、ubi.img拷贝到tftp服务器根目录:/opt/tftpboot,然后启动开发板SBC8100,并进入u-boot命令行,按顺序执行以下命令:
SCB8100 #tftpboot 80000000 u-boot.bin
SBC8100 # nand ecc hw
SBC8100 # nand erase 0 80000
SBC8100 # nand write.i 80000000 0 $(filesize)
SCB8100 #tftpboot 80000000 uImage
SBC8100 # nand ecc sw
SBC8100 # nand erase 280000 300000
SBC8100 # nand write.i 80000000 280000 $(filesize)
SCB8100 #tftpboot 81000000 ubi.img
SBC8100 # nand ecc sw
SBC8100 # nand erase 680000 7980000
SBC8100 # nand write.i 81000000 680000 $(filesize)
文章评论(0条评论)
登录后参与讨论