- 博客(19)
- 资源 (15)
- 收藏
- 关注
原创 linux 脚本编程
1. 赋值语句之间不能有空格CPU_9G25="9G25"CPU_TYPE=${CPU_9G25}2. if条件或语句(-o)if [ ${CPU_TYPE} = ${CPU_NUC972} -o ${CPU_TYPE} = ${CPU_NUC977} ]; then#...fi注意空格,或(-o)或者按照这个格式编写if [ ${CPU_TYPE} =...
2018-03-26 11:49:59 272
原创 usb主机控制器ehci
1. 主机控制器流程图device_add()上图和下图的连接!关于hub_probe()内部的具体实现,详见:点击打开链接2. echi设备注册static struct platform_device *nuc970_public_dev[] __initdata = { &&nuc970_device_ehci,};static u64 nuc970_dev...
2018-03-25 23:34:13 4458
原创 usb通用设备驱动注册
1. usb设备驱动注册流程图......2. usb设备驱动注册usb_register_device_driver(&usb_generic_driver, THIS_MODULE);usb通用驱动usb_generic_driver结构体struct usb_device_driver usb_generic_driver = { .name = "usb", .probe = ...
2018-03-25 22:59:25 714
原创 hub_thread
1. 流程图2. usb_hub_init()int usb_hub_init(void){ //1. 注册usb hub驱动 if (usb_register(&hub_driver) < 0) { //注册hub驱动到usb子系统总线上 printk(KERN_ERR "%s: can't register hub driver\n", usbcore_name)...
2018-03-25 22:58:12 1912
原创 hub_probe()
1. 前提: 在前面这边博客详细介绍了ehci驱动是如何创建usb主机控制器,最终调用hub驱动的hub_probe()探测函数,关于ehci驱动注册感兴趣的可以参考点击打开链接,本文主要讲述接口驱动最终调用hub_probe函数的处理。2. hub_probe()流程图3. hub驱动注册retval = usb_hub_init();int usb_hub_init(void){...
2018-03-25 22:57:33 3305
原创 usb hub驱动
1. hub驱动流程图2. hub驱动初始化 retval = usb_hub_init(); int usb_hub_init(void){ if (usb_register(&hub_driver) < 0) { //注册hub驱动到usb子系统总线上 printk(KERN_ERR "%s: can't register hub driver\n", usbcor...
2018-03-25 00:32:29 5282
原创 usbfs文件系统
usb_register(&usbfs_driver)、usb_devio_init()、usbfs_init()都是usbfs相关的初始化。usbfs为咱们提供了在用户空间直接访问usb硬件设备的接口,但它需要内核的大力支持,usbfs_driver就是用来完成这个光荣任务的。1. usbfs简介:点击打开链接2. usbfs驱动retval = usb_register(&us...
2018-03-24 12:20:23 7918 2
原创 usb总线注册、设备模型、通知链
1. usb设备模型图1.1 kobject kset kobject_type三者关系1.2 总线子系统内部结构本文以usb子系统为例分析:1.2.1 注册usb总线类型为bus_type的子系统;1.2.2 在usb子系统上创建devices_kset设备集合;1.2.3 在usb子系统上创建drivers_kset设备驱动集合;关于devices_kset、drivers_kset集合,他们...
2018-03-19 23:35:25 724
原创 linux USB描述符结构体定义
struct usb_device_descriptor { __u8 bLength;//设备描述符的字节数大小,为0x12 __u8 bDescriptorType;//描述符类型编号,为0x01 __le16 bcdUSB;//USB版本号 __u8 bDeviceClass;//USB分配的设备类代码,0x01~0xfe为标...
2018-03-14 00:39:43 750
原创 linux 内核errno.h
linux 内核错误代码路径:linux-3.10.x-20171019\include\uapi\asm-generic\errno-base.h#ifndef _ASM_GENERIC_ERRNO_BASE_H#define _ASM_GENERIC_ERRNO_BASE_H#define EPERM 1 /* Operation not permitted */#define E...
2018-03-13 10:12:56 1230 1
原创 linux内核通知链notifier
前言在linux内核中,各个子系统之间有很强的相互关系,某些子系统可能对其他子系统产生的事件比较感兴趣。因此内核引入了notifier机制,当然了notifier机制只能用在内核子系统之间,不能用在内核与应用层之间。比如当系统suspend的时候,就会使用到notifier机制来通知系统的内核线程进行suspend。内核实现的notifier机制代码位于kernel/kernel/notifier...
2018-03-10 11:37:50 907
原创 linux shell目录文件判定和存在
1. 打印目录和文件#!/bin/shpath=/mnt/usb/*for file in $pathdo if [ -f $file ] then echo $file 是文件 else echo $file 是目录 fidone2. 目录是否存在#!/bin/shpath="/mnt/usb"if [ -d $pat...
2018-03-09 16:09:23 1537
转载 ppp协议
一、介绍PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。二、 PPP链路建立过程PPP协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认...
2018-03-09 10:22:00 249
原创 GPRS模块协议栈和终端协议栈的区分
1. 模块(外部)协议栈即采用AT指令收、发数据,由GPRS模块组TCP/IP协议帧与服务器通信,这里的AT指令,数据都是通过一个串口可以实现;2. 终端(内部)协议栈终端自身采用pppd内置TCP/IP协议与GPRS模块和服务器通信; 实际物理通信串口只有一个,要么用于AT指令收发,要么用于ppp协议栈数据通道,两者不能同时兼容,所以就引出了CMUX串口复用GSM0710的协议,即一个真实的物理...
2018-03-08 14:13:26 1741
原创 linux usb(1)
1. 前言 先发下感慨,linuxUSB驱动堪称驱动中的难点,曾几何时拿起书来啃,最终还是放弃了...这次由于要做一个项目,即USB转串口通讯,迫于鸭梨,还是继续啃...2. USB体系架构usb通讯采用主从结构,实现了主机与外围设备之间的通讯。3. USB三种模式主机控制器,包括UHCI、OHCI、EHCI设备控制器,相当于U盘;OTG设备,OTG控制器4. 总线速度目前usb传输的速...
2018-03-04 23:02:20 381
原创 linux flash_eraseall nandwrite nanddump
1. 前言 先分析linux最上文件系统到底层硬件nandflash的框架图:1.1. 硬件驱动层:Flash硬件驱动层负责Flash硬件设备的读、写、擦除,Linux MTD设备的norFlash芯片驱动位于driver/mtd/chips子目录,nandflash的驱动位于drivers/mtd/nand子目录。1.2. MTD原始设备层:MTD原始设备层由两部分组成,一部分是MTD原始...
2018-03-04 16:20:27 3635
原创 液晶控制器uc1698u和st75161读取厂商ID
1.液晶控制器管脚定义CS: 片选,低电平有效,高电平无效WR: 写操作,低电平有效,高电平无效RD: 读操作,低电平有效,高电平无效 C/D: 命令或数据通道 低电平是命令通道,高电平是数据通道D0~D8: 输入输出数据通道uc1698u和st75161的数据和命令操作是通过C/D管脚进行区分的,当读取液晶控制器里数据时,如厂商ID2. uc1698u厂商ID读取static unsigne...
2018-03-02 18:17:55 2863
原创 控制台上对同一个设备进行数据收发监控
1.启动一个控制台用来接收数据cat /dev/ttyUSB1 2.启动另外一个控制台用来发送数据echo -e "AT+CGMR\r\n">/dev/ttyUSB13. 调试信息发送控制台报文:[root@nxbb]$echo -e "AT\r\n">/dev/ttyUSB1 接收控制台报文:[root@nxbb]$cat /dev/ttyUSB1+CGMR: N720_EAB0CM...
2018-03-02 14:41:46 470
原创 arm gpio管脚复用功能配置
gpio管脚除了输入、输出,还有其他复用功能(如作为nandflash、i2c、spi、lcd....),具体配置如下:1. gpio管脚功能配置p2732. 管脚输入、输出配置3. 管脚数据输入、输出4. 管脚中断配置...
2018-03-02 08:51:55 3164
http_client.txt
2019-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人