IMX257 混杂设备miscdevice驱动程序

2024-08-14  

在Linux驱动中把无法归类的五花八门的设备定义为混杂设备(用miscdevice结构体表述)。miscdevice共享一个主设备号MISC_MAJOR(即10),但次设备号不同。 所有的miscdevice设备形成了一个链表,对设备访问时内核根据次设备号查找对应的miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。 在内核中用struct miscdevice表示miscdevice设备,然后调用其file_operations结构中注册的文件操作接口进行操作。miscdevice的API实现在drivers/char/misc.c中。

 

一、混杂设备介绍

1. miscdevice结构体

struct miscdevice {

int minor; //次设备号

const char *name; //设备的名称

const struct file_operations *fops; //文件操作

struct list_head list; //misc_list的链表头

struct device *parent; //父设备(Linux设备模型中的东东了,哈哈)

struct device *this_device; //当前设备,是device_create的返回值,下边会看到

};

 

2. misc子系统初始化函数

  1. static int __init misc_init(void)   

  2. {   

  3.     int err;   

  4.     

  5. #ifdef CONFIG_PROC_FS   

  6.     /*创建一个proc入口项*/  

  7.     proc_create('misc', 0, NULL, &misc_proc_fops);                   

  8. #endif   

  9.     /*在/sys/class/目录下创建一个名为misc的类*/  

  10.     misc_class = class_create(THIS_MODULE, 'misc');   

  11.     err = PTR_ERR(misc_class);   

  12.     if (IS_ERR(misc_class))   

  13.         goto fail_remove;   

  14.      

  15.     err = -EIO;  

  16.     /*注册设备,其中设备的主设备号为MISC_MAJOR,为10。设备名为misc,misc_fops是操作函数的集合*/   

  17.     if (register_chrdev(MISC_MAJOR,'misc',&misc_fops))   

  18.         goto fail_printk;   

  19.     return 0;   

  20.      

  21. fail_printk:   

  22.     printk('unable to get major %d for misc devices/n', MISC_MAJOR);   

  23.     class_destroy(misc_class);   

  24. fail_remove:   

  25.     remove_proc_entry('misc', NULL);   

  26.     return err;   

  27. }   

  28. /*misc作为一个子系统被注册到linux内核中*/  

  29. subsys_initcall(misc_init);   

 

下边是register_chrdev函数的实现:

  1. int register_chrdev(unsigned int major, const char *name,  

  2.             const struct file_operations *fops)  

  3. {  

  4.     struct char_device_struct *cd;  

  5.     struct cdev *cdev;  

  6.     char *s;  

  7.     int err = -ENOMEM;  

  8.     /*主设备号是10,次设备号为从0开始,分配256个设备*/  

  9.     cd = __register_chrdev_region(major, 0, 256, name);  

  10.     if (IS_ERR(cd))  

  11.         return PTR_ERR(cd);  

  12.     /*分配字符设备*/  

  13.     cdev = cdev_alloc();  

  14.     if (!cdev)  

  15.         goto out2;  

  16.     

  17.     cdev->owner = fops->owner;  

  18.     cdev->ops = fops;  

  19.     /*Linux设备模型中的,设置kobject的名字*/  

  20.     kobject_set_name(&cdev->kobj, '%s', name);  

  21.     for (s = strchr(kobject_name(&cdev->kobj),'/'); s; s = strchr(s, '/'))  

  22.         *s = '!';  

  23.     /*把这个字符设备注册到系统中*/     

  24.     err = cdev_add(cdev, MKDEV(cd->major, 0), 256);  

  25.     if (err)  

  26.         goto out;  

  27.     

  28.     cd->cdev = cdev;  

  29.     

  30.     return major ? 0 : cd->major;  

  31. out:  

  32.     kobject_put(&cdev->kobj);  

  33. out2:  

  34.     kfree(__unregister_chrdev_region(cd->major, 0, 256));  

  35.     return err;  

  36. }  

 

来看看这个设备的操作函数的集合:

  1. static const struct file_operations misc_fops = {   

  2.     .owner      = THIS_MODULE,   

  3.     .open       = misc_open,   

  4. };   

可以看到这里只有一个打开函数,用户打开miscdevice设备是通过主设备号对应的打开函数,在这个函数中找到次设备号对应的相应的具体设备的open函数。它的实现如下:

  1. static int misc_open(struct inode * inode, struct file * file)   

  2. {   

  3.     int minor = iminor(inode);   

  4.     struct miscdevice *c;   

  5.     int err = -ENODEV;   

  6.     const struct file_operations *old_fops, *new_fops = NULL;   

  7.         

  8.     lock_kernel();   

  9.     mutex_lock(&misc_mtx);   

  10.     /*找到次设备号对应的操作函数集合,让new_fops指向这个具体设备的操作函数集合*/  

  11.     list_for_each_entry(c, &misc_list, list) {   

  12.         if (c->minor == minor) {   

  13.             new_fops = fops_get(c->fops);           

  14.             break;   

  15.         }   

  16.     }   

  17.              

  18.     if (!new_fops) {   

  19.         mutex_unlock(&misc_mtx);   

  20.         /*如果没有找到,则请求加载这个次设备号对应的模块*/  

  21.         request_module('char-major-%d-%d', MISC_MAJOR, minor);   

  22.         mutex_lock(&misc_mtx);   

  23.         /*重新遍历misc_list链表,如果没有找到就退出,否则让new_fops指向这个具体设备的操作函数集合*/  

  24.         list_for_each_entry(c, &misc_list, list) {   

  25.             if (c->minor == minor) {   

  26.                 new_fops = fops_get(c->fops);   

  27.                 break;   

  28.             }   

  29.         }   

  30.         if (!new_fops)   

  31.             goto fail;   

  32.     }   

  33.      

  34.     err = 0;   

  35.     /*保存旧打开函数的地址*/  

  36.     old_fops = file->f_op;   

  37.     /*让主设备号的操作函数集合指针指向具体设备的操作函数集合*/  

  38.     file->f_op = new_fops;   

  39.     if (file->f_op->open) {  

  40.         /*使用具体设备的打开函数打开设备*/   

  41.         err=file->f_op->open(inode,file);   

  42.         if (err) {   

  43.             fops_put(file->f_op);   

  44.             file->f_op = fops_get(old_fops);   

  45.         }   

  46.     }   

  47.     fops_put(old_fops);   

  48. fail:   

  49.     mutex_unlock(&misc_mtx);   

  50.     unlock_kernel();   

  51.     return err;   

  52. }   

 

3. misc子注册函数

并且会自动生成设备节点

  1. int misc_register(struct miscdevice * misc)   

  2. {   

  3.     struct miscdevice *c;   

  4.     dev_t dev;   

  5.     int err = 0;   

  6.     /*初始化misc_list链表*/  

    [1] [2]
    关键字:混杂设备  驱动程序 引用地址:IMX257 混杂设备miscdevice驱动程序 声明:本文内容及配图由平台用户或入驻媒体撰写。文章观点仅代表作者本人,不代表EEWorld网站立场。文章及其配图仅供工程师学习之用,如有内容侵权或违规,请联系本站处理,邮箱地址:bbs_service@eeworld.com.cn

    上一篇:IMX257 输入子系统
    下一篇:IMX257 总线设备驱动模型编程之平台总线设备platform

    关注eeworld公众号 快捷获取更多信息
    关注eeworld公众号
    快捷获取更多信息
    关注eeworld服务号 享受更多官方福利
    关注eeworld服务号
    享受更多官方福利
    加好友,回复“进群” 拉你进技术交流群
    加好友,回复“进群”
    拉你进技术交流群
    汽车开发圈
    汽车开发圈
    0

    推荐阅读最新更新时间:2024-08-29 10:29

    基于S3C2410的触摸屏驱动程序设计
      引言   随着信息家电和通讯设备的普及,作为与用户交互的终端媒介,触摸屏在生活中得到广泛的应用。如何在系统中集成触摸屏模块以及在嵌入式操作系统中实现其驱动程序,都成为嵌入式系统设计者需要考虑的问题。本文主要介绍在三星S3C2410X微处理器的硬件平台上进行基于嵌入式Linux的触摸屏驱动程序设计。   硬件实现方案   SPI接口是Motorola推出的一种同步串行接口,采用全双工、四线通信系统,S3C2410X是三星推出的自带触摸屏接口的arm920T内核芯片,ADS7843为Burr-Brown生产的一款性能优异的触摸屏控制器。本文采用SPI接口的触摸屏控制器ADS7843外接四线电阻式触摸屏,这种方式最显
    [电源管理]
    基于S3C2410的触摸屏<font color='red'>驱动程序</font>设计
    双向传输设备驱动程序设计
      现有的大部分数据传输接口总线造价比较高,且难以满足实际运用中对传输速率的要求,成了阻碍整个系统性能提高的一大屏障。IEEE-1394是现今最高速的串行总线接口之一,IEEE1394lb更是在原有IEEE1394的基础上速度更快,支持距离更长,在实时批量数据传输方面有广泛的应用前景。   基于1394传输系统设备驱动文献,大部分都是基于IEEE1394a的,而IEEE1394b以其更高的速度展现出了更大的魅力,对实时大批量的数据传输具有重大意义,但是Microsoft并没有提供对1394b的支持,在Windows自带的1394不能支持其S800的速度,因此1394b在应用上受到局限,Unibrian提供了FireAPI SDK
    [单片机]
    STM32开发笔记91: SX1268驱动程序设计(发送模式)
    单片机型号:STM32L053R8T6 本系列开发日志,将详述SX1268驱动程序的整个设计过程,本篇介绍发送模式的相关驱动程序。 一、TX模式 In TX mode after ramping-up the Power-Amplifier (PA) transmits the data buffer. In TX mode the circuit can operate in different sub-modes: single mode or single with timeout mode.(在TX模式下,功率放大器(PA)启动后便可以传输数据缓冲区中的数据。在TX模式下电路可以工作不同的子模式:单模式或单超时模式
    [单片机]
    STM32开发笔记91: SX1268<font color='red'>驱动程序</font>设计(发送模式)
    PCI驱动程序开发实例
        引 言   PCI总线广泛使用在计算机中,一方面是因为该总线的数据吞吐量大,另一方面是因为该总线与具体的处理器无关。PCI硬件设备资源的分配不是硬件设计所决定的,而是由Windows操作系统根据PC机中所有硬件设备对资源的占有统一分配的。这就要求设计设备驱动程序以跨越操作系统的边界,对物理硬件进行操作。   1 DSP芯片中集成的PCI接口特点   1.1 PCI接口的内部结构   DM642片内集成一个主/从模式的PCI接口,它相当于专用的PCI接口芯片,这样可以不必深究PCI总线规范,将工作重点放在系统功能的实现上。DSP可以通过这个接口实现与PCI主机的互连。   从图1可以看出,PCI接口的内部结构
    [嵌入式]
    linux内核模块和驱动程序的编写
    linux中的大部分驱动程序,是以模块的形式编写的.这些驱动程序源码可以修改到内核中,也可以把他们编译成模块形势,在需要的时候动态加载. 一个典型的驱动程序,大体上可以分为这么几个部分: 1、注册设备 在系统初启,或者模块加载时候,必须将设备登记到相应的设备数组,并返回设备的主驱动号,例如:对快设备来说调用refister_blkdec()将设备添加到数组blkdev中.并且获得该设备号.并利用这些设备号对此数组进行索引.对于字符驱动设备来说,要使用module_register_chrdev()来获得祝设备的驱动号.然后对这个设备的所有调用都用这个设备号来实现 2、定义功能函数 对于每一个驱动函数来说.都有一
    [嵌入式]
    max532 驱动程序
    /* DA MAX532 调试*/ //注意:调试时 应该把 Vref 和 Vout 连接到一起 #i nclude reg51.h sbit MAX532_CS=P1^0; sbit MAX532_DIN=P1^1; sbit MAX532_SCLK=P1^2; void MAX532_OUT(unsigned char daout1,unsigned char daout2,unsigned char daout3); void delay() { unsigned int i,j; for(i=0;i 1000;i++) for(j=100;j 0;j--) ; } void main(void) { wh
    [单片机]
    11-S3C2440驱动学习(八)嵌入式linux-块设备驱动程序
    一、回顾字符设备驱动 主要分为简单字符设备驱动程序,和复杂字符设备驱动 1、简单字符设备驱动 对于简单的字符设备驱动,不需要采用分离分层的思想,主要包括以下几个部分。 2、复杂字符设备驱动 对于复杂的字符设备驱动,采用分离分层的思想,内核中已经实现好了核心层部分,我们只需要实现与硬件相关的部分就可以,最后形成一个总体。这样就是一个通用的字符驱动框架。如LCD驱动、V4L2驱动,当然有时候我们可以选择不采用分离分层的思想,按简单驱动程序的框架来实现一个驱动。 3、字符设备驱动常用技巧 (1) 查询方式 (2) 休眠唤醒,APP-read drv_read (3) poll机制 (4) 异步通知发信号
    [单片机]
    11-S3C2440驱动学习(八)嵌入式linux-块<font color='red'>设备</font><font color='red'>驱动程序</font>
    利用WinDriver开发PCI设备驱动程序
        摘要: WinDriver是一套PCI驱动程序开发包。它改变了传统驱动程序开发的方法与思路,极在地简化了驱动程序的编制;同时,又没有牺牲驱动程序的性能,是一套高效、快捷的PCI驱动程序开发软件包。特别适合专业硬件人员的使用。     关键词: 设备驱动程序 WinDriver PCI WinDriver是Jungo公司出版的一个设备驱动程序开发组件,它可以大大加速PCI设备驱动程序的开发。作者在实际的项目中采用了WinDriver来开发设备驱动程序,取得了相当好的运行效果。从目前国内的资料上来看,大多数设计人员还是在用DDK、Wtools开发设备驱动程序,因而作者觉得有必要向大家介绍与推荐这个软件。
    [嵌入式]

    猜您喜欢

    热门资源推荐
    热门放大器推荐
    更多
    •  pdf文件现代测试技术与系统集成 (刘君华)
    •  pdf文件汽车FlexRay总线系统开发实战 (吴宝新,郭永红,曹毅,赵东阳等编著)
    •  pdf文件嵌入式C编程实战
    •  pdf文件软件调试 第2版 卷2 Windows平台调试 (张银奎)
    •  FPGA设计技巧与案例开发详解
    •  东芝SPDT射频开关TCWA1225G
    •  信号、系统及推理
    •  超图解 ESP32 深度实作
    小广播
    有奖学习 | Multi-Die系统的设计和验证很难吗?教你轻松“拿捏”
    活动时间:即日起-10月13日
    答题赢【京东卡】 | 进入电源小课堂,了解第三代半导体材料及PI 1250V高压氮化镓芯片
    免费下载 | TE暖通空调 & 热泵解决方案资料包!
    活动时间:即日起-9月26日
    Microchip mSiC™ 产品及其在电动出行中的典型应用方案 直播报名中
    即日起—09月24日 11:00
    【干货分享】汽车ADAS学习资源——从基础到应用,全面了解ADAS
    有奖活动 | 来 Pl BridgeSwitch™ 技术中心探秘半桥电机驱动器新技术
    活动时间:即日起-9月30日
    活动奖励:50元京东卡
    ADI & WT ·世健 MCU 痛点问题探索季——第二站:直播 | MCU应用难题全力击破!报名开始啦~
    有奖直播 | 德州仪器 C2000™ 系列培训会
    直播时间:9月12日(周四)下午13:00
    直播奖励:双肩包、眼部按摩仪、LED台灯、跳绳、浴巾
    有奖直播报名| 艾迈斯欧司朗高效能源存储:工业级数据采集前端集成电路产品分享
    9月5日(周四)上午10:00-11:30
    国产FPGA安路科技研讨会-北京站 火热报名中,参会赢京东卡!
    会议时间:9月12日(周四)下午13:30
    会议地点:北京丽亭华苑酒店
    有奖学习 | Multi-Die系统的设计和验证很难吗?教你轻松“拿捏”
    活动时间:即日起-10月13日
    答题赢【京东卡】 | 进入电源小课堂,了解第三代半导体材料及PI 1250V高压氮化镓芯片
    免费下载 | TE暖通空调 & 热泵解决方案资料包!
    活动时间:即日起-9月26日
    Microchip mSiC™ 产品及其在电动出行中的典型应用方案 直播报名中
    即日起—09月24日 11:00
    【干货分享】汽车ADAS学习资源——从基础到应用,全面了解ADAS
    有奖活动 | 来 Pl BridgeSwitch™ 技术中心探秘半桥电机驱动器新技术
    活动时间:即日起-9月30日
    活动奖励:50元京东卡
    ADI & WT ·世健 MCU 痛点问题探索季——第二站:直播 | MCU应用难题全力击破!报名开始啦~
    有奖直播 | 德州仪器 C2000™ 系列培训会
    直播时间:9月12日(周四)下午13:00
    直播奖励:双肩包、眼部按摩仪、LED台灯、跳绳、浴巾
    有奖直播报名| 艾迈斯欧司朗高效能源存储:工业级数据采集前端集成电路产品分享
    9月5日(周四)上午10:00-11:30
    国产FPGA安路科技研讨会-北京站 火热报名中,参会赢京东卡!
    会议时间:9月12日(周四)下午13:30
    会议地点:北京丽亭华苑酒店
    添点儿料...
    无论热点新闻、行业分析、技术干货……
    发布文章
    推荐内容
    热门活动
    换一批
    更多
    有奖学习 | Multi-Die系统的设计和验证很难吗?教你轻松“拿捏”
    有奖电源小课堂 | PI 1250V高压氮化镓芯片
    国产FPGA安路科技研讨会-北京站 火热报名中,参会赢京东卡!
    免费申请 | MPS MIE 系列隔离式稳压 DCDC 模块!
    免费下载 | TE暖通空调 & 热泵解决方案资料包!
    设计资源 培训 开发板 精华推荐
    • 【下载】LAT1415 如何通过STM32CubeMX添加使用DSP库
    • 【下载】LAT1437 选择USBX模块生成USB CDC ACM无PD的项目
    • 【下载】LAT1420 头文件包含顺序导致Keil编译出错的问题分析
    • 【下载】LAT1447 电机测速方法以及在STM32中的实现
    • 【下载】LAT1419 从BOOT跳转到APP后运行失败的问题分析
    • 【下载】LAT1421 如何在STM32U5 TF-M工程中添加自定义服务

    最新单片机文章
    • MCS-51单片机定时器/计数器常见习题解答
      1、根据定时器 计数器0方式1逻辑结构图,分析门控位GATE取不同值时,启动定时器的工作过程。答:当GATE=0:软件启动定时器,即用指令使TCON ...
    • 单片机试验一:点亮一个发光二极管
      拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89S52的芯片,下面就看一下如何给它连线。1、电源:这当然是必不可 ...
    • 利用AT89S51单片机的T0、T1的定时计数器功能
      利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。要求能够对0-2 ...
    • 基于单片机的出租车计价器设计
      01项目介绍随着城市交通的日益繁忙,出租车行业的规范化和精确化管理需求愈发凸显。出租车计时器应运而生,作为这一需求背景下的产物。本设 ...
    • AT89S51和AT89S52这两种类型的单片机有什么区别?
      AT89S51AT89S51是一个低功耗、高性能的CMOS 8位单片机,片内含4KB的可反复擦写1000次的Flash只读程序存储器,器件采用高密度、非易失性存 ...
    • AT89S51的最小化应用
    • 89c51单片机和89s51单片机的区别,89s51单片机新增功能汇总
    • 使用Busybox制作CRAMFS文件系统成功
    • 使用BusyBox制作linux根文件系统(CramFS+mdev)
    何立民专栏 单片机及嵌入式宝典

    北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

    • 《单片机与嵌入式系统应用》历年文章目录
    • 物联网时代的嵌入式系统机遇
    • 从嵌入式系统视角看物联网
    更多开源项目推荐
    • 汽车类高侧调光后灯参考设计
    • LT3091ER 恒流恒压实验室电源的典型应用
    • 【CW32】无刷电机驱动器
    • 使用符合 EN55022 B 类(24Vin 和 48Vin,单输出)具有 EMC 滤波的 RP40-2424DFR DC/DC 转换器的典型应用
    • 具有串行接口的 LTC2381-16、16 位、250ksps、低功耗 SAR ADC 的典型应用
    • Awtrix LED Matrix 3535:Awtrix时钟LED矩阵PCB
    • Si4705-EVB,Si4705 高性能、76 至 108 MHz 数字无线电调谐器评估板
    • 具有跟踪功能的 LTM4650AIY-1 2.5V 和 3.3V 输出的典型应用电路
    • AN1269、PIC24/PIC33单片机应用电路
    • 1811571122吴瑛龙5
    更多精选电路图
    • 一个简单的红外音频链路
    • 串联晶体管稳压器电路
    • 采用SAP15组成的50W功放电路
    • 用CW34603组成改变输出电源极性的电路
    • 详解PTC热敏电阻过流保护中的应用原理
    • 使用LDR和IC555的光激活开关电路
    换一换 更多 相关热搜器件
    •  AS6214-EK
    •  STM32H7B3VIT6
    •  NJM2845DL1-05-TE1
    •  8402-221
    •  4117CO105VDC1.2
    •  T419A105M020AB4252
    •  ECC17DKDI
    •  M85049/3716W06L
    •  62GB56T1422SN760
    •  HGXO2D-N-SM5-460.0K,10/10/-/C
    更多热门文章
    • ST 向大众市场推出ST4SIM M2M用兼容GSMA的eSIM卡芯片
    • 过滤呼气阀气密性测试仪的适用范围以及特性的介绍
    • 三星Galaxy S22系列高清壁纸提前泄露
    • 纳微半导体成立全球首家电动汽车氮化镓功率芯片中心
    • 机械指针式万用表的运用办法
    • 51单片机入门 - 定时器的使用技巧
    • 西门子与微软再度携手,依托人工智能提升工业生产力
    更多每日新闻
    • 四年,AI性能提升17倍!英特尔至强6在最新MLPerf测试中成绩亮眼
    • 是德科技和SmartViser联合推出符合欧盟能效指标(EEI)法规要求的测试方案
    • 消息称美光将在西安工厂率先启动 LPCAMM 和 MRDIMM 内存模组量产
    • 英飞凌亮相2024 PCIM 以创新半导体解决方案推动低碳化和数字化
    • 关于尼得科精密检测科技(印度)有限公司的设立
    • 电动汽车真的需要三电机甚至四电机吗?
    • 纯电5C超充刚开始大规模量产,然而HEV电池早已实现50C?
    • 车联网系统静电浪涌防护策略
    • 芯力特发布带振铃抑制功能的CAN收发器——SIT1463Q
    • 小马智行获深圳市智能网联汽车高快速路测试许可
    更多往期活动
    • 阅读并了解 TE Connectivity 无创想,不奇迹 精彩专题,答题有礼!
    • 闯关赢好礼!美光出货 232 层 NAND,扩展 3D NAND 技术边界
    • 答题有礼|一起学习 Mentor PCB 手册
    • TI培训精选,学习精选电源课程,边学习边赚积分
    • 有奖直播 | 微软 Azure Sphere助力稳定,安全和灵活的物联网解决方案
    • 注册有礼 | 施耐德电器邀请您参加EP23上海国际电力电工展线上云逛展
    08月31日历史上的今天
    • 外形简洁,使用方便,深圳国威语音操作控制技术揭秘
    • STM8L101F3P6 TIM4 实现呼吸灯效果(1)
    • STM8L探索套件学习笔记-GPIO端口操作(一)
    • JTAG/SWD/ISP/SWIM详解单片机的四种烧写方式
    • stm8s开发(五) TIMER的使用:定时!
    • 应用角:汽车 - 电动汽车电池断开系统
    • 新能源汽车发展势头强劲,加速竞争淘汰
    • 游侠汽车的造车进展如何?
    • 谷歌无人驾驶尝试入华,在此领域要和百度竞争
    • 在这场变革中,国有车企们路在何方?
    厂商技术中心

    最能打国产芯

    TI 培训

    Qorvo 电源技术站

    Vicor技术站

    随便看看
    • 应用技巧/基于单片机的实时传真信息监测系统
    • 香帮主:STM32的ISP自编软件里搞个洋妞不违法吧~~~
    • 请问大神AO3401这个要怎么控制
    • Keil开发过程使用malloc申请动态内存问题
    • s3c2410开发板telnet不能访问到的问题
    • 赚分,让我沉吧
    • 【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第五十一章 手写识别实验
    • 揭晓:ST传感器移植大赛+骨振动传感器评测 评审结果
    • 新人来了!!跟给位学习了!!望各位多多指教!!
    • 浙江大学嵌入式系列技术高级学习班7月-8月开课时间表

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 综合资讯 51单片机 PIC单片机 AVR单片机 ARM单片机 嵌入式系统 汽车电子 消费电子 数据处理 视频教程 电子百科 其他技术 STM32 MSP430 单片机资源下载 单片机习题与教程

    词云: 1 2 3 4 5 6 7 8 9 10

    北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

    电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。