Chinaunix首页 | 论坛 | 博客
  • 博客访问: 918282
  • 博文数量: 132
  • 博客积分: 9976
  • 博客等级: 中将
  • 技术积分: 1781
  • 用 户 组: 普通用户
  • 注册时间: 2007-08-30 20:40
文章分类

全部博文(132)

文章存档

2013年(1)

2011年(1)

2010年(15)

2009年(77)

2008年(36)

2007年(2)

我的朋友

分类: C/C++

2009-06-29 14:35:39

kermit使用
  -- 作为串口中断和如何传输文件到开发板

按照下文的操作步骤进行:
==================================================================================
from: http://szricky.blog.hexun.com/8444684_d.html

折腾了一天,终于在ubuntu下面成功通过c-kermit软件,调用kermit协议,将内核文件发送到开发板里面。纪录一下其中的曲折过程。T____T

(1) minicom

首先使用minicom就是一个错误,然后钻牛角尖了,想法设法去使用minicom,其实一开始就应该抛弃使用minicom,转用别的工具。u-boot的官方网站已经说很清楚了。看这里:

.

minicom is another popular serial communication program. Unfortunately, many users have reported problems using it with U-Boot and Linux, especially when trying to use it for serial image download. It's use is therefore discouraged.

(2)c-kermit

使用c-kermit就完全没有问题。编写一个Kermit的配置文件:

~/.kermrc:
set line /dev/ttyS0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5

c-kermit可以从   下载。

(3)具体使用方法

使用以下命令:

connect

可以连上开发板,这一些与minicom是一样的,而且感觉速度更快些。

(4)切换

按下 Ctrl + \  , 再按 C 可以跳回kermit。

跳回串口控制,可以输入c,即 connect即可。

(5)发送文件

kermit中输入connect后,转入了u-boot串口界面。

输入Loadb 0x00300000,启动开发板上的kermit协议。

按下 Ctrl + \  , 再按 C, 切换到kermit。

输入命令:send /home/share/uImage.pkg

kermit开始传送,并且显示一个传送界面,并动态显示传送进度。

传送完毕后,输入 C ,即 connect 命令,回到u-boot的串口界面。

使用u-boot命令,启动内核。

完毕!

(6)速度比较:Linux下的kermit 快很多

不知道为什么,在相同的开发板并且不改任何代码的情况下,使用 Windows的超级终端传送文件,明显没有linux下用kermit传送文件传得快。虽然超级终端比较好用些,但是Linux的Kermit也不差, 而且速度明显比超级终端快多了,建议大家用用Linux下的kermit软件。

======================================================================

注意的问题: 

   1. 运行效果



    2. 感觉kermit 的配置:
~/.kermrc:
set line /dev/ttyS0
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
没有生效,可能需要手动设置一下。

       3. 连接终端时需要:
       set line /dev/ttyS0
       set carrier-watch off

       4. 传文件时需要:
       set retry 500
       set flow none (具体细节看 help set flow )
       robust

其他文档
===================================================================================
1.   from: http://blog.csdn.net/zoomdy/archive/2008/03/08/2158516.aspx

Linux环境下配置AT91RM9200固件下载工具
作者:郑明督

更新日志
2008.03.08首发布

tag:linux at91rm9200 kermit xmodem minicom uboot
最新文档

如须转载请注明作者,并提供转载出处。

本文讲述Linux环境下AT91RM9200(以下简称9200)固件下载所使用的工具,及其编译配置,使用方法。
这些内容由Zoomdy的实际操作经验总结所得,主要针对Hyesco的开发板,但对其它板子,应该也是大同小异的,希望对朋友们有帮助,
第一次写,没太多经验,不足之处请多多指教 email: mingdu.zheng gmail com。谢谢!
开发板:H9200E(Hyesco)
主机:Fedora 7

1.选择C-Kermit而不是minicom
给9200裸机下载固件需要使用xmodem协议发送文件到9200内部的SRAM中,minicom虽然也有xmodem组件,
但很不幸,minicom自身的xmodem组件与9200不兼容,无法使用minicom的xmodem组件下载固件到9200。
为了解决这个问题有高人编写了专门用于9200的xmodem程序,详情请看第2节。
此外uboot使用kermit协议来下载文件,minicom对kermit的支持同样存在问题,uboot官方使用手册也建议使用kermit而不是minicom。

2.准备工具C-Kermit和xmodem-at91
到kermit网站 下载C-Kermit,请下载Unix Complete版本
或者使用此链接 直接下载

下载完成后解压
tar -xf cku211.tar.gz #如果你下载的是其它格式的压缩包,请使用相应的解压工具。
使用下面的命令编译
make linux
将wermit复制到~/bin目录下,也可以是/usr/bin, /usr/local/bin,或者其它,随你喜欢。
cp wermit ~/bin/kermit   #复制的时候可以重命名一下,方便记忆。

下载xmodem-at91

使用此链接直接下载

修改串口设备名,sx-at91.c使用/dev/ttyS0作为串口设备,如果你的串口设备不是/dev/ttyS0,使用下面的命令编辑
sed -i 's!/dev/ttyS0!/dev/ttyUSB0!' sx-at91.c  # 这里假设串口设备是/dev/ttyUSB0 ,USB转串口设备。
编译
gcc -o xmodem sx-at91.c
复制到~/bin目录下
cp xmodem ~/bin/xmodem

3.配置kermit
cat > ~/.kermrc << EOF
set line /dev/ttyS0    #根据您使用的串口设备修改此行
set speed 115200
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set rec pack 1000
set send pack 1000
set window 5
EOF


编辑/etc/group,将当前用户名添加到串口设备所属的组。Fedora 7下串口设备属于uucp组,将用户添加到uucp组里。
如果没有将当前用户添加到uucp组,将无法连接串口设备。

4.kermit的使用概要
kermit有两种模式,一种为终端模式,一种为命令模式
处于终端模式时,显示从串口发回来的数据,处于命令模式时,显示命令提示符,并等待用户输入命令后,执行命令。
运行kermit,进入命令模式,输入"connect"并回车,进入终端模式。
在终端模式按下Ctrl + \, 再按下C 返回命令模式

|-- -----| connect               |--------|
|命令  |============>|终端  |
|模式  |<============|模式  |
|-------| Ctrl + \, c               |--------|

常用命令
connect : 连接串口设备,连接成功后进入终端模式,简写为c
quit: 退出kermit, 简写为q
send: 使用kermit协议发送文件,与uboot传送文件时使用
run : 运行外部命令,我们将用这个命令调用xmodem发送文件。
?   : 显示全部命令
!   : 运行一个shell,需要临时离开kermit进行其它的作业的时候,可以使用叹号命令。结果操作时使用exit退出shell,返回kermit。


5.下载固件到裸机的SRAM中
将9200目标板通过串口与主机连接,并将9200的BMS口线拉高,上电后,9200将从内部ROM启动。
运行kermit
  kermit
连接设备
C-Kermit>connect
此时kermit进入终端模式,并不停地显示“C“字符,这是9200在等待主机发送固件到SRAM中。
按下Ctrl + \, 再按下c,返回命令模式
发送文件(loader.bin是H9200E开发板提供的固件,在software/uboot/bin目录下)
C-Kermit>run xmodem ~/loader.bin
xmodem下载文件到9200的SRAM中,完成后进入终端模式
C-Kermit>connect
您可以看到
loader 1.0 (Aug  8 2003 - 12:01:07)

XMODEM: Download U-BOOT
同时还会不停得出现“C“字符。
到此为止已经成功得将loader.bin下载到9200的SRAM中,并执行。

6.uboot的下载与安装
将loader.bin下载到SRAM之后,就可以下载uboot.bin了,这是一个在SRAM中运行的uboot。
按下Ctrl + \, 再按下c,返回命令模式,将uboot.bin下载到SRAM中。
C-Kermit>run xmodem ~/uboot.bin
返回终端模式
C-Kermit>connect
您可以看到uboot的版本信息,及目标板的硬件配置,最后是一个uboot提示符。
U-Boot downloaded successfully


U-Boot 1.0.0 (Sep 25 2004 - 15:39:27)

U-Boot code: 21F00000 -> 21F1AA2C  BSS: -> 21F26454
DRAM Configuration:
Bank #0: 20000000 32 MB
Fujitsu: 29LV320BE(32Mbit)
Flash:  4 MB
NAND:Entrying nand_probe,break point1
Entrying NanD_ScanChips
Entrying NanD_IdentChip
mfr=ec
id=76
Flash chip found:
         Manufacturer ID: 0xEC, Chip ID: 0x76 (Samsung K9F1208UOA)
1 flash chips found. Total nand_chip size: 64 MB
  64 MB
In:    serial
Out:   serial
Err:   serial
Uboot>

现在目标板上运行的是临时的uboot固件,接下来将uboot安装到flash中。
擦除目标板上的flash
Uboot> protect off all
Uboot> erase all


下载boot.bin到目标板
Uboot>loadb 20000000
按下Ctrl + \, 再按下c,返回命令模式,使用kermit协议下载boot.bin
C-Kermit>send ~/boot.bin
下载完成后返回终端模式
C-Kermit>connect
将boot.bin复制到flash中
Uboot>cp.b 20000000 10000000 5fff
Uboot>protect on 10000000 10005fff


下载uboot.gz到目标板
Uboot>loadb 20000000
按下Ctrl + \, 再按下c,返回命令模式,使用kermit协议下载uboot.gz
C-Kermit>send ~/uboot.gz
下载完成后返回终端模式
C-Kermit>connect
将uboot.gz复制到flash中
Uboot>cp.b 20000000 10010000 ffff
Uboot>protect on 10000000 1001ffff


到这儿,已经将uboot安装到目标的flash中。将9200的BMS接低后,复位,就可以从flash加载uboot,并执行。
接下来的主角就是uboot啦,uboot支持以太网下载和串口下载,串口下载还使用kermit协议,上面已经有了详
细的使用kermit协议下载固件的方法,照搬就是啦。

参考
ubuntu下使用kermit协议,通过串口传送文件 http://szricky.blog.hexun.com/8444684_d.html


 

================================================================================
from:

这些天一直在windows下用超级终端下载linux内核来测试。那种成功的喜悦崩说多高兴了,可是总觉得很遗憾,就是每次下载必须通过邮件交互,在linux下发送邮件,在windows下下载再移植到开发板上,来回折腾,总感觉不快。

想想马上就春节了,回家后就没有网络了,那怎么下载程序阿。这是一个世界级的问题。必须解决。

在网上到处搜寻这方面的资料,要么说是minicom不要用,要么就是说用gtkterm,我下载了gtkterm后,最后下载的时候发现不支持kermit协议,那还玩个屁阿。

后来发现系统中根本就没有kermit这个程序,当然minicom不工作了。找到redhat9的安装盘(disk2),里面有个ckermit- 8.0-206-0.6.i386.rpm,把他安装到系统中。再试试,minicom还是不工作,关键是minicom太复杂了,网上也没有具体介绍如 何配置的。

干脆就直接配置kermit吧。实际上kermit会读取/root/.kermrc的配置文件。这个文件很重要,但实际上这个文件不存在,要手动添加。文件的内容如下:
set line /dev/ttyS0
set speed 38400
set carrier-watch off
set handshake none
set flow-control none
robust
set file type bin
set file name lit
set send pack 1000
set window 5
我设置的波涛率是38400,好象115200太高了。

不管波特率多高吧。能下载就好,顶多多花点儿时间。

然后首先运行kermit -c自动读取我们的配置文件。然后你就可以使用u-boot的命令了,输入loadb回车
这时候uboot就准备用kermit协议接收文件了。然后强行关闭终端,重新开一个终端窗口,输入kermit
然后send xxx.yyy这时候kermit就自动开始下载程序了。等下载完毕后再关闭这个终端窗口,重新开一个终端,然后kermit -c这时候在用cp.b dest src len拷贝程序到flash中。

整个过程虽然有点儿麻烦,但总是可以用的。

让我们的linux飞驰在开发板上吧。



阅读(4163) | 评论(1) | 转发(0) |
0

上一篇:kermit connect log

下一篇:memory test

给主人留下些什么吧!~~

chinaunix网友2010-11-21 21:33:13

你好,我想问的是,我的板子是mini2440,下载UBOOT的时候是用suppervivi+dnw下载的,可是linux下没有DNW,我想问的是,kermit能下载uboot到我的ARM9里面吗?