新兴嵌入式系统 广泛应用智能硬件_5

作者: admin 分类: 房产 发布时间: 2019-06-13 14:09

  物联网技术是这几年整个电子信息技术最重要的主题,而在物联网技术中与消费者接触最为密切的应用,当属这两年兴起的智能硬件应用。无论是物联网还是智能硬件应用,都是建立在庞大的嵌入式系统生态之上。

  嵌入式操作系统随嵌入式计算机一起深埋于各种设备中,用户无法直观上感知操作系统的存在,也无法直接进行安装和维护,只能靠设备的运行表征来间接感受它的存在。事实上,所有带有数字接口和程序控制的设备,如电子手表、智能电视、数码相机、汽车、飞机、卫星等都使用嵌入式系统,大众生活处处可见嵌入式操作系统。智能硬件应用的繁荣,直接带动了整个嵌入式技术的蓬勃发展。倪光南院士认为,嵌入式系统顺应了电子信息产业的最新发展需求。事实上,作为新一代信息技术的三大代表,物联网、云计算和移动互联网的核心组成部分,都包含了大量嵌入式系统。

  广东中兴新支点紧随市场需求,成功研制了具有自主版权的嵌入式操作系统。消息一经披露就引发了国内外关注及热议。下面一起来了解下这个新兴嵌入式操作系统的全貌:

  中兴新支点嵌入式操作系统主要由四部分构成:功能增强的引导程序bootloader、优化改造的Linux内核、高效稳定的中间件、简单友善的集成开发环境。

  功能增强的引导程序bootloader

  Bootloader是系统上电之后启动的第一段程序,和X86架构中的bios相似,这段程序主要有两部分功能:第一个是引导加载系统,这里指的是Linux内核;第二个是用于调试的,主要用于调试系统和硬件。嵌入式系统的Bootloader种类繁多,有uboot、ppcboot、redboot、vivi等,其中以uboot的应用最广,支持的硬件也最全面。中兴新支点嵌入式操作系统的bootloader就是采用了uboot的这个开源项目的代码改造的。其中主要优化改造了以下几点:

  网络功能增强

  开源的uboot的网络功能比较薄弱,基本上只支持tftp的传说协议,用于传输文件。而中兴新支点嵌入式操作系统的bootloader则增强了uboot的网络功能,使得uboot支持TCP和UDP的传输协议,客户可以根据自己的需求在bootlaoder中实现自己的网络数据传输,增加了bootloader的网络灵活性。

  文件系统功能增强

  中兴新支点嵌入式操作系统的bootloader引导程序对文件系统的支持比较多,包jffs2、yaffs2、ext4、fat32等格式的文件系统。

  增加菜单配置项

  中兴新支点嵌入式操作系统的bootloader增加了菜单配置选项功能,大大简化了开发人员开发的难度。用户只需要通过菜单配置选项,配置bootloader的功能,而无需要用户手动修改uboot的配置宏。

  优化改造的Linux内核

  针对嵌入式行业的特定的需求,如高实时、高稳定、安全的特点。中兴新支点嵌入式操作系统对Linux内核做了大量的优化,从而大大的提高了系统的实时性、稳定性、和安全。下面是几个重要内核优化点:

  进程调度改造和优化

  进程调度的改造和优化主要分两个部分:优化和改造调度算法;增加调度点,增强系统的抢占能力。

  优化和改造调度算法

  调度算法优化的原则主要是高优先级的进程先执行,而低优先级的进程等待高优先级的进程执行完。然而在SMP环境下,由于每个CPU都有自己单独的运行的进程队列,每个CPU都只在自己的队列上选取进程,内核对进程的调度并不是完全按照优先级来调度的,这严重的影响了内核的实时性。优化的方式是在进程调度的时候每次都取得系统中优先级最高的进程,而不是本CPU队列中的最高的进程。

  增加调度点,增强系统的抢占能力

  针对系统长时间得不到调度的情况,导致高优先级的进程不能抢占低优先级的进程的情况。找出长时间不能调度的代码,增加调度点,保证高优先级的进程能够尽快抢占低优先级的进程,从而提高系统的实时性能。

  中断线程化

  在开源Linux 中,中断具有最高的优先级。不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和软中断处理完毕后才能执行的进程,因此有可能造成实时任务得不到及时的处理。中断线程化技术之后,中断将作为内核线程运行而且被赋予不同的优先级,实时任务可以有比中断线程更高的优先级。这样,具有最高优先级的实时任务就能得到优先处理,即使在严重负载下仍有实时性保证。

  信号量优先级继承

  在开源的Linux中,由于信号量不支持优先级继承,因此可能导致高优先级的进程被低优先级的进程阻塞。举个例子,系统中运行着三个进程A、B、C,A的优先级最高,B的优先级中,C的优先级最低,进程A和C都需要信号量D,现在进程C最先获得信号量D,但是在进程C释放信号量D之前,进程A获取信号量D,这时由于进程C已经持有了信号量D,因此进程A必须休眠等待,而当进程A放弃CPU的时候,由于进程B的优先级比进程C高,所以最先被调度的是进程B,这样就相当于进程A这个高优先级的进程被进程B这个中优先级的进程阻塞。而优化之后的信号量由于有了优先级继承的功能,当进程A获取信号量D的时候,进程C会继承进程A的优先级,所以当进程A放弃CPU的时候,最先调度进来的是进程C,这样就能尽快让进程C释放信号量D,而让进程A最快得到执行。

  内存管理机制的改造

  内存管理机制的改造主要改造了两个方面:内存信息统计;用户态内存申请直接映射。

  内存信息统计

  开源的Linux内核,未对内存的各项信息提供一个完成的统计显示,而中兴新支点嵌入式操作系统则针对需求,在proc文件系统中新增了六类内存统计信息的功能:物理内存大小;可用物理内存大小;剩余物理内存大小;高端内存大小;低端内存大小;用户空间占用内存大小。通过这些信息,用户可以清晰的知道系统内存的使用情况。

  用户态内存申请直接映射

  开源的Linux中,用户态分配内存的时候只是分配了虚拟内存,而没有分配物理内存,而只会等到应用程序直接访问的时候才会分配物理内存,而一旦物理内存不够就会导致系统进入oom-kill流程,从而杀死用户态进程。针对这个问题新支点嵌入式操作系统优化了内存分配机制,在用户态分配内存的时候直接分配物理内存,如果内存不够就返回NULL。

  高效稳定的中间件

  中兴新支点嵌入式操作系统提供了一套功能强大、高效的中间件,通过这些中间件可以大大的降低客户的程序开发的难度,提高开发效率,缩短开发周期。该中间件主要包括以下内容:

  多进程、多线程编程库

  中兴新支点嵌入式操作系统的中间件提供了一套完善的多线程编程库,该线程编程库包括:高效的进程间通信,线程间同步,线程管理等。简化了进程和线程的创建流程,优化了线程的管理。

  网络库

  在后互联网时代,网络已经成为了各个嵌入式设备必须的功能。而网络编程又往往比较复杂,导致了编程人员不得不花费大部分时间在网络编程上,而无法专心自己的更关注的业务编程,降低了开发的效率。为了更好的让客户更多的关注自己的业务,中兴新支点嵌入式操作系统中加入了一个网络库,这套库主要封装了socket的编程接口,htttp协议、DHCP协议、HTTPS协议、Qos功能,大大简化了网络开发的难度。

  vxwork适配库

  该库主要是针对vxwork的用户迁移到Linux系统而开发的一套库,这套库通过Linux平台实现了几乎所有的vxworks系统的用户接口,包括任务的创建、任务间的通信、网络接口等。通过这套库vxworks上运行的用户的业务程序,可以轻松的移植到Linux平台,而不需要根据用户的业务需求重新设计一套新的代码。这大大减少了vxworks系统迁移到Linux系统的工作量。

  简单友善的集成开发环境

  嵌入式开发往往最让程序员头疼的是交叉开发调试环境的构建,和各个工具之间的兼容性问题。针对这个问题中兴新支点嵌入式操作系统提供了一整套的集成开发调试工具,让用户不再需要花费太多的时间和精力在开发环境的构建上。同时这套开发环境还集成了很多调试、分析工具。通过这些工具用户能够方便快速的定位程序的问题,解决bug。以下是该套集成开发环境集成的工具:

  开发环境的集成

  集成了嵌入式的集成开发环境,这些环境中包括:交叉编译器gcc、增强的bootloader、优化和改造的Linux内核、高效稳定的中间件、远程调试工具、代码编辑、项目管理等。通过这些集成,可以大大的提高用户的开发效率,缩短产品的上市时间。

  KProfiler

  KProfiler是一款低开销的系统全局性能监视工具,用于对 Linux 系统进行评测(profiling)和性能监控。通过评测表或图形,形象的显示出为特定的处理器事件收集的采样百分数或数量以用于总结或分析。

  KProfiler 可以帮助用户获取诸如系统热点函数及其调用链、缓存/TLB 命中率、函数执行效率等信息,能够帮助用户排查 CPU 冲高,程序性能无法提升等问题。它收集有关处理器事件的信息,其中包括 TLB的故障、停机、存储器访问、缓存命中率。通过收集到的评测数据,用户可以很容易地找出性能问题。

  KProfiler 可以工作在不同的体系结构上,包括X86、 arm(包括 nommu)、ppc(powerpc)、mips 等。

  KCov

  KCov是一款代码覆盖率分析工具,通过该工具可以定位没用的或者不执行的代码的过程,从而增强程序的可读性和执行效率,降低不执行代码中存在 bug 的风险。KCov,能够检验出程序中的每一条语句是否都被执行过,从而帮助用户剔除软件中的 dead code(无用的、不会被执行的、以及腐朽的代码)。

  KMemTracer

  内存检测工具(KMemTracer)是一款集合用户态内存泄露检测和内存越界实时检测两大功能的检测工具。它可以在不修改源代码的前提下,检测应用程序的内存泄露情况和内存越界操作。检测范围包括C/C++语言,具有对应用程序影响较小,检测准确、可快速定位故障的特点。

  随着工业4.0时代和物联网、智能硬件应用时代的步步走近,嵌入式系统领域面临着更多的挑战和机会,这意味着对智能系统技术、产品和解决方案有了更高性能的要求,同时也是像广东新支点这类嵌入式操作系统解决方案提供商绽放光彩的大好机会和绚丽舞台。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!