1.每日开源之 tftpserver
2.什么是源码嵌入式系统的PMON
每日开源之 tftpserver
我探索了高通Q这款用于制作路由器的芯片,它配合的源码是存储在NandFlash上的OpenWrt系统。Q烧写系统方式较传统,源码在Uboot命令行模式下,源码要通过tftp将系统镜像下载至内存,源码再将镜像写入NandFlash。源码代刷源码
TFTP简单文件传输协议使用UDP实现,源码提供高效、源码简洁的源码文件传输服务,端口号为。源码为了完成这次烧写任务,源码我需要在PC上安装tftp-server。源码
考虑到tftp-hpa使用复杂、源码配置繁琐,源码我放弃了尝试其原因分析的源码过程。在Github上,我发现了一个名为tftpserver的出色项目。
tftpserver是一款轻量级的tftp server,用C语言编写,其源代码仅包含一个包含行代码的.c文件,无任何依赖,刷流量软件源码易于部署。
使用方式简洁:指定文件存放目录和端口号(通常为)即可启动服务。在Uboot命令行中,用户可用tftpboot命令从PC下载文件。
接下来,我们将快速了解tftpserver的核心实现。其源代码由七个函数构成。主函数main()负责创建一个socket以监听可能到来的TFTP请求。当接收到请求时,会调用fork()函数创建子进程,淘客源码下载由子进程处理请求。
TFTP基于UDP,tftp_recv_message()函数通过调用recvfrom()进行消息接收。TFTP消息定义关键,必须理解其协议设计。
具体而言,TFTP客户与TFTP服务器之间进行读请求通讯如下:服务器被动打开号端口等待连接;客户主动发起连接,以临时端口作为源端口,号端口作为目标端口,向服务器发送读请求报文;服务器主动响应,个人中心源码使用新的临时端口作为源端口,用收到的临时端口作为目标端口,向客户发送包含块号和字节数据的DATA报文;客户接收到报文后,回传ACK报文确认接收。
继续理解TFTP协议,很容易通过Wireshark进行抓包分析。以读请求为例,包含读请求操作码及目标文件名。理解TFTP协议后,tftp_message结构更加直观,3a源码用于描述TFTP通讯的数据格式。
核心处理函数tftp_handle_request()实现协议处理,解析请求确定发送或接收操作,然后读取或发送文件。
总结而言,tftpserver是一款轻量级、高度可移植的tftp server,对于网络编程和学习TFTP协议设计感兴趣的开发者特别适用。它提供简洁、灵活的使用方式,不依赖额外配置,确实是提高工作效率的实用小工具。
什么是嵌入式系统的PMON
PMON是一个兼有BIOS和boot loader部分功能的开放源码软件,多用于嵌入式系统。
与BIOS相比功能不足,与常见的bootloader 相比,功能要丰富的多。基于龙芯的系统采用 pmon 作为类 BIOS 兼 bootloader,并做了很多完善工作。现在PMON与开始时的代码已经有较大不同了,看代码注释可以知道里面有一些中科院计算所和中科龙梦的人往里面添加了代码。在国外,PMON已经是一个死掉的项目了。国人把它继承下来,继续开发。所以说是国人延续了PMON的生命。不过,PMON中的代码有点乱,管理得不好,这个问题在不久可能会得到解决。
PMON 有如下主要特点:
支持ext2, fat, ram 文件系统
支持网络引导(tftp),磁盘引导,flash 引导
内建调试功能 (强大,调试内核举重若轻)
USB 2.0 Mass Storage 支持
支持MIPS、ARM、PowerPC 平台
BSD Licensed
常用命令:
load
功能:加载文件
加载PMON,刷新BIOS
load -r -f bfc tftp://..1./gzrom.bin
执行这个后,再重启主板,就会进入新的PMON中。
g
功能:执行程序
devls
功能:显示设备
ping
功能:测试网络
ifaddr
功能:配置网卡
m
功能:查看内存内容
env
功能:查看环境变量
set
功能:设置环境变量
usb
功能:查看及设置USB设备
reboot
功能:重启
h
功能:打印出帮助信息