用tftp连接主机和开发板的学习过程

用tftp连接主机和开发板的学习过程
(转载自 http://blog.chinaunix.net/u2/88526/showart_2205642.html)
1. 用minicom连接串口:
fc12上默认是没有安装minicom的,yum安装一个很简单的了。
$ yum install minicom
这样minicom就安装成功了。

运行:
$ minicom -s
出现如下界面:

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

向下移动光标到 Serial port setup 上,回车,进入Serial port setup 配置界面,如下:
    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyUSB0                              |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : No                                        |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+

配置完成以后直接保存退出就ok了。
以上由于我是用usb转串口的,所以,需要写成这样“A -Serial Device : /dev/ ttyUSB0“。
然后直接输入:
$ minicom
就可以进入到开发板的环境中了。

2. 用tftp来下载程序:
首先配置主机的IP地址和开发板在同一个网段,我就配成了192.168.1.1,
直接在开发板环境下输入tftp的命令,提示:
[root@FriendlyARM /]# tftp                                                     
BusyBox v1.13.3 (2009-03-25 15:48:45 CST) multi-call binary                    
                                                                               
Usage: tftp [OPTION]... HOST [PORT]                                            
                                                                               
Transfer a file from/to tftp server                                            
                                                                               
Options:                                                                       
        -l FILE Local FILE                                                     
        -r FILE Remote FILE                                                    
        -g      Get file                                                       
        -p      Put file                                                       
        -b SIZE Transfer blocks of SIZE octets                                 
                                                        

跟在PC主机环境下还不一样的。
跟据Usage提示,我需要把主机上的hello程序下载到开发板上,于是就输入了:
[root@FriendlyARM /my_tt]# tftp -g -r hello 192.168.1.1
半分钟以后,屏幕上提示:
tftp: timeout 

也不知道什么原因,就在主机上试一下了。
在主机上,fc12默认也是没有安装tftp客户端的,后来发现tftp-server也是没有安装的,就直接用yum安装一下吧。
安装好tftp-server,用vi配置 /etc/xinetd.d/tftp 文件后如下,
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftp_server_root -c
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

然后建立一个tftp_server_root文件夹在/下面。

说明:修改项server_args= -s         -c,其中处可以改为你的tftp-server的根目录,参数-s指定chroot-c指定了可以创建文件。

然后重新启动tftp-server:

#service xinetd restart

在主机上测试一下:
$ tftp 192.168.1.1
出现 tftp> 这样的二级提示符,用
get hello
put
查看成功与否。

接下来就是从把程序下载到开发板上去了。
在开发板上运行:
[root@FriendlyARM /my_tt]# tftp -g -r hello 192.168.1.1
还是显示 tftp: timeout
晕了,刚才在主机上试验还是好的阿,怎么到开发板上就不行了阿。

没有办法就只能抓包了,运行:
$ tcpdump -i eth0 -w dump1.cap
同时在开发板上运行刚才的命令,出现 tftp: timeout的时候停止抓包,
然后用:
$ tcpdump -r dump1.cap 打开看到
[root@localhost tmp]# tcpdump -r dump1.cap
reading from file dump1.cap, link-type EN10MB (Ethernet)
23:27:24.372593 ARP, Request who-has 192.168.1.1 tell 192.168.1.230, length 46
23:27:24.372628 ARP, Reply 192.168.1.1 is-at 00:26:9e:e4:2e:4e (oui Unknown), length 28
23:27:24.372800 IP 192.168.1.230.44845 > 192.168.1.1.tftp:  14 RRQ "hello" octet
23:27:24.372849 IP 192.168.1.1 > 192.168.1.230: ICMP host 192.168.1.1 unreachable - admin prohibited, length 50
………………
23:27:32.046571 IP 192.168.1.230.44845 > 192.168.1.1.tftp:  14 RRQ "hello" octet
23:27:32.046619 IP 192.168.1.1 > 192.168.1.230: ICMP host 192.168.1.1 unreachable - admin prohibited, length 50


主机收到请求,但是没有给目标机回复,考虑到防火墙的问题,检查了一下iptables,太多的规则了,没有细看,直接运行:
$ iptables -F 全部清除,
然后再次运行:
[root@FriendlyARM /my_tt]# tftp -g -r hello 192.168.1.1
成功下载!
然后修改一下文件的权限,就可以了。
现在就像在主机上一样运行hello测试程序,见到了熟悉的"hello world!"的字样

你可能感兴趣的:(ubuntu系统)