自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(162)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 以太网调试经验总结

注意:当设备树或MAC驱动代码中配置了PHY ADDR,MDC/MDIO通信依旧无法成功,可以通过软件方式轮询0~31这个32个PHY ADDR上的PHY的可操作寄存器,如此也可以找到PHY ADDR,将该PHY ADDR重新配置到设备树中或代码中。在bringup时,首先需要确认MDC/MDIO控制通道是否正常,通过捕获MDC时钟以确认MDC/MDIO的工作状态是否正常,MDC时钟频率由具体的PHY芯片决定,不同的PHY芯片支持的MDC时钟频率范围不通。

2023-03-01 15:30:46 1916 2

原创 PHY调试经验

2.5match_phy_device主要用于实现phy_device与phy_driver的匹配检测,若一个phy_driver支持多个类型的phy_device,则最好实现该接口,若该phy_driver只适配某一个型号的phy_device,则不需要实现该接口,只需要设置支持的phy_id与phy_mask即可。1.设备树中配置正确的PHY ADDR、PHY ID、clause 45或者22协议,PHY ADDR配置不正确会导致MDC/MDIO通信不正常或失败,PHY ID用于匹配PHY驱动程序。

2023-02-28 15:41:43 3080

原创 PHY自协商

自动协商模式是端口根据另一端设备的连接速度和双工模式,自动把它的速度调节到最高的公共水平,即线路两端能具有的最快速度和双工模式。自协商功能允许一个网络设备能够将自己所支持的工作模式信息传达给网络上的对端,并接受对方可能传递过来的相应信息,从而解决双工和10M/100M速率自协商问题。自协商功能完全由物理层芯片设计实现,因此并不使用专用数据包或带来任何高层协议开销。自协商功能的基本机制是:每个网络设备在上电、管理命令发出、或是用户干预时发出FLP(快速连接脉冲),协商信息封装在这些FLP序列中。

2023-02-28 14:55:20 3829

原创 PHY设备驱动

MAC控制器的驱动使用的是platform总线的连接方式,PHY设备驱动是基于device、driver、bus的连接方式。其驱动涉及如下几个重要部分:总线 - sturct mii_bus (mii stand for media independent interface)设备 - struct phy_device驱动 - struct phy_driver。

2023-02-24 20:41:13 2132

原创 STMMAC驱动

在PHY设备的注册中(读PHY ID)、PHY的初始化、自协商、中断、状态、能力获取等流程中经常可以看到phy_read和phy_write两个函数(下一节要讲的PHY驱动),这两个函数的实现就依赖于控制器设备mii_bus的读写。可以清楚的看到bus->read和bus->write读写接口在这里得到调用。

2023-02-23 20:15:00 2712

原创 mdio协议

MDIO接口中有特定的术语定义总线上的各种设备。驱动MDIO总线的设备被定义为站管理实体(STA)。而被MDC管理的目标设备称为可被MDIO管理的设备(MMD)。STA初始化MDIO所有的通信,同时负责驱动时钟MDC。

2023-02-20 22:40:37 1699

原创 网络数据包接收流程

在网卡中断处理函数中,检查网卡的中断状态寄存器,检查到有RX interrupt时,会先清该中断,关闭网卡dma中断,在raise NET_RX的软中断后退出,实际的收包工作在软中断中处理。5.NET_RX软中断中通过napi_poll接口轮询调用网卡的接收函数将数据从rx ringbuffer中搬运到网络协议栈中处理,取空rx ringbuffer后使能网卡dma中断;4.CPU响应网卡中断(同时关网卡dma中断),执行网卡驱动程序的中断处理函数,触发NET_RX软中断;那么网络相关的软中断在哪里呢?

2023-02-19 21:32:54 1782

原创 网络设备驱动框架

网络设备接收数据的主要方法是有中断引发设备的中断处理函数,中断处理函数判断中断类型,如果为接收中断,则读取接收到的数据,分配sk_buffer数据结构和数据缓冲区,将接收到的数据复制到数据缓冲区,并调用netif_rx()函数将sk_buffer传递给上层协议。3)设备驱动功能层的各函数是网络设备接口层net_device数据结构体的具体成员,是驱动网络设备硬件完成相应动作的程序,它通过hard_start_xmit()函数启动发送操作,并通过网络设备上的中断触发接收操作。

2023-02-17 21:00:00 1036

原创 以太网基础

PHY是IEEE 802.3规定的一个标准模块,PHY芯片的寄存器地址空间是5位,地址空间031共32个寄存器,IEEE定义了015这16个寄存器的功能,16-31这16个寄存器由厂商自行实现。PHY在数据接受时, 进行如上所述的逆操作,将模拟信号转化为数字信号,解码,并行化后,传给MAC。发送数据:对于PHY来说,并没有帧的概念,对它来说,不管是地址、数据还是CRC,都会将并行数据转换为串行数据流,在按照物理层的编码规则把数据编码,最终转换成模拟信号发送出去。

2023-02-16 20:00:00 470

原创 车载以太网简介

在同一个VLAN(虚拟局域网)里面是可以进行二层通信的,不在同一个VLAN的主机是不能二层通信(如EE:01 与 EE:02 是不能进行通信的),需要注意的是,二层通信本质上是跟IP地址没有关系的,因为二层的通信属于MAC寻址。在CAN总线的车载网络中,通信过程是面向信号的,当ECU的信号的值发生了改变,或者发送周期到了,就会发送消息,而不考虑接收者是否需要,这样就会造成总线上出现不必要的信息,占用了带宽;车载以太网与传统以太网相比,车载以太网仅需要使用1对双绞线,而传统以太网则需要多对,线束较多。

2023-02-15 21:17:22 2853

原创 MFI调试记录

分析I2C驱动框架可知,在设备树中不指定I2C别名的情况下,I2C控制器的注册ID(即I2C-12中的12)是从所有使能的I2C控制设备树节点中最大的ID为基准往后动态分配的,所以MFI芯片对应的I2C控制注册后的节点名不是固定的。如果所有设备树配置中只配置了一个I2C别名如上,那么其他未设置别名的I2C控制器注册以后就是I2C-8、I2C-9、I2C-10······依次按顺序命名。通过i2c tools去探测各个I2C总线上的设备发现,MFI芯片对应地址并非对应I2C-12;

2023-02-14 20:45:00 812

原创 高通8155 GPS HAL层代码移植

Qup的全称是qualcommuniversalperipherals即高通通用外设,uart就是连接在qup上,我的gpsuart连接在QUP13上,所以肯需要在tz_8155/trustzone_images/core/settings/buses/qup_accesscontrol/qupv3/config/855/QUPAC_Access.c文件中修改qupv3_perms_auto[]数组的QUPV3_2_SE3相关配置。...

2023-02-13 20:30:00 1421

原创 白皮书摘抄

对座舱电子来说通常是三个OS一个是强调实时性的仪表OS,一般是ASILB;一个是丰富功能的娱乐OS,一般是ASILA;还有一个弱ADAS功能,如360环视,DMS驾驶者行为监控,面部识别等,一般是ASILC。通常都称之为GuestOS。...

2022-09-02 20:00:00 252

原创 Linux电源管理

在一个系统中,数量最多的是设备,耗电最多的也是设备,因此设备的电源管理是Linux电源管理的核心内容,驱动程序可以使用其中一种模型来使设备进入低功耗状态。

2022-08-09 20:00:00 2524

原创 aliases节点分析

比如SoC上有多个i2c控制器,alias相当于给每个i2c控制器分配一个唯一的编号,如上面的i2c2对应的alias是i2c2,那么这个编号就是2,将来就可以在/dev下看到名为i2c-2的设备节点。

2022-08-08 19:30:00 593

原创 AC8015笔记

AC8015Hypervisor系统分为HSM,Safety,XenHypervisor,VM0(Linux),VM1(Android),以及Trustzone。其中HSM和Safety运行在其SRAM上,其他OS运行在DRAM上。

2022-08-03 20:00:00 1322 5

原创 gpio模拟串口通信

UART使用异步模式工作,不需要时钟信号,其一般格式为起始位+数据位+校验位+停止位。其中起始位1位,数据位5~8位,校验位0或1位,停止位1、1.5或2位。不过最常用的格式是1位起始位、8位数据位、没有奇偶校验、1位停止位,简记为8/N/1。8/N/1格式的时序图如下空闲时数据线上规定为逻辑1。开始传输数据时先发送起始位,规定为逻辑0,接收端会检测这个下降沿,以便之后开始采样接收数据。起始位之后是数据位,规定先发送最低位,即LSBFirst。...

2022-07-29 21:00:00 3565

原创 SPI配置

经常会提及SPI分为四种模式以上模式仅针对SPI的时钟(SCK)来区分CPOL也就是时钟的极性,用来表示SPI总线在空闲时SCK是低电平还是高电平,低电平为0,高电平为1;CPHA也就是时钟的相位,用来决定何时进行信号采样,在第一个跳变沿还是第二个跳变沿,在第一个跳变沿采样则为0,在第二个跳变沿采样则为1。......

2022-07-26 20:00:00 2974 2

原创 串口通信失败

串口通信失败总结

2022-07-25 19:15:00 5754

原创 imx8qxp正常倒车

1. 背景Android很多事件都是通过uevent跟kernel来异步通信的。Uevent是内核通知android有状态变化的一种方法,比如USB线插入、拔出,电池电量变化等等。其本质是内核发送(可以通过socket)一个字符串,应用层(android)接收并解释该字符串,获取相应信息。2. uevent简述sysfs 是 Linux userspace 和 kernel 进行交互的一个媒介。通过 sysfs,userspace 可以主动去读写 kernel......

2022-07-21 19:00:00 497 6

原创 pinctrl

1. pinctrl简介pinctrl子系统管理的Pin可以用作iic,也可以用作gpio;但是gpio子系统管理的pin只能用作输出或输入等功能(用作gpio的pin也是通过pinctrl子系统来管理的)。2. pinctrl使用方法1、其他驱动(除了IOMUX驱动本身或者说是pinctrl子系统本身外)通过pinctrl子系统提供的接口改变设备状态的接口如下,通常都是如下三个步骤:1>pinctrl=devm_pinctrl_get(struct ......

2022-07-19 22:00:00 698

原创 ECU简介

1. 什么是ECUECU(Electronic Control Unit)电子控制单元,由微控制器(MCU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器(A/D)以及整形、驱动等大规模集成电路组成。它们的用途就是控制汽车的行驶状态以及实现其各种功能。主要是利用各种传感器、总线的数据采集与交换,来判断车辆状态以及司机的意图并通过执行器来操控汽车。在一些中高级车上,不但在发动机上应用ECU,在其它许多地方都可发现ECU的踪影。例如防.........

2022-07-01 22:30:00 3439

原创 拷贝方式之DMA

1. DMA 的原理和实现DMA 的原理就是 CPU 将需要迁移的数据的位置告诉给 DMA,包括源地址,目的地址以及需要迁移的长度,然后启动 DMA 设备,DMA 设备收到命令之后,就去完成相应的操作,最后通过中断反馈给老板 CPU,结束。在实现 DMA 传输时,是 DMA 控制器掌控着总线,也就是说,这里会有一个控制权转让的问题,我们当然知道,计算机中最大的 BOSS 就是 CPU,这个 DMA 暂时掌管的总线控制权当前也是 CPU 赋予的,在 DMA 完成传输之后......

2022-06-29 21:15:00 2705

原创 什么是ROM

1. 什么是ROMROM最初不能编程,出厂什么内容就永远什么内容,不灵活。后来出现了PROM,可以自己写入一次,要是写错了,只能换一片,自认倒霉。人类文明不断进步,终于出现了可多次擦除写入的EPROM,每次擦除要把芯片拿到紫外线上照一下;想一下你往单片机上下了一个程序之后发现有个地方需要加一句话,为此你要把单片机放紫外灯下照半小时,然后才能再下一次,这么折腾一天也改不了几次。历史的车轮不断前进,伟大的EEPROM出现了,拯救了一......

2022-06-27 21:45:00 398

原创 设备树属性

1. ranges属性ranges属性值可以为空或者按照 (child-bus-address,parent-bus-address,length) 格式编写的数字矩阵, ranges 是一个地址映射/转换表, ranges 属性每个项目由子地址、父地址和地址空间长度这三部分组成:节点 soc 定义的 ranges 属性,值为 <0x0 0xe0000000 0x00100000>,此属性值指定了一个 1024KB(0x00100000) 的地址范围,子地...

2022-05-25 22:45:00 2074

原创 Android input命令

1. 简介getevent用于获取当前系统input设备的一些参数和实时事件的数据,比如获取按键上报信息、获取触摸屏上报信息等。指令源码路径:/system/core/toolbox/getevent.c。2. Android getevent常用方法getevent 显示当前有那些输入设备,数量与 /dev/input 目录下相同。getevent -t 显示时间戳。-p:显示设备支持的事件类型和编码方式nx...

2022-05-23 22:30:00 939

原创 Python脚本之0~N排序命名

1. 安装PythonPython的下载地址:https://www.python.org/downloads,挑选一个版本的Python下载下来进行安装(比如Python27),如果选择默认安装目录,则安装目录为C:\Python27\python.exe。2. renumbered.py脚本实现# -*- coding:utf8 -*- import osclass BatchRename(): ''' 批量重命名文件夹中的图片文件,将文件名按...

2022-05-20 19:15:00 290

原创 gpio---imx(imx8qxp)

以FLEXCAN1_TX引脚为例,该引脚和MCU相连,通过“ grep -nr "FLEXCAN1_TX" ”搜索得到如下结果:boot/dts/freescale/fsl-imx8qxp-hsae.dtsi:445: //SC_P_FLEXCAN1_TX_LSIO_GPIO1_IO18 0x06000021 //MX8QXP_GPIO2_T0_MCU Reverse Camera Signalboot/dts/freescale/fsl-imx8qxp-mek.dtsi:4...

2022-05-18 20:45:00 632

原创 Linux下控制GPIO的三种方法

1. 应用空间控制gpio1.1简介在/sys/class/gpio/下有个export文件,向export文件写入要操作的GPIO号,使得该GPIO的操作接口从内核空间暴露到用户空间,GPIO的操作接口包括direction和value等,direction控制GPIO输入或者输出模式,而value可控制GPIO的状态或者读取状态。/sys/class/gpio/目录下各个文件说明:/sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编...

2022-05-16 20:00:00 22282 7

原创 动态修改节点属性

在系统启动过程中等待adv_debug节点的生成,生成之后修改节点属性#! /vendor/bin/shwhile truedo if [ -e "/sys/devices/platform/vehicle_rpmsg_m4/58266000.i2c/i2c-18/adv_debug/adv_debug" ];then chmod 666 /sys/devices/platform/vehicle_rpmsg_m4/58266000...

2022-04-01 22:27:18 551 2

原创 Android GPS驱动

1.android定位方式android 定位一般有四种方法,这四种方式分别是GPS定位、WIFI定位、基站定位、AGPS定位。1.1 Android GPS需要GPS硬件支持直接和卫星交互来获取当前经纬度,通过GPS方式准确度是最高的,但确定是比较耗电、从GPS模块启动到获取第一次定位数据可能需要比较长的时间、室内几乎无法使用等等;1.2 Android Wifi定位根据一个固定的Wifi MAC地址通过收集到的该Wifi热点的位置然后访...

2022-03-31 21:20:16 3076 2

原创 U盘无法识别

1. 背景多次插拔U盘以后,U盘无响应了。2. log对比正常识别:<6>[ 2519.368698] usb 1-1: new high-speed USB device number 19 using ci_hdrc //hub_port_init<6>[ 2519.531509] usb 1-1: New USB device found, idVendor=0930, idProduct=6544&lt...

2022-03-29 23:16:13 2135 6

原创 USB驱动之U盘驱动

U盘使用的是drivers/usb/storage/usb.c驱动#define DRV_NAME "usb-storage"//插入U盘时一般会打印usb-storage 1-1:1.0: USB Mass Storage device detectedstatic struct usb_driver usb_storage_driver = { .name = DRV_NAME, .probe = storage_probe, .disconnect = usb_sto...

2022-03-28 22:56:16 3137

原创 USB驱动之常规usb鼠标驱动

常规usb鼠标驱动使用的是linux中常用的drivers/hid/usbhid/usbmouse.c驱动。static const struct usb_device_id usb_mouse_id_table[] = { { USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT, USB_INTERFACE_PROTOCOL_MOUSE) }, { } /* Terminating e...

2022-03-27 22:18:32 2537

原创 USB驱动之Android usb鼠标驱动

1. 前言HID是Human Interface Devices的缩写,翻译成中文即为人机交互设备。这里的人机交互设备是一个宏观上面的概念,任何设备只要符合HID spec都可以称之为HID设备,常见的HID设备有鼠标键盘,游戏操纵杆等等。usb鼠标在android代码中没有使用linux中常用的drivers/hid/usbhid/usbmouse.c驱动,而是使用了hid-generic驱动【注:从内核配置可知,内核选项配置了CONFIG_HID,CONFIG_U...

2022-03-24 21:45:34 3885

原创 USB驱动

1. USB固件USB设备中有一个模块叫固件,固件是固化在集成电路内部的程序代码,USB固件中包含了USB设备的出厂信息,标识该设备的厂商ID、产品ID、主版本号和次版本号等。另外固件中还包含一组程序,这组程序主要完成USB协议的处理和设备的读写操作,USB设备固件和USB驱动之间通信的规范是通过USB协议来完成的。2. USB device识别过程定时轮询方式,当定时时间到了,运行定时器rh_timer的function函数rh_timer_func。...

2022-03-23 21:57:14 1750

原创 USB之基础知识

1. USB概述USB,Universal Serial Bus(通用串行总线),是一个外部总线标准,用于规范电脑与外部设备的连接和通讯,USB接口支持设备的即插即用和热插拔功能。USB接口有4个pin脚,分别为VCC、GND、Data+、Data-四个pin脚,常见的接口类型有A型、B型和C型。2. USB标准usb1.0 低速(Low speed) 1.5Mbit/susb1.0 全速(Full speed) 12...

2022-03-23 20:58:05 5127

原创 TouchScreen驱动

背景kernel version:4.14.98drivers/input/touchscreen/atmel_mxt_ts.cSoC与屏幕的touch ic通过I2C进行通信代码分析static struct i2c_driver mxt_driver = { .driver = { .name = "atmel_mxt_ts", .owner = THIS_MODULE, .of_match_table = of_match_ptr(m...

2022-03-22 21:47:05 1233

原创 input设备驱动开发

1. 作为输入设备的驱动开发者,需要做以下几步:在驱动加载模块中,设置你的input设备支持的事件类型,类型参见表1设置;注册中断处理函数,例如键盘设备需要编写按键的抬起、放下,触摸屏设备需要编写按下、抬起、绝对移动,鼠标设备需要编写单击、抬起、相对移动,并且需要在必要的时候提交硬件数据(键值/坐标/状态等等);将输入设备注册到输入子系统中。表1:事件类型EV_SYN 0x00 同步事件EV_KEY 0x01 ...

2022-03-22 21:08:27 525

原创 IPU(Image Processing Unit )

Chapter 38 Image Processing Unit (IPU)38.1 概述IPU计划成为应用程序处理器中的视频和图形子系统的一部分。IPU的目标是为从图像传感器和/或到显示设备的数据流提供全面支持。这项支助包括这些活动的所有方面:连接到相关设备-摄像机,显示器,图形加速器,电视编码器和解码器。相关图像处理与操作:传感器图像信号处理、显示处理、图像转换等。...

2022-03-21 19:47:32 3098

Android Debug Bridge(安卓调试桥)

adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll三个文件

2021-05-26

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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