一、ERPC开发的原由

随着科技日新月异的快速发展,电子产品的功能越来越多,业务也越来越复杂。以前靠单打独斗完成电子产品的研发的时代已经慢慢远去,更多的是靠一个团队协作共同努力才能完成。这就为电子产品的设计和研发带来了新的问题:

  • 团队的协作,有时是跨部门,甚至是跨地域的,这为沟通带来了很大的成本;
  • 团队的开发,必然引入团队的管理,管理的成本也随团队的扩展而增加;
  • 软件功能的独立性,导致不同功能采用不同的方法实现,接口也并不统一,开发任何新功能都需要研发人员投入大量精力去学习和熟悉,学习成本较高;
  • 由于功能的复杂性,而开发周期一般较短,导致缺乏设计,很多产品的研发投入都是一锤子买卖,很难有一次研发投入,多个产品产出的情况,研发成本较高;
  • 由于产品功能复杂,缺乏设计,产线生产成本,后续产品技术服务成本等后即成本不断上升,有甚者公司的研发、生产、技服的成本投入比达到1:2:3;

为了解决如上所有问题,我开发了这套ERPC框架:

  • 它统一了应用程序开发方法,将编码拆分为功能实现和接口开发,为应用提供了统一标准化的接口方法,从而降低应用与服务开发者之间的沟通成本;
  • 它将开发过程拆分成研发与部署两个阶段,这样更加便于管理优化,这也满足公司部门的划分和职能分工,更利于公司运作;
  • 它简化了应用开发难度,将模块、进程、线程等过程全部吸收,应用只需要关注业务数据的处理实现和接口的编写,从而降低出错的概率;
  • 它自带的监控程序和日志方法,可实时监控程序异常和任何业务的异常,非常便于问题的定位和解决,而不是以前的规避问题;

ERPC的好处远飞如此,我认为它最核心是解决人员依赖的问题,让研发人员将精力放在真正的功能和接口实现,以及功能和性能的优化上面,这无论是对于研发人员,还是公司都是一个逐渐改善全局的、滚雪球式的快速增长方法。

在ERPC中,我还有一个梦想(不认同勿喷啊):希望ERPC能够让Linux系统重新拿回中高端电子产品的市场,实现稳定的、底成本的、可持续发展的方案,从而摆脱安卓的笨重、高成本、受google(美国)限制的状态

我也非常期待华为的鸿蒙系统尽快发布,涨中国之气,灭美国之风!

二、ERPC的特性

ERPC以简化Linux应用设计为目标,当前具备如下特点:

  1. 整个框架采用纯C语言实现,可很好的应用于嵌入式Linux平台中;
  2. 整个框架基于POSIX标准变现,可实现跨硬件平台的多场景、多行业的应用;
  3. 底层采用TCP长链接方式实现,连接稳定,通信效率高;
  4. 通信采用json-rpc协议,具有很好的可视性、可扩展性,并能无缝的与云平台对接;
  5. 通信数据可加密,可使用标准的SSL/TSL加密,也可自定义加密算法,满足通用和个性化数据安全的需求;
  6. 框架实现了远程调用方法,将跨线程、跨进程,甚至跨CPU、跨云服务器的调用过程简化成本地调用过程;
  7. 框架实现了观察者模式,可实现硬件或模块的状态监控、消息通知,配合远程调用方法,可实现当前市面所有的功能需求;
  8. 框架内实现了一个标准的周期任务,周期单位为S,可应用于应用的周期检测任务,用户可自定义是否启用,自定义周期任务类型;
  9. 框架内实现了事件驱动型有限状态机(EFSM),可实现平行、树形、层次等多重状态机业务需求,并且还可独立于框架外使用;
  10. 框架内实现了多远定时器,可同时实现上万个定时任务,且定时时间精度可达纳秒级别,还可定义多重定时器,并且可独立于框架外使用;
  11. 框架内集成了完备的日志管理系统,可实现日志多种输出、自定义等级输出、日志自动转存,可限定日志大小等功能,非常适合嵌入式设备使用;
  12. 框架本身集成了异常监控功能,结合日志系统,可将应用程序的各种异常实时记录,非常便于应用BUG的记录、跟踪、定位和解决;
  13. 框架自身具备配置文件监控功能,当配置文件有修改时,可自动重载配置文件,从而实现动态部署、动态修改日志输出方法;
  14. 框架本身提供了相关的一类工具集接口,可用于获取ERPC版本、运行状态、当前进程名、cJSON复制、字符串比较等等功能,并且还在不断扩展;
  15. 整个框架只需要1个环境变量:ERPC_PROFILE_PATH;和2个配置文件:部署配置文件、日志配置文件;所有框架接口仅仅只有11个接口
/* 框架控制接口:3个 */
typedef enum {ERPC_LOOP_EXIT,ERPC_LOOP_DEFAULT,ERPC_LOOP_ONCE,ERPC_LOOP_NOWAIT
}erpc_loop_t;extern int erpc_framework_init(char *process);
extern int erpc_framework_loop(erpc_loop_t way);
extern void erpc_framework_break(void);/* 远程调用接口:3个 */
typedef cJSON *(*erpc_service_callback_t)(cJSON *params);extern int erpc_service_register(const char *module, const char *func, erpc_service_callback_t pointer);
extern int erpc_service_unregister(const char *module, const char *service);
extern int erpc_service_proxy_call(const char *module, const char *service, cJSON *send, cJSON **recv, struct timeval *tv);/* 观察者模式接口:5个 */
typedef void (*erpc_observer_callback_t)(cJSON *params);extern int erpc_observed_create(const char *module, const char *observed);
extern int erpc_observed_destroy(const char *module, const char *observed);
extern int erpc_observer_invoke(const char *module, const char *observed, cJSON *params);
extern int erpc_observer_register(const char *module, const char *observed, erpc_observer_callback_t action, struct timeval *tv);
extern int erpc_observer_unregister(const char *module, const char *observed, erpc_observer_callback_t action, struct timeval *tv);
  • 想快速上手,熟悉其使用方法,详见:快速入门;
  • 有关框架及接口的详细介绍,详见:使用手册;
  • 有关配置文件的详细介绍,详见:配置文件;

除以上框架本身的功能之外,框架还集成了如下模块,同时具备集成模块的全部功能:

  1. 集成cJSON库,ERPC内部也使用该库处理JSON数据,详见cJSON;
  2. 集成libuv事件库,可用于实现高性能事件驱动的应用程序;
  3. 集成libevent通信库,可用于实现高性能事件驱动的应用程序;
  4. 集成Websocket和MQTT库,用户可基于Websocket通道上使用MQTT协议开发云加端的应用;
  5. 集成libcurl库,可支持http的上传于下载,配合一起使用可实现电子设备的OTA全量、增量、灰度等升级方法;

更多详情,可异步到ERPC主页了解,里面的文档将持续更新,也欢迎大家贡献自己的文采,或者使用ERPC编写例程,贡献您使用过程中发现的问题,或者直接贡献您所编写的例程。

嵌入式ERPC框架正式发布了相关推荐

  1. 《安富莱嵌入式周报》第284期:Matlab2022b发布,支持从 .NET 调用,耳机放大器,牛屎芯片替换,JSON可视化,开源的飞行软件和嵌入式系统框架

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  2. 嵌入式linux驱动自动化测试,通用的嵌入式自动化测试框架 - 心心草的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    目前通用的嵌入式自动化测试框架,四层结构: 解释几个术语: 1.测试包(test suite):只要点一个按钮就可以完成一次测试必须用到的东西. 2.数据驱动(Data driven):测试数据与测试 ...

  3. 用 Shell 快速写一个嵌入式测试框架

    大家好,转发我朋友老吴的一篇文章,我们在做测试框架的时候用的是python,但是一些理论基础和用shell是一样的,在这里,语言并不是关键.希望对大家有帮助. 哈喽,我是老吴. 作为一个嵌入式底层码农 ...

  4. QT嵌入式之_QT介绍_安装_以及环境变量配置---QT嵌入式图形框架工作笔记001

    WPS也是用qt开发的,用qt开发,主要是可以方便的移植到各种平台,以及嵌入式平台. 也可以用QT来开发,在STM32平台运行的程序. 对于网络编程来说,如果我们基于传统的套接字来开发,会很慢,麻烦, ...

  5. 嵌入式系统框架----硬件篇

    1.系统框架图 对于一个嵌入式系统,最重要的当然是运算以及存储单元,基本的嵌入式系统可以简化成如下系统框架图: 图1.1 系统框架图 对于一个嵌入式系统,我们从常见的嵌入式ARM板进行分析:(从淘宝上 ...

  6. 新一代嵌入式UI框架 HaaS UI 使用JS在嵌入式开发炫酷前端

    HaaS UI 是一款面向AIoT 领域的渐进式JS应用开发框架,以移动开发理念有效降低开发者研发AIoT带屏应用难度. 理念 移动开发模式,全面拥抱JavaScritp开源生态,且系统服务通过统一的 ...

  7. 【嵌入式UI框架:LVGL】使用NXP GUI Guider 拖拽式设计LVGL

    LVGL是一个免费的开源嵌入式图形库,它提供创建嵌入式GUI所需的功能,具有易于使用的图形元素.精美的视觉效果和低内存占用.完整的图形框架包括供您在创建GUI时所用的各种小部件,并支持更高级的功能,例 ...

  8. 嵌入式 linux restful,嵌入式 RESTful 框架 express.java

    express.java 是一个微型的 RESTful Web 框架.可用于嵌入应用内部,替代 JMX 用于跨语言通讯. 示例代码: WebServer.jettyServer().get(" ...

  9. 嵌入式知识框架之六-接口与总线(SPI\I2C\ USB\PCI\PCI-E\SD\SDIO\以太网接口)

    接口是外设和主设备连接的方式/规则/协议的名称:XX总线是主设备连接某一类接口的名称 1.串口 串行数据接口标准(根据时间发展顺序介绍): RS-232:命名为EIA-232-E标准:通信距离短.速率 ...

  10. 猿团YTFramework UI框架正式发布 提高开发效率

    由猿团开发的全新移动端UI框架:YTFramework UI(以下简称YTF UI)正式推出,即日起,开发者即可在YTF UI 页面进行框架的下载和使用. YTF UI是一款前端UI框架,以rem作为 ...

最新文章

  1. Codeforces Round #403 (Div. 1, based on Technocup 2017 Finals)
  2. 终极JPA查询和技巧列表–第2部分
  3. 斑马888t打印机墨盒安装_硒鼓?墨盒?究竟哪个才是打印机的“灵魂伴侣”?...
  4. javascript Date对象 之 获取时间
  5. 浅析MySQL中exists与in的使用
  6. 维纳(Wiener)滤波及Matlab代码
  7. split分割造成索引越界异常问题
  8. Scan2CAD中文版
  9. 苹果手机服务器暂时不可用,服务暂时不可用【操作途径】
  10. Go语法·类型选择(type switch)
  11. 淘宝优惠券(高省)那些套路,我已经看穿了
  12. mac系统升级后npm安装依赖报错gyp: No Xcode or CLT version detected
  13. RFQ 、IFB、RFP 、RFI的区别是什么
  14. 页面浏览pdf或图片iframe
  15. android实现拍照及获取照片上传至接口
  16. JS字符串转数组和数组转字符串
  17. Harbor docker login x509 certificate signed by unknown authority
  18. java 给word加水印,Java 实现在线给word 文档添加水印
  19. python内置模块re_13.python内置模块之re模块
  20. 铁电存储器这样应对充电桩存储痛点

热门文章

  1. PHP-FPM 配置文件详解
  2. Flink1.13.0 + Hudi 0.11.1 + Hive2.1.1 + presto0.273.3 + yanagishima 18.0
  3. Rancher Cluster is being upgraded
  4. 001-电脑操作规范-2019年03月.doc
  5. wav pcm格式文件解析
  6. 西数硬盘刷新固件_关于西数硬盘转速的fake news
  7. QoS mechanisms——LLQ(拥塞管理,低延时队列)
  8. 联盟营销最佳实践:提高联盟计划的投资回报率
  9. 采用commons-emai发送电子邮件
  10. 如何将一个向量投影到一个平面上_数学一轮复习32,平面向量数量积及其应用,三角形‘四心’模型...