日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DNW for CentOS7

發布時間:2023/12/29 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DNW for CentOS7 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文轉自?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.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; /*****************************/ 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。