单片机 > 单片机程序设计 > 详情

Ubuntu12.10 使用DNW传数据 进行ARM开发板烧写

发布时间:2021-04-19 发布时间:
|

Part1前言

最近在研究OK6410开发板;但windows下的rvds真是不好用,烧写程序到开发板还需要dnw,而这各种软件都要在win下搞,很是憋屈,而且64位的win7还出各种问题。我要移植的是Linux系统呢,咋的就不能在linux完成所有步骤呢?


昨晚到处查找资料,总算找到了dnw可在linux成功运行的消息;


又遇到了linux下的串口连接终端minicom和kermit; 不断折腾和测试,总算搞定了dnw和usb下载的问题;后面的路就开阔多了!记下各种资源和心得,和大家分享。


 


Part2工具准备

2.1 串口终端kermit

这个直接命令安装就可以了,另外需要简单熟悉一下他的配置和两种模式;


2.1.1 安装kermit

sudo apt-get install ckermit

2.1.2 配置kermit

建立配置文件 ~/.kermrc, 内容如下:



#USB转串口,所以设备为/dev/ttyUSB0

SET LINE /dev/ttyUSB0

#设置波特率

#set speed 115200


#关闭通信监视,必须关闭才能看到开发板返回的信息

set carrier-watch off


2.1.3 使用kermit连接开发板

在连接好USB转串口后,该USB能够被Linux直接识别,对应设备文件为:/dev/ttyUSB0 ;


这里需要注意的是: 先连接好USB串口和开发板,然后再打开配置好的kermit终端;否则kermit会读取配置文件先占用和锁定了/dev/ttyUSB0, 那么再插上USB串口后,该设备分配的设备文件就成了/dev/ttyUSB1, 从事出现不匹配,在终端中无法控制开发板的情况;(不过这种情况也很好处理,就是在kermit中设置新的连接对象,如下:)


set line /dev/ttyUSB1 #这个根据实际情况设置,可以通过 ls /dev/ttyUSB* 的方式查找到名字

 2.1.4 kermit的两种模式

进入后默认进入命令模式,可以执行很多命令,包括连接开发板的connect命令:



C-Kermit 9.0.302 OPEN SOURCE:, 20 Aug 2011, for Linux+SSL+KRB5

 Copyright (C) 1985, 2011,

  Trustees of Columbia University in the City of New York.

Type ? or HELP for help.

(/media/GoldenResources/arm/src/dnw4linux/) C-Kermit>? Command, one of the following:

 add           check         disable       getc          learn         mmove         push          return        statistics    type

 answer        chmod         do            getok         LICENSE       move          pwd           rlogin        status        undeclare

 apc           clear         echo          goto          lineout       msend         quit          rmdir         stop          undefine

 array         close         edit          grep          log           msleep        read          run           SUPPORT       version

 ask           connect       enable        head          login         open          receive       screen        suspend       void

 askq          copy          end           hangup        logout        orientation   redial        script        switch        wait

 assign        date          evaluate      HELP          lookup        output        redirect      send          tail          where

 associate     debug         exit          http          mail          pause         redo          server        take          while

 authenticate  decrement     file          if            manual        pdial         reget         set           telnet        who

 back          define        finish        increment     message       pipe          remote        shift         touch         write

 browse        delete        for           input         minput        print         remove        show          trace         xecho

 bye           dial          ftp           INTRO         mget          pty           rename        space         translate     xmessage

 cd            directory     get           kcd           mkdir         purge         resend        ssh           transmit

or a macro name ("do ?" for a list) or one of the tokens: ! # ( . ; : < @ ^ { 


随时出入 问号 ? 可以获得帮助和代码补全; 在输入connect命令连接开发板后(在这之前需要配置连接对象,可以用命令 set line /dev/ttyUSB0 的方式完成),进入到连接后的开发板模式,显示的为开发板反馈回来的信息,可以控制整个开发板,要返回原来的命令模式使用快捷键 Ctrl+ , 然后 按C 字母返回;


 


2.2 DNW和USB驱动准备

2.2.1 下载源码

可以网上搜索dnw4linux,下载QQ2440版本的源码,或者直接下载我整理后的,可以适用于OK6410及类似开发板的dnw源码和驱动包;


详情查看: https://github.com/Qunero/dnw4linux 该页面的说明,或者直接下载压缩包:


https://github.com/Qunero/dnw4linux/downloads


2.2.2 编译安装和使用

直接查看该软件包的README,按步执行即可:



1、源码说明:

    本源代码收集自网络,经过整理和加入宏定义,使其适用于OK6410开发板;对

    源码进行了适当的注释和错误纠正;同样以GPL协议发布;


2、使用说明:

2.1 编译

    直接在解压后的目录中make即可;然后在对应的子目录中可以找到编译好的文件;

    更方便的做法:make install 会直接将相关文件编译好,然后放到当前目录下,

    编译好的文件为:

    dnw     ---     用于传输数据的软件,用法: dnw filename

    secbulk.ko  --- 识别下载用USB的驱动; 用法: sudo insmod secbulk.ko


2.2 自动化

    在编译成功后,完成下列步骤方面以后使用:

    2.2.1 将dnw放到系统路径: sudo cp dnw /usr/sbin/ 

    2.2.2 将secbulk.ko驱动设为自动加载:

        先在住目录建立mydriver目录:mkdir ~/mydriver 

        将驱动放入自定义mydriver中:cp secbulk.ko ~/mydriver/

        修改/etc/rc.d/rc.local文件,末尾加入: sudo insmod $HOME/secbulk.ko

        注意: 将上面的$HOME替换成实际的绝对路径,比如: /home/qulory 

2.3 清理

    直接执行make clean, 让你的源码目录干干净净;

2.4 使用 

    注意,当前编译好的dnw在32位linux可用,但是secbulk.ko驱动文件需要自己编译

    必须同当前使用的内核的版本一致,内核版本升级后也需要重新编译;


3、移植帮助:

要成功移植到类似的开发板,需要以下2步:

3.1 驱动处理:

    进入secbulk_driver子目录,修改文件secbulk.c中的关于DOWNLOAD_USB_ID_MAJOR

    和DOWNLOAD_USB_ID_MINOR的宏定义,让其与你的usb对应,可以通过lsusb命令查看

    获得该id的信息;

3.2 dnw下载地址的处理:

    进入dnw_src目录,修改dnw.c文件中DOWNLOAD_ADDR的定义,将其设为你的开发板

    的下载地址;


3.3 有疑问可以联系 Qulory;


驱动安装好后,在用kermit连接好开发板,然后重启开发板,让其停留在u-boot阶段;然后在kermit中输入dnw 50008000, 这个地址要和dnw软件编译时指定的下载地址一致,然后功过lsusb命



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机按键切换下一首歌