参考别人的文章,结合实际情况,综合整理:
0.工具准备: 串口终端kermit,dnw for linux,secbulk驱动
1. 安装kermit
sudo apt-get install ckermit
2.配置kermit
建立配置文件 ~/.kermrc, 内容如下:
#USB转串口,所以设备为/dev/ttyUSB0
SET LINE /dev/ttyUSB0
#设置波特率
set speed 115200
#关闭通信监视,必须关闭才能看到开发板返回的信息
set carrier-watch off
3.安装配置dnw 和secbulk:
1)执行make install 编译得到dnw
2)将dnw放到系统路径: sudo cp dnw /usr/sbin/ ,然后make clean清除多余信息
3)执行:kermit
4)connect
5)dnw 50008000 (此步骤以后,用lsusb命令才能得到USB口的ID信息)
6)新开一个终端,执行lsusb,得到类似:ID 04e8:1234,修改secbulk.c中相关信息,与usb的ID对应
7) 进入dnw_src目录,修改dnw.c文件中loading address的定义,将其设为你的开发板的下载地址,如0x57e00000;
8)重新执行步骤1)和2)用新的dnw和secbulk.ko代替。
9)sudo insmod 路径/secbulk.ko (可以修改/etc/rc.local文件,末尾加入: sudo insmod 路径/secbulk.ko)
4.注意1: 先连接好USB串口和开发板,然后再打开配置好的kermit终端;否则kermit会读取配置文件先占用和锁定了/dev/ttyUSB0, 那么再插上USB串口后,该设备分配的设备文件就成了/dev/ttyUSB1, 从事出现不匹配,在终端中无法控制开发板的情况;(不过这种情况也很好处理,就是在kermit中设置新的连接对象,如下:)
set line /dev/ttyUSB1 #这个根据实际情况设置,可以通过 ls /dev/ttyUSB* 的方式查找到名字
5.注意2:
1)驱动安装好后,在用kermit连接好开发板,然后重启开发板,让其停留在u-boot阶段;
2)然后在kermit中输入dnw 50008000, 这个地址要和dnw软件编译时指定的下载地址一致,
3)这时通过lsusb命令才可以检查到该usb线
4)dmesg |grep secbulk可以检查到如下信息(在正常执行了:sudo insmod secbulk.ko 后,):
Nov 16 13:21:21 qunengrong-Studio-1450 kernel: [139476.958530] secbulk:secbulk probing...
Nov 16 13:21:21 qunengrong-Studio-1450 kernel: [139476.958534] secbulk:bulk out endpoint found!
表示USB连接成功
6.烧写方法:
1)kermit-->connect-->开机,按空格停留在uboot-->dnw 50008000
2)另一终端输入:“dnw 路径/文件.bin”来传输文件
3)回到kermit做格式化和烧写