PC端(基于Linux系统)通过串并网线口连接ARM开发板,烧写Bootloader并启用Bootp和Tftp等服务刷写Linux系统。

来源:互联网 发布:思创医惠 人工智能 编辑:程序博客网 时间:2024/04/29 19:03

写这篇博客之前有几个问题需要解决,如下。
问题:
1.Bootloader的作用是什么?
2.串并网线口的用处是什么?
3.TFTP和BOOTP服务的作用是什么?
4.整个流程是什么?

引言:
以电脑的BIOS(Basic Input Output System)作为敲门砖来展开这个话题。
如果有人会装系统大概都会利用键盘F2等按键在没有进入系统之间登陆烧写在ROM的BIOS固件。我们可以看到,这个固件起到了引导作用,同时也能开启和关闭某些电脑的服务。
那么如何在ARM等开发板上烧写比较简易的引导呢?现在本人脑袋里想到的就是Bootloader,当然还有其他的引导啦!

好的,现在解决开篇提出的第一个问题。
“Bootloader的作用是什么?“
嵌入式Linux系统粗略可以分为四层(如下图)
这里写图片描述
我们可以这样认为,Bootloader就是一个简易的将PC端Linux系统和“毫无生机”的嵌入式ARM开发板连接起来的一个软件。
还有另外一种叫做Monitor的固件,当然啦,Monitor的功能更完善。具体的差异在此不做讨论。因此,严格来讲,Bootloader仅仅是引导设备并执行主程序的固件。
再来,我们介绍一下Bootloader的两种操作模式。
其一,“启动加载”模式
简单来说,就是啥也不干,直接加载系统就好。但是对于嵌入式ARM开发板来说,直接这样做是行不通的。道理你们都懂。。。
其二,“调试”模式
这下好办了,有了调试功能就好比有了Debug工具。你能想象的基本功能,它都有。具体的,请见Bootloader的相关资料。

介绍了Bootloader,那么我们就着手烧写ARM开发板吧!(想象都有点小激动呐)
具体的步骤如下:
1)用串口通过minicom测试电脑是否与开发板相连。一般来说,先打开minicom,然后打开开发板就可以看到出现一组关于开发板的数据。

2)因为本人是利用虚拟机中的Linux系统操作开发板的,所以建立了一个方便从windows传输文件到linux的一个共享目录。然后把所有相关的文件都放进去(比如:bootloader,Jflash-XSBase,Boot-XSBase,还有就是简易功能化的Linux系统)

3)做好了准备工作,那就开始烧写Bootloader。解压完了Jflash和Boot文件之后,就把Bootloader中的可执行文件boot放在jflashmm的目录下。这样执行的时候方便快捷。
那么直接执行命令 ./jflashmm boot 就可以刷入bootloader了。刷写成功会出现”Verification successful!”的字样。

4)接下来,我们看看bootloader里面的“调试”功能吧。因为我们还没有把Linux系统写入开发板,那就只能调试咯!这个时候我们需要记录一下开发板的IP地址,用bootloader的命令“bdinfo”就可以显示出来了。当然,IP地址我们待会能用到,而且很关键。

5)然后就是开启刷写Linux系统的基本服务咯。先在主机上开启Bootp服务,通过BOOTP/TFTP协议引导image,Bootp通过网络启动,需要提前设置好硬件地址。
接下来来我们需要实行这个BOOTP/TFTP的协议,当然我们需要写一写关于Linux的配置文件。
在/etc/目录下创建bootptab文件,它能存储IP地址等信息,可以参照下图标准。
这里写图片描述
当然一个配置文件还不够,因为需要用到bootp/tftp协议。
那就要创建一个bootp文件启动bootp服务。可以参照如下图。
这里写图片描述
最后需要安装tftp服务。
然后在/etc/xinetd.d/目录下创建一个tftp文件。(默认情况下TFTP服务是禁止的,因此需要写这个文件开启。)可以参照下图。
这里写图片描述

6)至此,就完成了基本的配置工作。我们也能注意到,J-tag和串口网孔的作用了。(J-tag作为烧写Bootloader的作用,串口可以通过BOOTP/TFTP协议传输Linux系统文件,网口嘛,因为你要用网线才能获得来自bootloader发送来的来自ARM开发板关于IP地址的数据啊)

7)最后就要写入Linux系统到开发板了,当然需要将功能模块化的Linux的Img印象放入到一个合适的文件目录里面,不如我们就命名为tftpboot吧。 那就把相应的img文件放进去,到时候直接调用安装就可以咯。最后我们重启一下服务守护进程,这样才能实例化bootp和tftp服务。

8)好咯,在安装linux之前所有的工作都完成了,剩下的只需要重新利用minicom打开Bootloader的“自动加载”功能了。本人的开发板需要重启才能再次读取到Bootloader,所以这一点可能有点坑。
然后就可以看到Bootloader的菜单了:是不是和最初写C语言程序的时候差不多呢?
这里写图片描述
接下来可以利用我们准备已久的IP地址,然后与主机的设置成一样。在Bootloader里面利用“ set destipaddr ”命令就好了。
然后就可以选择Bootloader的第5个菜单项下载准备好的Linux文件就好了。最后再使用菜单项3下载内核镜像文件。如果不成功那就是网线没弄好咯。
当你下载完镜像文件之后,那么立即进入菜单项6将文件系统写入到ARM开发板的flash中去吧!

9)重启下开发板,你再通过Minicom可以关注到你的Linux系统已经安装成功啦!
至此,所有的步骤都已经完成。起先提出的几个问题是否迎刃而解了呢?
本人能力有限,如果出现错误和不足之处,还希望读者海涵!

0 0
原创粉丝点击