uClinux编译方法(uClinux-dist-20041215.tar.gz+S3C44B0X) s3c44b0x开发板

首先把uClinux下载回来,下载地址:http://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20051110.tar.gz
然后再根据网站里的说明建立一个交叉编译环境:http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/arm-elf-tools-20030314.sh
先把arm-elf-tools安装好,然后再编译uClinux即可:

[Copy to clipboard][ - ]
CODE:
[ljjk @localhostroot]#wgethttp://www.uclinux.org/pub/uClinux/dist/uClinux-dist-20051110.tar.gz
[ljjk @localhostroot]#wgethttp://www.uclinux.org/pub/uClinux/uclinux-elf-tools/arm-elf-tools-20030314.sh
[ljjk @localhostroot]#chmod 777 arm-elf-tools-20030314.sh
[ljjk @localhostroot]#./arm-elf-tools-20030314.sh
[ljjk @localhostroot]#tar zxvf uClinux-dist-20051110.tar.gz
[ljjk @localhostroot]#cd uClinux-dist
在vendors目录下建立SamsungS3C44B0X相关的目录,并准备好相关文件。否则在后面的makemenuconfig的vendors中将不会出现44b0的选项。
[root@localhostuClinux-dist]# mkdir vendors/Samsung/44B0X
[root@localhostuClinux-dist]# cp vendors/Samsung/4510B/*vendors/Samsung/44B0X/

[ljjk @localhostuClinux-dist]#make mrproper
[ljjk @localhostuClinux-dist]#vilinux-2.4.x/arch/armnommu/vmlinux-armv.lds.in

在__sto__kallsyms =,;
*(.got)后面加上:
romfs_data =.;
romfs.o
romfs_data_end =.;
然后wq退出
这一步如果不做,编译的时候会出现点小问题,我编译的时候提示过romfs_data出错。

[Copy to clipboard][ - ]
CODE:
[ljjk @localhostuClinux-dist]#vi vendors/Samsung/4510B/Makefile

在genromfs -v -V"ROMdisk" -f $(ROMFSIMG) -d $(ROMFSDIR)的下一行加入
arm-elf-ld -r -o$(ROOTDIR)/$(LINUXDIR)/romfs.o -b binary$(ROMFSIMG)
然后wq保存退出

[Copy to clipboard][ - ]
CODE:
[ljjk @localhostuClinux-dist]#make menuconfig

这时出现一个选择菜单,移动到第一个选项高亮,然后按回车进入,这时有两个可选项,一个是第二行,一个是第四行,第二行是用来选择支持的产品结构的(就是我们平时说的硬件平台),第四行是用来选择Products的!分别选择samsung,和4510B,因为这两个在我们中用的是比较多的!
然后选择Exit回到主菜单,把高亮调到Kernel/Library处,进入。kernel选择2.4.x的即可,lib库选择uClibc,切记,不是uC-libc。,然后Exit之后再Exit,弹出提示,选择yes保存即可。

[Copy to clipboard][ - ]
CODE:
[ljjk @localhostuClinux-dist]#make dep
[ljjk @localhostuClinux-dist]#make lib_only
[ljjk @localhostuClinux-dist]#vi config/.config

然后将"CONFIG_USER_OLD_PASSWORDS=y"注释掉"#CONFIG_USER_OLD_PASSWORDS=y"

[Copy to clipboard][ - ]
CODE:
[ljjk @localhostuClinux-dist]#make user_only
[ljjk @localhostuClinux-dist]#make romfs
[ljjk @localhostuClinux-dist]#make image

如果这一步提示错误,可以执行下面一步

[Copy to clipboard][ - ]
CODE:
[ljjk @localhostuClinux-dist]#make


在这一步遇到了这样一个错误:
/usr/local/bin/arm-elf-ld.real: cannot open romfs.o: No such fileor directory
make[1]: *** [linux] Error 1

解决办法: cp./linux-2.4.x/fs/romfs/romfs.o ./linux-2.4.x/其实romfs.o文件已经生成,把它拷贝到linux-2.4.x目录下即可。

又出现了这样的错误:
s/fs.o(.data+0x15f0): In function`sys_open':
/curret1/uClinux-dist/linux-2.4.x/fs/open.c:805: multipledefinition of `romfs_file_operations'
romfs.o(.data+0x80):/curret1/uClinux-dist/linux-2.4.x/fs/romfs/inode.c:107:第一次在此定义
make[1]: *** [linux]错误 1
make[1]: Leavingdirectory `/curret1/uClinux-dist/linux-2.4.x'
make: *** [linux] 错误1
的错误,

解决办法
在~/uClinux-dist/linux-2.4.x/fs/romfs/inode.c的
static(这地方没有加上)struct file_operations romfs_file_operations = {

read: generic_file_read,

mmap: generic_file_mmap,

#ifdef MAGIC_ROM_PTR

开头加上static问题就解决了,终于在images生成bin文件了

完成以上步骤后,这样就会在image下生成我们想要的文件。

[Copy to clipboard][ - ]
CODE:
[ljjk @localhostuClinux-dist]ls romfs
bin dev etc home libmnt proc sbin tmp usr var doc written by 1jjk
[ljjk @localhostuClinux-dist]ls images
image.bin linux.datalinux.text romfs.img

到这里就完成了编译的工作。
现在生成了image.bin,linux.data,linux.text,romfs.img四个文件。
如果想生成image.ram和image.rom文件还需要一番工作,从网上找到了资料,发现编译总是出错。于是自己胡乱弄,居然给我弄出来了,具体能不能用还不知道。主要步骤如下:
1.进入linux-2.4.x/arch/armnommu/boot/compressed目录执行
ln-s vmlinux.lds.inlinux.lds.in(链接一个编译bzImage需要的文件实际上我的rom版跑出来更有问题,但为了编译还是要这一步)
2.修改uClinux-dist目录下(即总的编译目录)的Makefile,在
TFTPDIR =/tftpboot 下加一行
LINUXTARGET = bzImage
3.修改vendors/Samsung/44B0/Makefile,在
-IMAGE =$(IMAGEDIR)/image.bin
-ELFIMAGE = $(IMAGEDIR)/image.elf
后添加三行
ROMIMAGE =$(IMAGEDIR)/image.rom
RAMIMAGE =$(IMAGEDIR)/image.ram
ELFIMAGE =$(IMAGEDIR)/image.rom
然后这五行每次屏蔽两行编译一次,然后 就相继出现image.bin,image.ram,image.rom文件。(由于是菜鸟,所以也不知道原因,但是运气好弄出来了,不知道对以后有没有影响,先这样把)


如编译无误,在/uClinux-dist/images目录下,就会生成image.ram和image.rom,使用
image.ram。
为减小体积,使用gzipimage.ram,可生成image.ram.gz,然后用bootloader把这个文件下载
到flash中并运行,一个基本的uClinux就算移植成功了。
image.ram -可以download到LOM-ARM7开发板的SDRAM中运行的内核文件,调试时用,
image.rom -调试完毕后可以通过jtag电缆将其固化到Flash中,这样在上电或复位时可以不经过bios,而是直接启动uClinux.

inux.data编译后的内核中的data,init段,一般在sdram中,可读写
linux.text编译后的内核中的text段,一般放在flash中,只读
romfs.img内核加载是的根文件系统
image.bin上面3个文件顺序连接而成(linux.text+linux.data+romfs.img)
image.ram没有压缩国的内核,必须在ram里运行,同过板子的boodloader将他下载到指定位置后开始执行。从ram启动内核,代码断和数据断都在ram里。image.ram=linux.text+linux.data

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/220194.html

更多阅读

MFC中进度条控件的使用方法 mfc进度条控件使用

MFC中进度条控件的使用方法——简介进度条控件是程序开发中基础控件之一,常用于显示程序的进度。在进行程序安装、文件传输时经常用到。其用法也比较简单固定。今天就和大家分享一下其简单的使用方法吧。^_^MFC中进度条控件的使用方

LED电子灯箱简单制作方法 电子灯箱视频

LED电子灯箱简单制作方法——简介?在街道上,我们常常会遇到各种各样的绚丽LED电子灯箱,其实我们自己也可以自己动手制作一个简易的LED电子灯箱,下面就利用祝祝军波爷爷教会我小黄的知识和大家分享一下如何制作简易的电子灯箱。LED电子

HPL入门(ZT) python入门

HPL 入门HPL是目前Linpack的基准测试程序,关于Linpack的详细信息和如何优化等情况,请参考曹振南的文章《如何做Linpack测试及性能优化》。本文仅仅就目前Goto库的源代码编译和HPL编译运行做一简单的描述。Goto源码包的下载请到http:

2014年08月13日 libelf 0.8.13.tar.gz

“龘驫滙”会员卡发行说明书二零一四年八月投资运营:内蒙古龘驫草原文化有限公司发行监管:北京龙马盛势投资基金管理有限公司重要提示本募集说明书属于商业机密;除非投资运营方授权,任何机构和个人对本募集说明书之外全或部分内容

声明:《uClinux编译方法(uClinux-dist-20041215.tar.gz+S3C44B0X) s3c44b0x开发板》为网友斯文野兽分享!如侵犯到您的合法权益请联系我们删除