【四旋翼飞行器】76小时吃透四轴算法!史上最强软硬结合实战项目,👉戳此立抢👈

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

收藏 人收藏
分享:

评论

相关推荐

芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)

内核工作队列概述 工作队列(workqueue)是另外一种将工作推后执行的形式,工作队列可以把工作推后,交由一个内核线程去执行,也...
发表于 02-18 15:43 106次 阅读
芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)

一名Linux系统运维工程师的自述

我是一个IT从业者,接触Linux也有几个年头了,慢慢的成为了一名Linux运维工程师,经过这几年的....
的头像 工程师人生 发表于 02-18 14:20 86次 阅读
一名Linux系统运维工程师的自述

DM8168有linux下的DSP编译器吗

在编写一段代码之后,如何知道这段程序是跑在DSP中,还是在ARM中的?需要手动进行寄存器设置还是编译器会自动优化? 有没...
发表于 02-18 13:48 48次 阅读
DM8168有linux下的DSP编译器吗

程小奔智能编程机器人评测 整个体验显得乐趣十足

小时候的我一喜欢幻想各种奇特的事物,梦想建造宇宙飞船或者是在时空中穿梭旅行,即便现在有时候脑子时常冒....
的头像 39度创意研究所 发表于 02-18 09:42 63次 阅读
程小奔智能编程机器人评测 整个体验显得乐趣十足

华为Linux培训资料Linux操作指导资料免费下载

shell 是用户和 Linux 操作系统之间的接口 Linux 中有多种 shell 其中缺省使用....
发表于 02-18 08:00 13次 阅读
华为Linux培训资料Linux操作指导资料免费下载

Linux入门教程之Linux内核完全注释的详细资料说明

本书对 Linux 早期操作系统内核(v0.95)全部代码文件进行了详细全面的注释和说明,旨在使读者....
发表于 02-18 08:00 7次 阅读
Linux入门教程之Linux内核完全注释的详细资料说明

浅析单片机入门常用的接口电路及其编程

在单片机系统中,通常用LED数码显示器来显示各种数字或符号。由于它具有显示清晰、亮度高、使用电压低、....
的头像 玩转单片机 发表于 02-17 09:58 213次 阅读
浅析单片机入门常用的接口电路及其编程

随着成本的逐步降低 中国的智能家居最终将走向嵌入式

后PC时代的到来完全依赖于嵌入式技术的诞生与发展,传统的IT设备逐渐转变为嵌入式设备,这是一个大趋势....
发表于 02-15 15:38 153次 阅读
随着成本的逐步降低 中国的智能家居最终将走向嵌入式

芯灵思SinlinxA33开发板Linux内核 tasklet 机制(附实测代码)

Linux 中断编程分为中断顶半部,中断底半部 中断顶半部: 做紧急,耗时短的事情,同时还启动中断底半部。 中断底半部: 做耗时...
发表于 02-15 15:29 308次 阅读
芯灵思SinlinxA33开发板Linux内核 tasklet 机制(附实测代码)

Linux进程管理:什么是进程?进程的生命周期

所有运行在Linux操作系统中的进程都被task_struct结构管理,该结构同时被叫作进程描述。一....
的头像 马哥Linux运维 发表于 02-15 14:29 230次 阅读
Linux进程管理:什么是进程?进程的生命周期

了解虚拟内存和内存分页的概念

应用程序来说对物理内存地址一无所知。它只可能通过虚拟内存地址来进行数据读写。程序中表达的内存地址,也....
的头像 马哥Linux运维 发表于 02-15 14:19 1863次 阅读
了解虚拟内存和内存分页的概念

Python的套路都在这里了!7个案例15分钟让你了解

而我要推荐的计算机语言,答案已在标题中被出卖:Python!Python是一门十分容易上手,但是又被....
的头像 马哥Linux运维 发表于 02-15 14:14 281次 阅读
Python的套路都在这里了!7个案例15分钟让你了解

inux shell通配符、元字符、转义符最全使用攻略

加入”*” 都是作用在命令名直接。可以看到shell 元字符,基本是作用在命令上面,用作多命令分割(....
的头像 马哥Linux运维 发表于 02-15 14:10 192次 阅读
inux shell通配符、元字符、转义符最全使用攻略

用这些开源游戏来挑战你的战略技能,探索新世界。

Freeciv 可以被视为是文明系列游戏的开源版本。游戏玩法和文明系列最早期的游戏十分类似,Free....
的头像 Linux爱好者 发表于 02-15 14:01 206次 阅读
用这些开源游戏来挑战你的战略技能,探索新世界。

一种新的Linux系统后门已经开始肆虐

Check Point 表示 SpeakUp 可以在六种不同的 Linux 发行版甚至 macOS ....
的头像 Linux爱好者 发表于 02-15 13:59 129次 阅读
一种新的Linux系统后门已经开始肆虐

Jack Wallen盘点他最爱的五款Linux音乐播放器

在所有我用过的音乐播放器中,Clementine 是目前为止功能最多也是最容易使用的。它同时也包含了....
的头像 Linux爱好者 发表于 02-15 13:56 144次 阅读
Jack Wallen盘点他最爱的五款Linux音乐播放器

芯灵思SinlinxA33开发板Linux内核定时器编程

Linux 内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于 和 kernel/timer.c ...
发表于 02-14 14:55 327次 阅读
芯灵思SinlinxA33开发板Linux内核定时器编程

请问DM6467T的Linux内核为什么没有YAFFS2?

比较了一下6467的Linux内核(2.6.18)和6467t的Linux内核(2.6.32),发现6467T的内核不支持YAFFS2这种文件系统了,在make x...
发表于 02-14 12:52 63次 阅读
请问DM6467T的Linux内核为什么没有YAFFS2?

用eclipse+GNU C写stm32,printf串口打印都是乱码

芯片是STM32 107VC串口通了,但是打出的数据不对都是乱码,在windows和linux下看都是乱码。 调3天了还是不行,有谁有这...
发表于 02-14 07:14 297次 阅读
用eclipse+GNU C写stm32,printf串口打印都是乱码

迅为iTOP-4412开发板在linux下使用wifi的配置

精英版在 linux 下使用 wifi,需要进行下面的配置: 首先用户在拿到光盘资料以后查看下光盘里面的“linux”->”root_xxxxxxx...
发表于 02-14 06:35 44次 阅读
迅为iTOP-4412开发板在linux下使用wifi的配置

MYD-C7Z010和MYD-C7Z020 Linux开发手册的详细资料说明

本文档的主要内容详细介绍的是MYD-C7Z010和MYD-C7Z020 Linux开发手册的详细资料....
发表于 02-13 17:49 22次 阅读
MYD-C7Z010和MYD-C7Z020 Linux开发手册的详细资料说明

PLC编程中形参与实参有什么样的区别

结合STEP7里具体点说可以是,假如我们有1个功能块FB1,功能FC1,几个FB1的背景数据块。在F....
发表于 02-13 08:00 66次 阅读
PLC编程中形参与实参有什么样的区别

Android嵌入式Linux系统开发全套教程pdf

疯壳 Android嵌入式Linux系统开发全套教程 1、注意事项 2、整机资源简介 3、整机功能检测 4、实验教程 ...
发表于 02-12 16:20 222次 阅读
Android嵌入式Linux系统开发全套教程pdf

芯灵思Sinlinx A33开发板 Linux内核等待队列poll ---阻塞与非阻塞

阻塞:阻塞调用是指调用结果返回之前,当前进程程会被挂起(休眠)。函数只有在得到结果之后才会返回。默认情况下,文件都是以这...
发表于 02-12 16:08 548次 阅读
芯灵思Sinlinx A33开发板 Linux内核等待队列poll ---阻塞与非阻塞

我应该选择哪种板或套件?

嗨, 我正在开发嵌入式系统,包括液晶触摸屏,fpga板和sata硬盘。 问题是我应该选择哪种fpga板? 我将使用这个板使用microbla...
发表于 02-12 10:44 54次 阅读
我应该选择哪种板或套件?

多种对讲机的使用资料合集免费下载

本文档的详细介绍的是多种对讲机的使用资料合集免费下载主要内容包括了:C450对讲机扩频350MHz的....
发表于 02-12 08:00 23次 阅读
多种对讲机的使用资料合集免费下载

Python自动化运维技术与最佳实践PDF可复制版电子书免费下载

市面上介绍互动的、面向对象的Python编程语言的书有很多,其强大而又灵活的特性,使其成为很多企图通....
发表于 02-12 08:00 40次 阅读
Python自动化运维技术与最佳实践PDF可复制版电子书免费下载

Hi3518A和Hi3518C和Hi3518E及Hi3516C Linux开发环境的用户指南

本文档介绍 Linux 开发环境。Linux 开发环境的搭建、HiBoot、Linux 内核、根文件....
发表于 02-12 08:00 16次 阅读
Hi3518A和Hi3518C和Hi3518E及Hi3516C Linux开发环境的用户指南

编程25年后,现实将我打回菜鸟程序员的起点

我必须承认这一点,我意识到我生活在自我技能怀疑以及对他人批评的恐惧中。当涉及到我的个人项目时,我会陷....
的头像 电子发烧友网工程师 发表于 02-11 10:33 329次 阅读
编程25年后,现实将我打回菜鸟程序员的起点

100道Linux经常笔试的选择题含答案

本套笔试题共100题,每题1分,共100分。(参考答案在文章末尾) 1. cron 后台常驻程序 ....
的头像 嵌入式ARM 发表于 02-03 17:25 368次 阅读
100道Linux经常笔试的选择题含答案

嵌入式LINUX的Qt开发入门教程

关于LINUX的Qt开发,你了解多少?它和ARM的GUI开发差别有多大?如果你还一头雾水,如果你想步....
的头像 周立功单片机 发表于 02-03 09:26 235次 阅读
嵌入式LINUX的Qt开发入门教程

Linux内存组织结构和页面布局

linux 内存是后台开发人员,需要深入了解的计算机资源。合理的使用内存,有助于提升机器的性能和稳定....
的头像 马哥Linux运维 发表于 02-03 09:02 167次 阅读
Linux内存组织结构和页面布局

使用实例详解ABB机器人编程的书籍《工业机器人操作与编程技术》介绍

针对ABB工作机器人以及离线编程软件RobotStudio,按照项目式教学方式进行教学内容安排与整合....
的头像 工业机器人 发表于 02-03 08:21 266次 阅读
使用实例详解ABB机器人编程的书籍《工业机器人操作与编程技术》介绍

Linux系统上内存类型交换空间详解

学习如何修改你的系统上的交换空间的容量,以及你到底需要多大的交换空间。
的头像 Linux爱好者 发表于 02-02 17:31 230次 阅读
Linux系统上内存类型交换空间详解

Linux中的35个find命令用法

Linux查找命令是Linux系统中最重要和最常用的命令之一。查找用于根据与参数匹配的文件指定的条件....
的头像 马哥Linux运维 发表于 02-02 16:53 103次 阅读
Linux中的35个find命令用法

如何用rcm 调取用户隐藏文件

 rcm 是一个 “rc” 文件管理套件(“rc” 是命名配置文件的另一种约定,它已被某些 GNU/....
发表于 02-01 09:26 47次 阅读
如何用rcm 调取用户隐藏文件

Linux开发服务器简易搭建方案

开始部署禅道系统。禅道有很多的安装方法,其实因为我们已经架设了apache php mysql,最稳....
发表于 02-01 01:53 90次 阅读
Linux开发服务器简易搭建方案

编程基础之流程图画法及练习

对于“程序设计”的工作,许多初学者的理解就是“写代码”。同样,新手们苦恼的问题是,他们只会“写代码”....
的头像 刘某 发表于 01-31 15:35 203次 阅读
编程基础之流程图画法及练习

plc面向对象编程架构与实现

面向对象编程是计算机高级语言的一种先进的编程模式,在工业控制系统的PLC程序中也可以采用这种设计思想....
发表于 01-31 15:00 68次 阅读
plc面向对象编程架构与实现

Linux基金会宣布成立一个名为LF Edg 的小组

Open Glossary of Edge Computing :这是一个边缘计算术语参考文件,每一....
的头像 Linux爱好者 发表于 01-30 15:15 963次 阅读
Linux基金会宣布成立一个名为LF Edg 的小组

西门子PLC怎么学?教你两个法子

随着科学技术的支持以及工业生产改革的深化,PLC编程的推广应用在我国得到了迅猛的发展,它已经大量地应....
的头像 刘某 发表于 01-30 11:01 508次 阅读
西门子PLC怎么学?教你两个法子

工控中如何学习前人的编程经验

工控朋友们,我们偶尔喜欢收集资料,也知道要学习前人的编程经验,具体该怎么做呢,在这里希望大家花时间瞧....
的头像 刘某 发表于 01-30 10:03 183次 阅读
工控中如何学习前人的编程经验

plc编程算法:开关量、模拟量、脉冲量三者关系

PLC中无非就是三大量:开关量、模拟量、脉冲量。只在搞清楚三者之间的关系,你就能熟练的掌握PLC了。....
的头像 刘某 发表于 01-30 09:56 195次 阅读
plc编程算法:开关量、模拟量、脉冲量三者关系

如何使用ARM9芯片进行嵌入式工控机的设计

本课题以ARM9的嵌入式工控设计为主要内容和开发对象,目标是采用基于ARM9内核的ATMEL工业级嵌....
的头像 嵌入式ARM 发表于 01-29 15:53 987次 阅读
如何使用ARM9芯片进行嵌入式工控机的设计

基础被问到的24道shell脚本面试题精心汇总

虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问....
的头像 马哥Linux运维 发表于 01-29 15:48 445次 阅读
基础被问到的24道shell脚本面试题精心汇总

windows下虚拟机配置spark集群最强攻略!

这里我们可以直接使用linux的命令下载jdk,当然也可以在本地下载之后传输到虚拟机中,这里我采用的....
的头像 电子发烧友网工程师 发表于 01-29 10:58 294次 阅读
windows下虚拟机配置spark集群最强攻略!

树莓派系列教程资料汇总免费下载

本文档的主要内容详细介绍的是树莓派系列教程资料汇总免费下载包括了:树莓派系列教程1:人生若只如初见,....
发表于 01-29 10:04 208次 阅读
树莓派系列教程资料汇总免费下载

你会使用Linux 中的“!”惊叹用法吗

前言 实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法。
的头像 嵌入式资讯精选 发表于 01-29 09:08 225次 阅读
你会使用Linux 中的“!”惊叹用法吗

单片机基础教程之汇编语言程序设计知识的详细资料说明

本文档的主要内容详细介绍的是单片机基础教程之汇编语言程序设计知识的详细资料说明包括了:1 编程的步骤....
发表于 01-28 16:47 140次 阅读
单片机基础教程之汇编语言程序设计知识的详细资料说明

浅谈嵌入式Linux下的C语言编程知识要点

Linux和C语言有着很深的渊源,因为Linux本身就是用C语言编写的。同时,在Linux操作系统中....
的头像 玩转单片机 发表于 01-28 11:32 664次 阅读
浅谈嵌入式Linux下的C语言编程知识要点

面试Linux运维工作至少需要知道哪些知识运维的现状及发展前景分析

我们已经发过不少 Linux 面试题,但是单独的面试题总感觉会过于零碎,没有体系化内容给人的帮助大。
的头像 马哥Linux运维 发表于 01-27 11:58 836次 阅读
面试Linux运维工作至少需要知道哪些知识运维的现状及发展前景分析

Linux系统与服务管理工具Systemd被曝存在3大漏洞

3 个漏洞已经收录到 CVE,分别是内存损坏漏洞 CVE-2018-16864 与 CVE-2018....
的头像 Linux爱好者 发表于 01-25 16:51 411次 阅读
Linux系统与服务管理工具Systemd被曝存在3大漏洞

图像编程精髓电子书免费下载

本书以开发PhotoSprite(一种包含Photoshop核心图像处理功能的软件)为讲解对象,深入....
发表于 01-24 08:00 52次 阅读
图像编程精髓电子书免费下载

Python正则表达式教程之标准库的完整介绍及使用示例说明

本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整....
发表于 01-23 16:00 80次 阅读
Python正则表达式教程之标准库的完整介绍及使用示例说明

独立按键的原理及编程方法资料说明

经过多天的等待,元器件终于补齐了,虽然焊接的过程中出现了非常悲剧的事情,但最终我的板子得以“残”貌示....
发表于 01-23 10:41 58次 阅读
独立按键的原理及编程方法资料说明

探析机器人离线编程软件的优势和功能及优缺点

我们今天讲解的重点是离线编程,通过示教在线编程在实际应用中主要存在的问题,来说说机器人离线编程软件的....
的头像 机器人博览 发表于 01-22 17:36 500次 阅读
探析机器人离线编程软件的优势和功能及优缺点

数据库设计三大范式应用实例剖析

数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发....
发表于 01-22 17:16 54次 阅读
数据库设计三大范式应用实例剖析

如何利用Python Remote objects技术实现分布式对象应用系统

讨论了如何利用Python Remote objects技术来设计与实现分布式对象应用系统!详细阐述....
发表于 01-22 15:54 65次 阅读
如何利用Python Remote ob<x>jects技术实现分布式对象应用系统

GD32F4xx系列芯片编程软件免费下载

本文档的主要内容详细介绍的是GD32F4xx系列芯片编程软件免费下载
发表于 01-22 08:00 49次 阅读
GD32F4xx系列芯片编程软件免费下载

解析机器人离线编程软件的优势和主流编程软件的功能

我们今天讲解的重点是离线编程,通过示教在线编程在实际应用中主要存在的问题,来说说机器人离线编程软件的....
的头像 工业机器人 发表于 01-21 17:27 613次 阅读
解析机器人离线编程软件的优势和主流编程软件的功能

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