mirror of
https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git
synced 2025-12-01 12:31:01 +08:00
发布libusb讲解
This commit is contained in:
1245
STM32MP157/doc_pic/12_USB/06_libusb的使用.md
Normal file
1245
STM32MP157/doc_pic/12_USB/06_libusb的使用.md
Normal file
File diff suppressed because it is too large
Load Diff
BIN
STM32MP157/doc_pic/12_USB/06_libusb的使用流程.tif
Normal file
BIN
STM32MP157/doc_pic/12_USB/06_libusb的使用流程.tif
Normal file
Binary file not shown.
16
STM32MP157/doc_pic/12_USB/07_使用libusb读取鼠标数据.md
Normal file
16
STM32MP157/doc_pic/12_USB/07_使用libusb读取鼠标数据.md
Normal 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协议
|
||||
|
||||
BIN
STM32MP157/doc_pic/12_USB/pic/54_libusb_flow.png
Normal file
BIN
STM32MP157/doc_pic/12_USB/pic/54_libusb_flow.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 77 KiB |
BIN
STM32MP157/doc_pic/12_USB/usb_20_20211008/hid1_11.pdf
Normal file
BIN
STM32MP157/doc_pic/12_USB/usb_20_20211008/hid1_11.pdf
Normal file
Binary file not shown.
@@ -11,4 +11,10 @@ https://programmerall.com/article/42562063276/
|
||||
|
||||
|
||||
就是usb 的vcp 模式和msd 挂载
|
||||
我先加入笔记里,到时看看是否实用、实用的话再讲
|
||||
我先加入笔记里,到时看看是否实用、实用的话再讲
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
韦老师,USB里面休眠唤醒suspend/resueme/autosuspend/remote-wakeup这些也挺常用的,希望老师后面也可以讲一下
|
||||
@@ -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 *~
|
||||
BIN
STM32MP157/source/A7/12_USB/01_libusb示例程序/dnw_for_libusb1.0/dnw
Normal file
BIN
STM32MP157/source/A7/12_USB/01_libusb示例程序/dnw_for_libusb1.0/dnw
Normal file
Binary file not shown.
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
2008
STM32MP157/source/A7/12_USB/01_libusb示例程序/dnw_for_libusb1.0/libusb.h
Normal file
2008
STM32MP157/source/A7/12_USB/01_libusb示例程序/dnw_for_libusb1.0/libusb.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
|
||||
|
||||
BIN
STM32MP157/source/A7/12_USB/01_libusb示例程序/openocd-master.zip
Normal file
BIN
STM32MP157/source/A7/12_USB/01_libusb示例程序/openocd-master.zip
Normal file
Binary file not shown.
Reference in New Issue
Block a user