大侠课堂
大侠专注嵌入式领域十年,一直从事嵌入式驱动开发工作,具有丰富的BSP调试经验,有一些经验和工作方式,可以共享给大家,以便于大家加快学习和问题定位调试
展开
-
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 · 1929 阅读 · 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 · 527 阅读 · 0 评论 -
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 · 1948 阅读 · 0 评论 -
串口问题排查-时序异常
问题背景采用新塘处理器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 · 1171 阅读 · 0 评论 -
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 · 825 阅读 · 0 评论 -
USB从设备驱动实现流程
背景很多公司在使用USB的时候有如下的设计理念,想要把设备的信息通过USB接口与PC连接,PC端开发一个客户程序 用于设备的配置,如下希望设备的初始配置可以在PC端实现,需要设备底层开发一套驱动用于支持PC端的识别涉及的开发流程有2处。1.设备的devices驱动2.pc的host驱动本文主要介绍设备端的驱动USB的基础介绍一个从设备的识别需要以下关键信息设备描述符、配置描述符、接口描述符、端点描述符、.我们需要在设备驱动中注册以上结构和USB读写功能函数即可,那么这4种结构如何注原创 2020-07-24 14:47:32 · 904 阅读 · 0 评论 -
LCD液晶屏显示接口总结
一些常见的LCD接口部分图片参考:https://blog.youkuaiyun.com/u013165704/article/details/80761697除了上面4个接口 还有一些其他接口如i2c、SPI接口的小屏 比较简单 不在描述,这种屏多数为串行总线接口,时序比较简单 大家参考数据手册去调试不会有太大的麻烦本文只针对于常用的这4个接口特性进行解析RGBRGB色彩模式是工业界的一种颜色标准,是通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即原创 2020-07-24 09:25:45 · 3323 阅读 · 0 评论 -
O(n)、O(1)和CFS调度器(Linux内核调度)
一、前言随着内核版本的演进,其源代码的膨胀速度也在递增,这让Linux的学习曲线变得越来越陡峭了。这对初识内核的同学而言当然不是什么好事情,满腔热情很容易被当头浇灭。我有一个循序渐进的方法,那就是先不要看最新的内核,首先找到一个古老版本的内核(一般都会比较简单),将其吃透,然后一点点的迭代,理解每个版本变更背后的缘由和目的,最终推进到最新内核版本。本文就是从2.4时代的任务调度器开始,详细描述其实现并慢慢向前递进。当然,为了更好的理解Linux调度器设计和实现,我们在第二章给出了一些通用的概念。之后,我原创 2020-07-21 11:20:40 · 627 阅读 · 0 评论 -
设备重启卡死问题分析-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 · 2154 阅读 · 0 评论 -
Linux内核之slab调用原理
什么是slab?大家在一开始学习内核的时候 书中一直提高slab功能在深入了解slab功能的时候 可以先思考两个问题1.什么是slab?2.它存在的意义是什么?什么是slab百度一下 是一个形容词,代表一种坚硬的东西,换中国思维来考虑那就是一个利器,是分配内存的尚方宝剑。slab存在的意义?linux内存既然有buddy系统分配页内存,为什么还要用slab?buddy分配内存只能分配页的问题,但是slab分配可以解决几十个字节的分配问题设想一下 如果 你的内存只有64M 还要跑linu原创 2020-07-20 11:14:52 · 2834 阅读 · 0 评论 -
Linux内核内存泄漏排查手段
作为一个合格的BSP开发人员,在工作中会碰到各种内存泄漏的问题,遇到该问题的时候要如何确认问题原因和排查方向 这是大家一直比较关心的问题,接下来我主要介绍几款BSP工程师排查内核内存泄漏的手段和方式内存泄漏之kmemleak内存泄漏指的是申请的内存没有及时释放 导致内存不够用,这个时候就需要定位到底是哪个哪个模块哪个函数出现了问题最简单有效的手段是kmemleak;kmemleak会去跟踪kmalloc、vlmalloc等使用情况,把没有释放的内存dump出来,废话少说先上操作流程1.打开内核配置选原创 2020-07-17 16:15:29 · 1326 阅读 · 0 评论 -
嵌入式问题排查手段、网络问题、SD卡问题、设备启动问题、串口问题、i2c问题、spi问题、pcie等等问题
给大家介绍一个网站,虽然是英文的 但是是linux的系统,一些问题大家可以搜一下,老外的网站,很有效的添加链接描述原创 2020-01-17 10:27:31 · 326 阅读 · 0 评论 -
嵌入式之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 · 2894 阅读 · 0 评论 -
嵌入式之SD卡/U盘只读问题解决方案(FAT只读修复方式)
只要使用FAT文件系统的介质 如硬盘、SD、U盘都会出现只读问题,这个属于FAT文件系统的缺陷一旦出现只读问题,无论是插拔还是重启都无法解决,该问题产生的主要原因是和异常掉电有关或者异常插拔有关FAT只读主要有两个原因1.文件大小和FAT表记录的不匹配2.FAT表项出现空簇情况,如以下方式 空簇原创 2020-01-10 11:47:56 · 4802 阅读 · 1 评论 -
嵌入式之网络问题总结(网卡丢包、网卡无法识别)
网络问题分类网络无法识别问题还是比较好排查,但是如果涉及到网络丢包牵扯的环节太多了比如交换芯片是否异常,对方的工作模式是否正常、网络隔离变压器是否正常、CPU占用率、设备中断影响先排除网络环境和对方设备、在确认设备问题比如phy的时钟是否重叠、phy的流控是否开启等等...原创 2020-01-09 17:11:37 · 1306 阅读 · 0 评论 -
如何快速的学习嵌入式
如何学习嵌入式一些刚刚接触嵌入式的同学来讲 不知道如何去学习嵌入式?有很多人都不知道嵌入式的含义是什么,说实话我到现在也弄不清楚什么是嵌入式,但是具体的工作可以和大家聊聊大家在大学的时候肯定都接触过模电、数电、单片机、C语言 这个是嵌入式入门必须要掌握的课程,有助于在企业快速的成长,正在学校的同学可以抓紧学好这几类课程自己买个开发板,看一下内核源码 重点关注一下系统启动、网卡驱动、i2c/S...原创 2020-01-09 10:48:50 · 548 阅读 · 0 评论 -
嵌入式之认识网卡phy自协商
什么是自协商?自协商是通过一种叫做快速连接脉冲(Fast Link Pulse)的信号实现的,简称FLP。自协商的双方通过FLP来交换数据。在具备自协商能力的端口没有Link的情况下,端口一直发送FLP,在FLP中包含着自己的连接能力信息,包括支持的速率能力、双工能力、流控能力等。这个连接能力是从自协商能力寄存器中得到的(Auto-Negotiation Advertisement Regi...原创 2020-01-08 17:50:35 · 2065 阅读 · 0 评论 -
Linux系统网卡驱动phy工作原理解析
Linux网卡驱动架构MAC控制器驱动是芯片厂商集成在SDK中 比如三星控制器、海思控制器,这部分驱动厂商已经写好了, linux下自带通用phy驱动phy_device.c(phy层协议是通用标准 这个驱动对市场上的多数phy是支持的,难免部分厂商搞特例独行的特性,需要在初始化的时候进行简单寄存器的修改和配置才能使用),通用phy驱动工作原理理解改该文件的驱动代码,对网络的识别流程帮助很...原创 2020-01-07 20:24:23 · 4749 阅读 · 0 评论