wowothink

thinking all the time


  • 首页

  • 归档

  • 邮件

  • 博客

  • 关于

  • 搜索

eMMC Boot Partition Size

发表于 2019-08-11 | 分类于 eMMC
字数统计: 2,639 | 阅读时长 ≈ 16

Boot Partition

eMMC上有2个Boot Partition,最小为128BK,最大为128KB * BOOT_SIZE_MULT,BOOT_SIZE_MULT的值在ECSD寄存器第226个字节定义。Boot Partition和User Area是物理分开的。
分区信息

阅读全文 »

usb gadget configfs 验证

发表于 2019-08-11 | 分类于 Linux USB
字数统计: 2,271 | 阅读时长 ≈ 13

按照上一篇文章对gadget_configfs.txt的翻译,以imx8qxp mek的板子做为验证,配置为mass storage进行验证。

阅读全文 »

usb gadget configfs 翻译

发表于 2019-08-11 | 分类于 Linux USB
字数统计: 2,027 | 阅读时长 ≈ 8

本文翻译Documentation/usb/gadget_configfs.txt文档。主要是讲述如何通过configfs来配置USB Gadget的functions。注意:这里使用的是配置,也就是要求内核必须存在对应的functions。与ffs的差别是,ffs可以创建一个新的functions,内核并不要求事先存在。

简介

Linux USB Gadget是一个拥有UDC(USB Device Controller)的设备,该设备可以用于连接到USB Host用于扩展额外的功能,比如串口或者大容量存储(MTP)。Android就是一个支持MTP的USB Gadget。当Android手机插入到电脑中(USB Host),电脑可以识别出一个多媒体设备出来。

USB Host可以通过一些configurations来识别gadget,configuration包括多个interfaces(这里可以理解为USB描述符直接的层级关系)。从gadget的角度来看是functions,每个fcunction代表一种功能,比如串口或者SCSI磁盘。
Linux为gadget提供一系列的functions,在drivers/usb/gadget/function/目录中定义。

创建gadget意味着决定将使用哪些configurations,以及每种configurations将提供的functions,在这之前是以hardcode的方式在代码中设定的,比如drivers/usb/gadget/legacy/的gadget都是。

configfs(请参阅Documentation/filesystems/configfs/*)非常适合告诉内核有关上述决定的内容。为啥是configfs呢?因为configfs支持从用户空间配置内核空间的驱动。反之,sysfs支持同内核空间export一些对象供用户空间查看。本文档是讲关于如何做到的,以及描述了如何设计将configfs与usb gadget集成在一起。

阅读全文 »

Android usb gadget类型

发表于 2019-08-11 | 分类于 Linux USB
字数统计: 940 | 阅读时长 ≈ 3

以下列举了常见的几种Android USB Gadget类型:

Android USB Gadget类型

1、UMS:USB mass storage,USB大容量存储,也被称为UMS,USB MSC。在旧版Android手机上会将其暴露给计算机,有如下几种缺点:

  • USB mass storage是flash driver,外部hd,SD卡和其他USB存储设备使用的标准协议。驱动器使其自身完全对计算机可见,就像它是内部驱动器一样;
  • 这种方式存在问题。无论什么设备访问存储,都需要对其进行独占访问。将存储连接到计算机时,它与设备上运行的Android操作系统断开连接。存储在SD卡或USB存储器上的任何文件或应用程序在连接到计算机时都将不可用,此时是计算机独占;
  • 由于必须可以从Windows设备访问文件系统,因此必须使用FAT文件系统对其进行格式化。 微软不仅拥有对FAT施加的专利,而且FAT也是一个较旧的,较慢的文件系统,没有现代许可系统。
    阅读全文 »

ACM&ECM&NCM&EEM&RNDIS&RmNet介绍

发表于 2019-08-11 | 分类于 Linux USB
字数统计: 2,047 | 阅读时长 ≈ 8

USB CDC

通用串行总线(USB)通信设备(Communication devices)的定义由三个类组成:

  • 通信设备类(Communication Device Class, CDC):设备级定义,被主机用于识别(确定)含有几种不同类型接口的通信设备;
  • 通信接口类(Communication Interface Class):定义了一种通用机制,该机制可被用来使能处于USB总线上的所有类型的通信服务,即USB通信设备的控制功能;
  • 数据接口类(Data Interface Class):定义了一种通用机制,当一种数据不符合任何类的要求时,该机制使这种数据传输能通过USB块传输或同步传输类型在USB总线上进行,即通过USB块传输或同步传输类型去实现任何类型的数据传输的机制。

CDC协议定义了一种使得USB总线能够支持任何通信设备的框架,如支持电信设备、多媒体网络设备等。
CDC协议并非试图去重定义已经存在的那些通信设备连接和控制标准,而是去定义了一种确定设备与主机应该使用哪种现有协议的机制。CDC会尽可能的使用已存在的通信数据格式,而只是由USB通过恰当的描述符(descriptor)、接口(interface)和服务请求(request)定义去使这些数据格式能够在USB总线上传输。确切来说,CDC规范描述了一种包含USB接口、数据结构和服务请求的框架,在该框架下种类繁多的通信设备能够被定义和实现。

通常一个CDC类设备由两个子类接口组成:一个通信接口类接口(Communication Interface Class)和0个或多个数据接口类接口(Data Interface Class)。主机主要通过通信接口类对设备进行管理和控制,而通过数据接口类传送数据。对于前面所述的不同CDC类模型,其所对应的接口的端点需求也是不同的,两个接口子类占有不同数量和类型的端点(Endpoints)。

  • 通信接口类接口(Communication Interface )
    设备通过通信接口通过定义好的申请(request)和通知(notification)实施设备控制以及可能的呼叫控制。因此通信接口时通信设备必须配置的接口,通信接口类一般需要一个控制端点(Control Endpoint,EP0)和一个可选的中断(Interrupt)端点。为了达到设备控制的目的,通信设备类在配置描述符中必须通过联合功能描述符(Union Functional Descriptor)将通信接口和数据接口组织起来。

  • 数据接口类接口(Data Interface Class)
    当通信设备需要传输的数据的数据格式不符合任何类的要求时就需要用数据接口来实现。一个通信设备可以包含0个或多个数据接口,数据接口上的数据格式则是主机和设备通过通信接口协商决定。数据接口子类需要一个方向为输入(IN)的块传输或同步传输类型端点和一个方向为输出(OUT)的块传输或同步传输类型端点。USB CDC包含以下种类,关于每个子类的定义,都可以参考Reference中指定的文档。

CodeSubclassReference
00hRESERVED
01hDirect Line Control ModelUSBPSTN1.2
02hAbstract Control ModelUSBPSTN1.2
03hTelephone Control ModelUSBPSTN1.2
04hMulti-Channel Control ModelUSBISDN1.2
05hCAPI Control ModelUSBISDN1.2
06hEthernet Networking Control ModelUSBECM1.2
07hATM Networking Control ModelUSBATM1.2
08hWireless Handset Control ModelUSBWMC1.1
09hDevice ManagementUSBWMC1.1
0AhMobile Direct Line ModelUSBWMC1.1
0BhOBEXUSBWMC1.1
0ChEthernet Emulation ModelUSBEEM1.0
0DhNetwork Control ModelUSBNCM1.0
0Dh~7FhRESERVED(future use)
80h~FEhRESERVED(vendor specific)

每个子类的详细介绍如下:

阅读全文 »

ubuntu进入recovery mode

发表于 2019-07-21 | 分类于 ubuntu工具
字数统计: 719 | 阅读时长 ≈ 4

问题

由于ubuntu中另外一块硬盘出现问题,想要进入ubuntu recovery mode进行修复。按照网上的做法,在我的电脑上都无法进入,最后都走正常启动。但是我使用同样的方法在另外一台机器上就可以进入。以下方法针对那种无法进入recovery mode,但是可以进入normal mode修改grub的情况。

阅读全文 »

ubuntu下格式化U盘

发表于 2019-07-21 | 分类于 ubuntu工具
字数统计: 846 | 阅读时长 ≈ 4

问题

某个U盘(4GB容量),在我制作一个U盘启动后,然后被我格式化掉了,出现了只有248MB的容量,在Windows下怎么格式化都还是248MB。于是想到在ubuntu下使用命令行将其格式化掉并重建分区表。

阅读全文 »

iperf的使用

发表于 2019-07-21 | 分类于 Linux 性能测试
字数统计: 1,006 | 阅读时长 ≈ 5

实际操作

1、背景
开发板通过USB与PC相连,开发板会被枚举成USB网卡,通过网卡进行通信。通过USB连接后,开发板串口生成usb0网卡,内容如下:

开发板
1
2
3
4
5
6
7
8
@android:/ # ifconfig -a
usb0 Link encap:Ethernet HWaddr 8a:18:0b:ee:24:78
inet addr:172.30.100.121 Bcast:172.30.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16 errors:0 dropped:14 overruns:0 frame:0
TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2461 TX bytes:144

PC的ubuntu下识别到新的网卡enp0s20f0u10,内容如下:

ubuntu
1
2
3
4
5
6
7
enp0s20f0u10 Link encap:Ethernet  HWaddr de:3b:4e:04:3f:17  
inet6 addr: fe80::ecbb:42d7:4e7:a3c6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20 errors:0 dropped:0 overruns:0 frame:0
TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:560 (560.0 B) TX bytes:4396 (4.3 KB)

iperf client通常表示数据的发送者,所以这里PC的ubuntu做为client。
iperf server表示数据的接收者,所以这里开发板做为server。

阅读全文 »

u-boot SPL启动流程

发表于 2019-07-21 | 分类于 u-boot
字数统计: 1,704 | 阅读时长 ≈ 8

SPL简介

1、SPL是Secondary Program Loader,也就是第二阶段引导启动程序。
2、SPL是一套小的boot代码,主要负责初始化外部的DRAM和flash,然后引导启动u-boot。
3、SPL是在u-boot代码中,与u-boot共用一套代码,通过CONFIG_SPL_XXX来区分。

u-boot可以引导kernel,那么谁来引导u-boot呢?可以使用Rom code(Boot rom)引导u-boot,也可以使用SPL引导u-boot。两者之间有啥差别呢?
1、如果Rom code直接引导u-boot,那么Rom code必须能够初始化外部DRAM又或者内部的SRAM足够大能够启动u-boot;
2、如果做不到,那么只能通过SPL来过渡。Rom code从外设flash上固定的地址读取SPL到内部的SRAM上运行,SPL去初始化外部的DRAM,然后将u-boot从flash上拷贝到外部的DRAM并启动u-boot。下面讲讲u-boot SPL启动流程

阅读全文 »

uboot fastboot原理

发表于 2019-06-22 | 分类于 u-boot
字数统计: 2,666 | 阅读时长 ≈ 13

本文介绍了fastboot协议,在uboot中如何配置支持fastboot,uboot中fastboot的实现流程以及fastboot命令如何使用。

fastboot简介

1、fastboot协议是一种通过USB或以太网与引导加载程序通信的机制。 它的设计非常简单,可以在各种设备和运行Linux,macOS或Windows的主机上使用。主要是PC机通过fastboot协议与bootloader通信。
我们可以理解在uboot中运行fastboot的为客户端,在PC端(ubuntu)运行fastboot的为服务器端,两者之间的通信走fastboot协议。
fastboot协议

阅读全文 »

123…9
Victor Huang

Victor Huang

85 日志
21 分类
20 标签
E-Mail CSDN博客
0%
  • Android编译相关8
  • Linux Kernel10
  • Linux Kernel优化5
  • Linux USB10
  • Linux driver2
  • Linux 性能测试6
  • Python脚本2
  • QNX2
  • eMMC2
  • i.MX63
  • i.MX81
  • security1
  • security i.MX1
  • u-boot2
  • ubuntu工具11
  • 在家学习嵌入式5
  • 备忘记录1
  • 碰到的问题8
  • 网站记录1
  • 调试工具2
© 2025 Victor Huang | Site words total count: 113.3k