侵权投诉

linux系统和驱动中按键驱动的编写详解

39度创意研究所 2020-11-21 11:03 次阅读

引言

随着深度学习5G的应用,对FPGA的功能要求越来越多。因此近几年FPGA大厂纷纷将自己的器件集成了更多的内核,比如赛灵思的zynq系列就集成了armGPU,PCIE,射频处理模块等等,用于满足各种各样的需求。出身FPGA的工程师们也必须拥抱这些变化,不仅仅要精通FPGA开发,还需要了解其他方面的知识。比如基于zynq的开发者,就需要了解arm,linux驱动以及linux系统。做深度学习加速的还需要了解深度学习网络以及网络压缩等知识。学习这些知识会让你的眼界更加开阔,会站得高看得远,在开始一项任务的时候不再是盲人摸象,而是高瞻远瞩,把握全局。

这是我介绍linux系统和驱动的第4篇文章,如有不恰当的地方欢迎指正,因为本人也是处于学习入门阶段。三人行,必有我师焉。讨论的多了,问题也就清晰了。这一篇主要介绍按键驱动的编写,了解中断的处理过程,以及设备树的修改。

1. vivado工程搭建

工程搭建很简单,就是配置完zynq核的外设后,增加一个axi_gpio模块,作为外部按键的接口。虽然按键并不是直接连接到arm的IO上,但是axi_gpio也被映射到zynq系统的内存空间中,linux驱动通过读写key对应的映射内存来控制和检测。要检测到key被按下我们必须开启中断,因此axi_gpio模块设置如下图。Address editor是gpio的对应的内存空间。Zynq已经为不同外设类型分配了可选的内存映射,通常工程建立完后,由软件工具自行分配就好了。如果一些外设内存有冲突,是无法生成hdf的。

 

 

 

 

 

 

配置完成后,进行管脚约束,然后综合实现,生成bit文件。再导出hdf文件,打开SDK来生成fsbl,u-boot还使用前几篇介绍驱动中的u-boot。U-boot通常不会因为驱动的新增而修改。但是由于增加了key按键,我们需要去设备树中修改对应的配置。

具体如何修改设备树,可以到linux驱动文件夹Documentation/devicetree中去寻找对应的外设文件,其中有设备树修改的介绍。Gpio的修改可以到gpio文件夹下的gpio-zynq.txt查看。其基本形式为:

         gpio@e000a000 { #gpio-cells = <2>;
                   compatible = "xlnx,zynq-gpio-1.0";
                   clocks = <&clkc 42>;
                   gpio-controller;
                   interrupt-parent = <&intc>;
                   interrupts = <0 20 4>;
                   interrupt-controller;
                   #interrupt-cells = <2>;
                   reg = <0xe000a000 0x1000>; };

其中compatible主要是用于linux驱动去匹配设备树中相应的节点,后面我们会介绍,这个名字和那一块程序有关。主要是配置中断,其中interrupts-cell指定了interrupts有多少个属性。Interrupts的第一个属性是中断类型,第二个是中断号,最后一个表示触发类型:高电平触发、低电平触发、上升沿触发和下降沿触发四种类型。Interrupt-parent是中断所属的中断控制器。我们在SDK中产生了设备树,我们看到按键的相应节点位于amba_pl节点下,其中amba_pl是PL端的总线节点,而amba是PS端的总线节点,修改pl.dtsi中的gpio内容:

我们改了compitable的内容,同时要关注inerrupts,xlnx,all-inputs,xlnx,gpio-width这些属性。Gpio-width是宽度,all-inputs是表示为输入。

设备树修改完后就可以编译设备树文件,然后用fsbl,u-boot,设备树来制作boot.bin了。放到SD卡,启动linux系统。接下来进入关键环节,key驱动的编写。

2. 按键驱动代码剖析

对于一个刚刚入门的人来说,其实了解了驱动的基本框架就好了。每个驱动都按照它的框架进行编写和修改。能理解驱动的各个模块功能,在驱动调试或者编写中就能有的放矢。一个简单的驱动的构成也很复杂,代码也很多,篇幅有限,我只介绍主要部分。

1)platform框架

Platform是一种虚拟的平台,提供了驱动和具体硬件交互的接口。Platform_device类似于虚拟的总线,IIC,LCD,GPIO等外设都可以看做platform_device,通过它可以遍历所有的总线设备,而对应的驱动就是platform_driver。基本流程是:先注册platform_device,再注册platform_driver,然后匹配设备和驱动,最后注册整个驱动。

在linux3以前的版本,需要定义platform_device结构体,然后通过platform_device_register函数来注册设备。但是linux3.0以后出现了设备树,内核函数of_platform_default_populate_init会在内核启动后遍历设备树,自动注册每个节点对应的设备。因此只需要修改设备树参数就行了。首先看这个结构体:

static const struct of_device_id key_of_match[] __devinitdata={
         {.compatible="xlnx,gpio-keys",},
         {/*end of list*/},
};

这实际上定义了设备的匹配号,compatible就是在设备树节点axi-gpio中对应的节点匹配名称。我们只要让compitable和设备树中对应节点的值匹配上就可以将节点对应的设备注册到总线上了。

platform_driver用于对设备的搜索和配置,主要就是去解析设备树,根据设备树中节点信息来填充设备结构体对应信息或者直接对设备完成配置。

static struct platform_driver key_driver={
         .driver={
                   .name=DRIVER_NAME,
                   .owner=THIS_MODULE,
                   .of_match_table=key_of_match,
         },
         .probe=key_probe,
         .remove=key_remove,
};

我们主要关注其三个变量,of_match_table就是of_device_id结构体定义的,用来匹配节点。Probe函数用来解析节点,配置设备。Remove主要是释放在probe中使用的资源等。

编写key驱动主要就是去填充probe和remove两个函数。

来看probe函数是如何查找到设备的一些属性的,比如我们要确定key键的数量,那么我们可以这样来做:

         if(of_property_read_u32(node, "xlnx,gpio-width", &width)){
                   printk(KERN_ERR "get the gpio-width/n");
         }

通过匹配“xlnx,gpio-width”来获得key的位宽,这个属性就在设备中定义的。

如果我们要操作key,需要获得key设备的内存映射空间,这个可以通过函数platform_get_resource函数来完成。

mem=platform_get_resource(pdev, IORESOURCE_MEM, 0);
         if(!mem){
                   printk(KERN_ERR "get memory resource/n");
                   return -ENODEV;
         }

第一个参数pdev是platform_device结构体,在进入probe函数之前就已经被注册了,其指向的就是key对应的设备。第二个参数是类型,主要有IORESOURCE_MEM, IORESOURCE_IRQ等。最后一个参数是号码,指示platform_device结构体中不同的资源类型,即IORESOURCE类型。

以上获得的mem就是在设备树中由reg指定的内存映射:

reg = <0x41210000 0x10000>;

中断的获得可以通过函数:

         r_irq=irq_of_parse_and_map(node, 0);
         if(!r_irq){
                   printk(KERN_ERR "get interrupt/n");
         }

其中device_node就是设备节点,在platform_device注册的时候,含有该节点,所以可以通过该结构体获得。第二个参数表示一个设备树节点有多个中断时的索引。

通过设备树获得了硬件信息后,我们将其填充到key_device中,key_device定义如下:

struct key_dev{
         struct cdev dev;
         struct work_struct work;                 
         int irq;
         int major;
         unsigned long start_addr;
         unsigned long size;
         void __iomem *baseaddr;
         int width;
         int inout;
         int key_prs;
};

其中irq为中断号,cdev是字符设备结构体,因为key等属于字符设备。填充如下:

        lp->start_addr=mem->start;
         lp->size=mem->end-mem->start;
         lp->irq=r_irq;
         lp->width=width;

2)中断处理

在platform中我们谈到了对中断号的获取,那么取得了中断号之后如何来检测中断事件呢?中断处理过程可以被分成两部分:顶半部和底半步。顶半部主要处理硬件上比较紧急的事物,比如检测中断,底半部用于处理中断产生之后需要进行的事务处理。在底半部处理过程中不会耽误检测下一个中断。这两个部分不是绝对的,也可以只有一个部分。

驱动中首先需要定义一个中断函数,用于中断产生后进行的操作。然后申请中断,实现函数:

err=request_irq(k_dev->irq,key_interrupt, IRQF_SHARED|IRQF_TRIGGER_RISING, DRIVER_NAME, k_dev);

第一个是中断号,第二个为中断处理函数,第三个参数为中断产生类型,上升沿下降沿一类,第四个为名字,可以命名中断,最后一个是设备结构体。

释放中断就通过free_irq(unsigned int irq, void *dev_id)来完成。

实现中断底半部处理机制主要有tasklet,工作队列,软中断和线程化irq。中断机制较为复杂,任何一种机制都可以让你竭尽脑汁。入门者还是循序渐进,所以我也只用了一种简单的方法。类似锁机制,我们定义一个事件:

static DECLARE_WAIT_QUEUE_HEAD(press_queue);

然后在中断函数中唤醒这个事件,在其他函数中可以通过等待这个事件来进行中断处理。我们的中断函数为:

static irqreturn_t key_interrupt(int irq, void *dev_id)
{
         struct key_dev *dev=dev_id;
         dev->key_prs++;
         printk(KERN_INFO "interruptted/n");
         wake_up_interruptible(&press_queue);
         return IRQ_HANDLED;
}

而等待该事件放在key_read函数中:

ssize_t key_read(struct file *filp, char __user *buf, size_t count, loff_t *fops)
{
         int err;     
         struct key_dev *dev=filp->private_data;        
         wait_event_interruptible(press_queue, event_press);
         event_press=0;
         err=copy_to_user(buf, &dev->key_prs, count);
         return err ? -EFAULT : 0;
}

3)文件结构

Linux一切皆文件,任何驱动最终都被封装为一个文件,用户空间通过读写文件来操作驱动。文件操作包括打开,关闭,读和写等。我们不做具体介绍,简单列出文件结构体为:

struct file_operations key_fops={
         .owner=THIS_MODULE,
         .open=key_open,
         .read=key_read,
         .release=key_close,
};

总结

对以上进行总结就是:
1) 首先进行设备树节点属性修改;
2) 填充platform框架下的probe,remove等函数,并定义of_device_id和platform_driver结构体;
3) 申请中断,释放中断,编写中断函数等;
4) 填充文件结构,编写open,close,read等函数;

编辑:hfy


收藏 人收藏
分享:

评论

相关推荐

5G芯片的发展史

时间过得真快,还有一个多月,2020年就要结束了。 今年,是国内5G网络全面商用的第一年。虽然我们遭....
的头像 传感器技术 发表于 12-05 10:56 257次 阅读
5G芯片的发展史

Xilinx 宣布收购峰科计算,进一步提高软件可编程性并扩大开发者社区

通过将 Falcon的创新编译器技术集成到 Vitis 平台上,软件开发者无需掌握硬件专业知识就能加....
发表于 12-05 10:19 97次 阅读
Xilinx 宣布收购峰科计算,进一步提高软件可编程性并扩大开发者社区

基于FPGA器件EP1C6Q240C8实现振动模拟器的方案设计

振动台的作用之一是将被测物件置于振动台上测量其受迫振动时的表现,一般振动台的振动是由振动分析仪控制的....
发表于 12-04 18:13 156次 阅读
基于FPGA器件EP1C6Q240C8实现振动模拟器的方案设计

烽火5G智慧光网成功入选湖北首批人工智能新一代应用场景

近日,2020年东湖国际人工智能高峰会议在武汉举行。湖北省人民政府副省长肖菊华,科技部战略规划司副司....
的头像 电子魔法师 发表于 12-04 17:06 334次 阅读
烽火5G智慧光网成功入选湖北首批人工智能新一代应用场景

100家公司营收合计3887亿元 北京君正增幅达409.82%

排名第三是长电科技,该公司通过深化海内外制造基地的资源整合,加速面向 5G,高性能计算以及高端存储等....
的头像 半导体投资联盟 发表于 12-04 17:05 332次 阅读
100家公司营收合计3887亿元 北京君正增幅达409.82%

芯瑞达深耕新型显示产业,技术布局渐收成效

2020年4月28日,背光模组厂商芯瑞达正式在深交所上市,由此开启公司资本市场的新征程。
的头像 我快闭嘴 发表于 12-04 17:03 472次 阅读
芯瑞达深耕新型显示产业,技术布局渐收成效

苹果iPhone12部分型号出现网络连接中断现象

3日(以下均为当地时间)MacRumors等主要外媒报道称,苹果iPhone12的部分型号正在发生网....
的头像 我快闭嘴 发表于 12-04 16:56 302次 阅读
苹果iPhone12部分型号出现网络连接中断现象

Linux内核部分显示驱动部分的详细介绍

DirectFB是图形API存在于Frame Buffer层之上与高级图形管理层如GTK+等之下的。....
发表于 12-04 16:46 18次 阅读
Linux内核部分显示驱动部分的详细介绍

中兴百元5G手机Blade V2021抢夺低端手机市场抢夺份额

在上个月底红米带来了NOTE 9系列,虽然整个系列的配置性价比都很高,但是我们并没有等到红米刷新5G....
的头像 Les 发表于 12-04 16:45 237次 阅读
中兴百元5G手机Blade V2021抢夺低端手机市场抢夺份额

5G智慧医疗将改变医疗体制和生活方式

在今日的2020世界5G大会主论坛上,中国工程院院士钟南山发表视频致辞。
的头像 lhl545545 发表于 12-04 16:42 577次 阅读
5G智慧医疗将改变医疗体制和生活方式

中兴通讯5G网络节能降耗解决方案节省电费超10亿美金

在日前召开的“中兴通讯全球5G峰会及用户大会”上,中兴通讯与全球领先的电信、媒体、和技术(TMT)研....
的头像 lhl545545 发表于 12-04 16:38 424次 阅读
中兴通讯5G网络节能降耗解决方案节省电费超10亿美金

如何释放700M黄金频段的红利?

在中国广播电视网络有限公司指导下,700MHz技术与产业应用研讨会今日在北京·环球财讯中心召开,华为....
发表于 12-04 16:37 97次 阅读
如何释放700M黄金频段的红利?

中兴通讯5G网络建设加速,赋能百业数字化转型

连续举办8年的中国移动全球合作伙伴大会如约开启。回顾过去一年,5G网络以我们难以想象的速度在加快建设....
的头像 lhl545545 发表于 12-04 16:34 497次 阅读
中兴通讯5G网络建设加速,赋能百业数字化转型

触觉互联网将如何带来物联网IoT的新时代?

今天,互联网就是一切!它的创建是为了在全球范围内提供可互操作的通信,以实现无与伦比的多媒体和数据内容....
的头像 我快闭嘴 发表于 12-04 16:31 290次 阅读
触觉互联网将如何带来物联网IoT的新时代?

华为使5G核心网络市场收入再次实现了强劲增长

国外研究机构Dell‘Oro Group发布的2020年第三季度全球电信设备市场报告显示,该季度5G....
的头像 lhl545545 发表于 12-04 16:31 526次 阅读
华为使5G核心网络市场收入再次实现了强劲增长

英国2027年底将所有华为设备删除

据报道,英国政府周一表示,英国电信公司不得在2021年9月之后安装新的华为5G设备,这是其从高速移动....
的头像 lhl545545 发表于 12-04 16:27 386次 阅读
英国2027年底将所有华为设备删除

700MHz建设正蓄势待发,我国5G发展再添新动能

12月3日,“700MHz技术与产业应用研讨会”在北京盛大召开。本次研讨会由中国广播电视网络有限公司....
发表于 12-04 16:23 195次 阅读
700MHz建设正蓄势待发,我国5G发展再添新动能

云原生促阿里订单峰值创新高,阿里云云原生发展可期

阿里巴巴为各行各业的企业客户提供基于阿里云服务的解决方案和最佳实践,帮助企业基于阿里云特别是云原生技....
的头像 牵手一起梦 发表于 12-04 16:21 142次 阅读
云原生促阿里订单峰值创新高,阿里云云原生发展可期

企业组织为迎接5G热潮应做什么准备?

虽然人们可能认为5G是一个很酷的技术概念,但不要忽视它会对企业IT产生重大影响的事实。
的头像 如意 发表于 12-04 16:08 107次 阅读
企业组织为迎接5G热潮应做什么准备?

中国电信推出全屋WIFI礼包全面升级服务

中国电信山东公司在近日交出了一份5G一周年成绩单,向外界披露了山东省的5G网络建设情况。
的头像 lhl545545 发表于 12-04 16:06 282次 阅读
中国电信推出全屋WIFI礼包全面升级服务

2024年手机将从天空中获取其5G信号

在不久的将来,手机可能会从天空中获取其5G信号,而不是从地面上附近的天线杆中获取信号。这是一种无需增....
发表于 12-04 16:04 46次 阅读
2024年手机将从天空中获取其5G信号

中兴通讯促进5G驱动数字化转型与使能传统行业发展

商务部外贸发展局局长吴政平与中兴通讯执行董事、执行副总裁顾军营共同签署《商务部外贸发展事务局与中兴通....
的头像 lhl545545 发表于 12-04 16:01 268次 阅读
中兴通讯促进5G驱动数字化转型与使能传统行业发展

龚克:5G实现了人和物、物和物之间的联系,应该“热”在各种行业应用上

随着全球新一轮科技革命和产业变革的深入推进,以5G、工业互联网、人工智能等为代表的新一代信息技术,日....
的头像 青岛科技通 发表于 12-04 16:00 193次 阅读
龚克:5G实现了人和物、物和物之间的联系,应该“热”在各种行业应用上

中科创达联合创新中心暨高通AI创新实验室揭牌

由浙江杭州未来科技城管理委员会、高通(中国)控股有限公司(Qualcomm)、中科创达软件股份有限公....
的头像 lhl545545 发表于 12-04 15:55 296次 阅读
中科创达联合创新中心暨高通AI创新实验室揭牌

中国移动成为全国最大的“5G+智能电网”应用示范区

来自中兴官网的消息显示,近日,南方电网联合中国移动、中兴,在广州顺利完成电力专用UPF建设并成功入网....
的头像 lhl545545 发表于 12-04 15:49 259次 阅读
中国移动成为全国最大的“5G+智能电网”应用示范区

用户吐槽iPhone 12失去了所有的信号条

自从苹果公司在10月份推出iPhone 12以来,越来越多的使用这款手机的用户报告说,他们的5G和L....
的头像 lhl545545 发表于 12-04 15:43 276次 阅读
用户吐槽iPhone 12失去了所有的信号条

中国收购一家5G在内的卫星和无线电技术的德国公司

据法新社,当地媒体周四报道,德国总理安格拉·默克尔(Angela Merkel)政府以国家安全风险为....
的头像 lhl545545 发表于 12-04 15:34 296次 阅读
中国收购一家5G在内的卫星和无线电技术的德国公司

卫星通信和5G有什么关系?

近些年来,卫星通信引起了国内外的广泛关注。 人们普遍看好这项技术的长远发展,认为它会对现有的通信技术....
的头像 中科院半导体所 发表于 12-04 15:30 207次 阅读
卫星通信和5G有什么关系?

FPGA的设计流程分享

  1、电路设计:方**证,系统设计和FPGA芯片选择   2、设计输入:HDL和原理图输入 HDL优点:语言与芯片工艺无关 ...
发表于 12-04 15:28 0次 阅读
FPGA的设计流程分享

美国五大科技巨头边缘计算布局策略

算力边缘化,催生了很多商业机会。 边缘计算是分布式计算架构,通过处理物理意义上更接近设备的数据,减少....
的头像 DeepTech深科技 发表于 12-04 15:23 218次 阅读
美国五大科技巨头边缘计算布局策略

稳懋在全球功率放大器(PA)市占已高达七成

全球砷化镓代工龙头稳懋董事长陈进财表示,稳懋正在全球第五代行动通讯(5G)发展的浪头上,雄霸全球砷化....
的头像 我快闭嘴 发表于 12-04 15:07 246次 阅读
稳懋在全球功率放大器(PA)市占已高达七成

骁龙888选择集成基带的理由是什么

去年年底,高通发布骁龙865之后,最焦点的问题莫过于外挂设计的骁龙X55基带,集成、外挂之争也是众所....
的头像 牵手一起梦 发表于 12-04 14:51 165次 阅读
骁龙888选择集成基带的理由是什么

欧盟重塑SEP话语权,或将改变5G等产业市场格局

标准必要专利(SEP)已经成为支撑未来科技发展不可回避的问题,随着5G技术被广泛应用到汽车、物联网、....
的头像 我快闭嘴 发表于 12-04 14:33 297次 阅读
欧盟重塑SEP话语权,或将改变5G等产业市场格局

国内外700MHz产业发展方向差异显著

“我国700MHz频段带宽大,在产业发展和业务发展方面就可以获得更多机遇。”中国信科集团大唐移动5G....
的头像 我快闭嘴 发表于 12-04 14:13 208次 阅读
国内外700MHz产业发展方向差异显著

车联网产业进入爆发前的战略机遇期

在今日召开的“2020中国国际车联网技术大会”上,中国通信学会副理事长兼秘书长张延川指出,车联网作为....
的头像 lhl545545 发表于 12-04 14:10 168次 阅读
车联网产业进入爆发前的战略机遇期

北京移动完成北斗高精度定位网络“双网合璧”调试

2020年12月4日,由房山区人民政府、中国移动北京公司(北京移动)、中关村发展集团以及襄阳达安汽车....
的头像 lhl545545 发表于 12-04 13:53 221次 阅读
北京移动完成北斗高精度定位网络“双网合璧”调试

Verizon和AT&T共同努力解锁专网机会,对市场的重要性如何

来自市场研究公司Omdia的最新报告称,最近,Verizon和AT&T等电信服务提供商都宣布了与网络....
的头像 牵手一起梦 发表于 12-04 13:51 83次 阅读
Verizon和AT&T共同努力解锁专网机会,对市场的重要性如何

车联网产业成为新一代信息通信网络发展的战略方向

在今日召开的“2020中国国际车联网技术大会”上,中国通信学会副理事长兼秘书长张延川指出,车联网作为....
的头像 牵手一起梦 发表于 12-04 13:39 198次 阅读
车联网产业成为新一代信息通信网络发展的战略方向

Viettel将使越南成为全球首批接入5G网络的国家之一

越南河内2020年12月3日 /美通社/ -- 越南军用电子电信集团(Viettel Group)宣....
的头像 Les 发表于 12-04 13:37 91次 阅读
Viettel将使越南成为全球首批接入5G网络的国家之一

集成式5G SOC骁龙888,更优秀的功耗和发热控制

高通目前正式端出了他们新一代的旗舰级5G SoC平台骁龙888。这一5G SoC移动平台通过全集成的....
的头像 电子观察说 发表于 12-04 13:12 118次 阅读
集成式5G SOC骁龙888,更优秀的功耗和发热控制

iPhone 12系列电池不耐用的原因分析

今天很多果粉都在吐槽iPhone 12系列的电池不耐用,有网友表示,在几乎没有后台活动的情况下,iP....
的头像 我快闭嘴 发表于 12-04 12:03 448次 阅读
iPhone 12系列电池不耐用的原因分析

电源管理市场明显进入了加速整合期

近日,IC设计厂商联发科通过旗下立锜斥资8500万美元收购英特尔旗下Enpirion电源管理芯片产品....
的头像 半导体投资联盟 发表于 12-04 11:45 248次 阅读
电源管理市场明显进入了加速整合期

豆农试点使用华为5G技术和设备提高生产率

据国外媒体报道,巴西农业州戈亚斯州 (Goias)周四推出了一个试点项目,通过使用华为提供的 5G ....
的头像 璟琰乀 发表于 12-04 11:43 210次 阅读
豆农试点使用华为5G技术和设备提高生产率

一文解析机器视觉系统现状及发展前景

机器视觉系统集成是一门学科,随着新成像技术的不断发展,这门学科的发展势头依然强劲。
发表于 12-04 11:37 113次 阅读
一文解析机器视觉系统现状及发展前景

5G让无人机更有用武之地

5G与无人机的结合不仅包括新一代网络的接入,还有边缘计算技术等方面提高。5G作为无人机行业发展的加速....
的头像 璟琰乀 发表于 12-04 11:36 263次 阅读
5G让无人机更有用武之地

高云半导体:做深服务,持续深耕FPGA芯片市场

另外,小蜜蜂在原有产品GW1N基础上进行了微创新,针对不同细分市场扩展了众多子系列。比如超低功耗的G....
的头像 半导体投资联盟 发表于 12-04 11:34 198次 阅读
高云半导体:做深服务,持续深耕FPGA芯片市场

轻舟智航携手华砺智行推出5G+V2X无人公交方案

12月3日消息,Robobus提供商轻舟智航与V2X车联网解决方案提供商华砺智行在世界智能汽车大会期....
的头像 我快闭嘴 发表于 12-04 11:25 622次 阅读
轻舟智航携手华砺智行推出5G+V2X无人公交方案

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】visual studio code编写;Linux编译与Hiburn烧录(三)

烧录的话,我用visual studio code一直报错,后来就了解到一个新的方法,用Hitool烧录。但是现在百度上的Hitool里面的芯片匹配...
发表于 12-04 11:25 67次 阅读
【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】visual studio code编写;Linux编译与Hiburn烧录(三)

2023年20%的企业将实现公有云集成

日前,Gartner公布2020年全球主存储魔力象限报告(Magic Quadrant for Pr....
的头像 lhl545545 发表于 12-04 11:10 115次 阅读
2023年20%的企业将实现公有云集成

全球95%的智能手机都使用ARM的低功耗芯片架构

据CNBC报道,ARM首席执行官西蒙·塞格斯(Simon Segars)在接受CNBC采访时谈到,他....
的头像 lhl545545 发表于 12-04 11:07 452次 阅读
全球95%的智能手机都使用ARM的低功耗芯片架构

高通展出十多款搭载高通骁龙865移动平台的5G旗舰手机

以“新时代,共享未来”为主题的第三届中国国际进口博览会(简称“进博会”)在上海国家会展中心举办。大会....
的头像 lhl545545 发表于 12-04 10:58 470次 阅读
高通展出十多款搭载高通骁龙865移动平台的5G旗舰手机

使用EDA实现出租车计价器的设计资料合集

介绍了出租车计费器系统的组成及工作原理,简述了在EDA平台上用FPGA器件构成该数字系统的设计思想和....
发表于 12-04 08:00 21次 阅读
使用EDA实现出租车计价器的设计资料合集

用两块同步FIFO实现一个异步FIFO功能

也就是说用一个25M频率的FIFO写入数据,用另一个100M(或者不同频)的FIFO读出数据。该如何实现呢?不使用异步FIFO...
发表于 12-03 20:47 27次 阅读
用两块同步FIFO实现一个异步FIFO功能

FPGA_100天之旅_DA设计

发表于 12-03 18:54 303次 阅读
FPGA_100天之旅_DA设计

在RK3399开发板香橙派Orange Pi 4B上使用docker

(1)直接运行执行docker search arm64v8 搜到arm64v8/nginx    例如 执行 docker search ubuntu 找到eclipse/ubu...
发表于 12-03 18:06 66次 阅读
在RK3399开发板香橙派Orange Pi 4B上使用docker

求Alinx(黑金)的A黑金的ZU3EG或ZU4EV开发板配套全套资料(pdf+例程)有偿

求最新的资料,使用vitis2020进行开发的
发表于 12-03 11:43 68次 阅读
求Alinx(黑金)的A黑金的ZU3EG或ZU4EV开发板配套全套资料(pdf+例程)有偿

用Verilog写的高分辨率PWM,输出一直是低电平,有人能帮忙改一改吗

用Verilog写的高分辨率PWM,输出一直是低电平,有人能帮忙改一改吗,结构如下图,代码在附件里 ...
发表于 12-02 19:46 179次 阅读
用Verilog写的高分辨率PWM,输出一直是低电平,有人能帮忙改一改吗

单片机通过定时器来实现多任务,充分利用定时器资源来实现异步处理

在单片机系统中,有许多情况下需要等待某个事件的发生,来继续下一步操作,如果有一个任务还好说,单片机可以无限等待事件的发...
发表于 12-02 09:43 384次 阅读
单片机通过定时器来实现多任务,充分利用定时器资源来实现异步处理

ASIC和FPGA有什么区别

  1、概念区别:   ASIC(专用集成电路)是一种在设计时就考虑了设计用途的IC。   FPGA(现场可编程门阵列)也...
发表于 12-01 17:41 101次 阅读
ASIC和FPGA有什么区别

嵌入式Linux驱动开发4412-实验01内核开发基础

实验 01 内核开发基础-基于迅为4412开发板 1.1 本章导读 本实验将带您学习一遍 Linux 的框架和源码目录结构。 从任何地方拿到...
发表于 12-01 11:21 101次 阅读
嵌入式Linux驱动开发4412-实验01内核开发基础

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

TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP411设备是一个带有内置本地温度传感器的远程温度传感器监视器。远程温度传感器,二极管连接的晶体管通常是低成本,NPN或PNP型晶体管或二极管,是微控制器,微处理器或FPGA的组成部分。 远程精度为±1 °C适用于多个设备制造商,无需校准。双线串行接口接受SMBus写字节,读字节,发送字节和接收字节命令,以设置报警阈值和读取温度数据。 TMP411器件中包含的功能包括:串联电阻取消,可编程非理想因子,可编程分辨率,可编程阈值限制,用户定义的偏移寄存器,用于最大精度,最小和最大温度监视器,宽远程温度测量范围(高达150°C),二极管故障检测和温度警报功能。 TMP411器件采用VSSOP-8和SOIC-8封装。 特性 ±1°C远程二极管传感器 ±1°C本地温度传感器 可编程非理想因素 串联电阻取消 警报功能 系统校准的偏移寄存器 与ADT7461和ADM1032兼容的引脚和寄存器 可编程分辨率:9至12位 可编程阈值限...
发表于 09-19 16:35 223次 阅读
TMP411 ±1°C Programmable Remote/Local Digital Out Temperature Sensor

TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器

TMP468器件是一款使用双线制SMBus或I 2 C兼容接口的多区域高精度低功耗温度传感器。除了本地温度外,还可以同时监控多达八个连接远程二极管的温度区域。聚合系统中的温度测量可通过缩小保护频带提升性能,并且可以降低电路板复杂程度。典型用例为监测服务器和电信设备等复杂系统中不同处理器(如MCU,GPU和FPGA)的温度。该器件将诸如串联电阻抵消,可编程非理想性因子,可编程偏移和可编程温度限值等高级特性完美结合,提供了一套精度和抗扰度更高且稳健耐用的温度监控解决方案。 八个远程通道(以及本地通道)均可独立编程,设定两个在测量位置的相应温度超出对应值时触发的阈值。此外,还可通过可编程迟滞设置避免阈值持续切换。 TMP468器件可提供高测量精度(0.75°C)和测量分辨率(0.0 625°C)。该器件还支持低电压轨(1.7V至3.6V)和通用双线制接口,采用高空间利用率的小型封装(3mm×3mm或1.6mm×1.6mm),可在计算系统中轻松集成。远程结支持-55°C至+ 150°C的温度范围。 特性 8通道远程二极管温度传感器精度:±0.75&...
发表于 09-18 16:05 148次 阅读
TMP468 具有引脚可编程的总线地址的高精度远程和本地温度传感器
博评网