精华内容
下载资源
问答
  • 摘 要:针对无线传感器网络的结构特点及对无线可移动终端的需求,分析了Linux操作系统的启动过程,提出了无线传感器网络可移动终端引导程序的设计方法,并对引导程序实现的4个关键环节的配置和设计进行了说明。...
  • 基于Linux的无线传感器网络引导程序的设计.pdf
  • 摘 要:针对无线传感器网络的结构特点及对无线可移动终端的需求,分析了Linux操作系统的启动过程,提出了无线传感器网络可移动终端引导程序的设计方法,并对引导程序实现的4个关键环节的配置和设计进行了说明。...
  • 基于Linux的无线传感器网络引导程序的设计 (1).pdf
  • (本文章需要对计算机网络启动有一定的了解) 最早出现的是etherboot,这是一个开源的软件,可以帮助计算机从网络启动,功能非常的简单 1. 发送dhcp请求 2. 获取一个文件,通常文件就是linux的kernel。 Intel...

    本文章需要对计算机网络启动有一定的了解

    最早出现的是etherboot,这是一个开源的软件,可以帮助计算机从网络启动,功能非常的简单

    1. 发送dhcp请求

    2. 获取一个文件,通常文件就是linux的kernel。

    Intel发现这种从网络启动有很重要的地位,所以就开发了一个工具PXE(preboot execute environment)。 这也算是网络启动计算机的一个标准吧。正常来说pxe程序都是存放在网卡中的。

    PXE比etherboot中强的部分就是引入了一个NBP(network bootstrap program)的概念。所有的NBP文件都是可执行的,也可以有对应的配置文件。这样以来,如果网卡中自带的PXE无法满足用户的需求的话,就可以先使用dhcp从网络下载NBP,再通过NBP的配置文件来控制计算机的下一步执行流程(配置文件其它就是一个NBP可执行的脚本,相应的NBP会有自己的文档详细描述脚本的写作方法)。所以计算机从网络启动就可以有很大的灵活性,从而满足不用开发人员的需求。

    PXE可以支持的协议主要有dhcp和tftp。


    PXE功能已经很强大,可以满足大部分人的需求。但是它也存在不足:

    1. PXE是闭源的,大家如果想学习的话是很难的。

    2. PXE的传输协议只有tftp,tftp很简单,但是性能不容乐观,如果少量的几台机器使用的话不成问题,机器的数量一多,就会出现time out这样的问题。


    所以etherboot那些人就重新开发了一个软件叫做gPXE,完全实现的PXE所有的功能,当然也做出了很多的增强,特别是支持了DNS,HTTP, iSCSI,这对于大型机群的管理人员来说就有很大的意义了,http更加的快速和稳定。


    现在使用的最多的iPXE, 这个i没有任何的意思,因为官网是的说明是“It doesn't.”。大家认为iPXE和gPXE是一个东东就可以了。


    如果想有个详细的了解的话,可以看看这个页面中的视频 https://sites.google.com/site/richardgroux/infrastructure-1/Network/pxe-boot/what-is-gpxe-1。 视频中的几个大牛就是etherboot/gPXE/iPXE的作者。


    展开全文
  • vivi系统引导程序网络功能扩展 vivi系统引导程序网络功能扩展 vivi系统引导程序网络功能扩展 vivi系统引导程序网络功能扩展 vivi系统引导程序网络功能扩展 vivi系统引导程序网络功能扩展
  • 针对无线自组织对等网络的结构特点及对无线可移动终端的需求,分析Linux操作系统的启动过程,给出无线传感器网络可移动终端5段式引导程序的设计方法,对引导程序实现的4个关键环节的配置和设计进行说明。调试结果...
  • netboot网络引导文件

    2014-02-25 16:49:09
    网络引导配置文件,不用自己去写配置,适用于redhat,centos,ubuntu,linuxmint
  • PXE网络引导

    2019-05-10 17:19:05
    无论是关盘引导还是PXE引导,第一步都是加载一个启动管理器,由该启动管理器(boot loader)来加载内核和安装器anaconda PXE启动过程 1、NIC申请DHCP信息 2、DHCP服务器提供BootLoader name和tftp服务器ip 3、NIC用...
    • PXE
      提供了一个通过网络启动操作系统,或者启动安装器anaconda的环境。无论是关盘引导还是PXE引导,第一步都是加载一个启动管理器,由该启动管理器(boot loader)来加载内核和安装器anaconda
    • PXE启动过程
      1、NIC申请DHCP信息
      2、DHCP服务器提供BootLoader name和tftp服务器ip
      3、NIC用TFTP去获取BootLoader,BIOS执行BootLoader
      4、BootLoader 用tftp去找配置文件,按配置文件内容运行
    • 通过网络启动anaconda
      anaconda的第一阶段有tftp提供
      –vmlinuz
      –initrd-*img
      anaconda的第二阶段通过HTTP,NFS or FTP获取
    • BootLoader name:pxelinux.0
      它是网络boot loader程序
      由syslinux包提供
      OS默认安装
      /usr/share/doc/syslinux-*/syslinux.doc配置文件的相关文档
      它的配置文件是通过tftp server查找pexlinux.cfg/filename
    • 查找pxelinux.cfg/filename的顺序
      首先查找的是以客户端UUID命名的配置文件
      以ARP type code 01开头的“-”分隔的MAC地址
      用16进制表示的IP地址(可以用gethostip得到)
      最后查找的是default
    展开全文
  • 拓扑重构过程中,新增一条到最具优势节点的引导型连接;为鼓励节点相互学习,加大网络整体收益。实验结果表明,G-SLACER算法针对不同规模的网络均具有良好的通用性,网络中CCP(cooperative connected path,合作...
  • 网络引导技术PXE浅析

    千次阅读 2010-11-17 00:07:00
    所谓网络引导,指的是在服务器端的协助下,客户机在启动的过程中,通过在网络端口接收指令和数据的方式来完成机器启动的引导过程网络引导技术的作用在于,相关通过网络启动方式启动的节点可以依据服务器端节点的...

    所谓网络引导,指的是在服务器端的协助下,客户机在启动的过程中,通过在网络端口接收指令和数据的方式来完成机器启动的引导过程。

    网络引导技术的作用在于,相关通过网络启动方式启动的节点可以依据服务器端节点的参数完成机器的启动过程,而不受本地外设相关数据和参数的影响。网络引导技术的引入,大大降低了集群系统的维护成本。

    目前,PXE凭借其低廉的实现成本及其易用性,成为应用最为广泛的网络引导技术。

    1        PXE技术简介

    PXE(Preboot eXecute Environment)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持来自网络的操作系统的启动过程,其启动过程中,终端要求服务器分配IP地址,再用TFTPTrivial File Transfer Protocol)或MTFTP(Multicast Trivial File Transfer Protocol)协议下载一个启动软件包到本机内存中并执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。 PXE可以引导多种操作系统,如:Windows 95/98/2000,Linux等。

    PXE技术的实现要求三个模块的协同运作,分别是带有PXE支持的DHCP(Dynamic Host Configuration Protocol)服务器、M/TFTP (Multicast / Trivial File Transfer Protocol)服务器以及网络引导程序。带有PXE扩展支持的DHCP服务器用于为客户端分配IP,以及为客户端指明引导服务器的地址。M/TFTP在整个引导流程中担当了引导服务器(Boot Server)的角色,用于存放引导程序以及其它在客户端启动时所要用到的文件。而网络引导程序,则用于完成客户端机器的引导工作。

    2        DHCP服务器

    DHCP协议为因特网客户机提供了配置参数。DHCP包括了两个组件:一个从DHCP服务器往客户机发送特定客户端配置参数的协议,一个为客户机分配网络地址的机制。

    DHCP基于C/S模型,服务器端分配网络地址并传送配置参数至动态配置的客户机。客户机通过服务器得到IP的过程如下:

    1)      若客户机设置使用DHCP协议取得网络参数,则客户机在开机时或重新启动网卡时,会自动发出DHCP Client的请求给网段内的每台计算机:这时,由于发出的信息希望每台计算机都可以接受,所以该信息除了网卡的硬件地址(MAC)外,还要将该信息的来源软件地址设置为0.0.0.0,而目的地址则为255.255.255.255。这时,网段内的其他没有提供DHCP服务的计算机,受到这个数据包之后会自动将该数据包丢弃而不回应。

    2)      DHCP主机响应信息:如果是DHCP主机收到这个客户机的DHCP请求,那么DHCP主机首先会针对该次请求的信息所携带的MACDHCP主机本身的设置值进行对比,如果DHCP主机的设置中有针对该MAC提供的静态IP(每次都给予一个固定IP),则提供给客户端相关的固定IP与相关的网络参数;如果该信息的MAC并不在DHCP主机的设置中,则DHCP主机会选取当前网段内没有使用的IP(这个IP与设置值有关)将其发放给客户使用。此外,在DHCP主机发放给客户端的信息中,会附带一个“租约期限”信息,告诉客户端这个IP可以使用的期限。

    3)      客户端接受来自DHCP主机的网络参数,并设置客户机自己的网络环境:当客户端接收到响应信息之后,首先会以ARP数据包在网段内发出信息,以确定来自DHCP主机发放的IP没有被占用。如果该IP已经被占用,那么客户机对于这次的DHCP信息将不接受,而将再次向网段内发出DHCP的请求广播数据包;若该IP没有被占用,则客户机可以接受DHCP主机所给的网络参数,那么这些参数将被用于客户端的网络设置中,同时客户端也会对DHCP主机发出确认数据包,告诉服务器这次的请求已经确认,而服务器也会将该信息记录下来;

    4)      客户端结束该IP的使用权:当客户端开始使用这个DHCP发放的IP之后,在下面几种情况下,他可能失去这个IP的使用权:

    · 客户端的离线:关闭网络接口、重启计算机、关机等行为,都算是离线状态,这时服务器端将该IP回收,并放到Server自己的备用区中,以备将来使用;

    · 客户端租约到期:前面提到的DHCP服务器端发放的IP有使用期限,客户机使用这个IP到达期限规定的时间后,需要将IP缴回去。这时就会造成断线,而客户机也可以再向DHCP主机请求再次分配IP

    3        TFTP/MTFTP服务器

    TFTPTrivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。

    TFTP是一个传输文件的简单协议,它其于UDP协议而实现,但是我们也不能确定有些TFTP协议是基于其它传输协议完成的。此协议设计的时候是进行小文件传输的。因此它不具备通常的FTP的许多功能,它只能从文件服务器上获得或写入文件,不能列出目录,不进行认证,它传输8位数据。传输中有三种模式:netascii,这是8位的ASCII码形式,另一种是octet,这是8位源数据类型;最后一种mail已经不再支持,它将返回的数据直接返回给用户而不是保存为文件。

    任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输。每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包的大小小于512字节,则表示传输结构。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,一方传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断,错误由一个错误的数据包引起。这个包不会被确认,也不会被重新发送,因此另一方无法接收到。如果错误包丢失,则使用超时机制。错误主要是由下面三种情况引起的:不能满足请求,收到的数据包内容错误,而这种错误不能由延时或重发解释,对需要资源的访问丢失(如硬盘满)。TFTP只在一种情况下不中断连接,这种情况是源端口不正确,在这种情况下,指示错误的包会被发送到源机。这个协议限制很多,这是都是为了实现起来比较方便而进行的。

    初始连接时候需要发出WRQ(请求写入远程系统)或RRQ(请求读取远程系统),收到一个确定应答,一个确定可以写出的包或应该读取的第一块数据。通常确认包包括要确认的包的包号,每个数据包都与一个块号相对应,块号从1开始而且是连续的。因此对于写入请求的确定是一个比较特殊的情况,因此它的包的包号是0。如果收到的包是一个错误的包,则这个请求被拒绝。创建连接时,通信双方随机选择一个TID,因此是随机选择的,因此两次选择同一个ID的可能性就很小了。每个包包括两个TID,发送者ID和接收者ID。这些ID用于在UDP通信时选择端口,请求主机选择ID的方法上面已经说过了,在第一次请求的时候它 会将请求发到TID 69,也就是服务器的69端口上。应答时,服务器使用一个选择好的TID作为源TID,并用上一个包中的TID作为目的ID进行发送。这两个被选择的ID 在随后的通信中会被一直使用。下例是一个写入的例子,其中WRQACKDATA代表写入请求,确认和数据。

    1)      主机A向主机B发出WRQ,其中端口为69

    2)      B机向A机发出ACK,块号为0,包括BATID

    此时连接建立,第一个数据包以序列号1从主机开始发出。以后两台主机要保证以开始时确定的TID进行通信。如果源ID与原来确定的ID不一样,这个包会被认识为发送到了错误的地址而被抛弃。错误的包是被发送到正确端口的,但是包本身有错误。设想发送方发出一个请求,这个请求在网络的那个设备中被复制成两个包,接收方先后接收到两个包。接收方会认为为这是两个独立的请求,会返回两个应答。当这两个应答其中之一被接收到时,连接已经建立。第二个应答再到达时, 这个包会被抛弃,而不会因为接收到第二个应答包而导致第一个建立的连接失败。

    传输的结束由DATA数据标记,其包括0-511个字符。这个包可以被其它数据包确认。接收方在发出对最后数据包的确认后可以断开连接,当然,适当的等待是比较好的,如果最后的确定包丢失可以再次传输。如果发出确认后仍然收到最后数据包,可以确定最后的确认丢失。发送最后一个DATA包的主机必须等待对此包的确认或超时。如果响应是ACK,传输完成。如果发送方超时并不准备重新发送并且接收方有问题或网络有问题时,发送也正常结束。当然实现时也可以是非正常结束,但无论如何连接都将被关闭。

    如果请求不能被满足,或者在传输中发生错误,需要发送ERROR包。这仅是一种传输友好的方式,这种包不会被确认也不会被重新传输,因此这种包可能永远不会被接收到。因此需要用超时来侦测错误。

    因为TFTP没有安全控制机制,因此安全问题应该多加考虑。通常TFTP允许下载数据而不允许上传数据

    MTFTP协议是TFTP协议在多重播送上的一个扩展。

    4        PXE技术下网络引导的流程

    PXE技术下网络引导的流程如11所示。具体步骤如下:

    1-1 PXE引导流程

    1步:客户端向标准DHCP端口(67)广播DHCPDISCOVER信息。在此包中的选项域中包含以下信息:

    ·  客户端标识(UUID)标签

    ·  客户端UNDI版本标签

    ·  客户端系统体系结构

    ·  DHCP选项60,类ID,设置至“PXEClient:Arch:xxxxx:UNDI:yyyzzz

    2步:DHCP或者代理DHCP服务响应,并发送DHCPOFFER消息到客户端的标准DHCP回复端口(68)。如果这是代理DHCP服务,客户段IP地址域为空(0.0.0.0)。如果这是DHCP服务,那么返回的客户端IP地址域是有效的。在这点上,其它DHCP服务和BOOTP服务也以发送至68端口的DHCP offerBOOTP回复消息响应。每个消息包含标准的DHCP参数:为客户端分配的IP地址,以及任何其它管理员为DHCP或代理DHCP服务指定的参数。DHCP服务器回复的时限是规范的。重广播以接收包含PXE扩展的DHCPOFFER或代理DHCPOFFER的时限,依据于标准DHCP时限,但远短于此,从而允许在并不提供带有PXE扩展DHCPOFFER的标准BOOTPDHCP环境下客户端合法的操作。

    3步:通过所接收到的DHCPOFFER,客户端记录以下信息:

    ·  标准DHCPBOOTP服务所提供的客户端IP地址(以及其它参数)。

    ·  DHCPOFFER PXE标签下引导服务器域上的引导服务器列表。

    ·  发现控制选项(Discovery Control Options),如果有提供的话。

    ·  多重发现(Multicast Discovery)IP地址,如果有提供的话。

    4步:如果客户端选择了DHCP服务所分发的IP,那么它必须向服务送回一个地址请求,然后等待来自服务的确认,从而完成标准DHCP协议流程。如果客户端从BOOTP回复中选择IP地址,它可以直接使用该地址。

    5步:客户端选择并发现引导服务器。该包可以通过广播(67端口)、多播(4011端口)或者单播(4011端口)进行发送,具体采用何种方式由包含PXE服务扩展标签的先前的DHCPOFFER内控制选项决定。这个包与第1步中初始DHCPDISCOVER包基本相同,除了它编码为一个DHCPREQUEST,现在包含以下信息:

    ·  客户端标识(UUID)标签

    ·  客户端UNDI版本标签

    ·  客户端系统体系结构

    ·  DHCP选项60,类ID,设置至“PXEClient:Arch:xxxxx:UNDI:yyyzzz

    ·  PXE选项域中引导服务器类型。

    6步:引导服务器往客户端源端口单播DHCPACK包。该回复包包括:

    ·  引导文件名。

    ·  MTFTP配置参数。

    ·  任何其它NBP成功启动之前所必须的参数。

    7步:客户端通过标准TFTP(69端口)MTFTP(端口由引导服务器ACK包所指定)下载可执行文件。文件的下载以及下载代码在内存中的具体放置由客户端CPU体系结构而定。

    8步:PXE客户端决定是否需要对下载文件进行正确性测试。如果需要该测试,客户端往引导服务器发送另一个DHCPREQUEST消息,请求之前下载引导文件的相应认证文件,通过TFTPMTFTP下载该认证文件,然后执行正确性测试。

      第9步:最后,如果正确性测试成功,或者不要求测试,PXE客户端开始运行刚才下载的代码。

    展开全文
  • vivi系统引导程序网络功能扩展

    千次阅读 2007-08-29 17:06:00
    摘要 vivi是MIZI公司开发的系统引导程序,原本只支持串口下载。本文以S3C2410处理器加CS8900网络芯片为例,介绍一种在vivi基础上增加网络支持的设计方法,使vivi能够通过TFTP下载文件,可以有效地缩短系统的开发周期,...

    摘要 vivi是MIZI公司开发的系统引导程序,原本只支持串口下载。本文以S3C2410处理器加CS8900网络芯片为例,介绍一种在vivi基础上增加网络支持的设计方法,使vivi能够通过TFTP下载文件,可以有效地缩短系统的开发周期,方便用户使用。

    关键词 vivi Bootloader TFTP协议 网络功能扩展

      随着嵌入式的发展,基于ARM的系统越来越流行。在开发ARM系统时,第一步就是要选择一种合适的Bootloader。目前网络上可得到的Bootloader很多,一般几十KB,所以除非要求把Bootloader限制在几KB以内,否则没有必要自己去写一个BootloaderBootloader一般存放在Flash中。当前主流的Flash分为NOR Flash和NAND Flash。前者价格比后者高出很多,而性能相差无几。如果系统采用的是NAND Flash,那么vivi可能会是一个好的选择。

    1  U-bootvivi的比较

      Uboot是由ARMboot和ppcboot结合而组成的,因为其支持的面比较广,功能强大,支持网络,因而被广泛采用;但是它主要针对那些以NOR Flash 启动的系统。NOR Flash可以直接被系统寻址,整个Flash都在系统的寻址空间内,所以在其启动时的汇编代码中是直接把Bootloader拷贝到RAM中去的。如果系统采用的是便宜的NAND Flash,那么它是不能直接被系统寻址的,对它的读写需要专门的操作。此时采用Uboot需要修改太多的代码,而vivi则针对NAND Flash作了特别处理。

    vivi网络功能的扩展

      vivi来自韩国MIZI公司,源代码完全开放,可在该公司网站上下载。原始的vivi只支持从串口下载文件,而现在多数嵌入式产品都支持网络。不能从网口下载文件,不能不说是vivi的一点遗憾。vivi的整个设计都是仿照Linux系统内核设计来做的,其配置界面和Linux内核设计的一样。程序的组织也是完全仿照Linux来设计的,所以比较容易上手。其具体文件组织如下:

      arch/目录存放的是平台相关的代码,主要是系统启动时的汇编代码,vivi运行的第一程序head.s就是放在这里。

    include/存放的是系统的头文件
    driver/存放的是Flash和串口等的读写操作程序
    lib/提供了整个vivi所共用的库函数
    script/提供配置界面的程序
    util/NAND Flash操作的相关程序
    Documention/ 文件的说明

      可以看出,整个设计非常清楚,与Linux 内核的安排是一样的。为了能让vivi通过网络下载文件,就要在vivi中增加一条命令。这里以S3C2410处理器和CS8900网络芯片为例来增加一条命令"tftp [patition] <filename>",使vivi可以从TFTP服务器上下载程序。

    3  TFTP协议简介

      TFTP(Trivial File Transfer Protocol)是一种传输文件的简单协议,是基于UDP协议实现的。它有3种传输模式。这里采用第二种“octet”,就是8位源数据类型。任何传输起自一个读取或写入文件的请求,这个请求也是连接请求。如果服务器批准此请求,则服务器打开连接,数据以定长512字节传输,每个数据包包括一块数据,服务器发出下一个数据包以前必须得到客户对上一个数据包的确认。如果一个数据包小于512字节,则表示传输结束。所以最后一个数据包为0~511字节。如果数据包在传输过程中丢失,发出方会在超时后重新传输最后一个未被确认的数据包。通信的双方都是数据的发出者与接收者,服务器传输数据接收应答,另一方发出应答接收数据。大部分的错误会导致连接中断。出错后服务器会发出一个出错信息包,这个包不会被确认,也不会被重新发送。

      TFTP支持5种类型的包:

      ①  Read request(读请求包)
      ②  Write request(写请求包)
      读/写请求包格式为:

    按此在新窗口浏览图片

      读请求Opcode(操作号)为1,写请求Opcode(操作号)为2;Filename为要从服务器上读/写的文件名;Mode域指数据传输模式串一般为“octet”。
      ③  Data(数据包)
      数据包格式为:

    按此在新窗口浏览图片

      数据包Opcode(操作号)为3;Block#(块号)是从1开始的自然数;Data域指数据长度,通常为512字节,最后一个包数据长为0~512字节。
      ④  Acknowledgment(确认包)
      确认包格式为:

    按此在新窗口浏览图片

      确认包Opcode(操作号)为4;Block#为收到的最后一个正确包的块号。
      ⑤  Error(出错信息包)
      出错信息包格式为:

    按此在新窗口浏览图片

      出错信息Opcode(操作号)为4;ErrorCode为出错代码;ErrMsg是服务器给出的出错信息提示。

    4  如何给vivi增加一条命令

      vivi的命令接口是通过一个结构体来实现的:

    typedef struct user_command {
      const char *name;
      void (*cmdfunc)(int argc, const char **);
      struct user_command *next_cmd;
      const char *helpstr;
    } user_command_t;

    其中:name是命令的名称;(*cmdfunc)(int argc,const char**)是实现该命令的具体函数;*next_cmd是指向下一条命令的指针;helpstr是命令的使用说明。

      vivi启动后调用初始化命令,把它所支持的命令通过链表连接起来。具体而言就是,main.c中调用init_builtin_cmds()函数;init_builtin_cmds在lib/cmd中给出。然后通过add_command()把命令连到链表上,例如增加一条tftp下载的命令tftp_cmd,可以这样写add_command(&tftp_cmd)。

    user_command_t tftp_cmd={
    "tftp",
    command_tftp,
    NULL,
    "tftp{...}/t/t/t--get file form tftp server to RAM/Flash"
    };

      在这里,函数command_tftp()就是用来提供TFTP下载功能的,使系统可以将TFTP服务器上的文件下载到系统内存中的指定地址去,实现功能的主程序如图1所示。主程序首先初始化网络芯片CS8900和定时器,定时器是用来计算接收超时的。这里考虑到移植性问题,没有采用中断的处理方式来接收数据,而直接采用查询的方式来接收数据。然后发送arp广播请求,查询主机的物理地址,得到主机地址之后就可以发送TFTP读请求包了。如果收到错包或非TFTP包,则可直接丢弃,返回收到的包长为-2;如果超时没收到包,则说明请求丢失,返回的包长为-1,要重发请求。重发3次没回音,表明网络不通。收到TFTP的服务器的第一个回应就是第一块数据或是出错信息包,如果是第一块数据则进入TFTP接收循环。

      TFTP接收循环如图2所示。初始化过程中,addr为文件下载到内存中的地址,offset为写入指针相对于addr的偏移量。偏移量每次写入数据后增加512。然后检查收到数据包的长度。如果长度为512字节,则说明是一个普通的数据包;如果长度小于512字节,则说明是最后一个数据包,应该结束循环。收到包后,把数据写入内存中。内存中的偏移地址加512,然后继续收包。当收到错误信息包或接收超时或收到坏包时,所返回的长度都是负数,所以在这里会根据收包所返回的长度作出相应的处理。如果长度大于0而且不是重包,就进行上面的循环操作。

    按此在新窗口浏览图片
    图1  TFTP主程序流程

    按此在新窗口浏览图片
    图2  数据接收循环

      CS8900读写程序的编写可参考数据手册。CS8900有两种主要的访问方式:一种是I/O空间;另一种是内存空间。前者系统把CS8900当成I/O口一样访问,所有的寄存器操作都是通过几个指定的地址来完成;后者系统可直接寻址其寄存器。前者是CS8900的默认工作方式, 这
    里也采用前者。 在调用发送和接收程序之前, 首先调用eth_halt(),停止CS8900的收/发器(如果不停止将无法进行初始化),然后eth_init()来初始化。初始化过程中会读取芯片识别号,看是否为0x630e。若不为此值,则说明系统没有找到CS8900芯片,然后设置MAC地址,启动收/发器,禁止发出中断信号。这里没有用到中断。因为用中断不便于移植,所以在发送完毕之后,直接调用eth_rx()接收即可。

      CS8900发送数据的流程如下:

    ①  设置为收到完整frame后开始发送;
    ②  设置frame的长度,告诉给CS8900;
    ③  查看CS8900是否已为frame分配好空间;
    ④  如果没有分配好就返回等待;
    ⑤  如果已分配好空间,就把packter地址处的数据写入CS8900中;
    ⑥  设定时间,等待frame 发送完毕;
    ⑦  检查发送是否成功。

      CS8900接收数据的流程比较简单,只需要检查状态寄存器是否收到,然后进行接收就行了。做完以上工作后,可以将文件从TFTP服务器上下载到RAM中。如果需要下载到Flash中,只需要调用write_to_flash()函数即可。该函数在serial.h中给出。

      最后还需要修改include/platform下的smdk2410.h中的

      #define vBWSCON0x221ed112
      #define vBANKCON30x00007ffc

      这样可以使SC2410 可寻址到CS8900。

      编者注:源码见本刊网站www.mesnet.com.cn

    结语

      本文讨论扩展vivi的一般方法,给vivi增加一条网络下的命令,使得vivi的功能更加完善,完全可以和Uboot等著名引导程序相媲美。

    参考文献

    [1]  CIRRUS LOGIC cs8900a 数据手册.
    [2]  中国协议分析网. TFTP协议简介.
    [3]  孙天泽,袁文菊,张海峰. 嵌入式设计及Linux驱动开发指南. 北京:电子工业出版社,2005.

     
    展开全文
  • netboot.xyz:基于iPXE的网络引导操作系统安装程序
  • dev_social_network 使用Django构建的全栈社交网络应用程序,包括用户身份验证,权限和更多内容的引导程序...
  • 网络引导-项目开发

    2021-03-31 05:13:09
    自动电缆调制解调器重启程序
  • 预算规划师应用 用于管理公司财务的python网络应用程序。 该应用程序是使用Flask框架,引导程序和SQLAlchemy构建的。 运行应用程序的命令-python run.py 引用-https: MwZwr5Tvyxo list PL-
  • Linux的引导过程

    2018-10-17 20:22:43
    Linux的引导过程 了解Linux的引导过程我们需要通过以下一个方面: 1.什么是引导? 打开计算机并加载操作系统的过程称为引导。...计算机引导需要执行一段程序:Bootstrap Loader。Bootstrap Loader位于引导扇...
  • 用于 AVR32 的 HTML5 网络界面和引导加载程序 发布 V1.0 允许通过漂亮的 HTML5 网络界面刷新 AVR32。 只需上传 .srec 文件,测试新固件并应用或拒绝更改。 使用 FreeRTOS、LwIP、ASF 和 Miniport。 欢迎投稿和...
  • 简介:引导 Linux® 系统的过程包括很多阶段。...在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始 RAM 磁盘以及 Linux 引导的其他一些元素。 早期时,启...
  • Angular-GoogleMaps-WebAPI-SPA 基于 John Papa 使用谷歌地图、网络 API 和引导程序进行的角度训练的训练应用程序。
  • Linux 引导过程内幕

    千次阅读 2016-02-17 17:38:20
    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行...
  • PXE 网络引导快速部署虚拟机

    千次阅读 2018-12-16 23:25:48
    PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端...
  • 操作系统的引导过程 启动过程 (Booting process) When our computer is switched on, It can be started by hardware such as a button press, or by software command, a computer's central processing unit (CPU)...
  • 引导 Linux® 系统的过程包括很多阶段。...在本文介绍的过程中,您将学习到各种与引导有关的主题,例如引导加载程序、内核解压、初始 RAM 磁盘以及 Linux 引导的其他一些元素。 早期时,启动一台计算机意
  • 新闻传播过程中舆情监测与引导分析——评《大数据时代的网络舆情》
  • windows引导过程以及多系统引导原理

    千次阅读 2018-09-10 16:28:33
    网络转载请注明出处,这是对原创者的起码的尊重!!! 1 Windows的引导方式   目前主要的系统引导方式也有两种:传统的Legacy BIOS和新型的UEFI BIOS。   Legacy BIOS无法识别GPT分区表格式;UEFI BIOS可...
  • ARM多核引导过程

    万次阅读 2014-11-13 14:31:22
    引导过程概述 (这个硕士论文得到过ARM公司Catalin Marinas的认可)
  • 新闻传播过程中舆情监测与引导分析——评《大数据时代的网络舆情》.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 176,685
精华内容 70,674
关键字:

网络引导程序