Peter Chen的专栏

专注于Linux内核与驱动

排序:
默认
按更新时间
按访问量

一个关于USB Interface的例子

今天帮ML里的哥们试一个configfs的问题, 又重新认识了一下USB interface。原来,一个function可以有多个interface的, 以前一直认为只有一个。看下面的cat /sys/kernel/debug/usb/devices 输出。 T:  Bus=01 Lev=01...

2016-06-14 16:11:45

阅读数:4114

评论数:0

两种禁止USB autosuspend的方法

在有些情况下,由于低功耗情况下,USB硬件的bug或者提高USB resume的速度,我们需要禁止USB的 autosuspend,下面是两种方法。 1: 在bootloader的bootargs里加上“usbcore.autosuspend=-1” 2: 文件系统起来后,运行如下命...

2016-03-04 14:19:45

阅读数:2449

评论数:0

USB Type-C 设计

最近USB Type-C用在了越来越多的产品上,而且也有客户开始导入Type-C的设计了,所有研究了一下USBType-C的设计和规范, 下面谈的不保证对,仅是我的一些理解,用于指导我的工作。   一些名词: DFP:    DownstreamFacing Port (通常指 USB Host)...

2015-12-11 17:46:53

阅读数:1314

评论数:0

Linux Linker 的顺序

今天发现initramfs的产生比driver的加载早,感觉有点奇怪,仔细看了一下。 1. init/initramfs.c rootfs_initcall(populate_rootfs); 2. include/linux/init.h #define pure...

2015-11-05 16:49:01

阅读数:371

评论数:0

浅谈USB的安全性

最近看到一些,有关BadUSB的报道

2014-08-10 19:32:30

阅读数:1005

评论数:0

Open-Drain与Push-Pull

【Open-Drain与Push-Pull】 GPIO的功能,简单说就是可以根据自己的需要去配置为输入或输出。(General Purpose Input Output,简称为GPIO或总线扩展器,利用工业标准I2C、SMBus™或SPI™接口简化了I/O口的扩展。当微控制器或芯片组没有足够的I...

2012-11-17 16:00:55

阅读数:628

评论数:0

LDO和DC-DC器件的区别

DCDC的意思是直流变(到)直流(不同直流电源值的转换),只要符合这个定义都可以叫DCDC转换器,包括LDO。但是一般的说法是把直流变(到)直流由开关方式实现的器件叫DCDC。      LDO 是低压降的意思,这有一段说明:低压降(LDO)线性稳压器的成本低,噪音低,静态电流小,这些是它的突出...

2012-11-17 15:40:51

阅读数:331

评论数:0

在没有打印以及ICE无法连接的情况下,如何知道kernel hang的位置

前提是reset板子不会照成memory被reset 方法一(已测试): 1. 打开你的System.map文件,找到symbol: __log_buf 比如:806d6f88 b __log_buf 这里的地址0x806d6f88是虚拟地址,不过是和物理地址一一对应的, 一般双方只...

2012-11-02 17:04:36

阅读数:544

评论数:0

Linux下timer延时的使用

因笔者工作在嵌入式平台上(非x386),下面给出的结论仅在arm平台上测试过。 1. 在原子上下文,延迟应该少于100微秒。 使用udelay 2. 在非原子上下文延迟的使用 0-100us: 使用udelay 100us以上: 使用usleep_range 20ms以上且...

2012-10-19 16:24:08

阅读数:6856

评论数:2

为什么USB Audio会产生jitter或数据丢失

1.  Host太繁忙,导致Host USB的数据包未来得及在指定时间(比如1ms)送到USB buffer处。 2. Device端的USB(PHY)和audio clock(I2S, LRCLK)的clock无法精确同步,比如full speed的usb的 clock为12M, 当audi...

2012-08-14 17:22:42

阅读数:2536

评论数:0

USB数据包的格式是小端的(little-endian)

ARM是小端的,所以字节顺序无需调整。不过,为了程序的可移植性,可以用cpu_to_le16将数据 转化为小端的如果在大端的平台上(如PowerPC)

2012-08-10 13:26:09

阅读数:1026

评论数:0

__raw_writel, writel_relaxed 和 writel的区别

因为对别的平台不了解,下面仅谈它们在ARM上的区别 __raw_writel: 因为有volatile关键字, 所以编译器不会打乱多个__raw_writel的执行顺序。 对于ARM而言,当多个写以代码的顺序到达相同设备时,执行的顺序也是被保证的,不过 对于不同的设备,执行的顺序就不...

2012-07-22 08:50:14

阅读数:7541

评论数:0

Linux内核中USB充电器的解决方案

当前最新的内核(v3.5)对USB充电器的整体方案支持的不是太好,这里讨论的USB充电器的方案仅指软件 方案,即充电器的检测需要由软件干预(比如读取USB PHY的寄存器), 同时电池的充电值根据 充电器的不同类型,需要由软件来设置。 硬件检测充电器及硬件自动选择充电电流不在此讨论之列。 ...

2012-06-26 09:30:15

阅读数:2385

评论数:0

How do I erase my disk

Use the "shred" command: Suppose I want to erase all the data on my hard disk, then I boot using a LiveCD like Knoppix and open a shell an...

2012-06-18 21:18:14

阅读数:498

评论数:0

我的女儿昨天会走路了

女儿可欣,在她13个月时,开始走路咯

2012-05-09 14:17:21

阅读数:396

评论数:0

How to submit a patch to upsream

//git format patch git format-patch --subject-prefix="U-Boot][PATCH Vx" --stat -p -n - git format-patch --subject-prefix="PATCH v2&q...

2012-01-03 11:50:25

阅读数:481

评论数:0

My Kernel patch

http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Ftorvalds%2Flinux-2.6.git&a=search&h=refs%2Fheads%2Fmaster&st=author&s=Peter+Chen

2011-02-18 10:24:00

阅读数:418

评论数:0

根文件系统是如何挂载的?

1. 创建虚拟文件系统(在ram中)。 fn: vfs_caches_init2. 根据u-boot bootargs的参数得到的设备名,比如/dev/mmcblk0p1到block class去找到主次设备号。fn: name_to_dev_t3. 挂载block设备上的分区到根文件系统。fn:...

2011-02-17 15:06:00

阅读数:332

评论数:0

oprofile的使用方法

1. opcontrol --init2. opcontrol --no-vmlinux”3. opcontrol --start”4. ./your_app5. opcontrol --dump"6. opcontrol --stop "7. opreport -l ./yo...

2010-04-16 09:22:00

阅读数:1087

评论数:0

udev建立设备节点的规则

1. 设备要在下面任一一组目录下/sys/subsystem/devices/sys/bus/devices, /sys/class/, /sys/block  2. 上面这些目录下面的设备目录里要有uevent子项, 当用户程序向uevent里写入add, kernel就会得到这个add事件,k...

2010-04-08 11:13:00

阅读数:807

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭