原创 OMAP3530开发笔记之二:新内核编译

2010-4-27 10:07 6717 4 4 分类: MCU/ 嵌入式

1.     
版本说明



使用天漠公司新移植的内核Linux-2.6.29 for
Devkit8000
,也可成功运行于SBC8100上,但由于硬件的差异性导致某些硬件不能正常工作。



DVSDKDVSDK_3_00
3_00_02_44



2.     
下载软件



软件列表



1.       
OMAP35x-PSP-SDK-setuplinux-02.01.03.11.binInclude
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



3.     
安装



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



4.     
编译U-BOOT



1.       
查看uboot支持的开发板类型



#cd include/configs



#ls



 



可以看到很多.h文件,其中包括omap3devkit8000.homap3sbc8100.h,说明同时支持Devkit8000SBC8100。本次编译将使用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目录,编译内核时将使用。



5.     
编译内核



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



 



6.     
制作文件系统



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



7.     
映像烧写



1.     
MMC/SD卡方式



1)       
SBC8100/svn目录下的MLOu-boot.binx-load.bin.ift_for_NAND logo4.3.bmp文件按顺序拷入SD卡,并将新生成的u-boot.bin改名为flash-uboot.bin并拷入SD,将新生成的uImageubi.img拷入SD卡。文件说明如下:



       MLO:能从SD卡启动的x-loader



u-boot.bin:从SD卡启动并自动烧写映像文件的U-BOOT,烧写对象:x-load.bin.ift_for_NANDuImageubi.imglogo4.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全部擦除



 



2.     
TFTP方式



将新生成的系统映像文件u-boot.binuImageubi.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)


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条