基于网络加载的嵌入式BootLoader的设计与实现
其中subnet是目标机与主机共同的子网,netmask是它们的子网掩码。Hardware ethernet是目标机的网络硬件地址,可以通过fixed-address给目标分配一个固定的IP地址,当目标机启动时,就会自己获得这个IP地址。Option host-name是目标机的机器名。当主机与目标机直接连接时,option routers指向主机的地址,当它们不是直接连接,而是通过路由时,option routers的值为真正的routers地址值,同理optionsubnet-mask为option routers网络的子网掩码。Filename为目标机从TFTP服务端下载的文件名,next-server为提供TFTP服务的位置。
最后请检查/var/state/dhcp/dhcpd.leases文件是否存在,当一切准备好后,就可以运行DHCP服务了:
#/etc/init.d/dhcpd start
2)建立服务器端的TFTP服务
该服务在基于网络的BootLoader下载应用程序时使用,它类似于FTP服务,但它不需要向服务器提供用户名与密码,且其下载速度比FTP要快。其配置过程如下:
在确信TFTP协议已经被正确安装后,
①修改文件/etc/xinetd.conf,打开tftp的支持;
②修改文件/etc/xinetd.d/tftp,例如:
![e.JPG](http://m.amcfsurvey.com/uphotos/fetch/20130729/148141_2_0.jpg)
参数server_args为tftp服务指定的目录,其余参数理解比较容易。
设置完毕后,请重新启xinetd,运行tap服务。
3)建立服务器端的NFS服务
目标平台在Linux运行初始化时,需要借助该服务来挂载根文件系统。其配置过程如下:
在确定NFS已经正确安装后,请修改文件/etc/exports,例如:
/home/karim/ctrl—rooffs 192.168.172.10 (rw,no_root_squash)
其中目录/home/karim/ctrl-rooffs可以修改为服务器端的根文件系统存放的目录。192.168.172.10为服务器端的IP地址。
修改完成后只需要重新启动NFS服务即可,NFS服务提供网络文件系统功能,便于应用程序的管理与使用。
1. 3 客户端嵌入式BootLoader的设计
在基于网络加载的BootLoader系统中,应用程序文件一般被存放在网络服务器。系统启动后,BootLoader需要先驱动网络适配器,并通过UDP/IP协议栈(BOOTP/DHCP、TFTP协议等),将映像文件下载到目标机端的SDRAM运行,当嵌入式linux操作系统初始化时,它借助NFS协议将根文件系统挂载到服务器端。
在该方案中,BootLoader程序的主要工作步骤如下:
1)基本硬件的初始化:包括屏蔽所有的中断、初始化所有的硬件、设置/装载系统setup值、设置CPU的时钟和频率、RAM的初始化等;
2)读取网络参数配置文件:
该配置文件主要存放系统使用网络过程中需要的一些参数,包括MAC地址、tftp服务器的IP地址、Kernel文件名、应用程序文件名等。
3)初始化PCI接口,并驱动网卡;
4)通过DHCP协议获取目标平台的IP地址;
目标平台先广播发送ARP包,当DHCP服务器接收到该ARP包后,就会根据ARP包中的硬件地址从地址表中分配一个有效的IP地址,并发送应答报文给目标平台。
5)通过tftp协议下载kernel代码至内存SDRAM;
6)运行Linux内核和系统应用程序。
评论