tftp源码
① 如何编译hi3520d sdk
第一章 Hi3520D_SDK_Vx.x.x.x版本升级操作说明
如果您是首次安装本SDK,请直接参看第2章。
第二章 首次安装SDK
1、hi3520D SDK包位置
在"hi3520D_V100R001***/01.software/board"目录下,您可以看到一个 hi3520D_SDK_Vx.x.x.x.tgz 的文件,
该文件就是hi3520D的软件开发包。
2、解压缩SDK包
在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf hi3520D_SDK_Vx.x.x.x.tgz ,
解压缩该文件,可以得到一个hi3520D_SDK_Vx.x.x.x目录。
3、展开SDK包内容
返回hi3520D_SDK_Vx.x.x.x目录,运行./sdk.unpack(请用root或sudo权限执行)将会展开SDK包打包压缩存放的内容,请按照提示完成操作。
如果您需要通过WINDOWS操作系统中转拷贝SDK包,请先运行./sdk.cleanup,收起SDK包的内容,拷贝到新的目录后再展开。
4、在linux服务器上安装交叉编译器
1)安装uclibc交叉编译器(注意,需要有sudo权限或者root权限):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv100nptl-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
2) 安装glibc交叉编译器(注意,需要有sudo权限或者root权限,暂时不支持glibc版本):
进入hi3520D_SDK_Vx.x.x.x/osdrv/toolchain/arm-hisiv200-linux目录,运行chmod +x cross.install,然后运行./cross.install即可。
3) 执行source /etc/profile, 安装交叉编译器的脚本配置的环境变量就可以生效了,或者请重新登陆也可。
5、编译osdrv
参见osdrv目录下readme
6、SDK目录介绍
hi3520D_SDK_Vx.x.x.x 目录结构如下:
|-- sdk.cleanup # SDK清理脚本
|-- sdk.unpack # SDK展开脚本
|-- osdrv # 存放操作系统及相关驱动的目录
| |-- busybox # busybox源代码
| |-- drv # drv源代码
| |-- kernel # linux内核源代码
| |-- pub # 编译好的镜像、工具、drv驱动等
| |-- rootfs_scripts # rootfs源代码
| |-- toolchain # 交叉编译器
| |-- tools # linux工具源代码
| |-- uboot # uboot源代码
| `-- Makefile # osdrv Makefile
|-- package # 存放SDK各种压缩包的目录
| |-- osdrv.tgz # linux内核/uboot/rootfs/tools源码压缩包
| |-- mpp.tgz # 媒体处理平台软件压缩包
| `-- image # 可供FLASH烧写的映像文件,如内核、根文件系统
|-- scripts # 存放shell脚本的目录
|-- mpp # 存放媒体处理平台的目录
|-- component # 组件源代码
|-- extdrv # 板级外围驱动源代码
|-- include # 对外头文件
|-- ko # 内核模块
|-- lib # release版本库以及音频库
|-- tools # 媒体处理相关工具
`-- sample # 样例源代码
第三章、安装、升级hi3520DDEMO板开发开发环境
# 如果您使用的hi3520D的DEMO板,可以按照以下步骤烧写u-boot,内核以及文件系统,以下步骤均使用网络来更新。
# 通常,您拿到的单板中已经有u-boot,如果没有的话,就需要使用仿真器进行烧写。
# 更详细的操作步骤及说明,请参见01.software\board\documents目录下的《Linux开发环境用户指南》。
# 以下操作假设您的单板上已经有u-boot,使用网口烧写uboot、kernel及rootfs到Flash中。
# Demo单板默认为从SPI Flahs启动。
1、配置tftp服务器
# 可以使用任意的tftp服务器,将package/image_uclibc(或image_glibc)下的相关文件拷贝到tftp服务器目录下。
2、参数配置
# 单板上电后,敲任意键进入u-boot。设置serverip(即tftp服务器的ip)、ipaddr(单板ip)和ethaddr(单板的MAC地址)。
setenv serverip xx.xx.xx.xx
setenv ipaddr xx.xx.xx.xx
setenv ethaddr xx:xx:xx:xx:xx:xx
setenv netmask xx.xx.xx.xx
setenv gatewayip xx.xx.xx.xx
ping serverip,确保网络畅通。
3、烧写映像文件到SPI Flash
以16M SPI Flash为例。
1)地址空间说明
| 1M | 4M | 11M |
|---------------|---------------|---------------|
| boot | kernel | rootfs |
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
2)烧写u-boot
sf probe 0
mw.b 82000000 ff 100000
tftp 0x82000000 u-boot-hi3520D.bin
sf probe 0
sf erase 0 100000
sf write 82000000 0 100000
reset
3)烧写内核
mw.b 82000000 ff 400000
tftp 82000000 uImage_3520d
sf probe 0
sf erase 100000 400000
sf write 82000000 100000 400000
4)烧写文件系统
mw.b 82000000 ff b00000
tftp 0x82000000 rootfs_3520d_64k.jffs2
sf erase 500000 b00000
sf write 82000000 500000 b00000
5)设置启动参数
setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(boot),4M(kernel),11M(rootfs)'
setenv bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x400000;bootm 0x82000000'
sa
4、启动新系统
reset # 重启进入新系统。
第四章、开发前环境准备
1、管脚复用
与媒体业务相关的管脚复用都在mpp/ko_hi3520D目录下的sh脚本中配置,如果与实际情况不符请直接修改,此脚本被load3520D调用,在加载mpp内核模块之前被执行;
mpp之外的其他管脚复用统一在uboot中配置,详细说明请参见《U-boot移植应用开发指南》。
第五章、使用SDK和DEMO板进行开发
1、开启Linux下的网络
# 设置网络
ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx;
ifconfig eth0 xx.xx.xx.xx netmask xx.xx.xx.xx;
route add default gw xx.xx.xx.xx
# 然后ping一下其他机器,如无意外,网络将能正常工作。
2、使用NFS文件系统进行开发
# 在开发阶段,推荐使用NFS作为开发环境,可以省去重新制作和烧写根文件系统的工作。
# 挂载NFS文件系统的操作命令:
mount -t nfs -o nolock -o tcp xx.xx.xx.xx:/your-nfs-path /mnt
# 然后就可以在/mnt目录下访问服务器上的文件,并进行开发工作。
3、开启telnet服务
# 网络正常后,运行命令 telnetd& 就可以启动单板telnet服务,然后才能使用telnet登录到单板。
4、运行MPP业务
# 在单板linux系统下,进入mpp/ko目录,加载KO
cd mpp/ko
./load3520D -i
# 进入各sample目录下执行相应样例程序(sample需要先在服务器上成功编译过)
cd mpp/sample/vio
./sample_vio 0
第六章 地址空间分配与使用
1、DDR内存管理说明
1)所有DDR内存中,一部分由操作系统管理,称为OS内存;另一部分由MMZ模块管理,供媒体业务单独使用,称为MMZ内存。
2)OS内存起始地址为0x80000000,内存大小可通过bootargs进行配置,例如第三章中的setenv bootargs 'mem=64M ... ',表示分配给操作系统内存为64M,您可以根据实际情况进行调整。
3)MMZ内存由MMZ内核模块管理(mpp/ko_hi35xx目录下的mmz.ko),加载mmz模块时,通过模块参数指定其起始地址及大小,例如:
insmod mmz.ko mmz=anonymous,0,0x84000000,186M:jpeg,0,0x8fa00000,5M anony=1 || report_error
表示mmz两块区域,区域一的名称为anonymous,起始地址为0x84000000,大小为186M;区域二的名称为jpeg,起始地址为0x8fa00000,大小为5M。
您可以通过修改mpp/ko_hi35XX目录下load3520D脚本中的mmz模块参数,来修改其起始地址和总大小。
4)请注意MMZ内存地址范围不能与OS内存重叠。
2、DEMO板DDR内存管理示意
1) 以容量为256MBytes的DDR内存为例,以下为根据本文档和SDK默认配置得到的内存管理示意图:
DDR:
-----|-------| 0x80000000 # Memory managed by OS.
64M | OS |
| |
-----|-------| 0x84000000 # Memory managed by MMZ block anonymous.
187M | MMZ |
| |
-----|-------| 0x8fa00000 # Memory managed by MMZ block jpeg.
5M | |
| |
-----|-------| 0x8ff00000 # Not used.
1M | |
| |
-----|-------| 0x90000000 # End of DDR.
注意:
(1)用户在配置启动参数时需要设置OS的管理内存为64M,“setenv bootargs 'mem=64M ...”。
(2)系统启动后,配置load3520D的脚本中mmz的管理内存为191M,“insmod mmz.ko mmz=anonymous,0,0x84000000,186M:jpeg,0,0x8fa00000,5M anony=1 || report_error”。
② curl和libcurl的区别简介
curl简介
curl是利用URL语法在命令行方式下工作的开源文件传输工具。
它支持很多协议:DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP,
LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet and TFTP。
curl同样支持SSL证书,HTTP POST, HTTP
PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies、用户名/密码认证(Basic, Digest,
NTLM等)、下载文件断点续传,上载文件断点续传(file transfer resume),http代理服务器管道(proxy
tunneling)以及其他特性。
curl是瑞典curl组织开发的,curl的官网是http://curl.haxx.se/,可以从官网获取它的源代码和相关说明。
libcurl简介
libcurl为一个免费开源的,客户端url传输库,支持DICT, FILE, FTP, FTPS, Gopher, HTTP,
HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP,
SMTP, SMTPS, Telnet and TFTP等协议。
同curl一样,libcurl也支持SSL证书,HTTP POST, HTTP
PUT,FTP上传,基于表单的HTTP上传,代理(proxies)、cookies、用户名/密码认证(Basic, Digest,
NTLM等)、下载文件断点续传,上载文件断点续传(file transfer resume),http代理服务器管道(proxy
tunneling)等。
libcurl是高度可移植的,可以工作在不同的平台上,支持Windows,Unix,Linux等。
libcurl是免费的,线程安全的,IPV6兼容的,同事它还有很多其他非常丰富的特性。libcurl已经被很多知名的大企业以及应用程序所采用。
可以在这里获取libcurl的源码及相关文档。
curl与libcurl对比
相同点
curl和libcurl都可以利用多种多样的协议来传输文件,包括HTTP, HTTPS, FTP, FTPS, GOPHER, LDAP, DICT, TELNET and FILE等。
不同点
curl是命令行工具,可以通过shell或脚本来运行curl。curl底层所使用的库是libcurl。
libcurl是一个库,通常与别的程序绑定在一起使用,如命令行工具curl就是封装了libcurl库。所以我们也可以在你自己的程序或项目中使用libcurl以获得类似CURL的强大功能。接下来将要介绍的PHP扩展就是对curl的一个封装。
③ 可以访问网站的协议有几种
http又称超文本传输协议。所有www文件都要遵守这个协议。也就是说你说的网站访问协议都是建立在http基础上的。但如果说网络协议那就多得去了。。。Active User(活动用户):一个发现当前登录用户的协议,可是不要对它期望太高。Character Generator协议规范:一个小协议,看起来没有什么用处。有时候我都不知道为什么要发明这么多协议。是不是有意不让我们考试过关?CIP传输协议规范:通过这个协议我们可以了解到如何利用现有的技术快速构造应用层协议,挺有用的。Daytime协议:有些协议真不大,看看也没有害处,知道不是所有的协议都是那么可怕的(同时又是很有意思的)。DHCP协议规范:对于配置无盘站,深入理解NT的DHCP Server的工作过程有帮助。它是对BOOTP协议的扩充,如果有BOOTP的基础理解起来更方便。DNS协议规范:DNS或许是Internet中最常用的部分了,看看它的机理吧,会有好处的。<VC++源代码下载1>和<VC++源代码下载2>Echo协议规范:这是我见过的最简单的协议,看看也花不了一分钟时间。FTP协议规范:是一个老协议了,不过用得还是挺多。ICMP协议规范:一种用于网络管理的协议。对照它您可以想一想PING命令实现的机理。 IP协议规范:上面是TCP,下面是IP,这两个协议可以说是互联网的基础。IPv6协议规范:虽然是新一代的IP协议,但是它和原来的IP协议并不兼容。有些问题还是挺讨厌的。LMTP协议规范:对于局域网内传送电子邮件,这可能是一个最好的选择,这种邮件传送方式不能用于广域网,因此也一般不在Internet上使用。POP3协议规范:我们通常用于接收电子邮件的协议。我们要配置的什么POP3,就是这个东西。<VC++源代码下载>PPP协议规范:这个协议比较有用,我们拨号时用的就是这个协议。PPP Internet协议控制协议:这个协议,对我们一些不是搞这个的也是十分陌生,有机会再看不迟。 RPC协议2:这个协议是一个够年头的协议SLIP协议规范:用于串行线路的一个协议标准,如果只是用于冲浪,不用看了,可是对于开拓视野还是十分有用的。SMTP协议规范:发送电子邮件时必须遵守的协议,如果不配置它,无法发送电子邮件,但是配置的时候有些小窍门,或许在读完这个协议后您才会知道。<VC++源代码下载>SMTP服务扩展标准:SMTP服务虽然出色,可是对它的扩展也是必不可少的,想在网络上一显身手的,看看它可以对您的第一步起帮助作用。SOAP协议规范:一个利用HTTP传输XML的协议,是Windows 2000 DNA的核心,看一看大有好处。TCP协议规范:我们现在所知道的这些协议,什么HTTP啦的基础都是这个TCP,如果不清楚TCP那么谁也不敢说自己知道互联网是个什么东西。TELNET协议规范:远程登录时遵守的协议标准,虽然现在WWW方式越来越多,可是远程登录仍然必不可少。TFTP协议规范:这个协议是一个简单的FTP协议,不要小看它,有时候它还是挺有用的。Time协议:不要小看时间,如果我们不知道时间不知道会发生什么,可是机器不知道时间是绝对不行的,在进行VC编译时,你想过机器时间的作用吗?你想过如果是分布式编译时会发生什么吗?UDP协议规范:不长,看看有好处。以太地址解析协议:这不是ARP协议,而是一个通用协议范本。在NetBIOS上传送IP报文的协议标准:如果正在研究NT或网络协议方面的知识,看看有帮助,如果只是对电脑发烧,不用浪费时间了。在ISDN上使用PPP协议:不要以为ISDN看起来那么熟悉,在它上面使用的协议和标准实在太多,这里只介绍一个。抛弃协议规范:这年月的协议真是奇怪,不长,也没什么用,可还是协议,看看开开眼界吧。引用day协议规范:又是一个小协议,有时间就看看吧。多连接多结点PPP组(Bundle)发现协议:这个协议工作在服务器端,可能对大部分用户来说,用处就不大了。基于TCP/IP网络的管理结构和标记:它是以后SNMP协议及其它网络管理协议的基础,看看有好处。 参考地址 http://ke..com/view/16603.htm
④ 请简述路由器的基本配置有哪些
路由器的基础常识
路由源码C表示直连(Connected)路由,即目的网络直接与路由器的端口相连,S表示静态(Static)路由;I表示使用IGRP获得的路由信息,O表示使用OSPF协议获得的路由信息;R表示使用RIP获得路由信息,i表示使用IS-IS协议获得路由信息,B表示使用BGP获得路由信息,E表示使用EGP获得路由信息。
路由器最常用的权值有:带宽(Bandwidth)、时延(Delay)、负载(load)、可靠性(reliability)、跳数(Hop Count)、滴答数(Ticks)、花费(Cost).
路由器的基本配置
路由器的工作模式:用户模式Router>、特权模式Router#、全局配置模式Router(config)#、接口配置模式Router(config-if)#、虚拟终端配置模式Router(config-line)#、RIP和OSPF等动态路由协议配置模式Router(config-router)#、设置模式和Rxboot模式.
在全局配置模式Router(config)#,使用命令line vty 0 15进入虚拟终端配置模式Router(config-line)#,然后使用命令password7<password>配置远程登录加密口令。
从路由器复制配置文件到TFTP Server,在特权用户模式下,使用write network tftp命令。
在特权用户模式下,使用 running-config tftp命令复制running-config文件到TFTP Server.
在特权用户模式下,使用 bootflash:tftp:命令复制bootflash中的配置文件到TFTP Server.
在特权用户模式下,使用 tftp:running-config命令将TFTP Server上的配置文件复制到路由器。
在特权用户模式下,使用 tftp:bootflash:命令将TFTP Server上的文件复制到bootflash。
在全局配置模式下,使用命令hostname<name>修改路由器的主机名。
在全局配置模式下,使用命令enable password<password>配置超级用户明文口令。
在全局配置模式下,使用命令enable secret 5<password>配置超级用户加密口令。
在全局配置模式下,使用命令enable password7<password>配置超级用户加密口令。
在特权用户模式下,使用命令calendar set<hh:mm:ss day month year>修改系统时间。
使用exit命令可以从端口模式返回至全局模式,或者从全局模式返回至特权用户模式。使用命令end可以从端口模式直接返回至特权用户模式。
在特权用户模式下,使用命令write memory命令将路由器的配置保存到非易矢RAM(NVRAM)中,使用命令write network tftp命令将路由器的配置保村道TFTP服务器中。
在特权用户模式下,使用命令write erase命令将删除路由器的全部配置。
在用户模式下使用命令Telnet<IP>从本地路由器登陆到该ipsuo指定的路由器,一台路由器可支持5个Telnet连接,即vty0-4.
在用户模式或特权用户模式下,使用命令ping,IP|DNS>判别网络的联通情况,以及根据结果连接路径的可靠性、链路的延迟时间和目的主机是否可以到达。感叹号!表示每一个成功的响应;一个或多个小数点.表示本地路由器没有在规定的时间内收到对方响应的数据包。
在用户模式或特权用户模式下,使用命令trace<IP|DNS>路径路径上每一级路由器的工作情况、延迟时间等、如果路径中任何一台路由器不可达,则出现3个星号(***),用星号取代路由器名,此时,trace命令将继续尝试到达下一步,直到使用【Ctrl+Shift+6+X】组合键退出。
在用户模式下,分别使用命令show clock、show flash、show version查看路由器系统时钟、FLASH的使用情况,系统的软件和硬件版本。
在特权用户模式下,分别使用命令show configuration、show ip route、show ip protcols查看路由器的配置文件、路由表、IP路由协议的详细详细等。