- 博客(10)
- 收藏
- 关注
原创 《Linux设备驱动开发详解》读书笔记(7)
第十九章,电源管理的系统架构与驱动Linux的电源管理主要包括cpufreq,cpuidle, SMP hotplug, PM QoS, Suspend, Runtime PM等。CPUfreq程序在drivers/cpufreq目录下,通过cpufreq_register_driver()注册驱动,关键函数是setpolicy()和target()。前者设置频率一个范围,后者直接设置目标
2017-01-09 23:01:24 569
原创 《Linux设备驱动开发详解》读书笔记(6)
第十六章,USB主机、设备与Gadget驱动USB的逻辑层次包括设备、配置、接口和端点4个层次,每层有各自的描述符descriptor。端口可以看作是一个单向的管道。端点0通常为控制端点,用于设备初始化。命令lsusb可以查看USB描述符。主机控制器有OHCI, UHCI,EHCI。数据结构为structhc_driver,通过函数usb_create_hcd(), usb_add_hcd
2017-01-09 22:58:33 591
原创 《Linux设备驱动开发详解》读书笔记(5)
第十三章,块设备驱动块设备的file_ops中没有read(), write(),但是有media_changed(), getgeo()用来获取磁盘的状态和信息。使用struct gendisk来表示一个磁盘,操作函数包括alloc_disk(), add_disk(), del_gendisk()等, get_disk()/put_disk()用于计数。对块的操作通过bio,request
2017-01-09 22:54:25 360
原创 《Linux设备驱动开发详解》读书笔记(4)
第一章, 中断与时钟申请irq,request_irq(irq, handler, flags, name, dev)。Flags一般有触发方式,SHARED等。用devm_request_irq()不需要free。使能,enable_irq(irq)。使能某个中断。开关本CPU上的所有中断, local_irq_save(flags),local_irq_restore(flag
2017-01-09 22:44:29 523
原创 《Linux设备驱动开发详解》读书笔记(3)
第一章, 并发控制Linux2.6.35之后取消了中断的嵌套。读写乱序。可以通过barrier()来防止编译乱序,volatile防止读优化,DMB /DSB /ISB防止运行乱序。Linux中定义了mb(), rmb(),wmb()以及__iormb()/__iowmb()和readl()/writel()。保证对寄存器的访问不会乱。中断屏蔽。Local_irq_enable(
2017-01-09 22:37:22 692
原创 《Linux设备驱动开发详解》读书笔记(2)
第一章, 内核模块代码module_init(),module_exit(), request_module(),module_param(),module_param_array()。EXPORT_SYMBOL()导出符号。使用try_module_get()和module_put()管理模块的使用计数。属性__init表示代码放入section(.init.text)。__ini
2017-01-09 22:35:41 311
原创 《Linux设备驱动开发详解》读书笔记(1)
最近读了一本书,《Linux设备驱动开发详解》,宋宝华写的,基于4.0内核。下面是读书笔记。第一章, 环境搭建主要讲Linux开发环境的搭建。VirtualBox+ Ubuntu + QEMU。第二章, 硬件基础主要将嵌入式Linux中的硬件基础,包括处理器(SoC,DSP)、存储器(ROM,NOR/NAND Flash, DRAM等)、串口、I2C、SPI、USB
2017-01-09 22:28:48 680
原创 web.py中如何返回Content-Length
在返回消息前,添加如下代码即可:-------- web.header('Content-Type', 'application/octet-stream') web.header('Content-Length', len(retMsg)) return retMsg--------
2016-12-12 12:39:58 795
原创 web.py 返回 "Transfer-Encoding: chunked" 的处理
最近在写一个微信公众号的小程序。微信公众平台推荐的服务端配置是python + web.py。调试时发现web.py(实际上是wsgiserver)响应我的POST请求时,HTTP Header里面总是"Transfer-Encoding: chunked",而不返回“Content-Length”,而我的设备端程序处理是依赖于“Content-Length”。重写设备端程序太麻烦,怎样才能让它不
2016-12-12 11:57:41 1401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人