热门标签 | 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挂载文件系统了,之后的开发就方便多了。

 

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

 


推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文详细介绍了如何在Oracle VM VirtualBox中实现主机与虚拟机之间的数据交换,包括安装Guest Additions增强功能,以及如何利用这些功能进行文件传输、屏幕调整等操作。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文详细介绍了在Linux操作系统上安装和部署MySQL数据库的过程,包括必要的环境准备、安装步骤、配置优化及安全设置等内容。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 对象存储与块存储、文件存储等对比
    看到一篇文档,讲对象存储,好奇,搜索文章,摘抄,学习记录!背景:传统存储在面对海量非结构化数据时,在存储、分享与容灾上面临很大的挑战,主要表现在以下几个方面:传统存储并非为非结 ... [详细]
  • Asynchronous JavaScript and XML (AJAX) 的流行很大程度上得益于 Google 在其产品如 Google Suggest 和 Google Maps 中的应用。本文将深入探讨 AJAX 在 .NET 环境下的工作原理及其实现方法。 ... [详细]
  • 解决PHP项目在服务器无法抓取远程网页内容的问题
    本文探讨了在使用PHP进行后端开发时,遇到的一个常见问题:即在本地环境中能够正常通过CURL获取远程网页内容,但在服务器上却无法实现。我们将分析可能的原因并提供解决方案。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 在Python编程中,经常需要处理文件下载的任务。本文将介绍三种常用的下载方法:使用urllib、urllib2以及requests库进行HTTP请求下载,同时也会提及如何通过ftplib从FTP服务器下载文件。 ... [详细]
  • JavaScript 实现图片文件转Base64编码的方法
    本文详细介绍了如何使用JavaScript将用户通过文件输入控件选择的图片文件转换为Base64编码字符串,适用于Web前端开发中图片上传前的预处理。 ... [详细]
  • 本文探讨了在使用JavaMail发送电子邮件时,抄送功能未能正常工作的问题,并提供了详细的代码示例和解决方法。 ... [详细]
  • 在尝试启动Java应用服务器Tomcat时,遇到了org.apache.catalina.LifecycleException异常。本文详细记录了异常的具体表现形式,并提供了有效的解决方案。 ... [详细]
  • 开发笔记:empireCMS 帝国cms功能总结 ... [详细]
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社区 版权所有