热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

和菜鸟一起学OK6410之tftp下载内核,nfs挂载文件系统全过程详解

人有悲欢离合,月有阴晴圆缺。少不了离愁别绪,人生就是这样,喜也一天,悲也一天,直待,慢慢老去。老去,必将面临着死亡。终于工作了,终于赚钱了,那么多的终于,也抵不过岁月的流逝,

       人有悲欢离合,月有阴晴圆缺。少不了离愁别绪,人生就是这样,喜也一天,悲也一天,直待,慢慢老去。老去,必将面临着死亡。终于工作了,终于赚钱了,那么多的终于,也抵不过岁月的流逝,抵不过老去的容颜。外公,一路走好。脑海里全是童年的回忆,外公是最疼我的。上周最后看您一眼,又匆匆赶回来工作,下周也不能天天陪您,只能在最后几天回去陪您。相信在远方的您,会看到我的努力,因为我一直都是您的骄傲,从小就是。未来,我一定会更加努力的,相信您也会保佑我的。一路走好。在远方的外孙永远想念您。

       也许,泪水真的可以洗刷一切,一切的一切。终于可以看得清屏幕了,还是把晚上的成果展示下吧。

       由于工作的平台也是嵌入式,差不多的平台,所以一直就没有把自己买过来的ok6410板子好好玩玩。以前一直都是sd卡去进行实验的。想着,如果和公司实验室里的开发平台一样的话,那多好啊,既方便,又快捷。磨刀不误砍柴工嘛,好的开发环境可以提高很多效率的。好了,下面开始讲讲怎么去实现的吧。下文很多是参考网上的资料的,很多是雷同,我只是记录自己的过程。

       首先是tftp下载内核吧。网上也都说了,ok6410uboot里面可恶的网卡驱动是cs8900的,而实际网卡是dm9000的,所以导致进入uboot后就没有办法用tftp来下载内核了。不过有人已经实现了这个功能。

下面分几个小标题,各个实现各个说明

 

                                                            一、uboot的修改编译

 

        通过修改uboot可以实现,修改include/configs/smdk6410如下:

 

        接着是drivers/dm9000x.c下了

 

        好了,之后在下面几条命令就可以生成新的uboot

 

make clean

make smdk6410_config

make


                                  

                                                                         二、uboot的下载

 

        接着就是下载那个uboot了,用usb可以很快解决,还是贴一下下载过程吧,虽然文档有的,至于那个usb下载的驱动安装什么的,那就不多说了。

        好了,现在假设都好了,出来下面这个图了。

1、把mmc.bin通过usb port下的transmit下载好,这里地址是0x57e00000。在下载的时候,要一直按空格键,要不然过了之后,就去起内核了。

2、接着进入U-boot命令行后,输入‘#dnw 50008000’,并回车

3、然后将U-boot映像文件下载到内存:点击DNW菜单“USBPort-->Transmit-->Transmit

在弹出的文件浏览窗口中选择u-boot.bin

4、擦除Nandflash,输入命令:

#nand erase 0 100000 擦除Nandflash从0开始的1MB大小的区域。


5、将程序写入到Nandflash,输入命令:

#nand write.uboot 50008000 0 100000


       这样uboot就算下载成功了。

 

                                                                       三、虚拟机安装tftp

 

     

  1.  sudo apt-get install tftp-hpa tftpd-hpa 

       2 .  mkdir /tftproot 

            chmod 777 tftproot 

       3.  sudo vim /etc/default/tftpd-hpa 


修改如下

 

4.然后就可以启动这个服务了  

 sudo service tftpd-hpa restart 


5 检测 tftp

       1)> echo hello world > ~/a.txt 

       2)> echo tftp test > /tftproot/b.txt 

       3)> cd ~ 

       4)> sudo tftp 127.0.0.1 

       5)> tftp> put a.txt 

       6)> tftp> get b.txt

       7)> tftp> q


        看tftpboot目录下是否有相应的文件就可以判断了。

 

 

                                                                    四、tftp下载内核

 

        首先要准备好内核zImage,在kernel下面

make zImage

cp arch/arm/boot/zImage /tftpboot


        准备内核之后,那边是要去下载了,拨码开关拨到nandflash启动,uboot是烧到nandflash中的,然后就是进入smdk6410uboot了。

        接着

setenv bootcmd tftp 0xc0008000 zImage; bootm 0xc0008000

saveenv


         然后复位之后,就会通过tftp下载内核了。

 

                                                           五、虚拟机安装nfs

 

#sudo apt-get install portmap

#sudo apt-get install nfs-kernel-server

#sudo vi /etc/exports 


         加上你的rootfs的路径

        添加的内容意思是:允许 ip地址范围在192.168.5.*的计算机以读写的权限来访问/home/eastmoon/ok6410/rootfs目录,/home/eastmoon/ok6410/rootfs也称为服务器输出共享目录。具体要根据不同的环境来定。

        然后就是启动服务了

1)

#sudo exportfs -rv 

  使/etc/exports 文件生效

2)接着执行如下命令,启动端口映射:

#/etc/init.d/portmap start(或:#sudo service portmap start)


3)最后启动 NFS服务,此时 NFS会激活守护进程,然后就开始监听 Client端的请求:

#/etc/init.d/nfs-kernel-server restart (或: #sudo service nfs-kernel-server restart)


   Linux 服务器端 NFS服务器的配置到此就已经配置好了。

 

                                                                 六、nfs挂载文件系统

 

       这也是最后一步了,至于文件系统嘛,买板子的时候,店家可定给了资料了,然后就是解压到那个你指定的目录下面的。我的是/home/eastmoon/ok6410/rootfs

#sudo tar –zxf FORLINX_6410_yaffs2_v1.0.tgz就可以了。


        然后就是要设置uboot的启动参数了

       启动uboot,然后

set bootargs root=/dev/nfs cOnsole=ttySAC0,115200 

nfsroot=192.168.5. 100:/home/eastmoon/ok6410/rootfs 

ip=192.168.5.150:192.168.5.100:192.168.5.1:255.255.255.0::eth0:off

saveenv

 

  

192.168.5.100 pc端虚拟机的ip

   192.168.5.150 开发板的ip

   192.168.5.1 网关

   255.255.255.0 子网掩码

 


 

 

    然后配合刚才的tftp下载,接着复位下板子。然后就可以即通过tftp下载内核也可以nfs挂载文件系统了,之后的开发就方便多了。

 

        终于写完了,心也静下来了,睡觉了,明天继续公司学习,晚上回来学习板子。以后陆续会把自己调通的驱动都写写博客和大家一起分享下。

 


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Redis的默认端口、数据库使用和多端口配置
    本文介绍了Redis的默认端口、数据库使用和多端口配置的方法。通过选择不同的数据库和使用flushdb命令可以实现对不同数据库的访问和清除数据。同时,本文还介绍了在同一台机器上启用多个Redis实例的方法,并讨论了配置认证密码的步骤和注意事项。 ... [详细]
  • 本人新手,用Unity3D想做一个简单的赛车游戏,现在的问题是转弯的时候很容易出现翻车的情况,求解决思路比如说你的中心是在(0,0,0),你把他设置成(0,-1.0,0)之类的就可 ... [详细]
  • c# java socketn 字节流_C#Socket编程详解(一)TCP与UDP简介
    一、TCP与UDP(转载)1、TCP1.1定义TCP(TransmissionControlProtocol)传输控制协议。是一种可靠的、面向连接的协议(eg:打电话)、传输效率低 ... [详细]
author-avatar
mobiledu2502870557
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有