自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (5)
  • 收藏
  • 关注

原创 深入分析线程与进程的区别

很多面试者都愿意问一下 进程和线程的区别,搜一下百度的大家的理解总体来说比较抽象,主要有两个含义没有深入讲清楚1.什么叫共享地址空间?这个地址空间只的是什么2.什么叫进程开销大 线程开销小为什么?共享地址空间每个进程和线程都会通过task_struct 这么一个结构体去维护这个结构体主要就是保存着进程或线程在内存调度所使用的资源struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stop

2020-07-23 09:48:20 138

原创 PCIE那些事之linux下EP驱动实现方式二

介绍EP设备驱动的通信机制和源码

2022-05-12 13:37:28 2844 2

原创 PCIE那些事之linux下EP驱动实现方式一

简介在平时做项目的时候会需要调试RC->EP的驱动,这一类的驱动有以下几个方式1.采用第三方固件如PCIE WIFI 模块,这一类的驱动往往不需要自己写,直接采用内核自由的开源模块或者厂商提供三方模块源码即可2.需要自己实现EP端的设备驱动,本文主要介绍此类驱动的实现原理EP端的设备驱动,主要用于内存的快速访问, 经常见到的场景如下,两端实际是通过两片SOC进行PCIE直连,一端做RC一端做EP,需要驱动实现可以针对于对方的DDR内存访问原理简介1.首先需要注册pci_driver结构

2022-05-09 14:08:46 2585

原创 PCIE那些事之PCIe loopback

PCIe loopbackPCIe支持两种LoopBack模式1.本地数字回环模式2.远程设备回环模式在调试PCIe设备的时候我们可以式样上面的两种模式进行通路验证,来判断硬件问题本地数字回环内部控制器操作进行回环设置,兼容LTSSM状态,如果回环链路训练成功则进入L0正常数据传输模式远程设备回环模式EP连接到RC端,可以通过EP PHY接口进行回环测试,如果训练成功设备则进入L0状态,用来调试EP链路训练的一个高效方式...

2022-05-09 13:34:11 5811 2

原创 PCIE那些事之AER高级信息上报

本文总结了AER错误处理流程什么是AERAER 英文简称 Advanced Error Reporting 翻译中文是高级错误报告,是PCIE异常信息处理机制,用于报告PCIe 错误信息错误信息主要分为两种 Correctable Errors 和Uncorrectable errors其中 Correctable Errors包含非致命的错误和致命的错误a.ERR_FATAL:致命错误,此错误类型影响了PCIe link链路。b.ERR_NONFATAL:指影响了设备功能,但是PCIe

2022-05-09 10:35:57 3586

原创 PCIE那些事之linux枚举流程

包含枚举流程的原理和linux 枚举简要分析

2022-05-07 14:59:38 1108

原创 PCIE那些事之链路识别流程

介绍硬件识别流程和链路训练状态

2022-05-07 10:43:57 1686

原创 PCIE那些事之初识PCIE

主要介绍PCIE一些基础知识,包含RC、Switch、EP、中断概念、连接方式等

2022-05-07 09:56:41 389

原创 SD卡工作原理介绍

本文主要对如下知识点进行介绍1.SD 卡基本知识介绍 包括物理结构、速度模式、2.SD 卡工作模式介绍 介绍SD卡识别流程的指令、介绍模式转换关系3.FAT32 数据格式介绍 FAT表的基本介绍、正常的FAT表、异常的FAT表

2022-05-06 10:14:59 601

原创 TDA2XX 设备启动之后中断异常问题排查

设备通过SD卡启动发现启动异常[ OK ] Started Network Service.Starting Network Name Resolution…[ 9.658785] omap-rproc 58820000.ipu: ignoring dependency for device, assuming no driver[ 9.684916] omap-rproc 58820000.ipu: ignoring dependency for device, assuming

2020-09-29 13:50:58 1771 1

原创 linux驱动之串口驱动分析

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

2020-08-17 16:29:09 441

原创 Imx6ULL LCD驱动分析

控制器特性支持MPU接口用于指令和数据传递支持DOTCKL接口(RGB mode)支持高速传输VSYNC mode支持 ITU-R BT.656 mode外部总线信号MPU接口时序VSYNC接口时序该接口时序协议和MPU接口保持一致,内部采用VSYNC 信号实现frame同步显示,比MPU多了一个VSYNC同步信号DOTCLK接口时序 -RGB接口DVI接口在DVI模式下只用到了数据线LCD_DATA00~LCD_DATA07 和一个时钟线...

2020-08-12 14:53:31 1844

原创 串口问题排查-时序异常

问题背景采用新塘处理器NUC972 使用该芯片所有的串口 UART1~UART10测试发现串口数据读取异常采用测试串口终端SSCOM问题还原步骤内核已经配置了所有的串口功能,串口PIN复用正常设备启动可以识别10个串口~ # ls /dev/ttyS*/dev/ttyS0 /dev/ttyS10 /dev/ttyS3 /dev/ttyS5 /dev/ttyS7 /dev/ttyS9/dev/ttyS1 /dev/ttyS2 /dev/ttyS4 /dev/t

2020-07-31 14:55:27 1055

原创 uboot如何传递参数到内核 tag功能使用方式

tag含义在做系统开发的时候 希望通过UBOOT可以传递参数到内核,在内核下进行使用我们选用tag方式进行参数传递tag是一个数据结构专门用于传递内核参数,如我们平时使用cmdline是通过tag的方式进行传递的uboot在启动内核的时候会调用 kernel_entrymachid:为机器码kernel_entry(0, machid, r2);//r2指向tag在内存的地址r2:可以指向设备树 也可以指向bi_boot_params启动参数:bi_boot_params指向tags结构体在

2020-07-28 14:42:37 736

原创 USB从设备驱动实现流程

背景很多公司在使用USB的时候有如下的设计理念,想要把设备的信息通过USB接口与PC连接,PC端开发一个客户程序 用于设备的配置,如下希望设备的初始配置可以在PC端实现,需要设备底层开发一套驱动用于支持PC端的识别涉及的开发流程有2处。1.设备的devices驱动2.pc的host驱动本文主要介绍设备端的驱动USB的基础介绍一个从设备的识别需要以下关键信息设备描述符、配置描述符、接口描述符、端点描述符、.我们需要在设备驱动中注册以上结构和USB读写功能函数即可,那么这4种结构如何注

2020-07-24 14:47:32 804

原创 LCD液晶屏显示接口总结

一些常见的LCD接口部分图片参考:https://blog.csdn.net/u013165704/article/details/80761697除了上面4个接口 还有一些其他接口如i2c、SPI接口的小屏 比较简单 不在描述,这种屏多数为串行总线接口,时序比较简单 大家参考数据手册去调试不会有太大的麻烦本文只针对于常用的这4个接口特性进行解析RGBRGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即

2020-07-24 09:25:45 3028

原创 linux内核调度策略总结

在网上搜了一些资料 几乎都在说linux有三种调度流程调度策略含义SCHED_OTHER分时调度SCHED_FIFO实时调度策略,先到先服务SCHED_RR实时调度策略,时间片轮转其实我认为总结不到位的,其实内核中是支持7种调度策略的/* * Scheduling policies */#define SCHED_NORMAL 0#define SCHED_FIFO 1#define SCHED_RR 2#define SCHED_BATCH

2020-07-22 09:51:07 394 1

原创 进程调度时间计算方式

最新版linux3.10支持CFG调度策略CFG调度时分配给每个进程的时间片是多少?分配给进程的时间 = 总的cpu时间 * 进程的权重/就绪队列(runqueue)所有进程权重之和CFS调度器针对优先级又提出了nice值的概念,其实和权重是一一对应的关系。nice值就是一个具体的数字,取值范围是[-20, 19]。数值越小代表优先级越大,同时也意味着权重值越大,nice值和权重之间可以互相转换。内核提供了一个表格转换nice值和权重。const int sched_prio_to_weight[4

2020-07-21 13:40:42 2198

原创 O(n)、O(1)和CFS调度器(Linux内核调度)

一、前言随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了。这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭。我有一个循序渐进的方法,那就是先不要看最新的内核,首先找到一个古老版本的内核(一般都会比较简单),将其吃透,然后一点点的迭代,理解每个版本变更背后的缘由和目的,最终推进到最新内核版本。本文就是从2.4时代的任务调度器开始,详细描述其实现并慢慢向前递进。当然,为了更好的理解Linux调度器设计和实现,我们在第二章给出了一些通用的概念。之后,我

2020-07-21 11:20:40 542

原创 Linux内存管理 内存检测技术(slub_debug/kmemleak/kasan)

https://www.cnblogs.com/arnoldlu/p/8568090.htmlLinux常见的内存访问错误有:越界访问(out of bounds)访问已经释放的内存(use after free)重复释放内存泄露(memory leak)栈溢出(stack overflow)不同的工具有不同的侧重点,本章主要从slub_debug、kmemleak、kasan三个工具介绍。kmemleak侧重于内存泄露问题发现。slub_debug和kasan有一定的重复,部分slub_

2020-07-20 16:22:10 1083

原创 SD卡只读问题分析

SD卡只读问题分析问题现象FSU系列设备SD卡只读问题公司设备在运行过程中出现SD卡只读 无法写入问题,概率高问题分析1.该问题产生的根本原因是FAT表损坏,即SD卡中文件没有结束簇或者文件长度异常造成,FAT文件系统为了保护SD卡中的数据不被破坏,强制重新挂载为readonly,达到保护文件系统中数据的效果2.目前我们设备只有一个SD卡分区/dev/mmcblk0p1 on /media/sd type vfat~ # ls /media/sd/ftp log

2020-07-20 16:03:24 1162

原创 设备重启卡死问题分析-reboot卡死

Reboot卡死问题分析设备采用新塘处理器NUC972,设备在重启过程中出现概率性卡死问题 复现率极低问题现象设备IP:192.168.0.89[ 39.940000] PC is at yaffs_tags_marshall_write+0xc0/0xdc[ 39.940000] LR is at yaffs2_checkpt_flush_buffer+0x9c/0x294[ 39.940000] pc : [] lr : [] psr: 60000013[ 39

2020-07-20 15:59:03 1710

原创 Linux内核之slab调用原理

什么是slab?大家在一开始学习内核的时候 书中一直提高slab功能在深入了解slab功能的时候 可以先思考两个问题1.什么是slab?2.它存在的意义是什么?什么是slab百度一下 是一个形容词,代表一种坚硬的东西,换中国思维来考虑那就是一个利器,是分配内存的尚方宝剑。slab存在的意义?linux内存既然有buddy系统分配页内存,为什么还要用slab?buddy分配内存只能分配页的问题,但是slab分配可以解决几十个字节的分配问题设想一下 如果 你的内存只有64M 还要跑linu

2020-07-20 11:14:52 2378

原创 Linux内核内存泄漏排查手段

作为一个合格的BSP开发人员,在工作中会碰到各种内存泄漏的问题,遇到该问题的时候要如何确认问题原因和排查方向 这是大家一直比较关心的问题,接下来我主要介绍几款BSP工程师排查内核内存泄漏的手段和方式内存泄漏之kmemleak内存泄漏指的是申请的内存没有及时释放 导致内存不够用,这个时候就需要定位到底是哪个哪个模块哪个函数出现了问题最简单有效的手段是kmemleak;kmemleak会去跟踪kmalloc、vlmalloc等使用情况,把没有释放的内存dump出来,废话少说先上操作流程1.打开内核配置选

2020-07-17 16:15:29 1219

原创 嵌入式问题排查手段、网络问题、SD卡问题、设备启动问题、串口问题、i2c问题、spi问题、pcie等等问题

给大家介绍一个网站,虽然是英文的 但是是linux的系统,一些问题大家可以搜一下,老外的网站,很有效的添加链接描述

2020-01-17 10:27:31 253

转载 嵌入式之linux下libiio的用法

libiio使用函数Reading and modifying parametersReading a parameterRead device-specific attributes with those functions:iio_device_attr_read()iio_device_attr_read_all()iio_device_attr_read_bool()ii...

2020-01-14 16:58:55 2609

原创 嵌入式之SD卡/U盘只读问题解决方案(FAT只读修复方式)

只要使用FAT文件系统的介质 如硬盘、SD、U盘都会出现只读问题,这个属于FAT文件系统的缺陷一旦出现只读问题,无论是插拔还是重启都无法解决,该问题产生的主要原因是和异常掉电有关或者异常插拔有关FAT只读主要有两个原因1.文件大小和FAT表记录的不匹配2.FAT表项出现空簇情况,如以下方式 空簇

2020-01-10 11:47:56 4231 1

原创 嵌入式之SD卡异常问题分析

SD卡异常问题分类解决嵌入式存储对SD卡的使用是比较普遍的,如何把SD卡的性能用到极致避免出现各类问题,需要大家在代码的设计过程中实现异常错误处理。SD卡问题主要有以下3个1.SD卡无法识别2.SD卡只读问题3.SD卡读写异常SD卡无法识别针对问题一SD卡无法识别,大家重点跟踪一下SD卡的初始化流程,该问题还是比较容易定位的,这里不详细描述以后有时间在和大家探讨一下流程问题SD卡只...

2020-01-09 23:27:21 1205 1

原创 嵌入式之网络问题总结(网卡丢包、网卡无法识别)

网络问题分类网络无法识别问题还是比较好排查,但是如果涉及到网络丢包牵扯的环节太多了比如交换芯片是否异常,对方的工作模式是否正常、网络隔离变压器是否正常、CPU占用率、设备中断影响先排除网络环境和对方设备、在确认设备问题比如phy的时钟是否重叠、phy的流控是否开启等等...

2020-01-09 17:11:37 1109

原创 如何快速的学习嵌入式

如何学习嵌入式一些刚刚接触嵌入式的同学来讲 不知道如何去学习嵌入式?有很多人都不知道嵌入式的含义是什么,说实话我到现在也弄不清楚什么是嵌入式,但是具体的工作可以和大家聊聊大家在大学的时候肯定都接触过模电、数电、单片机、C语言 这个是嵌入式入门必须要掌握的课程,有助于在企业快速的成长,正在学校的同学可以抓紧学好这几类课程自己买个开发板,看一下内核源码 重点关注一下系统启动、网卡驱动、i2c/S...

2020-01-09 10:48:50 497

原创 嵌入式之网络接口方案介绍与驱动调试方式总结

什么是MAC嵌入式网络形态各异,有的需要一个网口,有的需要两个网口,有的需要8个网口,不同的形态网络的方案 不一致,一版工业上或者消费电子SOC片上系统仅支持1~2个mac;如果需要多个网口如何做?先了解一下什么是macMAC就是网络的数据链路层,phy就是物理层数据链路层数据链路(逻辑线路):在一条物理线路之上,通过一些规程或协议来控制这些数据的传输,以保证被传输数据的正确性。实现这些...

2020-01-09 10:28:37 1107

原创 嵌入式之认识网卡phy自协商

什么是自协商?自协商是通过一种叫做快速连接脉冲(Fast Link Pulse)的信号实现的,简称FLP。自协商的双方通过FLP来交换数据。在具备自协商能力的端口没有Link的情况下,端口一直发送FLP,在FLP中包含着自己的连接能力信息,包括支持的速率能力、双工能力、流控能力等。这个连接能力是从自协商能力寄存器中得到的(Auto-Negotiation Advertisement Regi...

2020-01-08 17:50:35 1844

原创 Linux系统网卡驱动phy工作原理解析

Linux网卡驱动架构MAC控制器驱动是芯片厂商集成在SDK中 比如三星控制器、海思控制器,这部分驱动厂商已经写好了, linux下自带通用phy驱动phy_device.c(phy层协议是通用标准 这个驱动对市场上的多数phy是支持的,难免部分厂商搞特例独行的特性,需要在初始化的时候进行简单寄存器的修改和配置才能使用),通用phy驱动工作原理理解改该文件的驱动代码,对网络的识别流程帮助很...

2020-01-07 20:24:23 4402

mmc工具,调试EMMC有效手段

mmc工具可以查看csd寄存器

2022-07-12

emmc5.1协议规范

主要介绍eMMC5.1协议规范

2022-07-12

exfat 补丁包括源码和指导说明

linux kernel 默认不支持exfat文件系统,本资源用于支持exfat补丁包,直接按照说明安装即可,完全兼容exfat文件系统格式

2022-05-06

TDA4 PHY状态机管理机制

主要介绍TI TDA4VM PHY状态机的状态机制,对于理解TI PHY的工作原理有帮助

2022-05-06

嵌入式设备系统培训-系统特性和系统启动流程 - 副本.ppt

详细介绍嵌入式系统启动流程及注意事项,Linux虚拟空间分配方式 使用块设备注意事项,网络问题排查方式 top指令排查问题步骤

2020-07-20

空空如也

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

TA关注的人

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