Hi3515支持NFS-ROOT启动
目前在做Hi3515平台监控项目,前期开发一直使用SDK里推荐的mount nfs方式来调试代码,虽然也算方便,但是我一直觉得用法NFS-ROOT才是最省事的方法,而且最接近最终用户使用环境,因为如果NFS-ROOT调试完成后,就直接可以出firmware了.
由于SDK几乎将所有用到的驱动都独立编译成了ko文件,所以为了将驱动编译到内核中,还是需要做一番工作的,由于初次接触内核和驱动,所以很多东西都是刚了解的。通过不断的试错和调试,终于搞定了网卡驱动和NFS-ROOT的支持。
若想内核支持NFS-ROOT,主要是两个方面的功能配置,一是ethernet,让网卡在内核运行时驱动自动加载,这样才不会导致eth0找不到的情况,而是nfs内核中的相关配置选项。
step 0. 复制使用到的config配置文件
cp arch/arm/configs/hi3515v100_full_release_defconfig .config
step 1.在内核代码中增加网卡驱动
step 1.0 在驱动目录下增加hiether文件夹,用来存放hi3515的网卡驱动
mkdir linux-2.6.24/drivers/net/hiether
step 1.1 复制已有的网卡驱动到新添加的文件夹中
cp Hi3515_SDK_V1.0.5.0.c1/source/drv/hi3515v100-sfv300 linux-2.6.24/drivers/net/hiether
step 1.2 修改驱动文件夹中的代码
由于原有驱动是用来编译为独立的ko文件的,所以里面的部分函数使用了__exit标志,用来表示只用来作为模块退出使用的函数,如果不将次函数的__exit标志去掉,在编译内核的时候会打印
“ `.exit.text’ referenced in section `.init.text’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.o`.exit.text’ referenced in section `.data’ of drivers/built-in.o: defined in discarded section `.exit.text’
of drivers/built-in.o`.exit.text’ referenced in section `.data’ of drivers/built-in.o: defined in discarded section `.exit.text’ of drivers/built-in.omake: *** [.tmp_vmlinux1] 错误 1”
简单的将__exit标志去掉,就能顺利通过编译了。
step 1.3 增加菜单选项
要想通过menuconfig来选择是否选择hiether驱动,要做一下修改:
step 1.3.0 修改Kconfig文件
在net/Kconfig中config DM9000下面的位置增加下面内容
config DM9000
tristate “DM9000 support”
depends on ARM || BLACKFIN || MIPS
select CRC32
select MII
—help—
Support for DM9000 chipset.
To compile this driver as a module, choose M here. The module
will be called dm9000.
config HIETHER
tristate “HIETHER support”
—help—
step 1.3.1 修改net/Makefile,增加需要编译的文件夹
obj-$(CONFIG_HIETHER) += hiether/
step 1.3.2 在hiether文件夹中增加Makefile文件,内容如下
obj-$(CONFIG_HIETHER) += hiether.o
hiether-objs := mdio.o mii-drv.o mac.o ctrl.o glb.o net-drv.o mm.o sys.o proc.o
step 1.3.3 make menuconfig 选择新增加的驱动
[*] Network device support —> [*] Ethernet (10 or 100Mbit) —> <*> hiether support
step 2. 内核增加对NFS-ROOT的支持
Networking —>Networking options —>[*] IP: kernel level autoconfiguration
[*] IP: DHCP support
[*] IP: BOOTP support
[*] IP: RARP support
File systems —> [*] Network File Systems —> <*> NFS file system support
[*] Allow direct I/O on NFS files
[*] Root file system on NFS
[*] Support for rpcbind versions 3 & 4 (EXPERIMENTAL)
step 3.重新编译内核
make; make uImage
step4. 测试
宿主机要安装nfs,tftp,这些网上教程很多,这里就不罗嗦了
启动参数setenv bootargs busclk=220000000 mem=64M console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=192.168.6.141:/tftpboot/hi3515.filesys, nolock eth=00:1e:9a:04:5c:4d ip=192.168.6.143:192.168.6.100:192.168.6.254:255.255.255.0:tocore:eth0:off pcimod=host
pciclksel=1
下载最新内核并运行
tftp 0xc1000000 uImage; bootm 0xc1000000
—————————启动打印信息————————————————–
IP-Config: Complete:
device=eth0, addr=192.168.6.143, mask=255.255.255.0, gw=192.168.6.254,
host=tocore, domain=, nis-domain=(none),
bootserver=192.168.6.100, rootserver=192.168.6.141, rootpath=
Looking up port of RPC 100003/2 on 192.168.6.141
PHY: 0:01 – Link is Up – 100/Full
Looking up port of RPC 100005/1 on 192.168.6.141
VFS: Mounted root (nfs filesystem).
Freeing init memory: 112K
Hi3515支持NFS-ROOT启动的更多相关文章
- NFS无法启动解决方式
今天一台挂载nfs磁盘的服务器出现异常,数据不能写入,执行 df -h 卡住不动. 登录nfs server查看发现nfs为启动. [root@server10-13 web]# exportfs [ ...
- centos7也支持service命令启动服务吗,对于centos7 中的systemctl和旧的service命令的区别和联系
一.centos7也支持service命令启动服务吗 CentOS 7.0中一个最主要的改变,就是切换到了systemd.它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服 ...
- NFS挂载启动
NFS挂载启动参数: 1.服务器IP.目录(虚拟机IP和 NFS目录) 2.开发的IP 如下我的开发板设置 ipaddr=192.168.1.17 ① 开发板IP serverip ...
- 让.Net程序支持命令行启动
很多时候,我们需要让程序支持命令行启动,这个时候则需要一个命令行解析器,由于.Net BCL并没有内置命令行解析库,因此需要我们自己实现一个.对于简单的参数来说,自己写一个字符串比较函数来分析args ...
- 自windows8以后,所有版本(专业版、企业版、旗舰版)都支持从 vhd 启动
而在windows 7 中,只有:企业版.旗舰版: 支持 从 vhd 启动!
- Linux NFS Root and PXE-Boot
Linux NFS Root and PXE-Boot November 6, 2006 Home· Linux Linux kernel hacking and test running on th ...
- elasticsearch不能使用root启动问题解决
问题: es安装好之后,使用root启动会报错:can not run elasticsearch as root [root@iZbp1bb2egi7w0ueys548pZ bin]# ./elas ...
- 以root启动pycharm
在使用scapy模块的时候提示permitted就猜想可能是权限问题.然后换成root启动啥事情都没了. 由于本机是deepin先找到pycharm.sh脚本 然后再执行sudo ./pycharm. ...
- nfs 客户端启动报错rpc.mountd: svc_tli_create: could not open connection for tcp6
# /etc/init.d/nfs start Starting NFS services: [ OK ] Starting NFS mountd: rpc.mountd: svc_tli_creat ...
随机推荐
- 关系类型字段 -- Django从入门到精通系列教程
该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. Python及Django学习QQ群:453 ...
- 蓝桥杯练习系统—基础练习 2n皇后问题
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后.现在要向棋盘中放入n个黑皇后和n个白皇后, 使任意的两个黑皇后都不在同一行.同一列或同一条对角线上,任意的两个白皇后都不在同一行. 同一列或 ...
- windows上搭建svn 、 Eclipse上安装svn插件 、 eclipse中如何使用svn
折腾了许久终于搞出来了. svn搭建 一.svn概述 SVN就是用于多个人共同开发同一个项目,共用资源的目的,该文描述了把svn搭建在本地上,和搭建在Eclipse4.5.2上. 二.svn分类 分为 ...
- 18_Python列表常用方法总结
''' 1.列表切片索引\截取 2.列表的增删改查 3.列表最大值\列表最小值\排序 4.列表的遍历 5.列表的嵌套 6.列表和字符串的互转 7.判断元素是否在列表中 ''' #列表使用中括号表示 元 ...
- dubbo中Listener的实现
这里继续dubbo的源码旅程,在过程中学习它的设计和技巧,看优秀的代码,我想对我们日程编码必然有帮助的.而那些开源的代码正是千锤百炼的东西,希望和各位共勉. 拿ProtocolListenerWrap ...
- Eclipse EE遇到问题记录
Eclipse EE可以进行Java web的开发,下面记录了使用Eclipse EE调试时遇到的一些问题. 1.tomcat启动timeout的设置,双击server,主窗口就变为了server的配 ...
- 在Android上编写模块化项目(翻译)
来源博客:Wang Jie's Blog 本文链接:http://blog.wangjiegulu.com/2018/02/13/writing_a_modular_project_on_androi ...
- Material使用11 核心模块和共享模块、 如何使用@angular/material
1 创建项目 1.1 版本说明 1.2 创建模块 1.2.1 核心模块 该模块只加载一次,主要存放一些核心的组件及服务 ng g m core 1.2.1.1 创建一些核心组件 页眉组件:header ...
- 浅谈JavaScript的事件(事件模拟)
事件经常由操作或者通过浏览器功能触发,通过JavaScript也可以触发元素的事件.通过JavaScript触发事件,也称为事件的模拟. DOM中事件模拟 可以document的createEvent ...
- Eclipse Java,debug模式无法调试,调试按钮不可用时解决办法
经常出现debug模式进入后,debug的几个按钮置灰,F5,6,8,没有任何反应时,这样操作: 退出 Eclipse.打开 Eclipse 目录下的 configuration 下的 org.ecl ...