Linux编程时遇到Oops提示该如何排查?

2018-11-28 16:52 次阅读

各位工程师在Linux下开发程序时,有没有遇到由于系统中存在某些小故障而跳出了“Oops”提示的情况,此时你是如何排查故障?一行行的查看代码吗?其实不用那么复杂,本文将为你介绍一种高效的Linux编程的故障排除方法。

在分析Oops之前,我们先来看以下这么一个例子,使用GPIO的中断做掉电检测,参考《嵌入式Linux开发教程下册》的驱动框架,设计如下程序框图:

Linux编程时遇到Oops提示该如何排查?

这个框架设计之初的理想流程为:应用启动-》程序初始化-》应用open设备-》等待中断事件,但实际项目开发时,往往发生许许多多不可预测的事情。如小王正在调Qt应用,发现老王的进程老在打印,那就不让老王的进程开机自启动,调了两三天后,不定时地提示个Oops提示,小王按照“以前代码不出现,新加的出现,那么起因绝对在新代码内”的惯性思维,认为是新加的Qt导致的,然后小王就不断测试,不断查找bug中。..。..。这样就过去了十年。

但原因其实是小王没有open设备,即驱动层没有初始化定时器队列,那么中断处理函数中50ms触发的队列就为一个空值,空指针时Linux内核当然“哎呦”一下提醒你了,而不定时地提示其实就是因为电源不定时地松动,gpio检测到掉电了所以触发了中断。

实际上,这样的案例十分常见,原本想A-》B-》C,实际使用是A-》D-》C,又或者驱动中有某个变量忘记初始化等等,这时分析Oops就可以十分快速地解决问题。那接下来我们就用Linux中标准驱动去触发一个Oops,对的你没看错,Linux内核标准源码也存在这样的异常,而且我们也可以去修复这样的问题。

使用我司的EasyARM-iMX283开发板,内核源码为光盘内的Linux-2.6.35.3.tar.bz2,编译方法请参考光盘资料,我们需要把lcd的背光驱动修改为ko模式。

Linux编程时遇到Oops提示该如何排查?

烧录完新内核,加载新编译出来的drivers/video/backlight/mxs_bl.ko文件就会提示以下Oops信息:

Linux编程时遇到Oops提示该如何排查?

乍看之下,这段信息跟乱码差不多,但只要你一层层地分析,你就会发现,这些信息已经告诉了我们错误的原因。接下来就开始我们的Oops分析之旅。

1、主要错误信息

Linux编程时遇到Oops提示该如何排查?

用于提示错误的类型,这里表示使用空指针。

2、操作入口

Linux编程时遇到Oops提示该如何排查?

用于提示错误的操作,这里表示加载mxs_bl模块时出错,对应于加载操作insmod mxs_bl.ko。

3、PC指针

Linux编程时遇到Oops提示该如何排查?

用于提示出错时的PC指针位置,PC指针即当前程序运行点的地址,这里提示表示错误函数为regulator_set_current_limit,偏移地址为0xc。

4、LR指针

Linux编程时遇到Oops提示该如何排查?

用于提示出错时的LR指针位置,LR指针即调用子函数的上一个函数名以及入口偏移量,这里表示上一个函数为set_bl_intensity,偏移地址为0xd8。即set_bl_intensity调用regulator_set_current_limit时出错。

5、寄存器

Linux编程时遇到Oops提示该如何排查?

用于记录出错时各个寄存器的值,对于汇编比较熟悉的同志们可以研究一下这段信息。

6、出错进程信息

Linux编程时遇到Oops提示该如何排查?

用于提示出错的进程id号与进程名称。出错进程为insmod, PID号2261,对于多任务系统中,可能存在多个PID调用同一个接口的情况。

7、出错时的堆栈信息

Linux编程时遇到Oops提示该如何排查?

用于提示出错时堆栈内保存的寄存器信息,当程序由于中断发生或子程序调用时,会执行压栈操作,即将运行环境保存到堆栈内,保证退出中断或跳出子程序后,运行环境不发生改变。

而此处的堆栈信息即记录了程序运行时的环境信息。从中我们可以找到许多LR地址,从而分析出函数调用关系,与下一段的信息有类似作用。

8、函数执行的回溯关系

Linux编程时遇到Oops提示该如何排查?

用于表示函数的调用关系,通过这段信息我们可以知道,函数的整个执行流程,知道它的函数调用关系,最后整理出来的函数执行流程如下:

Linux编程时遇到Oops提示该如何排查?

从中我们看到了熟悉的init函数、probe函数、以及清楚probe函数下执行的操作过程是到哪一步出错的。现在我们知道了代码的执行流程,出错的PC指针的位置,但还是看不到代码,出错指针处我们只看到了一串数字,那么接下来我们就操作一下,把pc指针的数据变为有意义的代码。

第一步,分辨出错误代码在什么位置

这次实验涉及的二进制文件有内核的烧录固件以及驱动的ko文件,所以第一步分析就需要确定出错代码是在内核固件里还是ko文件里。

首先得到内核代码的范围,用以下命令将内核反汇编。

Linux编程时遇到Oops提示该如何排查?

查看这个文件的格式如是:

Linux编程时遇到Oops提示该如何排查?

第一列行数,第二列运行地址,第三列二进制码,第四列汇编代码,既然第二列为运行地址,即等同于程序运行到这行时,pc指针的值等于这个数值。这样只要翻看这个文件的头部以及尾部,就能知道内核代码的PC指针范围为:c0008000~c0562338。

根据前面第5步寄存器值,出错时PC指针为c02f1878,即在内核源码范围内。

第二步,分析出错函数的出错语句

那么根据第3步PC指针,得到regulator_set_current_limit的汇编代码,如下:

Linux编程时遇到Oops提示该如何排查?

函数入口地址为c02f186c 《regulator_set_current_limit》。

在第3步PC指针指出偏移地址为“PC is at regulator_set_current_limit+0xc”。

PC = 0xc02f1878 = 0xc02f186c + 0xc,符合汇编代码地址。

第三步,找到出错函数的C语言代码

这步可以说是最困难的,因为内核代码层次多,同名函数也可能存在许多份,可能几份编译进内核(static声明的局部函数),也可能没编译进内核,如何从众多的代码中分析出具体哪段呢。

本人就使用了一些小手段,首先给每个同名函数的入口加段乱码,让编译器筛选出编译进内核的文件(因为乱码,所以编译会报错),然后给剩下的函数加打印语句,通常经过第一步之后,可选的目标就两三个,通过打印进一步确认代码即可。

以下为筛选出来的C语言代码。

Linux编程时遇到Oops提示该如何排查?

看到这好像是定位了函数,但对于不熟悉汇编的人来说,C与汇编还是没有关联起来,好像进入了死胡同,但先别气馁,从上面的汇编代码中我们知道,函数名即为函数的首地址,那么调用子函数即需要让CPU知道子函数名,那么汇编如何调用子函数呢?使用bl指令, bl+子函数名。既然汇编有这么一个特性,那么我们看汇编代码。

上面582734行为“bl c0493104 《mutex_lock》”这句调用了子函数,再看C中调用此函数的语句。

Linux编程时遇到Oops提示该如何排查?

那么结果显而易见,不可能定义个变量都报错吧,所以唯一可能错误的语句就是struct regulator_dev *rdev = regulator-》rdev,同理,这句的前半部也只是定义一个rdev的变量,再结合内核给出来的提示——空指针,所以错误就是regulator-》rdev是一个空指针。

最终的问题就归结于,为什么regulatar-》rdev为空指针。这部分的查阅代码以及推理需要更深层次地挖掘,工作量也非本文能说清的,故作者在这里就大胆地推测与上面的A-》B-》C模型类似。所以我们就需要在这个资源存在的时刻,调用它之前给它赋值。

这时侯,我们就需要拿出第8步函数执行的回溯关系图,既然知道这个图中最后的函数的输入参数regulator的rdev为空,那么我们就关心regulator结构体以及它的意义。从结构体的意义我们才能知道如何给它赋值。

Linux编程时遇到Oops提示该如何排查?

在相关的代码文件中搜索关键字”regulator”或”regulator =”(建议搜这个,因为这种才是赋值语句)得到如下代码。

Linux编程时遇到Oops提示该如何排查?

分析这个函数可知,regulator实际是pdata的一个成员,他需要data来初始化,那么接下来的事情就简单了,在回溯关系中找一个位置把data的数据塞入pdata中,刚好这段函数就是初始化的regulator的,那就直接拿去用吧。

把这段添加到probe函数内的这个位置,实现了在mxsbl_probe和mxsbl_do_probe之间赋值此变量。

Linux编程时遇到Oops提示该如何排查?

这样重新编译后即可正常加载ko文件。

收藏 人收藏
分享:

评论

相关推荐

1346A/1347A IB显示操作和编程手册

5957-7606 (July 1983) The 1346A / 1347A IB Displays is a discontinued product. This manual is provided for infor...

发表于 12-10 16:50 8次 阅读
1346A/1347A IB显示操作和编程手册

SinA332.0开发板Linux&Qt调整VGA分辨率为1280x720

[table] [tr][td]Step 1    修改build.sh vim /root/work/sinlinx/a33/lichee/buildroot/target/sinlinx_board/bui...

发表于 12-10 14:49 322次 阅读
SinA332.0开发板Linux&Qt调整VGA分辨率为1280x720

请问TL16C2550怎么编程

TL16C2550 编程不会啊

发表于 12-10 11:21 18次 阅读
请问TL16C2550怎么编程

基于嵌入式Linux与S3C2440双USB接口的视频存储

针对长途客车“三超”(中途超载上人,超时,超速)以及在非正常停靠站私自停车上人导致的客车超载,同时目前市面上视频监控设备由...

发表于 12-10 10:17 21次 阅读
基于嵌入式Linux与S3C2440双USB接口的视频存储

明远智睿MY-IMX6-EK140 Linux-4.1.15测试手册

测试环境 · 开发板型号:MY-IMX6-EK140-6Y · 内核版本:Linux-4.1.15 · 文件系统:L4115-core-image-base-myimx...

发表于 12-10 10:09 146次 阅读
明远智睿MY-IMX6-EK140 Linux-4.1.15测试手册

安卓系统使用教程之安卓系统的50个使用技巧资料免费下载

安卓最近两年的发展,现在的用户界面和交互都比较人性化了,但是很多安卓的新用户还是不怎么了解安卓系统手....

发表于 12-10 08:00 14次 阅读
安卓系统使用教程之安卓系统的50个使用技巧资料免费下载

关于Linux不要尝试着去使用的10条命令

Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。

的头像 马哥Linux运维 发表于 12-09 10:15 251次 阅读
关于Linux不要尝试着去使用的10条命令

Linux入门教程之快速学习Linux AWK命令的教程免费下载

awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时....

的头像 马哥Linux运维 发表于 12-08 10:39 199次 阅读
Linux入门教程之快速学习Linux AWK命令的教程免费下载

IMX6 MfgTool烧录的详细步骤

首先,有必要了解开发板支持的各系统版本,并根据自己的需要选择对应的 系统版本。

发表于 12-08 09:26 70次 阅读
IMX6 MfgTool烧录的详细步骤

Linux入门教程之Linux的基本操作详细资料说明

本文档的主要内容详细介绍的是Linux入门教程之Linux的基本操作详细资料说明主要内容包括了:1,....

发表于 12-07 17:21 74次 阅读
Linux入门教程之Linux的基本操作详细资料说明

25个有用的技巧和窍门,帮助你让Linux系统更加安全

你真的需要安装所有的服务么?建议不要安装无用的包,避免由这些包带来的漏洞。这将最小化风险,因为一个服....

的头像 马哥Linux运维 发表于 12-07 16:10 221次 阅读
25个有用的技巧和窍门,帮助你让Linux系统更加安全

西门子PLC指令表功能汇总

前几天分享了一篇关于西门子PLC编程指令集的相关文章,大家都反映很不错,希望多分享一些此类基础的干货。当然也有朋友说,太...

发表于 12-07 15:48 263次 阅读
西门子PLC指令表功能汇总

Vivado 2014.1在SLES10上安装失败

新的2014.1安装(Web安装程序和下载的软件包中的xsetup)在带有JRE的SLES10补丁3上崩溃。 安装在SLES11补丁2上正常...

发表于 12-07 11:18 56次 阅读
Vivado 2014.1在SLES10上安装失败

Linux意外的NIC ID

我希望生成一个新的许可证文件,在Centos 6.5机器上,许可证管理器告诉我这是我的系统信息: 但这些NIC是eth2和eth3,我在这...

发表于 12-07 11:13 95次 阅读
Linux意外的NIC ID

我应该使用什么操作系统?

你好。 我打算在我的电脑上安装最新的vivado版本。 我已经在64位Windows 7上安装它并且工作正常,但我也需要在64位Linux机器...

发表于 12-07 11:10 58次 阅读
我应该使用什么操作系统?

嵌入式linux TCP/IP协议栈概述

TCP/IP协议栈可以实现不同型号、不同操作系统的计算机之间的通信,它并不是某个具体的协议,而是一组协议。我们都知道OSI...

发表于 12-07 10:05 334次 阅读
嵌入式linux TCP/IP协议栈概述

嵌入式教程之Linux的基础命令详细资料说明

本文档的主要内容详细介绍的是嵌入式教程之Linux的基础命令详细资料说明主要内容包括了:1.Linu....

发表于 12-06 17:31 36次 阅读
嵌入式教程之Linux的基础命令详细资料说明

Android教程之如何使用命令行工具和Android模拟器

到目前为止,本书包含了一些非常宽的科目关于学习如何运行Android平台。就这一点来说,对于使用Ec....

发表于 12-06 10:15 22次 阅读
Android教程之如何使用命令行工具和Android模拟器

你真的了解ARM吗

51单片机寄存器比较少,指令只有111条;而arm芯片寄存器较多,指令集也多,要掌握它需要耐心和时间....

的头像 澳门威尼斯人官网手机网工程师 发表于 12-06 08:48 227次 阅读
你真的了解ARM吗

C语言入门教程之C语言编程实例源代码资料免费下载

本文档的主要内容详细介绍的是C语言入门教程之C语言编程实例源代码资料免费下载。

发表于 12-06 08:00 98次 阅读
C语言入门教程之C语言编程实例源代码资料免费下载

3CX统一通信解决方案,解决企业通信问题

3CX是一个完整的统一通讯解决方案。将语音、视频、移动办公和信息服务集成在一个平台上,因而不需要多台....

的头像 CTI论坛 发表于 12-05 15:20 156次 阅读
3CX统一通信解决方案,解决企业通信问题

C++的新标准又双叒叕要到来了,C++20要来了!

然而,模版编程还存在一些问题,比如有些模版的代码写起来比较困难,读起来比较难懂,尤其是编译出错的时候....

的头像 嵌入式资讯精选 发表于 12-05 13:43 285次 阅读
C++的新标准又双叒叕要到来了,C++20要来了!

C#入门教程之面向对象编程简介的详细资料概述

本文档的主要内容详细介绍的是C#入门教程之面向对象编程简介的详细资料概述主要学习的目标是1.面向对象....

发表于 12-05 11:54 32次 阅读
C#入门教程之面向对象编程简介的详细资料概述

学会分析Linux内核需要多久?8分钟

出于简便考虑,在此分析中,我忽略了对大内核的处理的分析,因为对大内核的处理,只是此引导过程中的一个很....

的头像 马哥Linux运维 发表于 12-04 17:06 266次 阅读
学会分析Linux内核需要多久?8分钟

如何安装和配置NI USB数据采集(DAQ)设备

本指南描述了如何安装和配置NI USB数据采集(DAQ)设备,以及如何验证这些设备是否正常工作。NI....

发表于 12-03 08:00 38次 阅读
如何安装和配置NI USB数据采集(DAQ)设备

Linux教程之如何进行软件包管理

软件包管理器(RPM)是开放打包系统,在Red Hat Linux 里,因为有了Red Hat Pa....

发表于 11-30 16:36 41次 阅读
Linux教程之如何进行软件包管理

为幼儿园学生设计的AI教材曝光!谷歌AI专家指导,幼儿园娃娃就要学AI

Scratch编程环境:该编程环境主要用于编程入门学习。它基于开源的Scratch 3.0系统进行二....

的头像 悟空智能科技 发表于 11-29 17:00 435次 阅读
为幼儿园学生设计的AI教材曝光!谷歌AI专家指导,幼儿园娃娃就要学AI

如何使用ARM开发板和Linux嵌入式系统设计一个智能点菜系统

本课题设计是以ARM开发板搭载Linux嵌入式系统为核心,使用QT编程制作GUI点菜终端,用LCD屏....

发表于 11-29 08:00 164次 阅读
如何使用ARM开发板和Linux嵌入式系统设计一个智能点菜系统

首发:周立功教授《嵌入式软件工程方法与实践丛书》在北航正式出版开售

11月24日,由周立功教授主导撰写的《嵌入式软件工程方法与实践丛书》前三本,共计200万字,在全国嵌....

的头像 人间烟火123 发表于 11-28 16:41 2620次 阅读
首发:周立功教授《嵌入式软件工程方法与实践丛书》在北航正式出版开售

私人订制Linux的全部操作,打造一个属于自己的Linux小系统

我们要在一个现有的Linux系统上加一块硬盘/dev/sdb,在硬盘上分两个分区,一个是/boot,....

的头像 马哥Linux运维 发表于 11-28 16:22 325次 阅读
私人订制Linux的全部操作,打造一个属于自己的Linux小系统

Linux操作系统实用教程之如何进行Linux的安装启动与关闭

用户首先明确安装用途以及和现有计算机操作系统的关系,进行确认,了解掌握Linux操作系统安装的一般性....

发表于 11-28 15:56 31次 阅读
Linux操作系统实用教程之如何进行Linux的安装启动与关闭

Linux应用基础教程之Linux如何进行系统管理

本文档的主要内容详细介绍的是Linux应用基础教程之Linux如何进行系统管理主要内容包括了:1 用....

发表于 11-28 15:56 34次 阅读
Linux应用基础教程之Linux如何进行系统管理

Linux应用基础教程之Linux的网络服务资料概述

本文档的主要内容详细介绍的是Linux应用基础教程之Linux的网络服务资料概述主要内容包括了:1 ....

发表于 11-28 15:56 24次 阅读
Linux应用基础教程之Linux的网络服务资料概述

如何成为Linux驱动工程师

由于很多人总问这个问题,所以这里做一个总结供大家参考。这里必须先说明,以下的步骤都是针对Linux系....

的头像 玩转单片机 发表于 11-28 15:50 271次 阅读
如何成为Linux驱动工程师

软件开发工程师的5种类型

在我的代码旅程和编程经历中,已经遭遇很多奇特的对手,还有更为奇特的盟友。我至少发现有5种代码勇士,有....

的头像 工程师人生 发表于 11-28 15:20 173次 阅读
软件开发工程师的5种类型

如何在Win下安装linux的虚拟机详细安装方法资料概述

本文档的主要内容详细介绍的是如何在Win7下安装linux的虚拟机详细安装方法资料概述免费下载。

发表于 11-28 15:03 26次 阅读
如何在Win下安装linux的虚拟机详细安装方法资料概述

在单片机编程中什么时候需要用到enum呢

当变量的数值在几个范围之间,如一个week变量取值只有Monday,Tuesday,Wednesda....

的头像 畅学单片机 发表于 11-28 09:18 341次 阅读
在单片机编程中什么时候需要用到enum呢

GTK+和Glade GUI编程教程资料免费下载

如果你没有任何GTK+ 的编程经验, 那么, 对于我将要阐述的一些概念你也许会听着犯迷糊。不过,不用....

发表于 11-27 16:37 34次 阅读
GTK+和Glade GUI编程教程资料免费下载

中软的一套面试题和一些C++的经典面试题资料合集免费下载

本试题仅用于考查C++/C程序员的基本编程技能。内容限于C++/C常用语法,不涉及数据结构、算法以及....

发表于 11-27 15:03 43次 阅读
中软的一套面试题和一些C++的经典面试题资料合集免费下载

Linux以太网解决方案的介绍

本课程将回顾高性能以太网解决方案所需的系统功能。 将审查Xilinx以太网IP内核和相关设备驱动程....

的头像 Xilinx视频 发表于 11-27 06:38 80次 观看
Linux以太网解决方案的介绍

Linux设备驱动程序的平台驱动程序和字符驱动程序介绍

了解Linux设备驱动程序的基础知识,重点介绍平台驱动程序和字符驱动程序。 提出了简单的平台驱动程....

的头像 Xilinx视频 发表于 11-27 06:32 92次 观看
Linux设备驱动程序的平台驱动程序和字符驱动程序介绍

俄罗斯反病毒软件厂商Dr.Web发现了一种新型木马

如果程序尚不存在,它甚至可以自行下载 nohup 工具来实现这一点。在牢牢掌握了受感染的主机之后,它....

的头像 Linux爱好者 发表于 11-26 15:27 250次 阅读
俄罗斯反病毒软件厂商Dr.Web发现了一种新型木马

如何在Linux下实现MySQL数据库定时自动备份

备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机....

的头像 马哥Linux运维 发表于 11-26 11:05 231次 阅读
如何在Linux下实现MySQL数据库定时自动备份

GNU ARM汇编入门教程的详细资料免费下载

尽管在 Linux 下使用 C 或 C++编写程序很方便,但汇编源程序用于系统最基本的初始化,如初始....

发表于 11-26 08:00 45次 阅读
GNU ARM汇编入门教程的详细资料免费下载

如何在嵌入式Linux中使用GPIO

了解如何在嵌入式Linux中使用GPIO,特别强调Zynq-7000系列。 我们介绍了基本的用户和....

的头像 Xilinx视频 发表于 11-26 07:02 139次 观看
如何在嵌入式Linux中使用GPIO

Linux设备驱动程序基础知识的了解

了解Linux设备驱动程序的基础知识,重点关注设备节点,内核框架,虚拟文件​​系统和内核模块。 提....

的头像 Xilinx视频 发表于 11-26 06:51 100次 观看
Linux设备驱动程序基础知识的了解

在QEMU软件仿真器上运行Zynq UltraScale+ MPSoC

Xilinx展示了在QEMU软件仿真器上运行的Zynq UltraScale + MPSoC。 四....

的头像 Xilinx视频 发表于 11-26 06:46 116次 观看
在QEMU软件仿真器上运行Zynq UltraScale+ MPSoC

顶级Linux开发者必不可少的编程阅读书籍

Linux 是在大约上世纪 90 年代开发出来的,与它一起问世的还有其他一些完成基础功能的开源软件。....

的头像 人间烟火123 发表于 11-25 10:47 2719次 阅读
顶级Linux开发者必不可少的编程阅读书籍

Java为什么不适合作为入门编程语言

不过,近几年随着人工智能的崛起,各大初高中、甚至是幼儿园都在将 AI 教学列入基本教学范畴。这不前几....

的头像 嵌入式资讯精选 发表于 11-25 10:36 559次 阅读
Java为什么不适合作为入门编程语言

新型 Linux 病毒出炉 比传统恶意Linux 病毒更恶意

俄罗斯杀毒软件公司 Dr.Web 近日公开了一个被称为 Linux.BtcMine.174 的新型木....

的头像 人间烟火123 发表于 11-25 10:30 387次 阅读
新型 Linux 病毒出炉 比传统恶意Linux 病毒更恶意

如何用替换函数的Trick做正常的事情

替换一个已经在内存中的函数,使得执行流流入我们自己的逻辑,然后再调用原始的函数,这是一个很古老的话题....

的头像 Linuxer 发表于 11-23 11:00 262次 阅读
如何用替换函数的Trick做正常的事情

如何在ZC702板上运行Linux内核源代码

了解如何获取Xilinx Linux内核源代码,配置它,构建内核和设备树,最后在ZC702板上运行新....

的头像 Xilinx视频 发表于 11-23 07:09 121次 观看
如何在ZC702板上运行Linux内核源代码

Linux DMA Engine框架的介绍

此会话描述如何从设备驱动程序在Linux中使用DMA。 这包括内存分配,缓存控制和DMA设备控制。....

的头像 Xilinx视频 发表于 11-23 06:29 161次 观看
Linux DMA Engine框架的介绍

Linux教程之Linux的安全管理和高级应用资料概述

Linux 安全管理主要分为四个方面: (1)防止未授权存取:这是计算机安全最重要的问题。用户意识....

发表于 11-22 17:06 55次 阅读
Linux教程之Linux的安全管理和高级应用资料概述

Linux教程之Linux的网络应用详细知识点资料免费下载

本文档的主要内容详细介绍的是Linux教程之Linux的网络应用详细知识点资料免费下载主要内容包括了....

发表于 11-22 17:06 57次 阅读
Linux教程之Linux的网络应用详细知识点资料免费下载

嵌入式Linux工程师需要了解的八大开发知识点

嵌入式Linux工程师的学习需要具备一定的C语言基础,C语言是嵌入式领域最重要也是最主要的编程语言,....

的头像 MCU开发加油站 发表于 11-22 16:14 367次 阅读
嵌入式Linux工程师需要了解的八大开发知识点

LINUX应用编程函数自学手册详细资料免费下载

本文档的主要内容详细介绍的是LINUX应用编程函数自学手册详细资料免费下载。

发表于 11-22 08:00 40次 阅读
LINUX应用编程函数自学手册详细资料免费下载

Rockchip Thermal的调试方法详细开发指南资料免费下载

在 Linux 内核中,定义一套温控框架 linux Generic Thermal Sysfs D....

发表于 11-22 08:00 49次 阅读
Rockchip Thermal的调试方法详细开发指南资料免费下载

如何为Linux编写用户空间设备驱动程序

了解如何为Linux编写用户空间设备驱动程序。 用户空间驱动程序为某些设备提供内核空间驱动程序的替....

的头像 英特尔 Altera视频 发表于 11-22 07:04 175次 观看
如何为Linux编写用户空间设备驱动程序

u-boot中Hush shell的功能及编写脚本的方法介绍

了解u-boot中Hush shell的功能,以及如何为其编写脚本。 说明了存储和检索脚本的方法。

的头像 Xilinx视频 发表于 11-22 07:00 188次 观看
u-boot中Hush shell的功能及编写脚本的方法介绍

AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)

TI AM437x高性能处理器基于ARM Cortex-A9内核。 这些处理器通过3D图形加速得到增强,可实现丰富的图形用户界面,还配备了协处理器,用于进行确定性实时处理(包括EtherCAT,PROFIBUS,EnDat等工业通信协议)。该器件支持高级操作系统(HLOS)。基于Linux的® 可从TI免费获取。其它HLOS可从TI的设计网络和生态系统合作伙伴处获取。 这些器件支持对采用较低性能ARM内核的系统升级,并提供更新外设,包括QSPI-NOR和LPDDR2等存储器选项。 这些处理器包含功能方框图中显示的子系统,并且后跟相应的“说明”中添加了更多信息说明。 处理器子系统基于ARM Cortex-A9内核,PowerVR SGX™图形加速器子系统提供3D图形加速功能以支持显示和高级用户界面。 可编程实时单元子系统和工业通信子系统(PRU-ICSS与ARM内核分离,允许单独操作和计时,以实现更高的效率和灵活性.PRU-ICSS支持更多外设接口和EtherCAT,PROFINET,EtherNet /IP,PROFIBUS,以太网Powerlink,Sercos,EnDat等...

发表于 09-25 11:51 33次 阅读
AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)