• Linux下烧写工具DNW和USB驱动安装(一)


    转:http://blog.csdn.net/zhengmeifu/article/details/8837930

    Linux下编译记录:
    编译PC端USB驱动和写入工具
    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是写入工具

    编译驱动之前先修改secbulk.c
    找到#define BULKOUT_BUFFER_SIZE
    修改为
    #define BULKOUT_BUFFER_SIZE 512
    找到
    static struct usb_device_id secbulk_table[]= {
            { USB_DEVICE(0x04e8, 0x1234)},
            { }
    };
    修改为上面的样子
    接下来编译
    $cd secbulk
    $make -C /lib/modules/`uname -r`/build M=`pwd` modules

    加载编译好的驱动
    $sudo insmod ./secbulk.ko
    注意,每次下载前都需要加载驱动,或者可以设置为开机自动加载
    Ubuntu中,假设驱动文件在/opt/dnw_linux/secbulk/
    则修改/etc/rc.d/rc.local文件,末尾加入
    sudo insmod /opt/dnw_linux/secbulk/secbulk.ko
    即完成开机自动加载驱动模块

    接下来编译dnw写入工具
    先打开dnw.c修改
    找到
    printf("Writing data... ");
    size_t remain_size = file_stat.st_size+10;
    size_t block_size = remain_size / 100;
    size_t writed = 0;

    在它前面加上2行代码,如下:
    file_buffer [file_stat.st_size + 8] = sum & 0xff;
    file_buffer [file_stat.st_size + 9] = sum >> 8;

    printf("Writing data... ");
    size_t remain_size = file_stat.st_size+10;
    size_t block_size = remain_size / 100;
    size_t writed = 0;

    编译dnw
    $gcc -o dnw dnw.c
    编译成功后生成可执行dnw
    使用DNW下载
    启动开发板,进入minicom,并将开发板和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!
    说明驱动可以使用


    重起开发板,别进linux系统,按任意键进入uboot界面,
    输入
    dnw 50008000
    当出现“USB host is connected. Waiting a download.”时,
    在PC端Linux上用dnw工具写入要下载的文件,例如我要写入/tmp/zImage
    $./dnw /tmp/zImage


    写入完成后提示成功
    100% 312349 bytes OK
    至此,dnw在linux下使用一切正常

    dnw下载地址:

    https://github.com/Qunero/dnw4linux

  • 相关阅读:
    分页内存管理——虚拟地址到物理地址的转换【转】
    设备树(device tree)学习笔记【转】
    08 在设备树里描述platform_device【转】
    [dts]Device Tree机制【转】
    设备树快速入门【转】
    Linux 设备树详解【转】
    设备树处理之——device_node转换成platform_device【转】
    最新内核3.4)Linux 设备树加载I2C client adapter 的流程(内核3.4 高通)【转】
    基于tiny4412的Linux内核移植 --- aliases节点解析【转】
    Linux 文件系统IO性能优化【转】
  • 原文地址:https://www.cnblogs.com/liulipeng/p/3408263.html
Copyright © 2020-2023  润新知