Linux s3c6410 移植
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
Linuxs3c6410移 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)