linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux开发区 > 嵌入应用 >
栏目导栏
资料搜索
热门文章
·Symbian编程VC开发环境设置
·基于ARM的嵌入式Linux开发平台
·嵌入式Linux用Qt Designer快速
·S3C2410X开发总结及心得
·轻松控制uClinux嵌入式开发过程
·嵌入式操作系统uCLinux
·uClinux系统分析
·Porting uClinux to Samsung S
·uC/OS和uClinux的比较
·在Windows上应用uClinux
·sqlite嵌入式数据库在arm-linu
·嵌入式设备上的 Linux 系统开发
·七款嵌入式Linux操作系统简介
·e680i手机嵌入式Linux 研究
·嵌入式系统和嵌入式操作系统
最新文章
·在嵌入式Linux环境下制作QPF字
·ARM Linux开机后自动运行特定程
·构建基本的嵌入式Linux根文件系
·自己动手打造嵌入式Linux软硬件
·MP3播放器madplay在ARM的移植
·Linux 2.6.11 MTD驱动情景分析
·ARM中C和汇编混合编程及示例
·BusyBox 简化嵌入式 Linux 系统
·使用虚拟机嵌入式Linux开发前的
·用NFS服务开发ARM Linux程序的
·虚拟机Linux系统下连接ARM开发
·嵌入式Linux系统下的网页浏览器
·Linux移植PSP详细步骤
·浅析armlinux 2.4.19中断irq分
·Linux 的魅力: 开发 Nokia N80
Google
 
AT91sam9263EK使用NFS根文件系统
[ 作者:张驿风  加入时间:2007-08-27 00:54:27  来自:Linux联盟收集整理 ]
一. t91sam9263是atmel arm9系列芯片新的一员,使用ARM926EJ-S ARM内核,有DSP扩展指令。支持cmos摄像头的itu656输入接口,支持LCD接口最大分辨率支持到2048x2048。200MHz的时钟能够获取到220mips的运算能力。支持linux操作系统,支持wince操作系统,并且老外已经在linux下移植了ffmeg工程,能够流畅的播放视频文件(352x288),看demo后不仅热血沸腾,呵呵心想移植个街机模拟器如何? 要动手时发现AT91SAM9263EK使用的是cramfs根文件系统,移植或者开发应用很不方便的,需要用U盘拷来拷去的。工欲善其事,必先利其器,于是决定搞个NFS根文件系统的版本以方便后续的移植工作,算是迈出街机模拟器工作的第一步吧。CzdLinux联盟
二. 建根文件系统:CzdLinux联盟
a) 拷贝ATMEL的linux demo里的 rootfs_lnxdemo.cramfs文件到宿主机的:/home目录下。CzdLinux联盟
b) 在/home目录下创建tmp目录:CzdLinux联盟
mkdir tmp 。CzdLinux联盟
c) 在/home目录下挂载cramfs文件系统镜像:CzdLinux联盟
mount -t cramfs rootfs_lnxdemo.cramfs tmp/ -o loopCzdLinux联盟
d) 进入tmp文件目录查看根文件系统是否齐全。CzdLinux联盟
cd tmpCzdLinux联盟
e) 修改根文件系统的rsS启动加载教本。CzdLinux联盟
因为atmel提供的cramfs根文件系统默认是启动触摸屏校正程序和ffmpeg播放器的,但是我的目的是移植街机模拟器,要的启动后进入shell里。CzdLinux联盟
cd tmpCzdLinux联盟
vim etc/init.d/rcS删除触摸屏和ffmpeg相关的脚本。然后保存退出。CzdLinux联盟
f) 备份新的根文件系统:CzdLinux联盟
tar cjvf nfsroot.tar.bz2 tmpCzdLinux联盟
g) 卸载cramfs文件系统:CzdLinux联盟
做过nfsroot根文件系统后要把卸载cramfs从tmp卸载掉。CzdLinux联盟
Umount tmpCzdLinux联盟
注意:现在的rootfs_lnxdemo.cramfs的已经不能够在用于atmel的linux demo了。CzdLinux联盟
三. 配置NFS服务器CzdLinux联盟
a) 当然是要先安装nfs服务器软件包的啦。CzdLinux联盟
b) 创建exports 文件:CzdLinux联盟
vim /etc/exportsCzdLinux联盟
添加:CzdLinux联盟
/home/target/ 192.168.2.0/255.255.255.0(rw,no_root_squash)CzdLinux联盟
/home/target就是NFS根文件系统的一级目录,由nfsroot.tar.bz2解压得来,包含有bin,etc,usr,mnt,dev,var等等,包含有linux启动运行所需要的一切。CzdLinux联盟
c) 安装dhcpd服务包软件CzdLinux联盟
d) 配置dhcpdCzdLinux联盟
e) 启动nfs,启动dhcpd,portmapCzdLinux联盟
service nfs restartCzdLinux联盟
service protmap restartCzdLinux联盟
service dhcpd restartCzdLinux联盟
f) 测试服务器配置是否成功:CzdLinux联盟
mount 192.168.2.46:/home/target /mntCzdLinux联盟
ls /mntCzdLinux联盟
四. 配置linux内核:CzdLinux联盟
进入打过at91补丁的linux2.6内核源代码树的根目录CzdLinux联盟
make menuconfig进入内核配置程序。CzdLinux联盟
1. 选中Networking --->CzdLinux联盟
Networking options --->CzdLinux联盟
[*] IP: kernel level autoconfiguration CzdLinux联盟
[*] IP: DHCP support CzdLinux联盟
[*] IP: BOOTP support CzdLinux联盟
[*] IP: RARP support CzdLinux联盟
2. Device Drivers --->CzdLinux联盟
Block devices --->CzdLinux联盟
<*> Network block device supportCzdLinux联盟
3. 选中Device Drivers --->CzdLinux联盟
Ethernet (10 or 100Mbit) --->CzdLinux联盟
<*> Atmel MACB support CzdLinux联盟
[*] Atmel MACB TX buffers in internal SRAMCzdLinux联盟
4. 选中File systems --->CzdLinux联盟
Network File Systems --->CzdLinux联盟
<*> NFS file system support CzdLinux联盟
[*] Provide NFSv3 client support CzdLinux联盟
[*] Provide client support for the NFSv3 ACL protocol extension CzdLinux联盟
[*] Provide NFSv4 client support (EXPERIMENTAL)CzdLinux联盟
[*] Root file system on NFSCzdLinux联盟
五. 运行新内核,进行测试CzdLinux联盟
1. 重新编译内核,至于启动参数这里可以不去理它因为我们要从u-boot传递启动参数。CzdLinux联盟
make uImageCzdLinux联盟
2. 使用u-boot或者是sam-ba把uImage烧入nand flash。、CzdLinux联盟
3. 启动u-boot配置启动参数:CzdLinux联盟
setenv bootargs CzdLinux联盟
mem=64M CzdLinux联盟
console=ttyS0 115200 CzdLinux联盟
mac=00:60:6E:42:BA:80 CzdLinux联盟
root=/dev/nfs CzdLinux联盟
nfsroot=192.168.2.46:/home/target CzdLinux联盟
ip=192.168.2.40:192.168.2.46:192.168.2.1.255.255.255.0:::ethCzdLinux联盟
0:offCzdLinux联盟
然后保存参数:saveenvCzdLinux联盟
4. 重新启动系统:u-boot加载内核,内核运行,这时候内核提示:nfs没有响应,后分析没有道理呀, 发现init进程已经运行,于是查看rcS文件发现里有对ip的设置难怪呀,删去相关的东西,在重新启动一切OK.CzdLinux联盟
六. 总结:CzdLinux联盟
在测试的过程中发现u-boot经常提示:CzdLinux联盟
DM9161A PHY DetectedCzdLinux联盟
No linkCzdLinux联盟
MAC: error during RMII initializationCzdLinux联盟
End of AutonegociationCzdLinux联盟
这样的错误,只要有这样的错误出现NFS肯定挂不上,想是u-boot有bug换高版本的吧,于是下载了个1.1.6的故障依旧,没有办法,只有看代码了,最后终于发现是检测DM9161时的超时时间设置的不够,修改后工作正常。CzdLinux联盟
cd uboot/include/configs/CzdLinux联盟
vim at91sam9263ek.hCzdLinux联盟
改#define AT91C_ETH_TIMEOUT 30000CzdLinux联盟
为#define AT91C_ETH_TIMEOUT 300000CzdLinux联盟
重新编译u-boot就可以了。CzdLinux联盟
Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息