Beaglebone Black——理论篇beaglebone black启动——从串口获得SPL、U-BOOT,TFTP服务器获得内核,NFS服务器挂载根文件系统

          一般来讲启动一个系统所需的bootloader(SPL/MLO、u-boot.img)和根文件系统(/boot下包含内核zImage)要么是放在NAND Flash,或者是SD卡,或者是eMMC,或者是USB中,那么还有一种方式,就是所需要的这些文件全部都不在板子上,而是放在其他的电脑或者说服务器上。这样即使板子上没有eMMC也照样跑系统!而且由于根文件系统在NFS服务器上,使得板子上的系统的“硬盘空间”变得十分充足!


关于一个系统的启动流程相关参考资料

ARM-Linux嵌入式系统启动流程


内核源码的说明文档,关于NFS启动一些需要注意的

https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt


1、ROM-Code如何从串口获取bootloader?

          对于BBB板子来说,当没有按住boot按键时,启动顺序是MMC1、MMC0、UART0、USB0,而按住boot按键时启动顺序为SPI0、MMC0、USB0、UART0。由于板子的MMC1已经接有eMMC,所以要想让ROM-Code从串口启动,那么断电时,拔掉SD卡,然后按住boot按键,再给板子上电,如果连接上了串口调试线,此时PC机串口应该不停的收到字符CCCCCC,这就表示ROM-Code在向串口请求SPL文件(PC机的串口调试工具推荐SecureCRT)。此时用Xmoden协议将SPL文件从串口发送过去,接着串口上会显示传送进度和速度。传送完后串口会又会收到字符CCCCCC,这就表示传送过去的SPL已经运行,并向串口请求u-boot.img文件,此时用Ymoden协议将u-boot.img文件传送过去,接下来从串口可以看到u-boot已经启动,但由于没有内核和根文件系统,所以u-boot自动停止,显示出命令行交互界面#u-boot:

          至此ROM-Code和SPL任务完成,接下来控制权转交给u-boot。


2、u-boot如何从TFTP服务器获取内核镜像,从NFS服务器挂载根文件系统?

        首先要在同一局域网内的一台PC机上配置TFTP和NFS服务器,比如可以在虚拟机ubuntu12.04中配置TFTP和NFS服务器,注意,虚拟机和宿主机一定要选择桥接模式,以使虚拟机和目标板获得同一网段的IP。

相关参考:

TFTP服务器配置

NFS服务器配置

        以上配置完成后都进行都本机测试tftp localhost、mount -t nfs -o nolock localhost:/nfs/dir/ /mnt/nfs,或者用开发板来测试,以确保配置没有问题。

        准备工作都做好之后,现在u-boot#命令交互等待用户输入,该如何配置环境变量让u-boot通过TFTP协议下载内核到内存,下载到哪个位置?传递什么参数给内核来让他知道根文件系统在哪里?下面来对此进行分析:

         进入u-boot后,输入printenv,回车,得如下输出,

U-Boot# prin
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值