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

详解嵌入式Linux设备驱动篇module_init

2018-04-18 14:50 次阅读

一直以来写linux驱动,都是按照固定格式,定义一个初始化和退出函数,书上告诉我这两个函数会被调用,至于为什么会被调用,在哪调用,一直不清楚。

偶然的一个机会,看到blob里面的代码,里面有一个初始化函数列表。按照一般的编程想法,各部分的初始化函数会在一个固定的函数里调用比如:

void init(void)

{

init_a();

init_b();

}

如果再加入一个初始化函数呢,那么再init_b()后面再加一行:

init_c();

这样确实能完成我们的功能,但这样有一定的问题,就是不能独立的添加初始化函数,每次添加一个新的函数都要修改init函数,blob中的初始化函数就是完全独立的,只要用一个宏来修饰一下:

void init_a(void)

{

}

__initlist(init_a, 1);

它是通过这个宏来实现初始化函数列表的呢?

先来看__initlist的定义:

#define __init __attribute__((unused, __section__(".initlist")))

#define __initlist(fn, lvl) /

static initlist_t __init_##fn __init = { /

magic: INIT_MAGIC, /

callback: fn, /

level: lvl }

看来就是定义了一个结构体,存了初始化函数的指针,没什么特别的。请注意:__section__(".initlist")

这个属性起什么作用呢?它告诉连接器这个变量存放在.initlist区段,如果所有的初始化函数都是用这个宏,那么每个函数会有对应的一个initlist_t结构体变量存放在.initlist区段,也就是说我们可以在.initlist区段找到所有初始化函数的指针。怎么找到.initlist区段的地址呢?

extern u32 __initlist_start;

extern u32 __initlist_end;

这两个变量起作用了,__initlist_start是.initlist区段的开始,__initlist_end是结束,通过这两个变量我们就可以访问到所有的初始化函数了。

这两个变量在那定义的呢?

在一个连接器脚本文件里

. = ALIGN(4);

.initlist : {

__initlist_start = .;

*(.initlist)

__initlist_end = .;

}

这两个变量的值正好定义在.initlist区段的开始和结束地址,所以我们能通过这两个变量访问到所有的初始化函数。

与此类似,内核中也是用到这种方法,所以我们写驱动的时候比较独立,不用我们自己添加代码在一个固定的地方来调用我们自己的初始化函数和退出函数,连接器已经为我们做好了。当然module_init还有其他的特性,比如:我们的初始化函数在完成初始化后,代码占用的空间会被释放,这又是为什么呢?今天晚了,下次再写。

linux kernel中有很大一部分代码是设备驱动代码,这些驱动代码都有初始化和反初始化函数,这些代码一般都只执行一次,为了有更有效的利用内存,这些代码所占用的内存可以释放出来。

linux就是这样做的,对只需要初始化运行一次的函数都加上__init属性。在kernel初始化后期,释放所有这些函数代码所占的内存空间。它是怎么做到的呢?看过module_init和module_exit 的人知道,连接器把带__init属性的函数放在同一个section里,在用完以后,把整个section释放掉。

口说无凭,我们看源码,init/main.c中start_kernel是进入kernel的第一个c函数,在这个函数的最后一行是

rest_init();

static void rest_init(void)

{

kernel_thread(init, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGNAL);

unlock_kernel();

cpu_idle();

}

创建了一个内核线程,主函数init,代码如下:

static int init(void * unused)

{

lock_kernel();

do_basic_setup();

prepare_namespace();

/*

* Ok, we have completed the initial bootup, and

* we're essentially up and running. Get rid of the

* initmem segments and start the user-mode stuff..

*/

free_initmem();

unlock_kernel();

红色那行代码就是用来释放初始化代码和数据的。

void free_initmem(void)

{

#ifndef CONFIG_XIP_ROM

if (!machine_is_integrator()) {

free_area((unsigned long)(&__init_begin),

(unsigned long)(&__init_end),

"init");

}

#endif

}

接下来就是kernel内存管理的事了。

********************************************************************************************************

在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。

1.在MODULE没有定义这种情况下,module_init定义如下:

#define module_init(x) __initcall(x);

因为

#define __initcall(fn) device_initcall(fn)

#define device_initcall(fn) __define_initcall("6",fn,6)

#define __define_initcall(level,fn,id) \

static initcall_t __initcall_##fn##id __used \

__attribute__((__section__(".initcall" level ".init"))) = fn

所以,module_init(x)最终展开为:

static initcall_t __initcall_##fn##id __used \

__attribute__((__section__(".initcall" level ".init"))) = fn

更直白点,假设阁下driver所对应的模块的初始化函数为int gpio_init(void),那么module_init(gpio_init)实际上等于:

static initcall_t __initcall_gpio_init_6 __used __attribute__((__section__(".initcall6.init"))) = gpio_init;

就是声明一类型为initcall_t(typedef int (*initcall_t)(void))函数指针类型的变量__initcall_gpio_init_6并将gpio_init赋值与它。

这里的函数指针变量声明比较特殊的地方在于,将这个变量放在了一名为".initcall6.init"节中。接下来结合vmlinux.lds中的

.initcall.init : AT(ADDR(.initcall.init) - (0xc0000000 -0x00000000)) {

__initcall_start = .;

*(.initcallearly.init) __early_initcall_end = .; *(.initcall0.init) *(.initcall0s.init) *(.initcall1.init) *(.initcall1s.init) *(.initcall2.init) *(.initcall2s.init) *(.initcall3.init) *(.initcall3s.init) *(.initcall4.init) *(.initcall4s.init) *(.initcall5.init) *(.initcall5s.init) *(.initcallrootfs.init) *(.initcall6.init) *(.initcall6s.init) *(.initcall7.init) *(.initcall7s.init)

__initcall_end = .;

}

以及do_initcalls:

static void __init do_initcalls(void)

{

initcall_t *call;

for (call = __initcall_start; call < __initcall_end; call++)

do_one_initcall(*call);

/* Make sure there is no pending stuff from the initcall sequence */

flush_scheduled_work();

}

那么就不难理解阁下模块中的module_init中的初始化函数何时被调用了:在系统启动过程中start_kernel()->rest_init()->kernel_init()->do_basic_setup()->do_initcalls()。

2.在MODULE被定义的情况下(大部分可动态加载的driver模块都属于此, obj-m),module_init定义如下:

#define module_init(initfn) \

static inline initcall_t __inittest(void) \

{ return initfn; } \

int init_module(void) __attribute__((alias(#initfn)));

这段宏定义关键点是后面一句,通过alias将initfn变名为init_module。前面那个__inittest的定义其实是种技巧,用来对initfn进行某种静态的类型检查,如果阁下将模块初始化函数定义成,比如,void gpio_init(void)或者是int gpio_init(int),那么在编译时都会有类似下面的warning:

GPIO/fsl-gpio.c: In function '__inittest':

GPIO/fsl-gpio.c:46: warning: return from incompatible pointer type

通过module_init将模块初始化函数统一别名为init_module,这样以后insmod时候,在系统内部会调用sys_init_module()去找到init_module函数的入口地址。

如果objdump -t gpio.ko,就会发现init_module和gpio_init位于相同的地址偏移处。简言之,这种情况下模块的初始化函数在insmod时候被调用。

原文标题:嵌入式Linux设备驱动篇module_init 详解

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

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

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

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

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

Molex推出单排镀金Pico-Clasp线对板连接器

MolexPico-Clasp线对板连接器又添新成员-该型号为单排镀金,内置锁扣直角接头,与现有双排....
发表于 06-18 16:54 8次 阅读
Molex推出单排镀金Pico-Clasp线对板连接器

Molex发布混合式FTTA-PTTA光缆解决方案

全球领先的电子解决方案制造商 Molex 发布用于手机信号发射塔的混合式 FTTA(光纤接入天线)-....
发表于 06-18 16:43 6次 阅读
Molex发布混合式FTTA-PTTA光缆解决方案

可靠的连接器是无人机成功的秘诀

无人机的使用越来越广泛,技术也越来越复杂。今天,我们只谈商用小型无人机。无人机的进步与发展,与所采用....
发表于 06-18 11:25 27次 阅读
可靠的连接器是无人机成功的秘诀

关于车载蓝牙连接器 哪种更好用

现在的车子都是自带蓝牙或者多媒体上面自带了蓝牙的功能;但是老式的车子像桑塔纳这种都只能听听收音机,而....
发表于 06-18 11:21 9次 阅读
关于车载蓝牙连接器 哪种更好用

浅谈表带触指技术及其在光伏连接器中的应用

光伏产业发展至今,技术的革新层出不穷。对于光伏连接器来说,仅仅经历了两代的转变,或许“稳”才是其发展....
发表于 06-18 11:12 10次 阅读
浅谈表带触指技术及其在光伏连接器中的应用

连接器护理Web课程

连接器护理Web课程
发表于 06-18 10:24 22次 阅读
连接器护理Web课程

C4201系列4.20毫米节距线对线和线对板连接器的数据手册免费下载

本文档的主要内容详细介绍的是C4201系列4.20毫米节距线对线和线对板连接器的数据手册免费下载。
发表于 06-18 08:00 9次 阅读
C4201系列4.20毫米节距线对线和线对板连接器的数据手册免费下载

C6201系列6.20毫米节距线对线和线对板连接器的数据手册免费下载

本文档的主要内容详细介绍的是C6201系列6.20毫米节距线对线和线对板连接器的数据手册免费下载。
发表于 06-18 08:00 6次 阅读
C6201系列6.20毫米节距线对线和线对板连接器的数据手册免费下载

同轴电缆跳线测试方法

在机房布线中,要使用许多类型的跳线。传输电信号的跳线多使用同轴电缆跳线(传输2M信号也可使用双绞线跳线)。同轴电缆跳线由同...
发表于 06-18 07:43 16次 阅读
同轴电缆跳线测试方法

uCOS信号量源码的详细资料分析

本文档的主要内容详细介绍的是uCOS信号量源码的详细资料分析。 信号量相关的函数 创建一个信号量....
发表于 06-17 17:38 11次 阅读
uCOS信号量源码的详细资料分析

如何使用Linux操作系统进行智能家居的设计

智能家居是当前社会一个新颖的话题,也是电子技术发展的方面,把电子技术充分应用在生活中。然而到目前为止....
发表于 06-17 17:38 31次 阅读
如何使用Linux操作系统进行智能家居的设计

教你如何预测连接器的使用寿命

伴随着工业生产对电子产品无故障工作性能的要求不断增强,在连接器产品的设计要求中,提高连接器产品的使用....
发表于 06-17 16:56 50次 阅读
教你如何预测连接器的使用寿命

RJ45连接器的产品知识介绍

RJ45连接器在我们平时的生活中用得到的地方是很多的,可以说有用到网络的地方,基本都会有用到RJ45....
发表于 06-17 16:53 44次 阅读
RJ45连接器的产品知识介绍

PCB板端子的种类及特定导线线端的识别方法

PCB板端子是指应用于印刷线路板电气连接中的接线端子业内被成为PCB端子或PCB连接器,用于实现电气....
的头像 牵手一起梦 发表于 06-17 15:42 160次 阅读
PCB板端子的种类及特定导线线端的识别方法

Edge 浏览器可能会发布 Linux 版

从技术上来说,想要制作 Edge for Linux 的话,其实是没有任何难度的
的头像 Linux爱好者 发表于 06-17 11:37 372次 阅读
Edge 浏览器可能会发布 Linux 版

利用线程制作简单定时器

其实.net有为我们准备专门的Timer定时器,功能也能满足大部分的需求,只是有时候可能我们只需要一....
发表于 06-17 11:31 50次 阅读
利用线程制作简单定时器

小型化下的产品可靠性这是连接器技术难点

随着现代科技的飞速发展,如今几乎大部分人都配备手机,款式多种多样,生产制造的手机也会用到很多种连接器....
发表于 06-17 11:16 42次 阅读
小型化下的产品可靠性这是连接器技术难点

解决电源连接器效率难题的四个设计步骤

现在的电子设备,为了达到提升电源系统工作效率的目的,在保证系统功能正常运行的前提下,设计时增加电源整....
发表于 06-17 11:14 31次 阅读
解决电源连接器效率难题的四个设计步骤

A1004和A1201系列1.00mm节距线对板超薄连接器的数据手册免费下载

本文档的主要内容详细介绍的是A1004和A1201系列1.00mm节距线对板超薄连接器的数据手册免费....
发表于 06-17 08:00 13次 阅读
A1004和A1201系列1.00mm节距线对板超薄连接器的数据手册免费下载

A1002系列1.00mm节距线对板连接器的数据手册免费下载

本文档的主要内容详细介绍的是A1002系列1.00mm节距线对板连接器的数据手册免费下载。
发表于 06-17 08:00 11次 阅读
A1002系列1.00mm节距线对板连接器的数据手册免费下载

为什么2440移植Linux在source insight中怎么找不到head.s?

2440移植Linux在 source insight 中怎么找不到head.s.  添加的时候我全部加进去了!怎么找不呀!...
发表于 06-16 21:51 70次 阅读
为什么2440移植Linux在source insight中怎么找不到head.s?

感受开源之美共享Linux的安全与便捷

一提到哪种系统更安全这个问题时,大家首先就会说开源的系统更安全,为什么呢?这是因为它不仅具有着广泛的....
发表于 06-15 10:56 56次 阅读
感受开源之美共享Linux的安全与便捷

IDC连接器的排线使用什么样的绝缘材料

在众多的连接器产品中,IDC连接器是有二件式和三件式的,其中三件式是有带反折弯的,它的目的和优点是保....
发表于 06-15 10:31 46次 阅读
IDC连接器的排线使用什么样的绝缘材料

解决连接器受电子产品小型化约束的设计功能

随着科技的发展,一些可穿戴式和移动式的电子产品逐渐转向小型化。这是一个大问题!因为产品小型化会导致内....
发表于 06-15 10:29 35次 阅读
解决连接器受电子产品小型化约束的设计功能

ARM与嵌入式linux应该如何入门六点建议资料免费下载

由于很多人总问这个问题,所以这里做一个总结供大家参考。这里必须先说明,以下的步骤都是针对Linux系....
发表于 06-14 17:35 84次 阅读
ARM与嵌入式linux应该如何入门六点建议资料免费下载

如何使用Matlab进行船舶静水力性能数值计算的资料说明

本文提出一种基于Matlab的船舶静水力性能数值计算方法, 该方法完全独立于传统的表格算法, 方便快....
发表于 06-14 16:39 32次 阅读
如何使用Matlab进行船舶静水力性能数值计算的资料说明

浅析SIM卡座连接器的组件知识和危害性能指标的因素

目前SIM卡座连接器的使用在电子领域上发展飞快,随着电子市场的需求不断拓展,SIM卡座连接器成为了电....
发表于 06-14 16:38 39次 阅读
浅析SIM卡座连接器的组件知识和危害性能指标的因素

接线端子的优点和缺点是什么

在组装电路时,不仅仅要重视电线和焊接的组装工艺,接线端子也是一个至关重要的组件。那么接线端子的主要功....
发表于 06-14 16:31 59次 阅读
接线端子的优点和缺点是什么

射频连接器的选用

射频同轴连接器射频同轴连接器的命名方法型号命名射频同轴连接器的型号由主称代号和结构代号两部分组成,中....
发表于 06-14 14:40 52次 阅读
射频连接器的选用

生产工艺上端子连接器对工业有什么需求

在现代生产工艺上常用到的接线端子类型的很多,接线端子可以根据不同情况进行分类,特别安装的情况也可以进....
发表于 06-14 10:53 39次 阅读
生产工艺上端子连接器对工业有什么需求

函数调用后使窗口无效还用调用函数来重绘吗

WM_InvalidateWindow()这个函数调用后使窗口无效, 在这之后还用调用GUI_Exec()这个函数来重绘吗,还是在调用完WM_I...
发表于 06-14 04:35 18次 阅读
函数调用后使窗口无效还用调用函数来重绘吗

ewin移植出现TF5206 INIT SCAN这两个函数没定义

ewin移植出现 TF5206 INIT  SCAN  这两个函数没定义 (移植文件里 定义了 )  为什么 ...
发表于 06-14 04:35 20次 阅读
ewin移植出现TF5206 INIT SCAN这两个函数没定义

Matlab的简介和使用及Matlab与数值分析相关内容说明

Matlab软件是一个功能非常强大的数学软件。 包括:科学计算、符号计算、图形处理等功能。 Mat....
发表于 06-13 16:24 23次 阅读
Matlab的简介和使用及Matlab与数值分析相关内容说明

什么因素会影响RJ45连接器PIN针接触电阻的可靠性

我们知道RJ45是布线系统中信息插座连接器的一种,连接器由插头(接头、水晶头)和插座(模块)组成,插....
发表于 06-13 16:07 47次 阅读
什么因素会影响RJ45连接器PIN针接触电阻的可靠性

连接器与接插件以及接线端子这三者区别在哪里

对于刚刚开始接触连接器行业的部分从业者,可能前期都会分不清“连接器”、“接插件”、“接线端子”三者之....
发表于 06-13 16:04 80次 阅读
连接器与接插件以及接线端子这三者区别在哪里

固定连接器插针的三种方法

连接器上有很多插针,连接器插针的主要功能是用来和相关设备进行互连的,所以连接器的插针很关键,为了保持....
发表于 06-13 16:01 66次 阅读
固定连接器插针的三种方法

赫联电子亚太新增日本Hirose供应商

赫联电子亚太新增日本Hirose供应商,专业的互连与机电产品授权分销商赫联电子(Heilind El....
的头像 人间烟火123 发表于 06-13 13:56 132次 阅读
赫联电子亚太新增日本Hirose供应商

压接端子线时应杜绝的10个不良问题

压接线是所有线束制造商的核心技术,端子线作为常用的信号传输电子线束,在现代电器设备的应用中,几乎无处....
发表于 06-13 11:02 58次 阅读
压接端子线时应杜绝的10个不良问题

什么是双DVI接口连接器

双DVI是一种数字视频接口连接器,有24个引脚,在其右侧以网格状矩形格式排列。双DVI接口连接器也称....
发表于 06-13 11:00 61次 阅读
什么是双DVI接口连接器

当今连接器行业的技术创新方向在未来有哪些

从早期到现在的连接器行业中,因为连接器精密冲压技术和注塑成型技术的成功,实现了连接器冲压件和注塑件能....
发表于 06-13 10:53 68次 阅读
当今连接器行业的技术创新方向在未来有哪些

请问我该怎么办才能用CyUSB做Linux?

你好,先生, 我想用CyUSB做Linux。 我该怎么办? 请帮助… 以上来自于百度翻译      以下...
发表于 06-13 08:52 186次 阅读
请问我该怎么办才能用CyUSB做Linux?

请问我该怎么办才能用CYUSB编写FX2LP的Linux程序?

你好,先生, 我想用CYUSB编写FX2LP的Linux程序 我该怎么办? 帮助你 以上来自于百度翻译    &...
发表于 06-13 08:37 221次 阅读
请问我该怎么办才能用CYUSB编写FX2LP的Linux程序?

MYD-JX8MX板上处理器开发板的数据手册免费下载

为响应行业应用和满足客户需求,米尔推出了基于 NXP 公司 i.MX8M 系列芯片的开发平台 MYD....
发表于 06-13 08:00 20次 阅读
MYD-JX8MX板上处理器开发板的数据手册免费下载

SKM55U超高灵敏度和低功耗Glonass和GPS鼠标数据手册免费下载

SkyNav SKM55U系列带有嵌入式Glonass/GPS天线,即使在恶劣的Glonass/GP....
发表于 06-13 08:00 31次 阅读
SKM55U超高灵敏度和低功耗Glonass和GPS鼠标数据手册免费下载

长江C2504系列2.50毫米节距线对线连接器的数据手册免费下载

本文档的主要内容详细介绍的是长江C2504系列2.50毫米节距线对线连接器的数据手册免费下载。
发表于 06-13 08:00 18次 阅读
长江C2504系列2.50毫米节距线对线连接器的数据手册免费下载

基于ARM-Linux的MAX1303驱动程序的组成模块和实现方法设计

摘要:针对数据采集与处理系统的应用需求,设计了嵌入Linux的ARM9处理器LPC3250与16位AD采样芯片MAX1303的硬件接口和...
发表于 06-13 05:00 183次 阅读
基于ARM-Linux的MAX1303驱动程序的组成模块和实现方法设计

请问这个函数该怎么写?

怎么写这个函数呢 ?矩阵键盘写好了?原理图是用两个573锁存器驱动数码管的...
发表于 06-13 04:35 125次 阅读
请问这个函数该怎么写?

为什么总是为连接器的交期而发愁

随着现在生活节奏的加快,人们在面对需求时对时间观念愈加重视!就依连接器生产厂家数量而言就有上千家,您....
发表于 06-12 17:00 55次 阅读
为什么总是为连接器的交期而发愁

连接器线束加工这个问题很重要不容小觑

今天觉得很有必要写出这一篇文章让更多有此困惑的企业不再为错失订单而可惜,这年头“酒香也怕巷子深” ,....
发表于 06-12 16:56 61次 阅读
连接器线束加工这个问题很重要不容小觑

关于选择PCB板“针座”的一些知识点

很多人看到这个问题心想这有什么难的? 真正的遇到产品您是否能分得清呢。“针座”连接器行业中又称之为“....
发表于 06-12 16:51 80次 阅读
关于选择PCB板“针座”的一些知识点

Abaqus和python学习入门体会资料免费下载

自己的论文要用到有限元进行数值模拟分析,以前都用ansys计算,可ansys中岩土的本构模型只有D-....
发表于 06-12 15:29 24次 阅读
Abaqus和python学习入门体会资料免费下载

立讯精密介于中美贸易摩擦影响较小 相关产品基本已移转至越南生产

立讯精密在近日关于年报问询函的回复公告中提到,公司目前海外营业收入占比虽然接近九成,但由于受中美贸易....
的头像 半导体投资联盟 发表于 06-12 14:48 242次 阅读
立讯精密介于中美贸易摩擦影响较小 相关产品基本已移转至越南生产

嵌入式Linux移动机器人控制系统

移动机器人控制系统在初始化完成后,利用系统调用fock机制分别为语音识别、航向测量与计算和超声波测距....
的头像 倩倩 发表于 06-12 14:29 200次 阅读
嵌入式Linux移动机器人控制系统

工业4.0+物联网将使国内连接器厂家研发脚步加快

工业4.0的到来,意味着工业机器人取代人工的速度将被加快,而机器设备内部不可或缺的连接器是一个庞大的....
发表于 06-12 10:59 94次 阅读
工业4.0+物联网将使国内连接器厂家研发脚步加快

连接器如何确保流出的产品具有优良的电气性能

连接器的性能是决定连接器使用寿命长久的关键性因素,其基本性能分为3大类:机械性能、电气性能以及环境性....
发表于 06-12 10:57 48次 阅读
连接器如何确保流出的产品具有优良的电气性能

AI时代对连接器的发展方向造成了哪些变化

近几年陆陆续续向着智能时代迈进,人工智能(AI)被认为是第四次工业革命的重要组成部分,智能家居、无人....
发表于 06-12 10:54 60次 阅读
AI时代对连接器的发展方向造成了哪些变化

TE Connectivity 三重锁扣式电源连接器

TE Connectivity 三重锁扣式电源(PTL) 连接器系统共有三种锁扣方法,在设计上进行了强化,具有更高的稳定性和可靠性,可...
发表于 06-12 09:30 85次 阅读
TE Connectivity 三重锁扣式电源连接器

国内连接器厂家在汽车领域走向趋势

在这个连接器稳定性为王的时代,国内连接器厂家相比国外企业技术实力还是有些差距,然而国内庞大的市场给了....
发表于 06-11 16:52 97次 阅读
国内连接器厂家在汽车领域走向趋势

优质连接器电镀需考虑哪方面的因素

在电子和电气工业中,点接触用保护和耐磨层的应用正不断增多。接触件作为电子连接器的核心零部件,通过便处....
发表于 06-11 16:46 37次 阅读
优质连接器电镀需考虑哪方面的因素

解析端子压接工艺中容易出现的10个问题及解决方法

连接器应用十分广泛,从小到无线蓝牙耳机大到火箭军工等领域都存在着它的身影,而连接器关键的部件就是它的....
发表于 06-11 16:40 63次 阅读
解析端子压接工艺中容易出现的10个问题及解决方法

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