|
基于skyeye0.8.0 配置uclinux—20040408 到 CPU4510B上全过程
-----对于文章1、2的验证
文章参考来源:
1、在S3C4510B评估板上移植uclinux-20030314全过程.作者 liber.来自: 北京
2、uClinux Image Compiling User Guide2 for lumit4510 : how to compile uClinux kernel
3、www.lumit.org
/*————————————————————————————————*/
操作系统:Fedora core4
CPU:Samsung4510B
uclinux:uclinux-dist-20040408 uclinux-2.4.x
uclinux 内核编译总结 在skyeye0.8.0上
ribiky 杭州
2005-12-24 21:50
/*————————————————————————————————*/
源码需要修改的地方:(参考www.lumit.org)
1、 ../linux-2.4.x /arch/armnommu/vmlinux-armv.lds.in
找到 *(.got) /* Global offset table */
在其后加入:
66 romfs_data = .;
67 romfs.o
68 romfs_data_end = .;
2、 ../vendors/Samsung/4510B/Makefile
在
41 TFTPDIR = /tftpboot后加上:
42 LINUXTARGET=bzImage
在
65 genromfs -v -V "ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR) 后加入(这里生成romfs.o):
66 arm-elf-ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary $(ROMFSIMG)
3、 ../config/.config
注释掉第25行的 CONFIG_USER_OLD_PASSWORDS
如下:
24 CONFIG_USER_LOGIN_LOGIN=y
25 # CONFIG_USER_OLD_PASSWORDS=y
26 # CONFIG_USER_ONLY_ROOT is not set
4、../linux-2.4.x/arch/armnommu/mm/init.c
655 void free_initmem(void)
656 {
657 if (!machine_is_integrator() &&
658 !machine_is_p52() &&
659 !machine_is_cx821xx() &&
660 !machine_is_atmel() &&
661 !machine_is_netarm() &&
662 // !machine_is_ta7v() &&
663 !machine_is_ta7s()) {
664 free_area((unsigned long)(&__init_begin),
665 (unsigned long)(&__init_end),
666 "init");
5、../linux-2.4.x/drivers/char/serial_samsung.c
找到uart_config数组,把如下项:
128 { "S3C4510B", 1, 0}, /* Samsung S3C4510B uart support */
修改为:
128 { "S3C4510B", 128, 0}, /* Samsung S3C4510B uart support */
6、 ../vendors/Samsung/4510B/Makefile
[ -d $(IMAGEDIR) ] || mkdir -p $(IMAGEDIR)
genromfs -v -V "ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR)
$(CROSS_COMPILE)ld -r -o $(ROOTDIR)/$(LINUXDIR)/romfs.o \
-b binary $(ROMFSIMG)
$(CROSS_COMPILE)objcopy -O binary -R .note -R .comment \
-S $(ROOTDIR)/$(LINUXDIR)/linux $(RAMIMAGE)
cp $(ROOTDIR)/$(LINUXDIR)/arch/armnommu/boot/zImage \
$(ROMIMAGE)
# $(CROSS_COMPILE)objcopy -O binary --remove-section=.romvec \
--remove-section=.text --remove-section=.ramvec \
--remove-section=.init \
--remove-section=.bss --remove-section=.eram \
$(ROOTDIR)/$(LINUXDIR)/linux $(IMAGEDIR)/linux.data
# $(CROSS_COMPILE)objcopy -O binary --remove-section=.ramvec \
--remove-section=.bss --remove-section=.data \
--remove-section=.eram \
--set-section-flags=.romvec=CONTENTS,ALLOC,LOAD,READONLY,CODE \
$(ROOTDIR)/$(LINUXDIR)/linux $(IMAGEDIR)/linux.text
# cat $(IMAGEDIR)/linux.text $(IMAGEDIR)/linux.data $(ROMFSIMG) > $(IMAGE)
7、 ../linux-2.4.x /arch/armnommu/boot/compressed/Makefile
[说明]生成linux kernel,包含必要的库支持,$(LIBGCC)来自于arm-elf-tools库。
ZLDFLAGS = -p -X -T $(LINUX).lds改为:
ZLDFLAGS = -p -X -T linux.lds (注:听说也可以改为vmlinx.lds,但是我没有通过)
[说明]这各链接文件是为带mmu的板子准备的,生成带自解压的映像文件,由$(LINUX)控制,这里我们直接直接将这个链接文件改名为linux.lds.
89 $(LD) $(ZLDFLAGS) $(HEAD) $(OBJS) piggy.o -o $(LINUX)
改为:
89 $(LD) $(ZLDFLAGS) $(HEAD) $(OBJS) piggy.o $(LIBGCC) -o $(LINUX)
[说明]生成linux kernel,包含必要的库支持,$(LIBGCC)来自于arm-elf-tools库。
8、 ../linux-2.4.x/arch/armnommu/mm/proc-arm6,7.S
mov r0, #0
#ifdef CONFIG_CPU_WITH_CACHE 改为:
#ifdef CONFIG_CPU_WITH_CACHE
mov r0, #0
编译流程:
1、make menuconfig
在 Vendor/Product Selection ---> 中选择
--- Select the Vendor you wish to target
(Samsung) Vendor
--- Select the Product you wish to target
(4510B) Samsung Products
在 Kernel/Library/Defaults Selection ---> 中选择
(linux-2.4.x) Kernel Version
(uClibc) Libc Version
其他选项都不变,按照缺省设置,选择退出,保存配置。
2、make dep
3、make lib_only
4、make user_only
5、make romfs
6、make image
7、make
最后生成:
[root@localhost uClinux-dist]# ls -la images/
总用量 664
drwxr-xr-x 2 root root 4096 12月 24 21:04 .
drwxr-xr-x 17 1000 users 4096 12月 24 20:58 ..
-rw-r--r-- 1 root root 652288 12月 24 21:09 romfs.img
配置shyeye.conf
cpu: arm7tdmi
mach: s3c4510b
mem_bank: map=M, type=RW, addr=0x00000000, size=0x00800000
mem_bank: map=M, type=R, addr=0x01000000, size=0x00200000, file=./images/romfs.img
mem_bank: map=I, type=RW, addr=0x03ff0000, size=0x00100000
THE END
感谢陈渝博士领导的skyeye开发小组
Step 2: 通过 SkyEye 测试刚才编译得到的 linux-2.4.x/linux 内核是否可以运行。
[详细过程在一篇文档中有说明,这里不再重复,可以参考看]
http://www.lumit.org/download/document/lumit-skyeye-uclinux.txt
Step 3: 如果 SkyEye 模拟器上测试通过了,那么就可以下载到 lumit4510 开发板试试了。
[详细过程在一篇文档中有说明,这里不再重复,可以参考看]
http://www.lumit.org/download/document/lumit-uclinux-readme.txt
Step 4: 如果在 lumit4510 上可以运行 image.ram ,那么就可以添加自己的应用程序了。
[详细过程在一篇文档中有说明,这里不再重复,可以参考看]
http://www.lumit.org/download/document/lumit-uclinux-addapp-readme.txt |
|