历史上的今天
返回首页

历史上的今天

今天是:2024年12月17日(星期二)

正在发生

2019年12月17日 | Ubuntu12.10 使用DNW传数据 进行ARM开发板烧写

2019-12-17 来源:eefocus

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命令可以检查到该usb线,如3.2 中所示;并且在正常执行了 : sudo insmod secbulk.ko 后,可以检查到如下信息:


less /var/log/kern.log

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!

至此驱动安装和dnw软件准备就绪;


2.2.3 关于dnw2

dnw2使用libusb来实现对该USB的操控,但是不如dnw来的直接:/dev/secbulk0 ,前者更加系统但是使用传输数据的时候经常出现如下错误:


Target usb device found!

Cannot claim interface: Device or resource busy

后续有时间详细分析以下在处理;


 


2.3 minicom终端的使用

minicom是基于字符菜单的,不太好用,而且经常快捷键不响应和出现乱码;不过附加使用方法如下:


2.3.1 使用minicom -s 启动并配置

使用sudo启动:


sudo 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        |

            +--------------------------+

推荐阅读

史海拾趣

Dialog Semiconductor(戴乐格半导体)公司的发展小趣事

为了进一步增强市场影响力,Dialog Semiconductor通过一系列的收购策略来扩大其业务范围。例如,在2020年,公司收购了Adesto Technologies,这是一家专注于非易失性存储器(NVM)解决方案的公司。此次收购为Dialog Semiconductor带来了近5,000家新客户,并补充了其在无线连接产品之外的有线连接解决方案。同年,Dialog Semiconductor还收购了另一家公司,获得了强大的核心IC产品组合和经验丰富的工程师团队,进一步巩固了其在IoT市场的地位。

Communications & Power Industries公司的发展小趣事

面对日益激烈的市场竞争,CPI意识到单纯的产品创新已经不足以支撑公司的持续发展。于是,公司开始着手进行产业链整合,通过收购、兼并等方式,将上下游相关企业纳入自己的业务体系。这一举措不仅加强了CPI在产业链中的话语权,还提高了公司的生产效率和成本控制能力。通过整合产业链资源,CPI成功打造了一个高效、协同的供应链体系,为公司的长远发展奠定了坚实的基础。

贝特莱公司的发展小趣事

深圳贝特莱电子科技股份有限公司成立于2011年7月,从一开始,公司就明确了以技术研发为核心的发展战略。依托专业团队多年的行业资源积累,贝特莱致力于开发具有自主知识产权的核心技术。在指纹识别、触控、生命感知及MCU等芯片领域,贝特莱不断取得突破,为后续的市场拓展奠定了坚实的基础。

Avic公司的发展小趣事

随着Avic公司在航空电子技术领域的不断发展和创新,其产品在国内外市场上的竞争力日益增强。公司成功拓展了国内外市场,市场份额稳步增长。这不仅体现了公司在航空电子领域的实力,也为中国航空工业的整体发展做出了积极贡献。

这五个故事虽然不能完全涵盖Avic公司在电子行业发展的所有细节,但希望能通过概括性的描述,为您展现该公司在这一领域的重要发展历程和取得的成就。需要注意的是,这些故事是基于公开资料和已知事实进行描述的,旨在客观呈现事实,而非进行主观评价。

C-TON Industries公司的发展小趣事

随着公司规模的扩大,C-TON意识到单凭自己的力量难以在竞争激烈的电子行业中立足。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名的电子产品制造商建立合作伙伴关系,C-TON成功将其芯片技术应用于对方的产品中,进一步扩大了市场份额。这一合作不仅提升了C-TON的知名度,也为其带来了稳定的订单和收入来源。

Exar公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,Exar公司始终坚持以创新为核心竞争力。公司不断投入研发资金,加强技术创新和产品研发力度,推出了一系列具有自主知识产权的新产品。同时,Exar还积极关注行业发展趋势和市场动态,不断调整和优化产品线,以适应市场的变化和发展。在未来,Exar将继续坚持创新驱动的发展战略,努力成为电子行业的领军企业。

请注意,以上故事框架仅供参考,具体的故事内容需要根据实际情况进行补充和完善。

问答坊 | AI 解惑

噪声系数测量的三种方法

摘要:本文介绍了测量噪声系数的三种方法:增益法、Y系数法和噪声系数测试仪法。这三种方法的比较以表格的形式给出。 前言在无线通信系统中,噪声系数(NF)或者相对应的噪声因数(F)定义了噪声性能和对接收机灵敏度的贡献。本篇应用笔记详细阐述这 ...…

查看全部问答>

找手机开发,地点北京

现有手机开发项目,要求有经验的手机开发团队参与。有意可以发:project911@163.com…

查看全部问答>

谁有EVC4.0+PocketPc2003开发PDA反面的电子书?

我刚刚接触EVC4.0+PocketPc2003开发PDA程序,在网上总找不到 相关的电子教程,哪位前辈能提供些教程啊!急 啊!…

查看全部问答>

《程序员面试宝典》 一本很好的面试书籍

《程序员面试宝典》一本很好的面试书籍…

查看全部问答>

制作高频加热设备过程中的一些新感触

开年后,心思都在高频加热设备上,到今天,实验结果比较满意,频率920KHz,已经达到4500W的功率,目前看还有一定的扩展余量,基本满足产品需求,下一步将继续完善,实现产品化。 总的来说,做电源之前有两次经历,一次是03年的电动自行车项目,用a ...…

查看全部问答>

高频无线类要用模块

本帖最后由 paulhyde 于 2014-9-15 09:44 编辑 各位高手,根据刚出的2011清单 高频无线类的应该会有 请问需要准备什么模块啊?能提供一些资料吗?谢谢!  …

查看全部问答>

求摄像头大神指点

本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 拆了手头nokiaE66的摄像头...想用STM32 cortex m3驱动它...... 没怎么接触过手机的摄像头...貌似摄像头后有块STv0986... 找到原理图...想知道摄像头引脚:PDATA2P...PDATA2N...PCLK2P...PCLK2 ...…

查看全部问答>

EEWORLD大学堂----MSP430进阶培训—MSP430F5529的使用与开发

MSP430进阶培训—MSP430F5529的使用与开发:https://training.eeworld.com.cn/course/236 ????? MSP430F5529是德州仪器新一代F5xxx系列MCU的典型代表,不但拥有更低的功耗,而且在模拟外设、?数字外设和系统软件开发方面有了很大的改进。本培训课 ...…

查看全部问答>

51单片机产生spwm波

求教为什么TH0=0x216,这样的话对应的二进制不就不止8位了嘛 搜索 复制 …

查看全部问答>