发布信息

一种以内存为中心的微控制器MCU架构及数据传输方法与流程

作者:admin      2022-10-19 07:06:06     777



计算;推算;计数设备的制造及其应用技术一种以内存为中心的微控制器mcu架构及数据传输方法技术领域1.本发明涉及集成电路芯片,特别是涉及一种以内存为中心的微控制器mcu架构及数据传输方法。背景技术:2.随着嵌入式技术的发展,微控制器mcu在各类电子产品中普遍应用,微控制器mcu对成本极其敏感,其性价比是一个备受广大用户关注的问题。一颗微控制器mcu芯片主要构成包括中央处理器cpu、程序存储器flash(外部从设备)、内存或数据存储器sram以及外设,由于中央处理器cpu的速度快而外设的速度慢,高速cpu访问低速外设就会占用极其紧张的cpu资源,因此提高数据传输效率和减轻cpu的工作负担是多年来科研人员一直在致力改善的痛点问题。3.目前,现有的解决方案主要有以下几种:4.方案1:外设无缓冲区fifo,微控制器mcu架构中无直接存储器存取dma。5.该方案需cpu介入,cpu通过程序查询或中断的方式来访问外设。程序查询方式的硬件接口较简单,若外设数据没有准备好,cpu需处于等待状态直到外设某个状态的到来才能访问外设,等待期间cpu不能做其它事情,cpu的效率极其低下。中断方式与程序查询方式相比,需增加中断请求电路、中断屏蔽电路和中断管理电路等,比程序查询方式更加复杂一些。只有当外设数据准备好并向cpu发出请求时,cpu才可能进入中断服务程序进行数据传输,其余时间cpu可以做其它事情,cpu效率一定程度上得到改善。但是,每传输一次数据,cpu都要执行一次中断服务程序,每次中断都要进行断点保护、现场保护、现场恢复、中断返回等一系列工作,该项工作需浪费cpu不少的额外开销,同时,数据的传输效率并没有得到显著的提升。6.方案2:外设增加缓冲区fifo,微控制器mcu架构中无直接存储器存取dma。7.该方案仍需cpu介入,该方案在方案1的中断方式的基础上给外设增加缓冲区fifo。与方案1相比,一定程度上提高了cpu的效率。但是,不同应用场景对外设fifo的大小有不同的要求,但此外设fifo为硬件缓冲区fifo,用户无法更改该fifo的大小。当传输数据量比较大的时候,很大程度上无法真正地提高cpu的效率。8.方案3:增加直接存储器存取dma,直接存储器存取dma中增加缓冲区fifo。9.在直接存储器存取dma的控制下无需cpu介入就可实现数据传输,完全靠硬件进行。直接存储器存取dma的引入能够有效减少cpu的负载,提高数据传输的效率。与方案1和方案2相比,有效解决了高速cpu和慢速外设之间进行数据传输时的工作效率问题,但是,该方案的硬件最为复杂,且直接存储器存取dma仍存在dma请求、总线请求、总线响应、dma响应等额外的开销,当直接存储器存取dma的搬运工作量比较大的时候,直接存储器存取dma只能根据优先级顺序来完成工作,从而无法保证数据传输的实时性。因此,该方案因中间缓存及传输环节的存在,使得数据访问效率受到了很大的限制。技术实现要素:10.发明目的:针对现有技术存在的问题,本发明提供一种以内存为中心的微控制器mcu架构及数据传输方法,以解决微控制器mcu芯片成本高、中央处理器cpu资源有限、数据传输效率低等问题。11.技术方案:一种以内存为中心的微控制器mcu架构,包括内存sram、总线环以及至少一个总线主设备;所述总线主设备拥有总线master接口,其通过总线环与内存sram就行数据交互;所述总线主设备至少包括中央处理器,还可以为周边功能模块和/或用户特定功能模块。12.所述内存sram包括一设备区,设备区存放有设备控制块,通过操作该设备控制块控制总线主设备工作,实现总线主设备到内存sram或者内存sram到总线主设备之间的数据传输。13.优选的,采用链式存储结构,链表中每个节点的数据域为设备控制块,指针域为下一个节点地址,通过修改指针域实现节点的插入和删除;所有设备控制块共同构成一个设备控制块链表,其中头指针指向第一个节点,头结点指向空;14.当需要使用一个或多个总线主设备时,应给总线主设备分配内存,得到相应的设备控制块,并将设备控制块加入到设备控制块链表中;对于不需要使用的总线主设备,应将该总线主设备所对应的节点从设备控制块链表中删除。15.具体的,所述设备控制块包含设备名称、状态信息、数据信息以及控制信息;其中,数据信息包括fifo长度。16.进一步的,所述内存sram的空间还包括栈区、堆区以及全局区。17.一种基于所述微控制器mcu架构的数据传输方法,包括如下流程:18.(1)mcu根据初始化程序,给总线主设备分配内存,并且分配相应的由设备名称、状态信息、数据信息、控制信息构成的设备控制块,并在所述设备控制块的数据信息里面定义fifo长度;19.(2)给设备控制块赋予初始值,并插入设备控制块链表中;20.(3)对总线主设备进行存储器地址映射,硬件自动执行初始化操作,并开始工作;21.(4)如果用户开启了中断,当预设的数据传输中断到达,中央处理器转向中断入口地址执行数据处理,否则一直等待中断挂起;22.(5)当任一总线主设备需要操作总线时,其通过总线矩阵进行访问仲裁管理,在获得总线控制权后占用总线,完成任务后释放总线控制权。23.进一步的,在mcu运行期间,如果要增加或者减少总线主设备,在设备控制块链表中添加或者删除相应总线主设备的节点,同时也要为添加的节点分配对应的内存或者删除要减少的总线主设备的节点,并且删除对应的内存。24.进一步的,当多个总线主设备同时向总线发起请求时,总线根据优先级机制或者时间片机制来仲裁。25.有益效果:26.和现有技术相比,本发明的硬件架构和数据处理流程分别具有如下显著进步:27.1.相比于传统的以cpu为主核心的微控制器mcu的基础架构,本发明所有的总线主设备都与cpu同等地位,能够主动工作,因此减少了对cpu的中断,只有在需要cpu接手处理时才会产生中断事件,该新机制带来了微控制设计和软件开发的新优势。28.2.通过删除外设缓冲区fifo和直接存储器存取dma硬件逻辑,有效地缩小了芯片面积,降低芯片成本。该新架构在数据访问机制上去掉直接存储器存取dma中间缓存及传输环节,内存即是总线主设备的数据buffer,能够极大提高数据传输效率和降低cpu的工作负担。所有总线主设备的存储单元物理上统一在内存sram里实现,有效地减少芯片中的内存sram块的数量,可以降低芯片设计和测试的复杂度,提升量产成品良率。29.3、在进行数据传输/数据处理时,不仅缓冲区fifo的大小可根据用户的实际应用需求自定义,而且通过用外设控制块和链表对外设的功能进行封装和抽象,可有效提高软件开发的便捷性和抽象性。此外,每个外设都映射到链表中的某个节点,如果需要使用某个外设就给该外设动态分配相应的内存空间并加入到链表中,当不需要使用某个外设时就从该链表中删除该节点,可大大提高外设区内存分配的灵活性。附图说明30.图1为本发明实施例的一种以内存为中心的微控制器mcu架构框图;31.图2为本发明实施例的外设控制块数据结构;32.图3为本发明实施例的一种外设典型数据传输方法;33.图4为外设包含uart、spi、i2c的数据传输流程;34.图5为针对外设uart、spi、i2c同时收发数据时总线的仲裁管理机制。具体实施方式35.下面将结合说明书附图,对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。36.一种以内存为中心的微控制器mcu架构,如图1所示,包括总线主设备、内存sram以及总线环。在本发明中,总线主设备包括外部主设备(即外设),其不再和传统意义的外设相同,每个总线主设备拥有总线master接口,它们通过总线环与内存sram实现数据交互。37.总线主设备至少包括一个中央处理器(cpu),还可以包括各种常用周边功能模块比如uart、iic,或者用户特定功能模块。所有总线主设备作为主机master,总线矩阵用于主机master的访问仲裁管理。由于系统中存在多个主机master,当其中某一个主机master需要操作总线时,需通过总线矩阵进行访问仲裁管理,当获得总线控制权后便可占用总线,当完成任务后便释放总线控制权。38.内存sram整个空间划分为栈区、堆区、设备区以及全局区,其中设备区主要用来映射总线主设备的存储空间,每个总线主设备都有拥有自己独立的内存块,该内存块根据用户所需缓冲区fifo的大小进行自由分配、不受硬件约束。39.通过软件动态分配内存块构造出设备控制块,以实现将内存块与总线主设备功能进行关联的目的。具体的,设备控制块存放于内存sram的设备区,每个设备控制块都作为总线主设备存储器的映射,通过操作设备控制块就可以直接控制总线主设备工作。40.如图2所示,本实施例采用链式存储结构,每个节点的数据域为设备控制块,指针域为下一个节点地址,各个设备控制块通过链表形式组织在一起,共同构成一个设备控制块链表,形成设备控制块数据结构。其中,头指针用于指向节点1,节点n指向空null。每个设备控制块包含设备名称、状态信息、数据信息以及控制信息,其中数据信息包括fifo的长度。41.可见,总线主设备到内存sram或者内存sram到总线主设备之间进行高速数据传输整个过程,可以在无需cpu的任何操作下由总线主设备本身快速移动数据实现,从而有效节省cpu资源,让cpu去处理其他事务或任务。42.当需要插入和删除设备控制块节点时,只需要修改指针域即可。当用户需要使用某个总线主设备时,需要给该总线主设备分配相应的内存空间,得到设备控制块,并将设备控制块加入到设备控制块链表中,当不需要使用某个总线主设备时就从该链表中删除其对应的节点的设备控制快,释放之前为该总线主设备分配的相应内存空间。43.该链式存储在保证数据移动效率方面具有优势,因此为一种优选实施例提供,此外还可以采用顺序存储、索引存储、散列存储等存储方式。44.在该微控制器mcu架构的基础上,本发明还提出一种数据传输方法,如图3所示,包括如下内容:45.(1)在总线主设备开始工作之前,根据mcu程序设置需求给总线主设备分配内存,得到相应的由设备名称、状态信息、数据信息(包括fifo的长度)、控制信息等共同构成的设备控制块。46.(2)然后给设备控制块赋予初始值,并插入设备控制块链表中。47.(3)最后对总线主设备进行存储器地址映射,硬件就会自动执行初始化操作、开始工作。48.(4)如果用户开启了中断,当预设的数据传输中断到达,cpu转向中断入口地址执行数据处理,否则一直等待中断挂起。49.在mcu运行期间,如果要增加总线主设备或者减少总线主设备,根据程序设置需求在设备控制块列表中添加或者删除相应总线主设备的节点,同时也要为添加的节点分配对应的内存或者删除要减少的总线主设备的节点,并且删除对应的内存。50.以下给出一个典型的外设工作流程实例。51.如图4、图5所示,mcu程序设置外设包含uart和spi,程序运行期间还需增加一个i2c采集一些数据,采集完毕后关闭i2c,释放资源。52.1.mcu加载程序,根据初始化信息,在外设列表中添加uart和spi节点,并且分配内存和对应的设备控制块,定义fifo长度信息,得到由状态信息、数据信息、控制信息等构成的设备控制块。53.2.程序运行一段时间后,需要开启i2c外设,那么mcu根据程序的设置在外设列表中添加i2c节点,并且分配内存和对应的设备控制块,包含状态信息,数据信息,控制信息;数据信息包含了fifo大小信息。54.3.程序完成i2c采样功能后要把i2c外设关闭,把么mcu根据程序的设置在外设列表中删除i2c节点,并且把分配的内存和对应的设备控制块释放。55.如图5所示,多个外设同时收发数据的时候,需要通过总线矩阵进行访问仲裁管理,在获得总线控制权后占用总线,完成任务后释放总线控制权。56.i2c总线根据优先级机制或者时间片机制在一定条件下挂起uart,让i2c获得总线权,spi继续挂起,i2c在获得总线权后把fifo里面缓存的数据进行通信。57.依次类推,在多个外设主设备要同时完成通信的时候,总线矩阵通过仲裁管理来协调各个外设或者主机之间的通信顺序。58.在本说明书中,mcu架构具有一组多个配置的元件(诸如设备或模块(构件))的含义,并且不考虑所有配置的元件是否在相同的壳体中。因此,该架构可以是存储在单独壳体中并且通过网络连接的多个设备,或单个壳体内的多个模块。59.其次,本发明的实施例不限于如上所述的实施例,并且在不脱离本技术的范围的情况下,本领域技术人员依赖于设计要求和其它因素可以对其进行各种修改、组合和更改。本说明书中描述的效果不是限制性的而仅是示例,并且可以存在额外的效果。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部