uboot移植添加nfs支持
手头6410开发板uboot(基于2011.06)其他功能包括ping和tftp都执行正常,唯独缺少nfs。
只需要在其配置文件(每个开发板文件通常名称不同,include/configs/*6410*.h)下添加一行代码:
#define CONFIG_CMD_NFS
然后重新编译就可以了。
编译完后重新烧写到开发板,重新启动后,执行nfs加载,在加载完文件后会提示一个错误"Error: Cannot mount",
虽然不影响使用,但是这个错误还是很讨厌的,可以参考我的前一篇博文《EASYARM-IMX283 nfs启动内核和根文件系统》修改/etc/hosts来进行修正.
如果开发板ip地址是192.168.211.15,nfs文件夹地址是 /home/host/nfs/hwgw6410,那么可以在/etc/hosts中添加一行:
192.168.211.15 /home/host/nfs/hwgw6410
这样在使用nfs时就不会出现“Error: Cannot mount"错误了。
这个问题还可以通过修改源代码来解决,但是从网上找到的修改方案是net/nfs.c中修改下面的行:
-#define NFS_TIMEOUT 2000UL
+#define NFS_TIMEOUT (10*2000UL)
- if (ntohl(rpc_pkt.u.reply.id) != rpc_id)
+ if (ntohl(rpc_pkt.u.reply.id)+ != rpc_id)
前面的减号表示需要删除的行,加号表示修改后的内容.
但是我采用这个方法后仍然会出现“Error: Cannot mount"错误。
最后我查看了u-boot官方git,可以查看到所有net/nfs.c的所有git记录,链接地址在这里.
其中可以看到2013年6月25号net/nfs.c中添加了动态配置nfs超时时间的选项,似乎能解决当前版本nfs的卸载失败问题。
然后我下载了uboot2014.04版本,将net/nfs.c中的代码整合到当前版本的net/nfs.c(直接将代码覆盖是不行的,还需要对部分代码进行调整)
之后编译出uboot,然后烧写到开发板中,再执行nfs,非常完美的解决了问题。
uboot操作过程如下:
hwgw # setenv ipaddr 192.168.211.55
hwgw # setenv serverip 192.168.211.2
hwgw # saveenv
hwgw # nfs /home/host/nfs/hwgw6410/u-boot-nand.bin
dm9000 i/o: 0x18000300, id: 0x90000a46
DM9000: running in bit mode
MAC: :::8f:ad:b3
operating at 100M full duplex mode
Using dm9000 device
File transfer via NFS from server 192.168.211.2; our IP address is 192.168.211.55
Filename '/home/host/nfs/hwgw6410/u-boot-nand.bin'.
Load address: 0x50000000
Loading: #################################################################
##########T T T T
done
Bytes transferred = (5d340 hex)
uboot移植添加nfs支持的更多相关文章
- u-boot中添加mtdparts支持以及Linux的分区设置
简介 作者:彭东林 邮箱:pengdonglin137@163.com u-boot版本:u-boot-2015.04 Linux版本:Linux-3.14 硬件平台:tq2440, 内存:64M ...
- X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件
X-003 FriendlyARM tiny4412 uboot移植之添加相应目录文件 <<<<<<<<<<<<<< ...
- u-boot 移植(二)创建新平台的板级支持
u-boot 移植(二)创建新平台的板级支持 soc:s3c2440 board:jz2440 uboot:u-boot-2016.11 toolchain:gcc-linaro-7.4.1-2019 ...
- u-boot移植总结(四)u-boot-2010.09框架分析
(一)本次移植是基于FL2440,板子的基本硬件: CPU 型号为S3C2440,基于ARM920T,指令集ARMV4,时钟主频400MHz SDRAM H57V2562GTR-75C 2片*32MB ...
- 【转】uboot移植(一)BootLoader基本概念
原文网址:http://blog.chinaunix.net/uid-25445243-id-3869348.html 一.BootLoader简介1.1.嵌入式Linux软件结构与分布 在一般情况下 ...
- 基于mini2440的uboot移植(一)
一.移植环境 虚拟机:ubuntu12.04 uboot源码:u-boot-2008.10.tar.bz2 交叉编译:arm-linux-gcc-4.4.3 简单的记录下编译uboot的过程,要想具体 ...
- U-BOOT 移植到友善之臂mini2440
U-BOOT 移植到友善之臂mini2440 开发环境:ubuntu 10.10 编译器:友善之臂mini2440光盘自带arm-linux-gcc 4.4.3 一. 在denx官网下载源码,我所用版 ...
- uboot移植
Uboot移植 1.架构 board:与一些开发板相关的配置文件 common:uboot下使用能够使用的命令 CPU:与特定CPU架构相关的目录 disk:对磁盘的支持 doc:文档目录 drive ...
- 基于tiny4412的u-boot移植(二)
作者信息 作者:彭东林 邮箱:pengdonglin137@163.com QQ: 405728433 平台介绍 开发环境:win7 64位 + VMware11 + Ubuntu14.04 64位 ...
随机推荐
- Linux进程的睡眠和唤醒
1 Linux进程的睡眠和唤醒 在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状态标志位为TASK_RUNNING.一旦一个运行中的进程时间片用完, ...
- 二叉查找树BST----java实现
二叉查找树BST----java实现 1.二叉查找树简单介绍 二叉查找树 ...
- 服务器,数据库连接注意mysql的user表
update user set host='localhost' where user='root';
- 何为SLAM
名词解释: SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and Localizatio ...
- WebService中获取request对象一例
@WebService @Service public class WeiXinWebServiceImpl implements IWeiXinWebService { @Resource priv ...
- CentOS7.1 KVM虚拟化之经常使用管理虚拟机命令(3)
一.查看虚拟机列表及状态 [root@kvm01 ~]# virsh list --all Id Name State ---------------------------------------- ...
- Oracle中没有 if exists(...)的解决方法
http://blog.csdn.net/hollboy/article/details/7550171对于Oracle中没有 if exists(...) 的语法,目前有许多种解决方法,这里先分析常 ...
- 应用处理器AP概述
移动终端芯片其它部分见"一站式了解智能终端处理器". 功能机时代,扩展手机特性是在基带芯片上进行.手段包含:升级基带芯片获得更强的计算能力.电路进行又一次设计以添加功能如照相机和S ...
- 怎样给filter加入自己定义接口
.在Cfilter类的定义中实现Interface接口的函数的定义: //-----------------------Interface methods----------------------- ...
- APU的Vsense引脚的作用
JACK学习文档推荐: 开关电源PCB布局注意事项 开关电源PCB布线注意事项 一.Sense电压检测(FB) “Sense+”和“Sense-”,就是四线制中的电压检测线,high-sense 和l ...