Andrew Haung
从PC机开发主机下载内核或根文件系统,有多种方法。除了用JTAG直接下载下方式外,一般采用bootloader配合进行下载.
如有名的bootloader 的u-boot最早就是用网络通过从TFTP服务器下载。这种对于在固定的组网的开发环境.非常方法。但是对于单机或者移动开发环境。还是非常不方便。因此自三星发布 S3C2410开发板.在其VIVI与WINDOWS之间的DNW软件,进USB通讯和下载,相当方便.
DNW是三星公司开发,并且把驱动和应用程序都开源了,看样子象应急之作,有很多小BUG,象驱动经常导致WINDOWS 蓝屏。
后有ChinaUnix的网友hulifox008 开发基于LINUX的对应版本的。称为DNW for Linux.在LINUX下可以用。
另有朋友开发了QT4基于图形界面
但无法下载。
DNW Windows的源码
|
文件: |
dnw0.50A.zip |
大小: |
104KB |
下载: |
下载 | |
一.DNW Linux使用.
---------------------------------------------------------------------
1. 下载Linux下DNW的PC端USB驱动和写入工具
。可从
或
文件名: dnw_linux.zip
下载后把后缀名改成.tgz
2. 编译PC端USB驱动和写入工具
2.1 解压缩
$ tar xzvf /path/to/dnw_linux.tgz
dnw_linux/
dnw_linux/secbulk/
dnw_linux/secbulk/Makefile
dnw_linux/secbulk/secbulk.c
dnw_linux/dnw/
dnw_linux/dnw/dnw.c
其中secbulk.c是PC端USB驱动, dnw.c是写入工具
2.2 编译secbulk.c内核模块
$cd secbulk
$make -C /lib/modules/`uname -r`/build M=`pwd` modules
Andrew Huang 注,这个Makefile被我修改,直接make 即可
编译成功后在当前目录下可以看到secbulk.ko
ls
Makefile Module.symvers secbulk.c secbulk.ko secbulk.mod.c secbulk.mod.o secbulk.o
2.3 加载内核模块
用insmod命令加载模块,这需要root权限
$sudo insmod ./secbulk.ko
加载后用dmesg命令可以看到模块已经成功加载
[ 238.007970] secbulk:secbulk loaded
[ 238.009101] usbcore: registered new interface driver secbulk
或用lsusb | grep secbulk
2.3 编译dnw写入工具
$cd dnw
$gcc -o dnw dnw.c
编译成功后生成可执行档dnw.
Andrew Huang 注.我增加一些Makefile,直接在dnw_linux下make 即可编译dnw和secbulk.ko
3 QQ2440使用DNW下载
3.1 启动开发板,进入Supervivi,并将开发板和PC用USB电缆连接,此时用dmesg命令可以看到secbulk驱动加载:
[ 283.677772] usb 1-1: new full speed USB device using uhci_hcd and address 2
[ 284.084835] usb 1-1: configuration #1 chosen from 1 choice
[ 284.140430] secbulk:secbulk probing...
[ 284.140482] secbulk:bulk out endpoint found!
3.2 此时可以用supervivi进行USB下载,vivi上步骤请参考用户手册,当出现“USB host is connected. Waiting a download.”时,在PC端Linux上用dnw工具写入要下载的文件
$sudo ./dnw zImage.
写入完成后提示成功
100% xxxxxxx bytes OK
4.在mini6410下使用
测试环境:RHEL
4.1 安装驱动模块
insmod secbulk.so
4.2 运行minicom打开串口,在启动开发板时按回车,进入u-boot启动界面
##### FriendlyARM U-Boot(2010-05, NAND) for 6410 ##### [f] Format the nand flash [u] Download u-boot.bin [k] Download Linux/Android kernel [y] Download root yaffs2 image [a] Download Absolute User Application [n] Download Nboot.nb0 for WinCE [w] Download WinCE NK.nb0 [s] Set the boot parameter of Linux [b] Boot Linux [q] Quit to shell Enter your Selection:k Downloading Linux/Android Kernel from USB... OTG cable Connected! Download address 0xc0000000 Download Done!! Download Address: 0xc0000000, Download Filesize:0x22bc34 Checksum is being calculated... Checksum O.K. Downloading Linux/Android Kernel successed Writing Linux/Android Kernel into NAND... Erasing at 0x560000 -- 100% complete. |
按K触发USB动作,
此时提示OTG connected.并且在RHEL上出现/dev/secbulk0 的设备结点。
4.3. 运行dnw进行下载
dnw zImage
注如果开机的时候自动加载secbulk.ko将其加入开机脚本
使其得到自动加载,编辑/etc/init.d/rc.local 在最后加上 insmod /所在路径/secbulk.ko。
#调用dnw时只能在当前目录使用./dnw执行,对此情况,将dnw添加到/usr/local/sbin中,这样可以在
任何目录,使用 sudo dnw filename来调用。
|
文件: |
dnw_linux.tar.gz |
大小: |
118KB |
下载: |
下载 | |
阅读(7272) | 评论(1) | 转发(1) |