•2019年一级造价工程师《工程计价》寒假作业.pdf
《•2019年一级造价工程师《工程计价》寒假作业.pdf》由会员分享,可在线阅读,更多相关《•2019年一级造价工程师《工程计价》寒假作业.pdf(28页珍藏版)》请在文库网上搜索。
1、用 UDP 中的源和目标端 口以及包长度域。由 TFTP 使用的包标记(TID)在这里被用做端口,因此 TID 必须介于 0 到 65,535 之间。对它的初始化我们在后面讨论。TFTP 头中包括两上字节的操作码,这个码 指出了包的类型下面我们看看大体上的 TFTP 包格式。 初始连接初始连接 初始连接时候需要发出 WRQ(Write request 请求写入远程系统)或 RRQ(Read request 请求读取远程系统) , 收到一个确定应答, 一个确定可以写出的包或应该读取的第一块数据。 通常确认包包括要确认的包的包号, 每个数据包都与一个块号相对应, 读请求块号从 1 开始 而且是连续
2、的。因此对于写入请求的确定是一个比较特殊的情况,因此它的包的包号是 0。 如果收到的包是一个错误的包,则这个请求被拒绝。创建连接时,通信双方随机选择一个 TID, 因此是随机选择的, 因此两次选择同一个 ID 的可能性就很小了。 每个包包括两个 TID, 发送者 ID 和接收者 ID。这些 ID 用于在 UDP 通信时选择端口,请求主机选择 ID 的方法上 面已经说过了,在第一次请求的时候它会将请求发到 TID 69,也就是服务器的 69 端口上。 应答时,服务器使用一个选择好的 TID 作为源 TID,并用上一个包中的 TID 作为目的 ID 进 行发送。这两个被选择的 ID 在随后的通信中
3、会被一直使用。下例是一个写入的例子,其中 WRQ,ACK 和 DATA 代表写入请求,确认和数据。 1. 主机 A 向主机 B 发出 WRQ,其中端口为 69 2. B 机向 A 机发出 ACK,块号为 0,包括 B 和 A 的 TID 此时连接建立, 第一个数据包以序列号 1 从主机开始发出。 以后两台主机要保证以开始 时确定的 TID 进行通信。如果源 ID 与原来确定的 ID 不一样,这个包会被认识为发送到了 错误的地址而被抛弃。错误的包是被发送到正确端口的,但是包本身有错误。设想发送方发 出一个请求,这个请求在网络的那个设备中被复制成两个包,接收方先后接收到两个包。接 收方会认为为这是
4、两个独立的请求,会返回两个应答。当这两个应答其中之一被接收到时, 连接已经建立。第二个应答再到达时,这个包会被抛弃,而不会因为接收到第二个应答包而 导致第一个建立的连接失败。 TFTP 包包 - | Local Medium | Internet | Datagram | TFTP Opcode | - TFTP 支持五种类型的包,分别如下: opcode operation 1 .Read request (RRQ) 2 .Write request (WRQ) 3 .Data (DATA) 4 .Acknowledgment (ACK) 5 .Error (ERROR) 包头中包括了这个包
5、所指定的操作码。 RRQ/WRQ 包如下: 2 bytes string 1 byte string 1 byte - | Opcode | Filename | 0 | Mode | 0 | - RRQ 和 WRQ 包(代码分别为 1 和 2)的格式如上所示。文件名是 NETASCII 码字符, 以 0 结束。 而 MODE 域包括了字符串“netascii“,“octet“或“mail“,名称不分大小写。接收 到 NETASCII 格式数据的主机必须将数据转换为本地格式。OCTET 模式用于传输文件,这 种文件在源机上以 8 位格式存储。 假设每个机器都存在一个 8 位的格式, 这样的假设
6、是最一 般的。比如 DEC-20,这是一种 36 位机,我们可以假设它是 4 个 8 位外加另外 4 位而构成。 如果机器收到 OCTET 格式文件,返回时必须与原来文件完全一样。在使用 MAIL 模式时, 用户可以在 FILE 处使用接收人地址,这个地址可以是用户名或用户名主机的形式,如果 是后一种形式,允许主机使用电子邮件传输此文件。如果使用 MAIL 类型,包必须以 WRQ 开始, 否则它与 NETASCII 完全一样。 我们的讨论建立在发送方和接收方都在相同模式的情 况下,但是双方可以以不同的模式进行传输。例如一个机器可以是一台存储服务器,这样一 台服务器需要将 NETASCII 格式
7、转换为自己的格式。 另外, 我们可以设想 DEC-20 这种机器, 它使用 36 位字长, 用户这边可以使用特殊的机制一次读取 36 位, 而服务器却可以仍然使用 8 位格式。在这两种情况下,我们看到了两台机器使用不同格式的情况。可以在两台主机间 定义其它的传输方式,但是定义要小心,因为这种传输方式不为人知,而且也没有权威机构 为其指定名称或定义它的模式。 DATA 包如下: 2 bytes 2 bytes n bytes - | Opcode | Block # | Data | - DATA 包数据在数据包中传输,其格式如上图所示。数据包的 OP 码为 3,它还包括有 一个数据块号和数据。
8、数据块号域从 1 开始编码,每个数据块加 1,这样接收方可以确定这 个包是新数据还是已经接收过的数据。 数据域从 0 字节到 512 字节。 如果数据域是 512 字节 则它不是最后一个包,如果小于 512 字节则表示这个包是最后一个包。除了 ACK 和用于中 断的包外,其它的包均得到确认。发出新的数据包等于确认上次的包。WRQ 和 DATA 包由 ACK 或 ERROR 数据包确认,而 RRQ 数据包由 DATA 或 ERROR 数据包确认。 下图即是一个 ACK 包,操作码为 4。其中的包号为要确认的数据包的包号。 ACK 包如下: 2 bytes 2 bytes - | Opcode |
9、 Block # | - WRQ 数据包被 ACK 数据包确认,WRQ 数据包的包号为 0。 ERROR 包如下: 2 bytes 2 bytes string 1 byte - | Opcode | ErrorCode | ErrMsg | 0 | - 一个 ERROR 包,它的操作码是 5,它的格式如上所示。此包可以被其它任何类型的包 确认。错误码指定错误的类型。错误的值和错误的意义在附录中。错误信息是供程序员使用 的。 正常终止正常终止 传输的结束由 DATA 数据标记,其包括 0-511 个字符。这个包可以被其它数据包确认。 接收方在发出对最后数据包的确认后可以断开连接,当然,适当的等
10、待是比较好的,如果最 后的确定包丢失可以再次传输。 如果发出确认后仍然收到最后数据包, 可以确定最后的确认 丢失。发送最后一个 DATA 包的主机必须等待对此包的确认或超时。如果响应是 ACK,传 输完成。 如果发送方超时并不准备重新发送并且接收方有问题或网络有问题时, 发送也正常 结束。当然实现时也可以是非正常结束,但无论如何连接都将被关闭。 早终结早终结 如果请求不能被满足,或者在传输中发生错误,需要发送 ERROR 包。这仅是一种传输 友好的方式,这种包不会被确认也不会被重新传输,因此这种包可能永远不会被接收到。因 此需要用超时来侦测错误。 其它:其它: 读文件的初始连接 1. 主机 A
11、 发 RRQ 到 A,包括源=A 的 ID 和目的=69 2. 主机 B 发送 DATA,其中包号=1,这个包被传送到 A,源=B 的 ID,目的=A 的 ID 错误码 Value Meaning 0 未定义,请参阅错误信息(如果提示这种信息的话) 1 文件未找到 2 访问非法 3 磁盘满或超过分配的配额 4 非法的 TFTP 操作 5 未知的传输 ID 6 文件已经存在 7 没有类似的用户 安全问题安全问题 因为 TFTP 没有安全控制机制,因此安全问题应该多加考虑。通常 TFTP 允许下载数据 而不允许上传数据。本实验我们实现的 TFTP 允许下载数据也允许上传数据。那么就让我们 通过神舟
12、 IV 号开发板太网硬件平台认识一下 TFTP 协议,实现一个通过 TFTP 升级神舟 IV 号开发板固件的实例。 ? 硬件设计硬件设计 神舟IV号开发板的处理器STM32F107内部以太网模块与外部PHY芯片采用RMII接口的 连接图如下所示:采用RMII接口比MII接口可以节约近一半管脚资源。 图表 3 STM32F107 以太网 RMII 连接图 神舟 IV 号开发板采用高性价比的 DM9161A 作为 10M/100M 以太网 PHY 芯片,采用 RMII 接口与连接,标准 RJ45 接口,支持平行交叉网线自适应。其原理图如所示。 图表 4 以太网接口原理图 DM9161A 是一款在嵌
13、入式系统中应用的极为普遍的以太网 PHY 芯片。DM9161A 符合 IEEE802.3.10BASE-T/100BASE-TX 协议,符合 ANSIX3T12TP-PMD1995 标准,集成 10BASE-T,100BASE-TX 收发器,支持 MII/RMII 接口,支持中继模式和节点模式转换,支 持全工和半工模式转换,含可触发中断的 MII/RMII 管理接口,支持低功耗模式,采用 0.35 纳米 COMS 工艺,3.3V 供电, 48-pin PQFP 小封装(11cm)。 ? 软件设计软件设计 本实验实现的功能是: 在神舟本实验实现的功能是: 在神舟 IV 号开发板上实现号开发板上实
14、现 HTTP 协议的服务端, 并在此基础上 实现一个支持升级的特定网页。用户首先通过 协议的服务端, 并在此基础上 实现一个支持升级的特定网页。用户首先通过 HTTP 浏览器打开设备中的特定网页,输入 用户名和密码之后,就可以将新的固件上传到设备。也可以通过 浏览器打开设备中的特定网页,输入 用户名和密码之后,就可以将新的固件上传到设备。也可以通过 TFTP 协议新的固件上传 到设备。此时神舟 协议新的固件上传 到设备。此时神舟 IV 号开发板将接收到的新固件写入处理器的号开发板将接收到的新固件写入处理器的 FLASH 里运行。里运行。 软件部分我们分为六部分六部分来讲解,第一部分 Lwip
15、协议栈相关知识。第二部分主要介绍 网络数据包在软件处理中的流向。 第三部分介绍网络以及系统的初始化。 第四部分介绍实现 HTTP 协议的网页应用程序。第五部分介绍实现 TFTP 协议应用程序。最后第六部分介绍实 现升级处理器的 FLASH 的相关程序。 第一部分第一部分Lwip协议栈相关知识。协议栈相关知识。 Lwip协议栈相关知识设计的涉及Lwip协议的实现以及底层TCPIP相关知识和API应用 程序接口部分等,相关知识请参考附件TCP/IP 协议栈LwIP的设计与实现。该附件描述 了LwIP的设计与实现。描述了在协议栈实现中以及像内存与缓冲管理这样的子系统中使用 的算法和数据结构。本文还包
16、括LwIP的参考手册以及使用LwIP的代码例子。 第二部分主要介绍网络数据包的流向。第二部分主要介绍网络数据包的流向。 首先我们从 main 函数看起,首先是初始化按键 2 然后检测按键 2 是否被按下: 如果按键 2 没有被按下则检测地 址处的代码是否合法,如果合法则运行带代码;如果不合法则点亮 LED3 指示灯提示异常。 检测 0X08010000 地址处的代码是否合法的原理是, Cortex-M3 的固件第一个字 (32 位) 必须是堆栈指针的地址,而堆栈是可读可写的,所以其地址必须指向 RAM 也就是指向 0x20000000-0x20010000 这段地址。 如果按键 2 被按下则运
17、行“IAP over Ethernet”的固件,然后初始化网口以及 LwIp 协议 栈 以及 实现 HTTP 协议的网页应用程序和实现 TFTP 协议应用程序等待来自网络的数据, 将其解析后存入对应的 FLASH 地址处: main 函数主要完成然后是- -最后 是。真正解析处理网络数据包是在 mian 函数中调用 “System_Periodic_Handle();”来处理的。 与前面的实验不同的是:前面的几个以太网实现均使用的是以太网中断的方式;而本 实验使用的是在 Main 函数的 while 循环中查询的方式。其查询代码即是 Main 函数中的“/* check if any pack
18、et received */ if (ETH_GetRxPktSize()!=0)” LwIP_Pkt_Handle()函数调用了 ethernetif_input 函数 ethernetif_input ()函数中的“p = low_level_input(netif);”将数据接收存入 pbuf 中,然后 (move received packet into a new pbuf)的“err = netif-input(p, netif);” 最终调用了位于 “etharp.c”文件中的函数“err_t ethernet_input(struct pbuf *p, struct netif
19、 *netif)” 负责解析 通知协议栈。 也就是说最终调用了位于“etharp.c”文件中的函数“err_t ethernet_input(struct pbuf *p, struct netif *netif)”后返回,最后 mian 函数周期调用的“System_Periodic_Handle();”函数便 会解析处理 pbuf 中的网络数据。 第三部分介绍网络以及系统的初始化。第三部分介绍网络以及系统的初始化。 以太网 GPIO 管脚配置,由于是 RMII 接口使用的管脚与 MII 有所不同: 以太网配置,包括相关的时钟、MAC 参数以及 DMA 等等: DHCP协议(Dynamic
20、Host Configuration Protocol)是设备自动获取IP地址的一种协议, 神舟四号也支持DHCP协议,DHCP协议动态IP分配的配置在文件 Utilitieslwip-1.3.1srcincludelwipopt.h文件的第523行至533行 当设置为“#define LWIP_DHCP 1“时, 将启动动态IP分配的功能, 当动态IP分配失败时 才使用静态IP地址;当设置为“#define LWIP_DHCP 0“时,将关闭动态IP分配的功能,直接 使用静态IP地址。 神舟四号开发板的出厂IP地址为192.168.1.6,用户可以根据自己的实际环境修改用户期 望的地址。关于
21、静态IP地址的设置在文件Projectsrcnetconf.c文件中中有两处地方涉及静态 IP,第一处在第118行至122行LwIP_Init函数里: 以上地址是在关闭动态IP分配的功能(即“#define LWIP_DHCP 0“)时,直接使用上 述IP地址 第二处在在Projectsrcnetconf.c文件中的第333行至335行Display_Periodic_Handle函数 里 以上地址当启动动态 IP 分配的功能(即“#define LWIP_DHCP 1“) ,但是动态 IP 地址 分配超时失败时使用上述 IP 地址,您可以安装您的要求修改 IP 地址,修改后需要重新编译 软件
22、工程并重新下载到神舟四号开发板上才能生效。 第四部分介绍实现第四部分介绍实现 HTTP 的的 WEB 服务器应用程序服务器应用程序 实现 HTTP 的应用的相关程序位于“httpserver.c”文件中,首先是头文件引用与函数声 明等等: 然后是 HTTP 初始化,申请资源并向协议栈注册函数,通过 pcb = tcp_new();-8800学习网址: 7.2.4 厂房、仓库、公共建筑的外墙应在每层的适当位置设置可供消防救援人员进入的窗 口。 12.关于大型商业综合体消防设施施工前需具备的基本条件的说法中,错误的是() A.消防工程设计文件经建设单位批准 B.消防设施设备及材料有符合市场准入制度
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工程计价 2019 一级 造价工程师 工程 计价 寒假 作业