张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,👉戳此立抢👈

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文件。

收藏 人收藏
分享:

评论

相关推荐

轻松学Linux系列课程之Linux基础

课程从0开始,讲到云计算结束,按阶段授课,从入门到跑路,适合初学者,也适合定制,需要哪个模块学哪个模块2,包含初级运维工
发表于 07-24 00:00 15809次 阅读
轻松学Linux系列课程之Linux基础

轻松学Linux系列课程之Linux基础

课程从0开始,讲到云计算结束,按阶段授课,从入门到跑路,适合初学者,也适合定制,需要哪个模块学哪个模块2,包含初级运维工
发表于 07-24 00:00 15809次 阅读
轻松学Linux系列课程之Linux基础

基于AT91RM9200的嵌入式网络摄像机设计浅析

随着通信技术和网络技术的迅猛发展,通过网络远程实时监控重要场所已倍受人们关注,网络摄像机在此背景下产....
发表于 05-20 16:28 28次 阅读
基于AT91RM9200的嵌入式网络摄像机设计浅析

基于android平台的耳机驱动

工作以后接手的第一个驱动就是android平台下耳机的插拔检测和按键检测。这部分涉及的硬件知识比较简单,但是软件上对中断的处理,...
发表于 05-20 10:39 8次 阅读
基于android平台的耳机驱动

请问如何建立开发环境

如版主所写,Linux的开发环境建立 (1)编译器arm-linux-gcc-3.4.1 (2)Jflash-s3c2410:S3C2410芯片的JTAG工具 (3)安装...
发表于 05-20 05:45 45次 阅读
请问如何建立开发环境

W78E516B单片机的ISP功能在线编程设计

W78E516B是具有ISP功能的Flash低功耗8位微控制器。它的指令集与标准8052完全兼容,内....
发表于 05-19 09:58 52次 阅读
W78E516B单片机的ISP功能在线编程设计

ubuntu和redhat的区别

 Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,...
发表于 05-19 09:00 265次 阅读
ubuntu和redhat的区别

十几年linux运维工程师的工作经验分享

本人是LINUX运维工程师,对这方面有点心得,现在我说说要掌握哪方面的工具吧 说到工具,在行外可以说是技能,在行内我们一...
发表于 05-19 08:30 201次 阅读
十几年linux运维工程师的工作经验分享

Linux平台搭建与环境熟悉

嵌入式开发就是指在嵌入式操作系统下进行开发,一般常用的系统WinCE,Ucos,vxworks,LINUX,ANDROID等。另外,用c,...
发表于 05-19 08:30 284次 阅读
Linux平台搭建与环境熟悉

Linux常见故障的紧急处理方法

1.使用急救盘组进行维护 急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具。用它可以独立地启动和运行一个完整的L...
发表于 05-19 08:00 192次 阅读
Linux常见故障的紧急处理方法

嵌入式软件工程师前期职业生涯规划

ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1)掌握主流嵌入式微处理器的结构与原理(初步定...
发表于 05-18 16:04 50次 阅读
嵌入式软件工程师前期职业生涯规划

全国开启教育改革!机器人编程教育刚需性日渐凸显

随着人工智能趋势的不断加剧,世界各国也都将编程纳入国家战略布局。
的头像 电子发烧友网工程师 发表于 05-18 10:51 408次 阅读
全国开启教育改革!机器人编程教育刚需性日渐凸显

使用ARM进行网络视频监控系统的设计资料说明

近年来,随着多媒体技术、计算机网络与通信技术的的快速发展,传统的监控系统也不断向着新的发展方向进行着....
发表于 05-17 17:36 36次 阅读
使用ARM进行网络视频监控系统的设计资料说明

采用apache-httpd的微服务请求代理实现

2018-12-06 基于apache-httpd实现微服务的请求代理
发表于 05-17 13:11 13次 阅读
采用apache-httpd的微服务请求代理实现

嵌入式系统的详细资料介绍和在智能家居的应用详细资料概述

嵌入式系统EOS (Embedded OperatingSystem)是以应用为中心,以计算机技术为....
发表于 05-17 08:00 33次 阅读
嵌入式系统的详细资料介绍和在智能家居的应用详细资料概述

Linux命令行和shell脚本编程宝典PDF电子书免费下载

基础部分需要学习的内容很多,本宝典不仅简明扼要地介绍了开源Linux软件的结构,并且展示了如何摒弃笨....
发表于 05-16 17:22 31次 阅读
Linux命令行和shell脚本编程宝典PDF电子书免费下载

Linux学习教程之如何进行开发环境的搭建

很多做单片机开发的工程师因为各种原因可能要 学习 Linux ,但是很多人刚开始却无从下手 或者中途....
发表于 05-16 17:22 33次 阅读
Linux学习教程之如何进行开发环境的搭建

为开发者和合作伙伴提升 英特尔基于Linux的解决方案

5月14-16日,英特尔主办一年一度的开源技术峰会(OSTS)。
的头像 知IN 发表于 05-16 11:24 265次 阅读
为开发者和合作伙伴提升 英特尔基于Linux的解决方案

高效轻型线程对Linux实时性能有什么影响

简介 上个世纪,研发人员投入了大量精力提高Linux实时性能和行为,最著名的是PREEMPT_RT Linux实时扩展。最近,研发...
发表于 05-16 10:45 31次 阅读
高效轻型线程对Linux实时性能有什么影响

如何使用开放嵌入式构建和定制Linux发行版

作者: Nick Lethaby  操作系统产品经理 Denys Dmytriyenko   Linux及开源技术专家 德州仪器 引...
发表于 05-16 10:44 16次 阅读
如何使用开放嵌入式构建和定制Linux发行版

中国大学生编程第一人:世界顶尖黑客,受国外科技巨头青睐

1986 年出生,2004 年保送进清华大学计算机系……这经历,还有谁!
的头像 人工智能 发表于 05-16 10:31 255次 阅读
中国大学生编程第一人:世界顶尖黑客,受国外科技巨头青睐

使用Panda3D游戏引擎和OpenGL着色语言来为3D游戏添加纹理,法线贴图,泛光,环境遮挡

法线贴图(英语:Normal mapping)是一种模拟凹凸处光照效果的技术,是凸凹贴图的一种实现。....
的头像 新智元 发表于 05-15 09:03 241次 阅读
使用Panda3D游戏引擎和OpenGL着色语言来为3D游戏添加纹理,法线贴图,泛光,环境遮挡

Linux Kernel中AEP的现状和发展

对于PMEM设备来说,它的访问延迟已经和内存接近了,为什么还需要内存中的page cache呢?
的头像 Linuxer 发表于 05-13 14:06 1331次 阅读
Linux Kernel中AEP的现状和发展

最常用的PLC编程语言和编程方法详解

IEC 1131-3的编程语言是IEC工作组对世界规模的PLC厂家的编程语言合理地吸收、学习的基础上....
的头像 工控资料窝 发表于 05-12 10:58 349次 阅读
最常用的PLC编程语言和编程方法详解

两家加密货币挖掘组织争夺Linux服务器

Rocke是专门从事门罗币(Monero)挖掘业务的顶级黑客组织。去年年底,自新黑客组织Pacha崛....
的头像 E安全 发表于 05-12 09:45 268次 阅读
两家加密货币挖掘组织争夺Linux服务器

什么样的编程方式才适合产品生产?

随着电子产品的飞速发展,MCU的集成度越来越高,体积越来越少,封装形式越来越多。编程是产品上市前至关....
发表于 05-11 09:03 45次 阅读
什么样的编程方式才适合产品生产?

码农悄悄占领了华尔街

3月5日,高盛集团向全体3.6万名员工发布内部信,表示放宽员工着装要求。从此,这一老牌华尔街公司员工....
的头像 人工智能 发表于 05-09 15:12 172次 阅读
码农悄悄占领了华尔街

第三代人工智能,人工智能编程框架珠算2.0

张钹院士指出,清华大学建立人工智能研究院的重要目标就是在人工智能的基础理论和基本方法上进行源头性和颠....
的头像 新智元 发表于 05-08 09:30 360次 阅读
第三代人工智能,人工智能编程框架珠算2.0

linux内核中的DM9000驱动程序详细资料分析

自己感觉前段时间的学习,一直是东一榔头,西一棒子,所以决定听“赵磊”大哥的话:这个世界太浮躁,需要静....
发表于 05-07 18:21 23次 阅读
linux内核中的DM9000驱动程序详细资料分析

如何学习Linux之Linux的学习路线指南资料说明

很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一个优秀....
发表于 05-07 18:20 28次 阅读
如何学习Linux之Linux的学习路线指南资料说明

微信智能机器人硬件功能模块的详细资料介绍

1.核心控制板:raspberry b+(树莓派B+):一种卡片式电脑。树莓派是只有信用卡大小的卡片....
发表于 05-07 17:08 91次 阅读
微信智能机器人硬件功能模块的详细资料介绍

如何使用ARM进行嵌入式linux的系统设计

本文简要介绍了ARM处理器的特点及其基本结构,详细论述了基于ARM的嵌入式linux系统的关键技术,....
发表于 05-06 18:22 24次 阅读
如何使用ARM进行嵌入式linux的系统设计

最常用的PLC编程语言和编程方法详解

继电器梯形图(LD-Ladder Diagram)语言是PLC首要选用的编程语言,也是PLC最普遍选....
的头像 工控帮 发表于 05-06 16:52 393次 阅读
最常用的PLC编程语言和编程方法详解

MySQL中update修改数据与原数据相同是否会再次执行

本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在My....
的头像 电子发烧友网工程师 发表于 05-06 10:45 253次 阅读
MySQL中update修改数据与原数据相同是否会再次执行

号称能自动编程60年 “进化计算”进化到了哪一步

我们可以把“进化计算”看做是一类人工智能和机器学习的分支。最早提出于20世纪50年代,进化计算旨在让....
的头像 电子发烧友网工程师 发表于 05-06 10:22 294次 阅读
号称能自动编程60年 “进化计算”进化到了哪一步

基于状态机的简易RISC CPU设计

根据分析指令时产生的“操作命令”形成相应的操作控制信号序列,通过运算器,存储器及输入/输出设备的执行....
的头像 电子发烧友网工程师 发表于 05-06 09:12 487次 阅读
基于状态机的简易RISC CPU设计

为什么那么多人想学Python

最近,网上流传一组《人工智能实验教材》的图片,照片火起来的原因是教材是为幼儿园的小朋友们设计的!
的头像 电子发烧友网工程师 发表于 05-05 17:13 1922次 阅读
为什么那么多人想学Python

29条运维工程师必会实用Linux命令

虽然Linux发行版支持各种各样的饿GUI(graphical user interfaces),但....
的头像 马哥Linux运维 发表于 05-05 15:25 186次 阅读
29条运维工程师必会实用Linux命令

推荐几个关于Vim的神级插件

Vundle在github上面有上将近20K的star,已经作为最流行的Vim插件管理器,强烈推荐所....
的头像 马哥Linux运维 发表于 05-05 14:57 231次 阅读
推荐几个关于Vim的神级插件

详解博途编程实现S7300与西门子触摸屏通讯

目前国内流行用昆仑通泰或者威纶通触摸屏做项目,一方面价格便宜,另一方面编程简单。但西门子屏也经常会被....
的头像 工控云学堂 发表于 05-05 11:37 335次 阅读
详解博途编程实现S7300与西门子触摸屏通讯

DYHE9008采集器编程软件应用程序免费下载

本文档的主要内容详细介绍的是DYHE9008采集器编程软件应用程序免费下载,操作简单可以检测RS-4....
发表于 05-05 08:00 30次 阅读
DYHE9008采集器编程软件应用程序免费下载

Linux系统中LVM逻辑卷的工作原理是怎样的

其实在Linux操作系统中,磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Mast....
的头像 马哥Linux运维 发表于 05-03 12:26 240次 阅读
Linux系统中LVM逻辑卷的工作原理是怎样的

UCloud基于Linux内核新特性的下一代外网网关设计及相关开源工作

Nftables是一种新的数据包分类框架,旨在替代现存的{ip,ip6,arp,eb}_tables....
的头像 Linuxer 发表于 05-01 11:33 377次 阅读
UCloud基于Linux内核新特性的下一代外网网关设计及相关开源工作

Linux操作系统分析与实践PDF电子书免费下载

《Linux操作系统分析与实践》简要介绍操作系统的定义、功能、特性,以及发展历史、分类、内核结构,阐....
发表于 04-29 17:04 68次 阅读
Linux操作系统分析与实践PDF电子书免费下载

3D打印,20分钟打造毫米级微型机器人!

为了协助外科手术或在人体内运送药物,未来的机器人将需要放弃有毒性的钕,转而使用铁等危险性较低的金属。....
的头像 新智元 发表于 04-29 08:45 584次 阅读
3D打印,20分钟打造毫米级微型机器人!

哈佛大学蛇形机器人再次“C位出道”!

初代kirigani的实验也证明了不同的鳞片形状会对机器人的爬行效率产生影响。研究人员对圆形、三角形....
的头像 机器人大讲堂 发表于 04-28 17:58 718次 阅读
哈佛大学蛇形机器人再次“C位出道”!

简单又快速看懂linux的磁盘划分

一个服务器是以虚拟机的形式提供的,通过df -h看服务器磁盘空间只有30多个G,但通过fdisk -....
的头像 马哥Linux运维 发表于 04-28 15:53 226次 阅读
简单又快速看懂linux的磁盘划分

零基础学PLC 手册到图纸实现输入和输出接线

PLC(可编程控制器)是软硬结合的一门技术,因为我们编写的程序需要外部接线才能实现,而只有接线没有程....
的头像 工控云学堂 发表于 04-28 15:33 433次 阅读
零基础学PLC 手册到图纸实现输入和输出接线

ABB机器人之高级编程 安全域World Zone的使用

World Zones的作用是在机器人位于用户专门定义的区域内时,停止该机器人或设置一个输出信号。
的头像 工控资料窝 发表于 04-28 15:17 295次 阅读
ABB机器人之高级编程 安全域World Zone的使用

如何拯救被 rm -r的数据

天雷滚滚。天雷滚滚。天雷滚滚。作为一个Linux程序员,你能碰到的最伤心的事情,莫过于:编译了一整天....
的头像 Linuxer 发表于 04-28 14:59 248次 阅读
如何拯救被 rm -r的数据

手把手教你用Python创建微信机器人

python关于开发微信的库主要有itchat和wxpy,而wxpy底层是调用的itchat,所以如....
的头像 中科院长春光机所 发表于 04-28 11:16 296次 阅读
手把手教你用Python创建微信机器人

基于最新的Linux 4.0内核Linux设备驱动开发详解Linux设备驱动开发详解PDF电子书免费下载

Linux从未停歇前进的脚步。Linus Torvalds,世界上最伟大的程序员之一,Linux内核....
发表于 04-28 08:00 130次 阅读
基于最新的Linux 4.0内核Linux设备驱动开发详解Linux设备驱动开发详解PDF电子书免费下载

JZ2440开发板使用手册资料免费下载

本文档的主要内容详细介绍的是JZ2440开发板使用手册资料免费下载包括了:第1章 嵌入式Linux开....
发表于 04-28 08:00 52次 阅读
JZ2440开发板使用手册资料免费下载

Linux设备驱动开发详解PDF电子书免费下载

这是一本介绍Linux设备驱动开发理论、框架与实例的书,Linux设备驱动开发详解基于LDD6410....
发表于 04-28 08:00 58次 阅读
Linux设备驱动开发详解PDF电子书免费下载

MATLAB学习入门教程之基础知识的详细资料说明

讲授MATLAB语言基础入门知识,介绍MATLAB产品的体系、MATLAB桌面工具的使用方法,重点介....
发表于 04-28 08:00 82次 阅读
MATLAB学习入门教程之基础知识的详细资料说明

OpenCV的主要特点和优势发展历程和应用等资料说明

OpenCV(Open Source Computer Vision Library) 由公司在背后....
发表于 04-26 18:26 263次 阅读
OpenCV的主要特点和优势发展历程和应用等资料说明

两小时轻松快速入门Docker

docker是linux容器的一种封装,提供简单易用的容器使用接口。它是最流行的Linux容器解决方....
的头像 马哥Linux运维 发表于 04-26 10:51 459次 阅读
两小时轻松快速入门Docker

Linux内核精髓精通Linux内核必会的75个绝技PDF电子书免费下载

内核是操作系统的核心,操作系统的基本功能都是由内核提供的。文件生成和数据包传输等也是通过内核的功能实....
发表于 04-25 18:56 82次 阅读
Linux内核精髓精通Linux内核必会的75个绝技PDF电子书免费下载

AI死亡启示录

今天Reddit机器学习板块最火的话题,莫过于一个“亡于AI”的帖子,作者分享了发生在自己公司的一个....
的头像 重庆人工智能 发表于 04-25 14:46 290次 阅读
AI死亡启示录

有哪些值得学习的C语言开源项目详细资料说明

值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常....
发表于 04-24 18:30 65次 阅读
有哪些值得学习的C语言开源项目详细资料说明

怎样成为优秀的嵌入式linux工程师

目前,Linux作为嵌入式系统的主力军,广泛应用于消费类电子、工业控制、军工电子、电信/网络/通讯、....
的头像 工程师人生 发表于 04-24 09:47 441次 阅读
怎样成为优秀的嵌入式linux工程师

Linux内核定时器的详细资料概述

前面我们对按键驱动的开发已经基本完成了,但是当你对按键多次按下的时候,你会发现打印的返回值是不正确的....
发表于 04-23 18:29 59次 阅读
Linux内核定时器的详细资料概述

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 74次 阅读
AM4379 AM437x ARM Cortex-A9 微处理器 (MPU)