精华内容
下载资源
问答
  • 探索嵌入式应用框架(EAF)

    千次阅读 2018-03-18 00:00:00
    EAF是Embedded Application Framework 的缩写,即嵌入式应用框架嵌入式应用框架是 Application framework的一种, 是在嵌入式领域的应用框架。Appl...

    EAF是Embedded Application Framework 的缩写,即嵌入式应用框架。嵌入式应用框架是 Application framework的一种, 是在嵌入式领域的应用框架。

    Application Framework——应用框架,是一种软件框架,软件开发人员用应用框架作为标准结构,以便实现应用软件。

    那什么是软件框架呢?

    关于软件框架

    软件框架是一个抽象的概念, 是提供了通用的软件功能,可以通过用户编写代码有选择地改变, 从而提供特定的软件应用。 软件框架提供了构建和部署应用程序的标准方式。 软件框架是一个通用的、可重用的软件环境, 它提供特定的功能, 作为大型软件平台的一部分, 以促进软件应用程序、产品和解决方案的开发。 软件框架可能包括辅助程序、编译器、代码库、工具集和API , 汇集了所有不同的组件, 便于一个项目或系统的开发。

    那些我们用过或者常见的软件框架太多了:

    • windows上MFC

    • .net Framework

    • spring framework以及衍生的SSH等等

    • Entity Framework

    • Robot Framework

    • play framework

    • Zend framework

    • Oracle Application Development Framework

    • Cactus Framework 

    • Eclipse XXX framework

    • AWS Lambda Framework

    • FrondEnd framework:Vue.js,Angular.js,React等等

    • ......

    尤其是Web 应用框架更加丰富多彩,基于各自语言实现的Web Application Framework 不胜枚举。

    进一步, 很多的系统架构也引入Framework 的概念,例如,Enterprise architecture framework等等,甚至在研发管理上也同样涌现了Framework,例如 Project Management Framework,Risk Management Framework等,外延在不断在融合放大。

    关于软件应用框架的开发著述也有很多,例如侧重API设计的《软件框架设计的艺术》等等。

    嵌入式系统的应用框架

    与一般的电脑相比, 嵌入式设备有着自己的特性, 例如耗电量低、体积小、操作范围粗糙、单位成本低。 这是以有限的加工资源为代价的, 这使得程序和交互的难度大大增加。 然而, 通过在硬件之上建立智能机制, 利用可能存在的传感器和存在一个嵌入式单元网络, 既可以在单位和网络一级对现有资源进行最佳管理, 并提供远远超出现有可用功能的增强功能。 这或许就是嵌入式应用的必然性。

    EAF 是面向嵌入式系统的软件应用框架。嵌入式系统是一个在较大的机械或电气系统中具有专用功能的计算机系统, 通常具有实时计算约束。嵌入式系统从便携式设备, 如数字手表和 MP3播放器, 到大型的固定设备, 如交通灯, 工厂控制器, 以及大部分复杂的系统, 如混合动力车、核磁共振成像和航空电子设备等等。 复杂性从低到单一的微控制器芯片, 到非常高的多个单位等等。

    鉴于如此的复杂,很难有一个统一的应用开发框架。

    但是,参考Java 面向资源的分类(J2EE,J2SE,J2ME,Java Card等),我们可以对嵌入式系统的应用框架进行尝试分析。

    手机上的应用框架

    由于手机的功能越来越强大,很多时候被认为超出了嵌入式系统的范畴。但是,了解手机上的应用框架,对于EAF而言,还是大有裨益的。

    手机上的应用开发框架一般也被称为 Mobile Development Framework。近些年,随着智能手机的普及,面向手机开发的应用框架已被人们所熟知,例如 ios development framework,Android development framework,还有基于HTML5的混合编程框架PhoneGap等等。

    尤其是Android,如果资源允许,基于android的嵌入式设备可以轻松使用android的软件应用框架。google 还面向嵌入式设备推出了android wearable 等一系列方案,当然iOS 也是如此。

    下图就是那张经典的android 架构层次图:

    Android应用程序框架分为应用层、应用框架层、系统运行库层和Linux内核层,在开发应用时就是在这个框架上进行扩展。Android应用框架的部分功能如下:

    • android.app:提供高层的程序模型和基本的运行环境。

    • android.content:包含对各种设备上的数据进行访问和发布。

    • android.database:通过内容提供者浏览和操作数据库。

    • android.graphics:底层的图形库,包含画布,颜色过滤,点,矩形,可以直接绘制屏幕上。

    • android.location:定位和相关服务的类。

    • android.media:提供一些类管理多种音频、视频的媒体接口。

    • android.net:提供帮助网络访问的类,超过通常的java.net.*接口。

    • android.os:提供了系统服务、消息传输和IPC机制。

    • android.opengl:提供OpenGL的工具。

    • android.provider:提供访问Android内容提供者的类。

    • android.telephony:提供与拨打电话相关的API交互。

    • android.view:提供基础的用户界面接口框架。

    • android.util:涉及工具性的方法,例如时间日期的操作。

    • android.webkit:默认浏览器操作接口。

    • android.widget:包含各种UI元素(大部分是可见的)在应用程序的布局中。

    智能手机的资源还是相当丰富的,在智能手机之前的Feature Phone 同样有着自己的应用开发框架,只是不如Android 和iOS 那么普及,已经逐渐被人们所遗忘。 但是,这些应用框架的设计思想和实现方式同样有着重要的参考性。例如,Qualcomm的BREW(翻开了历史的回忆)。

    BREW 指Binary Runtime Environment for Wireless 的缩写,从基本的层面而言,BREW 平台就是手持设备上嵌入式芯片操作系统的接口或抽象层。

    • BINARY 是指二进制。BREW的编程接口是一套二进制的函数库。所有基于BREW的应用和扩展类被编译和联接成二进制代码,在本地执行。

    • RUNTIME是指运行时间。所有基于BREW的应用和扩展类志在运行时被发现和调用,这一点很像动态连接库,事实上,BREW的应用和扩展类的模拟器版本就是一个DLL。

    • ENVIRONMENT是指环境。BREW是一个开放而且灵活的环境,提供了大量的编程接口,并可以管理丰富的业务。

    • WIRELESS是指无线。BREW 可以充分无限设备的特性,快速有效的运行与低 RAM/FLASH 的环境中,使有限的无线网络资源得到有效的使用。

    BREW基本上遵从COM这一组件构架的。组件架构的一个优点就是应用可以随时间的流逝而发展进化,除此之外,使用组件还有一些可以使对以有应用的升级更加方便和灵活的优点,如应用的定制,组件库以及分布式组件等。

    M2M的应用框架

    鉴于 M2M 技术的特点, 系统设计者可能不得不从头开始构建整个 M2M 体系结构。其核心是, M2M 技术包括增加一个装置或设备的智能服务, 并将该设备与可以监控或控制该设备的后端基础设施连接起来。 为了实现这一目标, 一个 M2M 设备使用了两个基本元素: 与后端通信的基础设施(无线调制解调器或模块)和运行服务的软件。

    通过提供一种将 M2M 服务直接嵌入通信模块的方法, 以及预先安装装的软件模块、连接能力和处理资源方式,一般的M2M 应用框架如下:

    EAF一般包括下列组成部分:

    优化的轻量级操作系统

    虽然一些 M2M 应用程序需要更强大的 RTOS, 但大多数都不需要。 操作系统的设计能够提供 API 来控制语音, 数据调用, 短信, 以及 TCP/IP 连接。 应该经过优化, 以充分利用直接访问协议栈的能力。 为了提供对连接应用程序的全面支持, 操作系统还应提供一个核心功能集, 其中包括:

    • 实时性, 包括保证对外部或内部中断的响应时间, 不论其状态如何。

    • 灵活安排任务的优先顺序。

    • 多任务能力, 以定义和同步服务所需的任务。

    • 在处理速度和功率选择方面的灵活性, 以优化电池寿命。

    • 内存、固件和软件保护功能。

    • 能够使用API访问蜂音频等媒体和数据路径。

    软件库

    为了简化开发过程和市场的速度时间, EAF 应该包括各种软件库和API, 提供设备或服务可能需要的各种功能。 这包括定位、全面的互联网连接协议、无线和互联网安全等服务。 EAF还应支持为目标市场具体需求开发的第三方软件库。 理想情况下, EAF 不仅应得到通信模块供应商的支持, 还应该得到合作伙伴和开发者的支持。

    开发工具

    EAF 还应该包含一个开发工具包, 以便于编码、调试和监视 M2M 应用程序, 这些工具应该是开源的, 可以免费使用。 最终, EAF 应该提供开发 M2M 应用程序并将其嵌入模块所需的一切。

    云连接

    最后, EAF 应该提供工具来简化连接设备的云管理, 包括一个完全实现的系统来处理设备监控和软件/固件升级。 该系统应该允许开发者监控设备的健康状况, 并识别潜在的问题。 它还应该包括已验证的操作系统远程升级工具, 以及使用补丁机制的热修复工具。

    面向脚本的EAF

    对于为嵌入式系统创建软件的开发者而言,对脚本的编写并不陌生。 选择脚本是往往是解决问题的最快方法。一般地,脚本被用来自动构建和运行验证测试。作为全栈必备的Javascript被广泛应用于网页、 web 服务器和移动应用程序中,在嵌入式系统中也将占据一席之地。

    出于对性能的担心,可以通过一些技术手段提升JavaScript的运行性能:

    1.充分利用内置函数和对象。 Javascript 语言拥有支持数组、 JSON、正则表达式和其他字符串运算的复杂内置对象。 这些实现通常在 JavaScript 引擎中得到了很好的优化。 

    2.小心编码。由于脚本比本地代码慢, 代码优化在性能重要的地方是至关重要的。 Javascript 的动态特性意味着 JavaScript 引擎通常不能像 c 编译器那样有效地优化代码。

    3.混合编程。没有一种语言适用于所有情况, 所以要为工作选择最好的语言, 而不是100% 纯粹地使用。 每一个 JavaScript 引擎都提供了一种从脚本调用本地代码的方法。 如果不确定性能, 首先在 JavaScript 中实现, 因为它更容易执行。 如果存在性能瓶颈, 请在 c 中重新实现函数。

    在 Mozilla 的一个项目 asm.js 中出现了一个可以替代使用 c 的方法。 定义了一个严格的 JavaScript 子集, 它更容易被翻译成本地代码或 c 源代码。 利用 c 和 JavaScript 之间的语法相似性, 使翻译变得简单明了。 嵌入式开发人员可以在 asm.js JavaScript 子集中编写性能关键代码, 并将其编译为本地代码, 作为构建过程的一部分, 而不是依赖 JIT。

    对于内存的使用而言,从积极的一面来看, JavaScript 使用了一个垃圾收集器, 从而消除了显式释放内存的需要。 通过这种简化, 嵌入式开发人员有时间专注于其他方面的开发。 

    目前,已经有多个开发系统开始支持嵌入式的JavaScript:

    • Espruino是一个单片机开发板, 被称为微控制器的 JavaScript。 它运行开源的 Espruino JavaScript 引擎, 它支持 JavaScript 标准的子集。

    • Tessel 是一个集成了Wi-Fi的JavaScript 微处理器,并提供一个兼容Node.js的 API,开发人员可以使用Node.js进行开发。

    • Marvell Semiconductor 的 Kinoma Create 是一个运行在 Marvell 半导体上的"JavaScript 物联网构建工具包", 它支持完整的 JavaScript 5.0.

    在国內,也有类似的开发系统,例如老友周爱民老师所在的ruff.io。

    总之,Javascript 在嵌入式设备上的潜力很大, 可以简化嵌入式程序员的开发工作, 并为客户提供更可靠、更可定制的产品。




    综上所述,嵌入式应用框架(EAF)对嵌入式系统的成功有着重要的意义。特别是对于嵌入式开放平台而言,能够提高开发者的开发效率,促进生态系统的繁荣。然而,IoT中还有很多超轻量级的设备,或许根本没有OS,被称为“智能颗粒”,笑称“智霾”,可能不需要EAF,也可能是一种另外形态的EAF,只是我不知道而已。


    参考:

    • Jaroslav Tulach, 《软件框架的设计艺术》,人民邮电出版社,2011

    • 金泰延 宋亨周 朴知勋 李白 林起永, 《Android 框架揭秘》,人民邮电出版社,2012

    • 曹洪伟,《BREW 进阶与精通》,电子工业出版社,2009

    • http://www.embedded-computing.com/hardware/embedded-application-frameworks-simplifying-the-development-of-m2m-devices

    • http://www.embedded-computing.com/embedded-computing-design/javascript-for-embedded-devices

    • http://www.embedded-computing.com/embedded-computing-design/speeding-embedded-systems-time-to-market-using-node-js


    展开全文
  • 嵌入式应用之-任务进程框架

    程序框架 :

    这里用到的是任务进程的思想

    typedef  struct    // 主任务进程结构体
    {
      uchar   RunInPowerON:1;  //上电是否运行 
      uchar   RunInPowerOFF:1; //掉电运行
      uchar   HaveSubTask:1;   //是否有子任务,GOL_YES,GOL_no
      uchar   SubTaskNomb:5; ///子任务个数31个
    
      PEFUNCTION  RunTask;///运行的任务名称
      UCEFUNCTION ConditLim;  ///运行的条件限制  
    
    }STR_RUN_TASK_TAB;
    

    这里就是定义了一个函数指针。

    typedef void (*PEFUNCTION)(void);

    typedef uchar (*UCEFUNCTION)(void);


    //要想调用任务进程结构体就需要有一个索引指针。
    //任务的指针变
    
    typedef  struct
    {
    uchar RunNO;
    
    uchar SubTask[sizeof(RunTaskTab)/sizeof(STR_RUN_TASK_TAB)];
    }STR_RUN_TASK_NO;
    

    //分任务进程结构体。
    typedef  struct
    {
      PEFUNCTION  SubTask;  子进程
    }STR_RUN_SUB_TASK_TAB;
    

    主函数调度:

    main{

    ///初始化任务指针
    InitilaRunTask();
    

    while

       if(GAL_YES==TmpRunTureOrFal) //主任务上下电运行条件满足
       {
          //运行其他条件满足
         if(RunTaskTab[TaskRunMode.RunNO].ConditLim()==GAL_YES)
         {
             //有子任务
             if (RunTaskTab[TaskRunMode.RunNO].HaveSubTask==GAL_YES)
             {
              //运行子任务(把主任务表格中的地址+子任务指针的偏移就是需要运行任务的函数地址)
              ((((STR_RUN_SUB_TASK_TAB*)(((uchar*)RunTaskTab[TaskRunMode.RunNO].RunTask)+sizeof(PEFUNCTION)*TaskRunMode.SubTask[TaskRunMode.RunNO])))->SubTask)();
                TaskRunMode.SubTask[TaskRunMode.RunNO]++;
                //子任务号最大限制值判断
                if(TaskRunMode.SubTask[TaskRunMode.RunNO]>=RunTaskTab[TaskRunMode.RunNO].SubTaskNomb)
                {
                  TaskRunMode.SubTask[TaskRunMode.RunNO]=0;
                }
             }
             else
             {
                RunTaskTab[TaskRunMode.RunNO].RunTask();
             } 
         }
        TaskRunMode.RunNO++;
      //END of the task table
      if(TaskRunMode.RunNO>=RunTaskTabSize(sizeof(RunTaskTab),sizeof(STR_RUN_TASK_TAB)))
      {
          TaskRunMode.RunNO=0;
      }
    

    展开全文
  • 摘要:框架作为一种大粒度的重用技术在桌面软件开发中得到了广泛应用,而在嵌入式开发领域,目前还没有一套完整的标准框架可供使用。本文以通信领域的嵌入式软件开发为例,介绍使用C++语言,在ARM平台Nucleus plus...
  • 嵌入式知识框架

    2020-04-22 02:38:44
    2020-04-22 嵌入式知识框架图 作者:陈选yu

    在这里插入图片描述

    2020-04-22
    嵌入式知识框架图
    作者:陈选yu

    展开全文
  • 框架作为一种大粒度的重用技术在桌面软件开发中得到了广泛应用而在嵌入式开发领域目前还没有一套完整的标准框架可供使用本文以通信领域的嵌入式软件开发为例介绍使用C+语言在AR平台Nuclus us操作系统下实现嵌入式...
  • 使用C++勾建嵌入式开发框架 摘要框架作为一种大粒度的重用技术 在桌面软件开发中得到了广泛应用 而在嵌 入式开发领域目前还没有一套完整的标准 框架可供使用本文以通信领域的嵌入式软 件开发为例介绍使用 C+福言在...
  • 嵌入式实时操作系统MQX应用框架研究 硕士论文 嵌入式实时操作系统MQX应用框架研究
  • 对于芯片内部的模块也在大学时候用fpga的verilog玩过,所以对于整个嵌入式框架也算是有点小小的理解,今天我们一起来来谈谈。如有偏差,请各位不吝赐教! 首先还是看下整个框架。 关于bootloader 1、当...

    从事嵌入式linux工作也几年了,如果算上大学期间的自学,那么也算是个工程师了。期间写过底层bootloader、内核的驱动和上层应用程序。对于芯片内部的模块也在大学时候用fpga的verilog玩过,所以对于整个嵌入式的框架也算是有点小小的理解,今天我们一起来来谈谈。如有偏差,请各位不吝赐教!

    首先还是看下整个框架。

    讲得很好,嵌入式Linux框架的理解

     

    关于bootloader

    1、当板子一上电,因为芯片有boot的功能,自动会从flash搬启动代码并执行处理。这里的代码其实就是bootloader的第一个阶段。其实bootloader就是具有boot和loarder的功能。Boot就是搬代码,引导,loarder就是加载各个需要的驱动。

    2、bootloader第一个阶段做的事情,具体做了什么可以看下图。

     

    讲得很好,嵌入式Linux框架的理解

     

     

    3、 bootloader的第一阶段主要是汇编的代码,接着的第二阶段基本是c代码。这里主要是初始化了需要的外围设备,比如说网卡驱动,串口驱动等等,然后启动内核。

    4、 启动内核可以从网络启动,也可以sd/emmc卡启动。其主要就是把内核的代码给loard进DDR中,然后执行。

    Bootloader的内存分布如下:

    讲得很好,嵌入式Linux框架的理解

     

    关于芯片内的IP核(各模块控制器)

    对于芯片内的一些IP核,也就是各个模块的控制器了,其实都是通过FPGA来实现的。FPGA就是现场可编程门阵列。比如拿I2C控制器来说吧。I2C主要就是SDA和SCL两根线了,实现的功能就是传输数据了。在IP核的内部可以实现很多的逻辑,比如说当要发送一个设备地址的时候,主要配一下寄存器,该模块的状态机获取这个数据,然后发送了SDA线的数据是从设备的设备地址,那么从设备就会回应一个低电平,这时这个模块的SDA线有了这个低电平,那么就可以知道这个设备地址发送正确了。而我们不需要知道IP核内部是怎么去处理的,只需要配置个数据给一个寄存器,然后该模块就会做相应的处理。当然可以用模拟的方法,所以这就是IP核的作用了,用配寄存器来实现功能,从而隐藏了内部的工作时序,封装的很好。

    至于其他的模块也是同一个原理。

    关于内核

    讲得很好,嵌入式Linux框架的理解

     

    当bootloader把内核代码loard进了DDR之后,那么就要启动内核了。内核的启动简单的如下所示:

     

    讲得很好,嵌入式Linux框架的理解

     

     

    当内核启动完成后,就会调用用户的init守护进程了。

    关于linux文件系统

    当内核调用到linux的文件系统后,那么在控制台终端就可以运行你要的程序。具体和linux操作系统无多大差异。

    关于android文件系统

    当找到了android的init程序后。下面的图很好的分析了android的启动过程。

    由以上就可以知道我们用得手机或者pad到底是怎么实现的。其实嵌入式linux也就这些东东,不过要学好这些,所需要积累的和学习的还是有很多很多的。

    转载于:https://www.cnblogs.com/ct20150811/p/11277221.html

    展开全文
  • 使用C++构建嵌入式开发框架

    千次阅读 2012-10-13 20:18:28
    框架作为一种大粒度的重用技术在桌面软件开发中得到了广泛应用,而在嵌入式开发领域,目前还没有一套完整的标准框架可供使用。本文以通信领域的嵌入式软件开发为例,介绍使用C++语言,在ARM平台Nucleus plus操作系统...
  • 嵌入式程序框架

    2019-05-22 09:18:53
    什么才叫好的程序:框架 + 业务逻辑 + 软硬件 ? 出发点: 软件硬件分层 功能分块 1、将硬件驱动封装成API 2、定义一个硬件驱动的结构类型对其进行API实例化 3、应用层直接使用驱动结构层的指针 4、协议独立
  • 嵌入式系统框架----软件篇

    千次阅读 2019-10-28 11:20:44
    1.overview ...嵌入式系统分为硬件以及软件两大部分,大多数人参与的是嵌入式软件设计,更多的是接触的是上层软件系统部分,可以分为两大类型嵌入式软件应用工程师以及嵌入式驱动工程师。 前者主要负...
  • 嵌入式软件开发,包括单片机开发中,软件架构对于开发人员是一个必须认真考虑的问题。软件架构对于系统整体的稳定性和可靠性是非常重要的,一个合适的软件架构不仅结构清晰,并且便于开发。 我相信在嵌入式或...
  • 嵌入式框架iframe在网页设计中的应用研究
  • 基于单核结构的嵌入式处理器越来越难以满足日益增长的嵌入式多媒体应用的处理需求,多核嵌入式结构已成为解决这一问题的有效途径,同时也为如何充分开发利用多核结构的应用软件带来挑战。目前的编译技术和开发工具...
  • 嵌入式软件应用程序开发框架浅见

    千次阅读 2016-10-30 20:21:04
    最近在构思一个嵌入式系统上的应用程序开发框架,这个不单单是做一个应用程序的框架,是一个系统的。 要达到的目的就是为业务实现部分的程序提供一个框架,这个框架这么说是一个很模糊打概念,下面详细介绍一下这个...
  • 嵌入式ERPC框架正式发布了

    千次阅读 2019-08-06 17:13:06
    整个框架采用纯C语言实现,可很好的应用嵌入式Linux平台中; 整个框架基于POSIX标准变现,可实现跨硬件平台的多场景、多行业的应用; 底层采用TCP长链接方式实现,连接稳定,通信效率高; 通信采用json-rpc...
  • 这样的代码不应该需要太多积分,但时间久了积分上去了,特意来减少所需积分,希望大家喜欢。...嵌入式开发框架之模块化代码实现 仿linux设备驱动框架编写 linux模块化编程 代码开发框架 linux驱动学习
  • 嵌入式应用软件架构设计

    万次阅读 多人点赞 2017-08-09 18:02:33
    要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构怎么行。 如果没有好的架构,移植将会是一件很痛苦的事情。 如果没有好的架构,复用是最大的难题,没法更大限度的复用原有的代码。 如果...
  • 对于一个嵌入式系统,最重要的当然是运算以及存储单元,基本的嵌入式系统可以简化成如下系统框架图: 图1.1 系统框架图 对于一个嵌入式系统,我们从常见的嵌入式ARM板进行分析:(从淘宝上截取了一张最多人用.....
  • 嵌入式框架QP_nano的51单片机移植与应用.pdf
  • 好久没更新播客了,最新想写些自己的编程方面想法。也就是些自己的想法,不一定准确,在这希望能和大家...详情以及应用可见下一篇: https://blog.csdn.net/MINGTING1323/article/details/100186598    
  • JAVA-CEF 是一个可以将浏览器功能(页面渲染,JS 执行)嵌入到其他应用程序的框架,附件中一个可运行实例。
  • 最近在构思一个嵌入式系统上的应用程序开发框架,这个不单单是做一个应用程序的框架,是一个系统的。 要达到打目的就是为业务实现部分的程序提供一个框架,这个框架这么说是一个很模糊打概念,下面详细介绍一下这个...
  • JAVA-CEF 是一个可以将浏览器功能(页面渲染,JS 执行)嵌入到其他应用程序的框架,附件中一个可运行实例。
  • 嵌入式开发学习框架

    千次阅读 2019-09-17 18:38:34
    嵌入式开发学习框架 嵌入式定义 传统定义:是以应用为中心,以计算机技术为基础,并且硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗 严格要求的专用计算机系统。 客观定义:除PC之外的一切计算机...
  • 看了“自己动手设计并实现一个linux嵌入式UI框架”显然没有尽兴,因为还没有看到庐山真面目,那我今天继续,先来说说,我用到了哪些知识背景。如:C语言基础知识,尤其是指针、函数指针、内存分布,linux 基础知识、...
  • Chromium 嵌入式框架

    千次阅读 2014-01-25 10:58:09
    Chromium 嵌入式框架 (CEF) 是一个开源项目,可使开发人员轻松地在其桌面应用程序中显示 HTML 内容。通过可用的 API,可以精细地控制甚至可以扩展 HTML 视图。在底层,HTML 呈现是通过 Chromium 浏览器项目完成...
  • 嵌入式框架-分层

    千次阅读 2020-04-18 11:12:31
    要做到嵌入式应用的代码逻辑清晰,且避免重复的造轮子,没有好的应用架构怎么行? 如果没有好的架构,移植将会是一件很痛苦的事情。 如果没有好的架构,复用是最大的难题,没法更大限度的复用原有的代码。 接下来...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,163
精华内容 29,665
关键字:

嵌入式应用框架