一直在Windows下开发,某些bug总是使我不能全心全意的信任Windows,从开发嵌入式开始,一直就想把开发环境转移到Linux环境下,特别是下载程序的时候,不过确实有Linux的开发环境,就拿下载程序来说,Linux下的minicom和dnw真的是很好用,同时也可以学习源代码。下面教你如何下载、安装、使用dnw。

1. dnw由两部分构成:USB驱动和下载工具,USB驱动便是secbulk文件夹,下载工具是DNW文件夹

下载地址:http://files.cnblogs.com/lixiaoming90/dnw_linux.rar

文件名:DnwLinux.rar

2.  安装dnw

解压缩,之后会看到dnw_linux文件夹,进入该文件夹

$ cd dnw_linux

$ ls

$ /dnw   /secbulk

2.1  首先修改、编译和安装驱动

进入secbulk文件夹,输入编译命令,编译成模块。(我自己修改了Makefile,因此大家只需make就可编译,make clean 就可清除编译。修改后的Makefile如下:

obj-m := secbulk.o
KDIR := /lib/modules/`uname -r`/build
PWD  := $(shell pwd)default:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) cleanrm -rf *.order *.symvers

在修改secbulk.c中代码,将0x5432改为0x04e8(不同的flash要在那个表单中加入一些设备相关的信息类似ID号,在程序加载的时候自动读取芯片内部ID和这个相比较,没有注册的设备是不会被系统支持的,可以通过lsusb获得idProduct和idVendor,需要在插上板子,并准备下载时此时设备连上时lsusb,0x04e8:0x1234),代码如下:

static struct usb_device_id secbulk_table[]= {{ USB_DEVICE(0x04e8, 0x1234)},{ }
};

至此,代码修改完毕!

$ make

之后在文件夹中会有secbulk.ko模块文件,如下图所示:

加载该模块到内核(注意:需要root权限)

$ sudo insmod secbulk.ko

加载后用dmesg命令可以看到模块已经成功加载
     [  238.007970] secbulk:secbulk loaded
     [  238.009101] usbcore: registered new interface driver secbulk

常见问题: can not open /dev/secbulk0,  则表示该模块没有加载成功或者dnw没有root权限

通过lsmod可以看看加载成功没。

$ lsmod | grep secbulk

2.2 编译和安装dnw

进入dnw文件夹

$ cd dnw

修改dnw.c,找到如下代码处:

   printf("Writing data...\n");size_t remain_size = file_stat.st_size+10;

在其前面加上下面两句:

/*****************************/
file_buffer [file_stat.st_size + 8] = sum & 0xff;
file_buffer [file_stat.st_size + 9] = sum >> 8;
/*****************************/

代码修改完毕,像一般的程序一样编程为可执行性文件

$ gcc –o dnw dnw.c

可能会有一些警告,不过可以忽略。在dnw下生成dnw工具

将dnw复制到/bin目录下,这样就可以在任意文件目录下调用dnw命令。

温馨技巧: 因为要用dnw的话,要确保secbulk驱动加载到内核,为了避免每次都要手动加载,因此修改/etc/init.d/rc.local文件(root权限),在后面加上下面一句:

insmod /….你的secbulk.ko文件目录/secbulk.ko

保存退出完事。

3. dnw运用

我用dnw的主要目的是用来下载裸机程序,还有其他文件,根本没有Windows下的蓝屏现象,dnw的用法也很简单。

3.1 打开两个终端,一个输入minicom命令,打开串口调试,当开发板加载uboot时按下PC上的空格键,使其停在下载模式,输入以下命令:

SMDK6410# dnw  0x50008000

此时终端打印以下信息,说明USB连接成功,就等待你下载传输了。情况如下:

3.2 在另外一个终端输入以下命令,下载文件:

$ dnw /你要下载的文件路径/文件名

下载过程和结果如下:

到此为止,dnw的介绍结束,因为之前研究过Linux下的dnw使用,好长时间没用了,现在写此博文来记录,方便以后回顾,同时也希望给新手一个指导。

我现在在用dnw来下载裸机程序,但是因为好久没用了,出现以前从来没有遇到过的问题:

1. 首先是出现“can not open /dev/secbulk0”,后来想想原来是dnw时没有使用root权限,在后面又出现这个问题,我又重新编译了一次secbulk驱动,这个问题解决了。

2. 这次是没有出现上面的问题了,但是新问题又出现了:在writing data…期间,写到10%的时候就出现failed!,我试好多次都是这个问题。现在正在解决中。。。情况如下:

3.3 下载到NandFlash

现在你的程序已经下载到内存当中了,如果你想在内存中运行你的程序,只需要输入下面一句命令即可:

SMDK6410#  go 0x50008000

如果你想下载到NandFlash中(好处就是掉电了程序还是在NandFlash当中,而且比较原味,可以测试一下你写的启动代码)

我的步骤如下:

(1)首先制作烧写Uboot的SD卡,具体在飞凌用户手册中有(注意:SD卡中除了烧写外,里面一样文件都没有,我之前一直搞不明白,现在终于清楚了)

(2)设置开发板为SD卡启动,启动后按PC上的空格键停在Uboot下载调试界面,下面的就跟上面的步骤一样,将程序通过USB烧写到内存中

(3)将NandFlash中的0~1M的空间擦除,再把下到内存地址中的程序烧写到NandFlash的0~100000空间中(uboot中默认的是16进制)

SMDK6410#  nand erase 0 100000

SMDK6410#  nand write.e 0x50008000 0 100000

(4)设置开发板为NandFlash启动即可。

目前,已经调试成功了,原来是开发板中的uboot好久没用,可能出现了问题,现在重新烧写一次,成功下载!情况就是上面那一张图了,终于又能在Linux下开发程序了。

原文地址:http://www.cnblogs.com/lixiaoming90/archive/2013/03/21/2973837.html

Dnw下载工具还是Linux下的好(For OK6410)相关推荐

  1. linux 中多进程下载工具,[转载]Linux 下安装多线程下载工具 proz

    学习Linux,就不停的要到网上下载各种各样的源码包或rpm包,只在图形界面下操作,如果网络不是很流畅(比如我的adsl)通常很慢,而且不稳定,有时候会出现下载包不完整的情况,所以建议找个下载工具装上 ...

  2. Linux arm 下载程序,在Linux下使用kermit和dnw给ARM板下载程序

    OS: Ubuntu Linux version: 10.10 first: install kermit: 1.A 在unbuntu的终端输入:sudo apt-get install ckermi ...

  3. linux下好用的截图软件下载,爆改 Linux 下最好用的截图工具!

    原标题:爆改 Linux 下最好用的截图工具! 公众号关注 "五分钟学算法" 设为 "星标",带你挖掘更多开发神器! 因为日常Linux办公,经常有截图顺带简单 ...

  4. linux串口工具 kermit,Linux下串口工具kermit的安装使用攻略

    终端(计算机显示终端)是用户使用系统的入口,是计算机系统的输入输出设备,终端的发展也经历了字符哑终端.图形终端和网络终端三种形式:而console更强调是控制系统的地方,其使用者主要是管理员,从概念上 ...

  5. linux用sz下载文件夹,linux下我要用sz下载整个文件夹到底要怎么做!服了

    匿名用户 1级 2012-02-01 回答 1. 首先需要在secureCRT中可以配置相关的本地下载和上传目录,然后用rz.sz命令即可方便的传输文件数据. 2. 下载数据到本地下载目录:sz fi ...

  6. linux系统下的打印机驱动下载,方法论:Linux下如何驱动主流品牌打印机

    薄荷站长浸淫 Linux 桌面领域十余年,一直致力于 Linux 桌面系统的推广.对于桌面用户办公中必需的打印功能,薄荷站长也是有所研究.为了使新手朋友们少走弯路,薄荷站长介绍一下常见品牌打印机的 L ...

  7. linux下载gitlab文件,Linux下安装Gitlab10(修正版)

    原来发表的文章地址:Linux下安装Gitlab:步骤及方式不是最好的:其中 nginx 可以整合到之前就有的Nginx中不需要更改nginx pid让系统运行两个nginx. 系统是Centos7 ...

  8. linux下载sra数据库,linux下使用Aspera Connect下载sra数据

    参考链接:https://www.jianshu.com/p/680e8d720516 1. 下载Aspera Connect:在命令行输入如下命令 wget http://download.aspe ...

  9. linux分区表错误修复工具,在Linux下成功修复分区表出错

    我重启开了Ubuntu,然后插上他的硬盘,终端上输入 sudo fdisk -l 这下竟然可以看到同学那块硬盘的信息,不过还是不能正确读取出 硬盘无法识别,无法通过自检,在Linux下成功修复分区表出 ...

最新文章

  1. 打算把我的视频工具整合一下
  2. java 文件路径表达式_Java基础(二十二) Lambda表达式和File类
  3. php ajax 注册,非常实用的ajax用户注册模块
  4. mysql搜索_mysql 几种搜索引擎的比较
  5. Followme Devops step by step
  6. 加加减减的奥秘——从数学到魔术的思考(一)
  7. 可用子网数要不要减2_子网数、主机数与子网掩码的关系
  8. python 模块下载资源汇总
  9. 简单java数组程序_最简单易懂的java数组排序方法整理
  10. 【C#】AutoCAD二次开发笔记
  11. vue+element实现手机号验证码注册
  12. 量化投资学习——股指期货研究(八)
  13. Meltdown Attack
  14. html将图片保存到文件夹,怎么把一张网页上的全部图片都保存到文件夹里
  15. 关于IMDB,-------Internet Movie Database(互联网电影数据库)
  16. 艾永亮:苹果缺乏创新能力?打造超级产品是未来增长的关键
  17. 怪物掉落装备修改属性
  18. NULL, '\0',0 '0'的区别
  19. 关于AI芯片功耗和应用的一些看法
  20. 分享一款轻量简洁的全平台开源商城系统

热门文章

  1. python列表同时添加多个元素_python怎么向列表中添加多个元素
  2. STM32驱动AD7366-5/AD7367-5芯片
  3. VSCode如何去掉Monokai主题下的绿色下划线
  4. Leetcode_202_Happy Number
  5. L1、L2正则VS L1、L2 loss
  6. Jetson Nano 硬件相关
  7. 由开发者的人品问题领略测试人员的人品问题
  8. Python GUI 开发工具
  9. C#winform TreeView编程
  10. 使用U3D给物体添加脚本时提示Can‘t add script component