Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1559613
  • 博文数量: 204
  • 博客积分: 2215
  • 博客等级: 大尉
  • 技术积分: 4426
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-06 08:03
个人简介

气质,源于心灵的自信!

文章存档

2018年(1)

2017年(1)

2016年(1)

2015年(18)

2014年(20)

2013年(30)

2012年(119)

2011年(14)

分类: 嵌入式

2014-03-21 18:04:21

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
下载: 下载
     
阅读(4956) | 评论(0) | 转发(0) |
0

上一篇:系统调用是什么

下一篇:理解红黑树(1)

给主人留下些什么吧!~~