DNW for CentOS7
来源:互联网 发布:淘宝店铺宝贝分类模板 编辑:程序博客网 时间:2024/04/27 20:10
原文转自 http://blog.csdn.net/david_xtd/article/details/26088299
最近跟着国嵌的课程玩OK6410,国嵌用的是红帽企业版6,我自己硬盘装的CentOS7,发现国嵌的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.oKDIR := /lib/modules/`uname -r`/buildPWD := $(shell pwd)default:$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modulesclean:$(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;/*****************************/
int target_addr;if( 3 != argc ){printf("Usage: dwn <filename> <address>\n");return 1;}target_addr=strtol(argv[2],NULL,0);
*((unsigned long*)file_buffer) = target_addr; //load address 用target_addr替换原来的固定的地址,这样方便在命令行更改地址
代码修改完毕,像一般的程序一样编程为可执行性文件
$ 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的主要目的是用来下载裸机程序,dnw的用法也很简单。
当开发板等待USB传输数据是
dnw <filename> <tartet_addr>
- DNW for CentOS7
- dnw for linux(pc)
- DNW FOR WIN7
- DNW For Tiny6410
- dnw for linux
- dnw for linux(ubuntu)
- DNW For Win7
- dnw for linux
- ubuntu16 dnw for tiny4412
- DNW+for+Linux(Tiny+6410)
- dnw for linux(ubuntu)
- dnw for linux
- Ubuntu 下dnw for tiny6410 ok6410 idea6410
- fedora20下面 dnw for linux 安装配置
- dnw for linux ( ubuntu opensuse federa 测试通过)
- DNW v6.0C – For WinCE 源码
- Dnw下载工具还是Linux下的好(For OK6410)
- 关于dnw for linux在FL2440板子上的使用
- Eclipse Neon 配置文件优化 - 瞎搞篇
- jenkins + gradle + svn
- LogUtil--来自于黑马
- Android Studio 一些问题
- easyui 获得选中tree节点的层数
- DNW for CentOS7
- jstack日志深入理解
- 前端开发工程师必读书籍推荐
- ffmpeg(3) AVIOContext
- 154.View the Exhibit and examine the privileges granted to the MGR_ROLE role.
- 51单片机 蜂鸣器
- Codeforces Round #359 (Div. 2)
- Android Service的两种启动方式
- Yii学习笔记(数据库操作两大类总结)