发布libusb讲解

This commit is contained in:
weidongshan
2022-09-20 15:43:24 +08:00
parent 6e0770b163
commit f225b34b4e
30 changed files with 6128 additions and 72 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,16 @@
# 使用libusb读取鼠标数据 #
参考资料:
* libusb API接口https://libusb.sourceforge.io/api-1.0/
* libusb 示例https://github.com/libusb/libusb/tree/master/examples
* HID规范https://www.usb.org/sites/default/files/hid1_11.pdf (文件已经下载放在GIT仓库)
* 文档USB Human Interface Devices, https://wiki.osdev.org/USB_Human_Interface_Devices
## 1. HID协议

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

View File

@@ -11,4 +11,10 @@ https://programmerall.com/article/42562063276/
就是usb 的vcp 模式和msd 挂载
我先加入笔记里,到时看看是否实用、实用的话再讲
我先加入笔记里,到时看看是否实用、实用的话再讲
韦老师USB里面休眠唤醒suspend/resueme/autosuspend/remote-wakeup这些也挺常用的希望老师后面也可以讲一下

View File

@@ -0,0 +1,10 @@
CROSS=
all: exe
exe:dnw.c
$(CROSS)gcc -Wall -o dnw dnw.c libusb-1.0.a -lpthread -static
cpy:
cp dnw /usr/local/bin -f
clean:
@rm -f dnw *.o *~

View File

@@ -0,0 +1,250 @@
/*
* To send file through USB for s3c2410/s3c2440's bootloader, vivi/u-boot
*
* Copyright (C) 2006 thisway.diy@163.com
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/select.h>
#include <sys/time.h>
#include <errno.h>
#include <string.h>
#include "libusb.h"
#define DMA_BUF_SIZE 0x8000
#define DNW_DEVICE_IDVENDOR 0x5345
#define DNW_DEVICE_IDPRODUCT 0x1234
const char version[] = "DNW on linux for www.100ask.net, v2.0 with libusb1.0";
const char author[] = "thisway.diy@163.com";
void printusage(char *name)
{
printf("Usage: %s <file> [address], send file to USB device\n", name);
printf(" %s -v, show the version\n", name);
printf("examples:\n");
printf("1. %s vmlinus\n", name);
printf("2. %s yaffs_image 0x30000000\n", name);
}
int main(int argc, char *argv[])
{
int i;
int first = 1;
int fd_file;
struct stat stat_buf;
libusb_device_handle *hdev = NULL;
unsigned int ret;
int status;
unsigned int num_remain = 2;
unsigned int num_read = 0;
unsigned int num_write = 0;
unsigned int num_read_total = 0;
unsigned int num_write_total = 0;
unsigned int num_has_write_total = 0;
int transferred;
unsigned int download_addr = 0x30000000;
unsigned short check_sum = 0;
unsigned char *buf = 0;
struct timeval time_start;
struct timeval time_end;
unsigned int time_us;
if (argc == 2 && strcmp(argv[1], "-v") == 0)
{
printf("Version: %s\n", version);
printf("Complie Time: %s, %s\n", __DATE__, __TIME__);
printf("Author: %s\n", author);
return 0;
}
if (argc < 2 || argc > 3)
{
printusage(argv[0]);
return -1;
}
/* open the device using libusb */
status = libusb_init(NULL);
if (status < 0) {
printf("libusb_init() failed: %s\n", libusb_error_name(status));
return -1;
}
hdev = libusb_open_device_with_vid_pid(NULL, (uint16_t)DNW_DEVICE_IDVENDOR, (uint16_t)DNW_DEVICE_IDPRODUCT);
if (hdev == NULL) {
printf("libusb_open() failed\n");
goto err3;
}
/* We need to claim the first interface */
libusb_set_auto_detach_kernel_driver(hdev, 1);
status = libusb_claim_interface(hdev, 0);
if (status != LIBUSB_SUCCESS) {
libusb_close(hdev);
printf("libusb_claim_interface failed: %s\n", libusb_error_name(status));
goto err2;
}
fd_file = open(argv[1], O_RDONLY);
if (fd_file < 0)
{
printf("open %s failed!\n", argv[2]);
goto err1;
}
if (fstat(fd_file, &stat_buf))
{
printf("Can't get status of file %s\n", argv[2]);
goto err;
}
printf("Size of file: %d byte(s)\n", (unsigned int)stat_buf.st_size);
/* FORMAT: <ADDR(DATA):4>+<SIZE(n+10):4>+<DATA:n>+<CS:2> */
num_write_total = stat_buf.st_size + 10;
if (argc == 3)
{
download_addr = (unsigned int)strtoul((const char *)argv[2], NULL, 0);
}
printf("Address of bootloader to receive data: 0x%x\n", download_addr);
buf = malloc(DMA_BUF_SIZE);
if (!buf)
{
printf("Can't alloc memory\n");
goto err;
}
memcpy(buf, &download_addr, 4);
memcpy(buf + 4, &num_write_total, 4);
gettimeofday(&time_start, 0);
while (num_read_total < stat_buf.st_size)
{
num_read = read(fd_file, buf + (first ? 8 : 0), DMA_BUF_SIZE - (first ? 8 : 0));
if (num_read)
{
num_read_total += num_read;
for (i = 0; i < num_read; i++)
{
check_sum += (unsigned short)buf[i];
}
}
else
{
printf("Can't read file, num_read = %d, num_read_total = %d\n", num_read, num_read_total);
goto err;
}
num_write = num_read + (first ? 8 : 0);
if (num_read_total == stat_buf.st_size)
{
for (i = 0; i < 2; i++)
{
if (num_write < DMA_BUF_SIZE)
{
buf[num_write++] = (unsigned char)(check_sum >> (i*8));
num_remain--;
}
}
}
/*
int libusb_bulk_transfer ( struct libusb_device_handle * dev_handle,
unsigned char endpoint,
unsigned char * data,
int length,
int * transferred,
unsigned int timeout
)
*/
ret = libusb_bulk_transfer(hdev, 0x03, buf, num_write, &transferred, 3000);
if ((ret != 0) || (transferred != num_write))
{
printf("Error, can't send to the board: num_write = %d, transferred = %d, ret = %d\n", num_write, transferred, ret);
goto err;
}
num_has_write_total += num_write;
gettimeofday(&time_end, 0);
time_us = (time_end.tv_sec - time_start.tv_sec) * 1000000 +(time_end.tv_usec - time_start.tv_usec);
printf("\rTx: %d/%d, Percentage: %.1f%%, Speed: %.1fKB/s, Time: %.1fS", num_has_write_total, num_write_total, ((float)num_has_write_total)/((float)num_write_total)*100., ((float)num_has_write_total/1024)/((float)time_us/1000000), time_us/1000000.);
if (first)
{
first = 0;
}
}
if (num_remain == 2)
{
buf[0] = (unsigned char)check_sum;
buf[1] = (unsigned char)(check_sum >> 8);
}
else if (num_remain == 1)
{
buf[0] = (unsigned char)(check_sum >> 8);
}
if (num_remain)
{
num_write = num_remain;
ret = libusb_bulk_transfer(hdev, 0x03, buf, num_write, &transferred, 3000);
if ((ret != 0) || (transferred != num_write))
{
printf("Error, can't send to the board: num_write = %d, ret = %d\n", num_write, ret);
goto err;
}
num_has_write_total += num_write;
}
gettimeofday(&time_end, 0);
time_us = (time_end.tv_sec - time_start.tv_sec) * 1000000 +(time_end.tv_usec - time_start.tv_usec);
printf("\rTx: %d/%d, Percentage: %.1f%%, Speed: %.1fKB/s, Time: %.1fS\n", num_has_write_total, num_write_total, ((float)num_has_write_total)/((float)num_write_total)*100., ((float)num_has_write_total/1024)/((float)time_us/1000000), time_us/1000000.);
err:
close(fd_file);
err1:
libusb_release_interface(hdev, 0);
err2:
libusb_close(hdev);
err3:
libusb_exit(NULL);
return 0;
}

View File

@@ -0,0 +1,87 @@
linux<EFBFBD><EFBFBD><EFBFBD>
1. dnw<6E><77>һ<EFBFBD><D2BB>USB<53><42><EFBFBD>ߣ<EFBFBD>ͨ<EFBFBD><CDA8>USB<53><42><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USB<53><42><EFBFBD>ع<EFBFBD><D8B9>ܵ<EFBFBD>bootloader<65><72>
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>Ϊ(Ҫ<><D2AA><EFBFBD>ͳɹ<CDB3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>USB<53><42><EFBFBD>ع<EFBFBD><D8B9>ܵ<EFBFBD>bootloader)<29><>
sudo dnw <file> [address]
<EFBFBD><EFBFBD>˼Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><file>ͨ<><CDA8>USB<53>ڷ<EFBFBD><DAB7>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD>
[address]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾdnw<6E><77><EFBFBD><EFBFBD><EFBFBD>߿<EFBFBD><DFBF><EFBFBD><EFBFBD><EFBFBD><E5A3AC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EBB1A3><EFBFBD>ڵ<EFBFBD>SDRAM<41><4D>ַ<EFBFBD><D6B7>
<20><><EFBFBD>Բ<EFBFBD>д[address]<5D><>Ĭ<EFBFBD><C4AC>Ϊ0x30000000<30><30>
bootloader<65><72><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SDRAM<41><4D><EFBFBD><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>[address]ȡ<><C8A1><EFBFBD><EFBFBD>bootloader<65><72>
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ڴ<EFBFBD><DAB4>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²˵<C2B2><CBB5><EFBFBD>
##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Nand Flash<73><68><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>û<EFBFBD><C3BB>
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сд<EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>Ȼ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>dnw<EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>
a. <20><>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>sudo dnw uImage<67><65><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD>ں˸<DABA>u-boot<6F><74>
b. <20><>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>yaffs<66>ļ<EFBFBD>ϵͳӳ<CDB3><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>sudo dnw fs_mini_mdev.yaffs2<73><32><EFBFBD><EFBFBD><EFBFBD>ɷ<EFBFBD><C9B7>͸<EFBFBD>u-boot<6F><74>
c. <20><>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>sudo dnw uart.bin 0x31000000<30><30><EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD>uart.bin<69><6E><EFBFBD>͸<EFBFBD>u-boot<6F><74>
u-boot<6F><74><EFBFBD>յ<EFBFBD><D5B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ַ0x31000000<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>uart.bin<69><6E><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>0x31000000<30><30><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>תȥִ<C8A5><D6B4><EFBFBD><EFBFBD>
3. Ҳ<><D2B2><EFBFBD>Բ<EFBFBD>ʹ<EFBFBD><CAB9>u-boot<6F>IJ˵<C4B2><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>˳<EFBFBD><CBB3>˵<EFBFBD><CBB5><EFBFBD>Ȼ<EFBFBD><C8BB>ʹ<EFBFBD><CAB9>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
usb<73><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롰help usbslave<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBFB4><EFBFBD><EFBFBD>
usbslave [wait] [loadAddress]
"wait" is 0 or 1, 0 means for return immediately, not waits for the finish of transferring
<20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>usbslave<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USB<53><42><EFBFBD>أ<EFBFBD>[wait]<5D><>[loadAddress]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ǿ<EFBFBD>ѡ<EFBFBD>ģ<EFBFBD>
<20><><EFBFBD><EFBFBD>[wait]<5D><>ֵ<EFBFBD><D6B5>0<EFBFBD><30>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>USB<53><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>u-boot<6F><74><EFBFBD>
<20><><EFBFBD><EFBFBD>[wait]<5D><>ֵ<EFBFBD><D6B5>1<EFBFBD><31>u-boto<74><6F><EFBFBD>ȴ<EFBFBD>USB<53><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>u-boot<6F><74><EFBFBD>
<20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>[loadAddress]<5D><><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ص<EFBFBD><D8B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SDRAM<41><4D>ַ[loadAddress]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dnw<6E><77><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
windows<EFBFBD><EFBFBD><EFBFBD>
1. dnw.exe<78><65>һ<EFBFBD><D2BB>USB<53><42><EFBFBD>ߣ<EFBFBD>ͨ<EFBFBD><CDA8>USB<53><42><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USB<53><42><EFBFBD>ع<EFBFBD><D8B9>ܵ<EFBFBD>bootloader<65><72>
<EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>Ϊ(Ҫ<><D2AA><EFBFBD>ͳɹ<CDB3><C9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>USB<53><42><EFBFBD>ع<EFBFBD><D8B9>ܵ<EFBFBD>bootloader)<29><>
<EFBFBD><EFBFBD> <20>ڡ<EFBFBD>Configuration -> Options<6E><73> <20>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ַ<EFBFBD><D6B7>Download Address<73><73>
<EFBFBD><EFBFBD> ͨ<><CDA8><EFBFBD><EFBFBD>USB Port -> Transmit<69><74><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>ѡ<EFBFBD>񡢷<EFBFBD><F1A1A2B7><EFBFBD><EFBFBD>ļ<EFBFBD>
2. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ڴ<EFBFBD><DAB4>ڹ<EFBFBD><DAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²˵<C2B2><CBB5><EFBFBD>
##### 100ask Bootloader for OpenJTAG #####
[n] Download u-boot to Nand Flash
[o] Download u-boot to Nor Flash // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Nand Flash<73><68><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD>û<EFBFBD><C3BB>
[k] Download Linux kernel uImage
[j] Download root_jffs2 image
[y] Download root_yaffs image
[d] Download to SDRAM & Run
[z] Download zImage into RAM
[g] Boot linux from RAM
[f] Format the Nand Flash
[s] Set the boot parameters
[b] Boot the system
[r] Reboot u-boot
[q] Quit from menu
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сд<EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>أ<EFBFBD>Ȼ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>dnw<EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>
<EFBFBD><EFBFBD><EFBFBD>
a. <20><>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>dnw.exeѡ<65><D1A1>uImage<67><65><EFBFBD>ɷ<EFBFBD><C9B7><EFBFBD><EFBFBD>ں˸<DABA>u-boot<6F><74>
b. <20><>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>y<EFBFBD><79><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>yaffs<66>ļ<EFBFBD>ϵͳӳ<CDB3><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>dnw.exeѡ<65><D1A1>yaffs<66>ļ<EFBFBD>ϵͳӳ<CDB3>󼴿ɷ<F3BCB4BF><C9B7><EFBFBD><EFBFBD>ں˸<DABA>u-boot<6F><74>
c. <20><>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD><EFBFBD>u-boot<6F><74><EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dnw.exe<78><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ַ<EFBFBD><D6B7>Ϊ0x31000000<30><30>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
u-boot<6F><74><EFBFBD>յ<EFBFBD><D5B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>ַ0x31000000<30><30><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>0x31000000<30><30><EFBFBD><EFBFBD>Ȼ<EFBFBD><C8BB><EFBFBD><EFBFBD>תȥִ<C8A5><D6B4><EFBFBD><EFBFBD>
3. Ҳ<><D2B2><EFBFBD>Բ<EFBFBD>ʹ<EFBFBD><CAB9>u-boot<6F>IJ˵<C4B2><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>q<EFBFBD>˳<EFBFBD><CBB3>˵<EFBFBD><CBB5><EFBFBD>Ȼ<EFBFBD><C8BB>ʹ<EFBFBD><CAB9>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD>
usb<73><62><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>롰help usbslave<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEBFB4><EFBFBD><EFBFBD>
usbslave [wait] [loadAddress]
"wait" is 0 or 1, 0 means for return immediately, not waits for the finish of transferring
<20><><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>usbslave<76><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>USB<53><42><EFBFBD>أ<EFBFBD>[wait]<5D><>[loadAddress]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD>ǿ<EFBFBD>ѡ<EFBFBD>ģ<EFBFBD>
<20><><EFBFBD><EFBFBD>[wait]<5D><>ֵ<EFBFBD><D6B5>0<EFBFBD><30>u-boot<6F><74><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>USB<53><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>u-boot<6F><74><EFBFBD>
<20><><EFBFBD><EFBFBD>[wait]<5D><>ֵ<EFBFBD><D6B5>1<EFBFBD><31>u-boto<74><6F><EFBFBD>ȴ<EFBFBD>USB<53><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>u-boot<6F><74><EFBFBD>
<20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>[loadAddress]<5D><><EFBFBD><EFBFBD>ô<EFBFBD><C3B4><EFBFBD>ص<EFBFBD><D8B5>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SDRAM<41><4D>ַ[loadAddress]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŵ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>dnw<6E><77><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,22 @@
1可以直接使用我们编译好的dnw可执行程序:
先把dnw放入ubuntu的/usr/bin目录
然后修改属性:
sudo chmod +x /usr/bin/dnw
最后参考"dnw使用说明.txt"
2. 我们也提供了源码, 你可以尝试自己编译:
2.1 先编译libusb1.0库:
tar xjf libusb-1.0.21.tar.bz2
cd libusb-1.0.21
./configure --enable-udev=no
make
2.2 把库文件、头文件取出来:
cp libusb-1.0.21/libusb/.libs/libusb-1.0.a <dnw.c的目录>
cp libusb-1.0.21/libusb/libusb.h <dnw.c的目录>
2.3 编译dnw:
cd <dnw.c的目录>
make