UBoot移植
UBoot版别:u-boot-2010.03.tar.bz2
ARCH:
CPU:
BOARD:
SOC:
增加和裁剪源代码
增加相关文件夹和源代码:
1)创立文件夹:board/samsung/smdk6410; nand_spl/board/samsung/smdk6410。
2)仿制board/samsung/smdk6400/下一切文件到board/samsung/smdk6410。
3)仿制nand_spl/board/samsung/smdk6400下一切文件到nand_spl/board/samsung/smdk6410。
4)仿制include/configs/smdk6400.h为include/configs/smdk6410.h。
去除不相关代码:
5)删去board文件下除samsung外一切文件夹以及board/ samsung/下smdk6410外一切文件夹。
6)删去nand_spl/board下除samsung外一切文件夹以及nand_spl/board/samsung/smdk6410外一切文件夹。
7)删去include/configs/下除smdk6410.h以外其他一切文件。
8)删去顶层目录下一切的lib_* 其他文件夹,只需要保存lib_arm 和 lib_generic。
9)删去cpu目录下一切其他文件夹,只需要保存arm1176文件夹。
10)删去include下一切其他的asm_* 文件夹,只需要asm_arm和asm-generic,
11)删去include/arm-asm下arch-s3c64x0以外其他一切arch-*格局目录。
12)删去根目录下没有用到的onenan_ipl文件夹。
顶层Makefile修正
模仿smdk6400 增加smdk6410的完成
smdk6410_config :
@echo “#define CONFIG_NAND_U_BOOT” > $(obj)include/config.h
@echo “RAM_TEXT = 0xc7e00000” >> $(obj)board/samsung/smdk6410/config.tmp
@$(MKCONFIG) $(@:_config=) arm arm1176 smdk6410 samsung s3c64xx
@echo “CONFIG_NAND_U_BOOT = y” >> $(obj)include/config.mk
修正boardsunplusdtvb7056下文件
1)修正smdk6400.c为smdk6410.c,并修正boardsamsungsmdk6410Makefile中对应的文件名。
修正nand_spl/board/samsung/smdk6410 下文件
1)修正Makefile文件中6400为6410:@ln -s $(TOPDIR)/board/samsung/smdk6410/lowlevel_init.S $@
至此:能够测验是否能够编译经过 make distclean&&make smdk6410_config&&make;
修正smdk6410.h中相关设置
//#define MACH_TYPE
#define MACH_TYPE
#if
#define CONFIG_NET_MULTI
#define CONFIG_CS8900
#define CONFIG_CS8900_BASE
#define CONFIG_CS8900_BUS16
#else
#define CONFIG_NET_MULTI
#define CONFIG_DRIVER_DM9000
#define CONFIG_DM9000_BASE
#define DM9000_IO
#define DM9000_DATA
#endif
……
#define CONFIG_BOOTDELAY
#define CONFIG_ETHADDR
#define CONFIG_NETMASK
#define CONFIG_IPADDR
#define CONFIG_SERVERIP
#define CONFIG_GATEWAYIP
#define CONFIG_HOSTNAME
#define CONFIG_BOOTFILE
#define CONFIG_BOOTARGS
#ifdef CONFIG_ENABLE_MMU
#define CONFIG_BOOTCOMMAND
#else
#define CONFIG_BOOTCOMMAND
#endif
增加Uboot DM9000网卡驱动
#ifdef CONFIG_CMD_NET
int board_eth_init(bd_t *bis)
{
int rc = 0;
126 #ifdef CONFIG_CS8900
rc = cs8900_initialize(0, CONFIG_CS8900_BASE);
128 #endif
#ifdef CONFIG_DRIVER_DM9000
dm9000_initialize(bis);
#endif
}
#endif
现在ping,tftp,等等指令现已好用,中心遇到的问题,有待研讨:
1)ping指令能够,tftp指令停在loading #, 发现修正smdk6410 config时分写入的RAM_TEXT地址为MMU地址即好用RAM_TEXT = 0xc7e00000,仅仅编译的时分ext2部分报错,直接被我屏蔽了include/configs/smdk6410.h中对应的CONFIG_CMD_EXT2选项。
include/configs/smdk6410.h中地址和MMU相关界说如下:
TEXT_BASE在board/Samsung/smdk6410/config.mk中界说:TEXT_BASE=${RAM_TEXT}
#if !defined(CONFIG_NAND_SPL) && (TEXT_BASE >= 0xc0000000)
#define CONFIG_ENABLE_MMU
#endif
内核装备和编译
Kernel版别:2.6.35
CPU:
BOARD:
内核装备编译进程
修正顶层Makefile:ARCH和CROSS_COMPILE界说
ARCH
CROSS_COMPILE
内核铲除:make mrproper(会铲除装备好的.config文件和一切.o文件,假如洁净的内核没有必要履行)
内核装备:make menuconfig (能够根据一个附近的装备cp arch/arm/configs/s3c6400_defconfig
内核编译:make
增加DM9000网卡驱动
1)arch/arm/mach-s3c6410/mach-smdk6410.c
#include
#define S3C64XX_PA_DM9000
#define S3C64XX_VA_DM9000
#define S3C64XX_SZ_DM9000
static struct resource smdk6410_dm9000_resources[] = {
};
static struct dm9000_plat_data smdk6410_dm9000_pdata = {
};
struct platform_device smdk6410_dm9000 = {
};
……
static struct map_desc smdk6410_iodesc[] = {
};
static struct platform_device *smdk6410_devices[] __initdata = {
#ifdef CONFIG_SMDK6410_SD_CH0
#endif
#ifdef CONFIG_SMDK6410_SD_CH1
#endif
};
NFS rootfs相关装备
1、devices support 中翻开DM9000支撑
2、翻开filsystem 中nfs的相关支撑
补白:Linux发动参数(uboot bootargs传递过来的)
“console=ttySAC0,115200 root=/dev/nfs rw nfsroot=172.20.118.103:/work/workspace/s3c6410/rootfs ip=172.20.118.193:172.20.118.103:172.20.118.254:255.255.255.0:hoxm:eth0:none”
停在Starting kernel问题解决
常见原因:
1)地址过错
2)Boot参数设置过错
3)串口fifo设置不必配(本次移植便是由于这个原因)
archarmmach-s3c6400includemachuncompress.h 中增加uart fifo装备
static void arch_detect_cpu(void)
{
}
根文件体系树立
Download
#make menuconfig
#make
#make install
编译bash
export CC=arm-sunplus-linux-gnueabi-gcc
./configure –host=arm-sunplus-linux-gnueabi –enable-static-link –without-bash-malloc
make
make之后源码包顶层目录下生成bash,不必make install,直接copy到busybox的/bin目录
最简略的默许运用sh的根文件体系制造:
busybox生成:
mk空目录:mkdir dev etc home lib mnt opt proc sys tmp var
busybox /examples copy /etc下inittab,fstab,rc等相关脚本掩盖到/etc中