
Linux驱动
xinghuah
这个作者很懒,什么都没留下…
展开
-
Linux的内存管理
Linux采用请求分页存储管理方法。系统为每个进程提供4GB的虚拟内存空间。各虚拟内存空间各自独立。 一 硬件基础还是逻辑地址,线性地址,物理地址,分段机制和分页机制依次转换。 其中涉及到GDT,LDT,段寄存器,段描述符,逻辑地址到线性地址的转换 linux的分段模型Linux使用如下段描述符内核代码段,内核数据段,用户代码段,用户数据段,TSS段,默认LDT段段基地址为0,段界限4GB,偏移量=线性地址Linu...转载 2020-08-13 16:43:54 · 354 阅读 · 0 评论 -
imx6报警温度设置
1)第一个问题:系统在运行过程中,温度到了比如70度,cpu内核达到105度就会挂掉解决办法:1)方法1:kernel 修改/drivers/thermal/imx_thermal.c 参数 按需修改:#define IMX_TEMP_PASSIVE &nb...转载 2020-07-30 17:51:26 · 1068 阅读 · 0 评论 -
IMX6Q的DDR3初始化配置
处理器:IMX6Q5EYM10ADDDR3时钟频率400MHz、528MHz DDR3:NT5CB128M16BP-CG16位667MHz时钟频率1333MHz数据频率 相比于Exynos4412的内存,飞思卡尔IMX6的内存比较麻烦,耗费了比较多的时间...转载 2020-07-01 21:35:51 · 893 阅读 · 0 评论 -
linux中Oops信息的调试及栈回溯
原文地址:http://blog.micro-studios.com/?p=615#comment-1069看后感想:這点比 ldd3上讲的都仔细2012年11月29日11:24:17:有BUG_ON就不用反汇编了。。。2012年11月30日11:14:13:回调函数跟丢了我遇到的情况:http://my.youkuaiyun.com/my/code/detail/28858=======...转载 2019-12-23 22:05:03 · 124 阅读 · 0 评论 -
linux oops定位问题
注意分析pc is at系统挂死的行号,结合反汇编定位。以及关键寄存器的值,还有dump_stack()打印出来的调用堆栈关系。oops的原因,也就是报告出错的原因; OOP信息序号; 出错时内核已加载模块; 发生错误的CPU序号; 发生错误的位置,以及当时CPU各个寄存器的值,这最有利于我们找出问题所在地; 当前进程的名字及进程ID 出错时,栈内的内容 栈回溯信息,可看出...转载 2019-12-13 22:09:44 · 438 阅读 · 0 评论 -
Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity)
硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能。现在的服务器上动不动就是多 CPU 多核、多网卡、多硬盘,如果能让网卡中断独占1个 CPU (core)、磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担、提高整体处理效率。VPSee 前天收到一位网友的邮件提到了 SM...转载 2019-05-06 10:26:30 · 697 阅读 · 0 评论 -
/proc/interrupts 和 /proc/stat 查看中断的情况
在/proc文件系统下,又两个文件提供了中断的信息。/proc/interrupts 文件中列出当前系统使用的中断的情况,所以某个中断处理没有安装,是不会显示的。哪怕之前安装过,被卸载了。从左到右分别是,irq的序号, 在各自cpu上发生中断的次数,可编程中断控制器,设备名称(request_irq的dev_name字段)$cat /proc/interrupts...转载 2019-05-06 17:00:54 · 1371 阅读 · 0 评论 -
Linux 中libusb安装与调试
参考文章:https://blog.youkuaiyun.com/gd6321374/article/details/79903132https://blog.youkuaiyun.com/weixin_40983190/article/details/84940396编译安装libusb之后,无usb.h问题需安装compat-0.1.4对旧版本兼容usb.h包和库...转载 2019-06-06 19:12:40 · 663 阅读 · 0 评论 -
如何用autoscan和automake由makefile.am自动生成makefile
对于一个UNIX/Linux下C程序员来说,一个比较麻烦的工作就是写自己的Makefile。可能你有如下经验:写一个简单的C程序,自己多写几行gcc命令就把程序变成可执行的了;写一个稍微复杂点的程序,源文件个数可能在30个左右,还是写一行行的gcc命令就麻烦了,你可能想到写个makefile,你可能也在这样做着;但你某一天会发现你写的这个Makefile可能不是一个所有 UNIX/Linux类操作...转载 2019-06-04 22:04:04 · 514 阅读 · 0 评论 -
ARM LINUX 扩展串口
----XR21V1414USB转串口 ----16C554总线扩展串口不同的项目,有些项目经常需要转串口。有两种方式,一种用USB去扩,另一种用16C554去扩。这两种从本质上来说,是一样的。成本上也不相上下。如果两种方式在项目设计中都可以的话,建议采用总线的方式。因为扩展串口总是...转载 2019-08-27 10:45:31 · 1516 阅读 · 0 评论 -
ubuntu移植到嵌入式平台
Ubuntu一个以桌面应用为主的开源GNU/Linux操作系统。Ubuntu用在PC的Intel框架,我们比较熟悉,。Ubuntu在ARM平台下运行,可能比较陌生。以下我们介绍Ubuntu 14.04到DLT-RK3288 ARM平台上。使用到的硬件平台:DLT-RK3288补充说明:虽然DLT-RK3288是基于4核32Bits Cortex-A17架构的CPU,该方法构建...转载 2019-08-29 10:32:20 · 3549 阅读 · 0 评论 -
Linux系统在嵌入式硬件上的移植
========================= 基本常识 =========================一、Linux系统的基本构成:1、loader2、kernel3、filesystem二、启动步骤:1、CPU从ROM(如果有的话)的0x0地址开始读取代码,执行loader;2、Loader初始化ram,并...转载 2019-08-29 10:57:42 · 441 阅读 · 0 评论 -
mount源码分析
Busybox-1.9.1在util-linux/mount.c的line:1609行首先映入眼帘的是:int mount_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;由于busybox是一个box,里面包含很多的可执行程序,如果cp,mount,umount等我们常用的一些命令,所以每个命令单独写入一个文件,而每个文件中也用类似...转载 2019-08-29 17:18:21 · 597 阅读 · 0 评论 -
Linux驱动调试-根据oops定位错误代码行
1.当驱动有误时,比如,访问的内存地址是非法的,便会打印一大串的oops出来1.1以LED驱动为例将open()函数里的ioremap()屏蔽掉,直接使用物理地址的GPIOF,如下图所示:1.2然后编译装载26th_segmentfault并执行测试程序后,内核便打印了oops出来,如下图所示:2.接下来,我们便来分析oops:Unable to handl...转载 2019-09-28 16:58:58 · 238 阅读 · 0 评论 -
CPU中断绑定——计算 SMP IRQ Affinity
前天我们讨论了如何绑定特定的硬件中断到特定的 CPU 上,分散和平衡各个中断到不同的 CPU 上以获取更大性能的处理能力。上篇限于篇幅的关系,没有来得及进一步说明 “echo 2 > /proc/irq/90/smp_affinity” 中的 ”2“ 是怎么来的,这其实是个二进制数字,代表 00000010,00000001 代表 CPU0 的话,00000010 就代表 CPU1, “ec...转载 2019-05-06 10:11:16 · 473 阅读 · 0 评论 -
IMX6 Linux系统下串口丢包错包问题研究
IMX6芯片简介摘自互联网http://www.ic72.com/ZhanHui/2013-02-01/209182.html1. IMX6 soc 芯片架构图IMX6 SOC2. 串口的使用情况IMX6 SOC系列芯片有5个异步串口可以使用,可以用于连接蓝牙,单片机,GPS模块等等外围芯片。串口的作用,就像神经系统一样,连接各个器官。因此串口通信的稳定性,还是非常重要的。...转载 2019-05-05 22:13:55 · 682 阅读 · 0 评论 -
应用调试之配置内核输出应用程序的段错误信息
根据之前的调试我们知道,当应用程序出错的时候,会打印一些信息。但是有时候这些信息时不够的,那么我们能否配置内核使其输出更多的信息呢?答案是肯定的,本节我们就来详细讲一下:还记得我们在运行firstdrvtest的时候曾经输出过如下一些错误信息:Unable to handle kernel paging request at virtual address 56000050pgd = c3c380...转载 2018-06-29 10:40:47 · 777 阅读 · 0 评论 -
linux mmap 详解
一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 具体参数含义start : 指向...转载 2018-10-18 16:08:49 · 936 阅读 · 0 评论 -
vmalloc与mmap
vmalloc与mmap mmap()系统调用是在用户进程与内核之间共享内存区域的常用方法。我们最近有个程序,需要应用进程能够读取内核驱动获取的数据,经过简单的调研,决定采用mmap方式。实现起来不难,在驱动中注册一个字符设备,实现该设备的mmap()方法即可。但这其中有一点小曲折。 在实现设备的mmap()方法时,需要将物理内存映射到应用程序通过mmap()系统调用传...转载 2018-10-18 16:09:44 · 192 阅读 · 0 评论 -
Linux设备驱动之mmap设备操作(memdev.c字符设备驱动分析)
from: http://blog.youkuaiyun.com/mirkerson/article/details/8232422http://blog.chinaunix.net/uid-25906157-id-1754499.htmlhttp://blog.youkuaiyun.com/bg2bkk/article/details/89465621.mmap系统调用void *mmap(voi...转载 2018-10-18 16:12:42 · 465 阅读 · 0 评论 -
利用 SysRq 键排除和诊断系统故障
SysRq 是什么你是否遇到服务器不能通过 SSH 登录,也不能通过本地终端登录,但是却能 ping 通,数字键盘锁还可以响应击键操作的情况?在这种情况下,你除了按下电源或复位键之外,还做过什么吗?你是否想过这种情况是可能恢复的呢?你是否想过收集更多的信息来定位这次系统挂起的原因呢?上述情况,可称之为“可中断的系统挂起”。换句话来讲,系统因为某种原因已经停止对大部分正常服务的响应,但是系统仍然...转载 2018-10-30 16:20:14 · 1431 阅读 · 0 评论 -
imx6 ar8031网卡驱动程序分析
/***************************************************************************** * imx6 fec分析 * 本文主要分析imx6的网卡程序,phy使用ar8031。...转载 2018-11-15 22:12:21 · 2097 阅读 · 0 评论 -
weak alias
Weak Alias 跟 Weak Reference 完全没有任何关系,不过是我在看到 Weak Reference 的时候想到的而已。Weak Alias 是 gcc 扩展里的东西,实际上是函数的属性。这个东西在库的实现里面可能会经常用到,比如 glibc 里面就用了不少。抄录一段 gcc 手册里面的话解释下函数属性是干啥的,In GNU C, you declare certain...转载 2018-11-14 16:55:55 · 116 阅读 · 0 评论 -
在U-boot中添加以太网驱动
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/mao0514/article/details/17523803当定义CONFIG_CMD_NET和CONFIG_CMD_PING,编译之后执行ping命令,告警没有找到以太网。因此,需要打开U-boot的网络功能, u-boot-sunxi-sunxi中没有找到明显的网络驱动代码,或...转载 2018-11-14 16:57:48 · 657 阅读 · 0 评论 -
Linux性能之DVFS/cpufreq
DVFS全称Dynamic Voltage and Frequency Scaling,即动态电压频率调整。这项技术可以根据芯片运行的应用程序的计算需求,动态调整电压和频率,从而达到节能的目的。DVFS技术是一项需要软硬件结合的技术,硬件方面比如Intel的SpeedStep技术以及由此衍生的EIST技术,ARM的IEM和AVS技术等。软件方面对于Linux而言主要就是CPUfreq技术,下面...转载 2019-04-28 09:38:17 · 1636 阅读 · 0 评论 -
Linux系统CPU频率调整工具使用
Linux系统CPU频率调整工具使用现在的CPU耗电很大,按需调节CPU频率对普通桌面及移动设备节能有重要的意义,目前多数Linux发行版都已经默认启用了这个功能,但在一些像数据库,集群系统等特别需要CPU高性能的服务器环境中,Linux提供的这种对CPU频率调节的功能对CPU性能使用受到一些限制,不利于系统性能的更好发挥。为此需要Linux系统管理员进行必要相关参数优化及设置来确保CPU...转载 2019-04-28 09:46:42 · 895 阅读 · 0 评论 -
linux日志级别(loglevel)详解
inux日志级别(loglevel)详解前几天,我在想printk中到底是哪些信息会打印到console上,哪些东西可以通过dmesg来查看。参考了网上一些资料以及自己做的一些实,总结一下Linux中的console loglevel以及printk, dmesg知识。只有当printk打印信息时的loglevel小于console loglevel的值(优先级高于console...转载 2019-04-28 18:41:25 · 27016 阅读 · 0 评论 -
记一次linux下串口数据丢包解决过程
项目中两个芯片之间用串口进行通信,由于传输格式中有校验位,在数据量很大的时候总是校验失败。于是花了很长的时间最终解决了这个问题。首先串口丢数据有两种情况(明显排除发送端发送的数据不对),第一种是信道也就是串口线或者连接口不行,无法承受很高的波特率(我使用的波特率是921600),第二种就是接收端由于某种原因丢数据。通过观察我排除了第一种情况,因为如果是信道承受不了太高的波特率的话那平时的小段小...转载 2019-05-05 22:10:30 · 3717 阅读 · 1 评论 -
串口驱动程序设计详解---串口打开、发送、接收(下)
上一篇博客分析了串口驱动初始化部分,下面逐步分析串口驱动中的打开串口,数据发送和接收!初始化主要工作流程:先来分析串口打开操作流程,还是先上图:这里分析还是离不开上篇博客中的两张重要的图:串口操作重要的数据结构:由上一篇串口驱动分析可知在samsung.c中模块初始化中有一项工作是注册一个串口驱动,跳到这个函数中uart_register_driver可以看到有一个函数:retval = tty_...转载 2018-04-26 20:25:35 · 458 阅读 · 0 评论