实际项目中写的应用层代码为了保证可靠性,需要编写一定的测试用例,进行单元测试。 这里以GoogleTest为例 ,在嵌入式平台上(Amlogic A113x 平台)实现应用层代码的测试。...Dgtest_build_samples=ON ${GTEST_DIR} 这里为止,完成了在Ubuntu 16.04平台上构建GoogleTest 的步骤,详细构建可查看官网文档 ---- 这里的重点的是怎么在嵌入式平台上...---- 参考 嵌入式平台使用gtest进行白盒测试 gtest 编译、安装和使用 Testing C++ code with the GoogleTest framework GoogleTest...可以测试C代码吗?
博主用 XMind 画了两个思维导图,供大家参考 嵌入式应用开发 嵌入式驱动开发
EAF是Embedded Application Framework 的缩写,即嵌入式应用框架。嵌入式应用框架是 Application framework的一种, 是在嵌入式领域的应用框架。...关于软件框架 软件框架是一个抽象的概念, 是提供了通用的软件功能,可以通过用户编写代码有选择地改变, 从而提供特定的软件应用。 软件框架提供了构建和部署应用程序的标准方式。...软件框架可能包括辅助程序、编译器、代码库、工具集和API , 汇集了所有不同的组件, 便于一个项目或系统的开发。...这或许就是嵌入式应用的必然性。 ? EAF 是面向嵌入式系统的软件应用框架。嵌入式系统是一个在较大的机械或电气系统中具有专用功能的计算机系统, 通常具有实时计算约束。...嵌入式开发人员可以在 asm.js JavaScript 子集中编写性能关键代码, 并将其编译为本地代码, 作为构建过程的一部分, 而不是依赖 JIT。
推荐理由 这是一款大神级开源代码,基于c语言的,几乎包含了嵌入式开发的各个部分的封装,可以说是嵌入式系统的瑞士军刀! 注:源码作者不是我,我这里只是推荐,帮忙宣传。...• Debug: 调试模式,默认启用详细调试信息、断言、内存越界检测、内存泄漏、锁竞争分析等检测机制 • Small: 最小化编译,默认禁用所有扩展模块,启用编译器最小化优化 • Micro: 针对嵌入式平台...,基于生产、消费者模型 • 提供信号量、协程锁支持 • socket、stream都模块原生支持协程,并且可在线程和协程间进行无缝切换 • 提供http、file等基于协程的简单服务器实例,只需几百行代码...,就可以从socket开始写个高性能io服务器,代码逻辑比异步回调模式更加清晰 • 同时提供stackfull, stackless两种协程模式支持,stackless协程更加的轻量(每个协程只占用几十个...(目前只实现了部分,之后有时间会完全实现掉) • 扩展部分常用接口,增加对sqrt、log2等常用函数的整数版本计算,进行高度优化,不涉及浮点运算,适合嵌入式环境使用。
Linux 系统为了统一管理这些输入设备,实现了一套能兼容所有输入设备的框架:输入系统。驱动开发人员基于这套框架开发出程序,应用开发人员就可以使用统一的 API 去使用设备。...7.2 输入系统框架及调试 7.2.1 框架概述 作为应用开发人员,可以只基于 API 使用输入子系统。但是了解内核中输入子系统的框架、了解数据流程,有助于解决开发过程中碰到的硬件问题、驱动问题。...输入系统框架如下图所示: 假设用户程序直接访问/dev/input/event0设备节点,或者使用tslib访问设备节点,数据的流程如下: ① APP 发起读操作,若无数据则休眠; ② 用户操作设备
,处理业务,类似下面链接中的前后台顺序执行法,是不是感觉一朝回到了解放前; 做过应用系统的同学多少都知道,主流的应用开发框架都是基于事件驱动的,都有基于IOT反向依赖倒置开发模式的开发框架,只需要在固定的模板方法中填写业务逻辑代码...,一个APP的雏形就出来了,那么嵌入式系统为什么没有这样的框架呢?...通过搜索资料,其实这些探索还是有的:比方 CSDN博客:嵌入式软件开发之程序架构(一),提供了一个相对来说不复杂的框架,基于这个思路,实现了一个简单的Uart串口命令接收和处理业务。...Uart串口消息处理框架: 接收串口消息 -> 入命令队列 串口处理task定时运行 -> 出命令队列的命令 -> 处理命令 主要涉及:任务管理(定时器)、主循环、命令队列、串口中断处理 代码在nrf52832...芯片上运行,其他嵌入式芯片可以参考!
一、框架分层是什么? 在嵌入式架构中:一般分为硬件架构与软件架构。这里是嵌入式软件设计,也是大多数人接触的设计。...2.劣势 开发成本高:因为多层分别承担各自的职责,增加功能需要在多个层增加代码,这样难免会增加开发成本。但是合理的抽象,根据自己的项目设置合理的层级是能降低开发成本的。...性能略低:业务流需要经过多层代码的处理,性能会有所消耗。 可扩展性低:因为上下层之间存在耦合度,有些功能变化可能涉及到多层的修改。...三、一个简单的例子 由于主要讨论的是软件框架的分层设计,这里使用STM32cubemx来进行硬件的初始化,尽可能少考虑到硬件驱动的部分。...最后附上一点点代码,就是关于LED如何进行在不同层进行封装 硬件层 首先看HAL库生成提供的代码,这个就是LED硬件层,也就是GPIO层,cubemx已经生成了,在stm32f4xx_hal_gpio.c
参考 嵌入式linux开发板使用pulseaudio连接蓝牙耳机播放音频文件 其中的Failed to find user ‘pulse’....:65534: Linux车机平台pulseaudio多alsasink配置 提示:这里描述项目中遇到的问题: 例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据 APP 中接收数据代码
// 当前实例 TCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本 TCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名 // 此代码模块中包含的函数的前向声明...nCmdShow) { UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(lpCmdLine); // TODO: 在此放置代码...hWnd, message, wParam, lParam); } break; case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: 在此添加任意绘图代码
前言 也许beego框架在国内应该是众多PHPer转go的首选,因为beego的MVC、ORM、完善的中文文档让PHPer们得心应手,毫无疑问我也是。...如何读一个框架? 毫无疑问读go的框架和PHP框架也是一样的: 配置加载:如何加载配置文件的。 路由:分析框架如何通过URI执行对应业务的。 ORM:ORM如何实现的。...go有自己实现的http包,大多go框架也是基于这个http包,所以看beego之前我们先补充或者复习下这个知识点。...beego路由分析 接下里我们开始看beego的代码。...,至此这个beego框架的流程就其本理顺了,最后我们在回头总结下整个流程如下图: 备注:go导入包相当于入栈过程,先import后执行init ?
<?php /** * by:尹深 QQ1247333542 * mvc核心文件 */ class MVCFunction { //定义静态成员...
与数组索引相比,指针一般能使代码速度更快,占用空间更少。使用多维数组时差异更明显。下面的代码(代码不完整,只是为了做示例分析)作用是相同的,但是效率不一样。...在ICCAVR中,如果乘以2n,都可以生成左移的代码,而乘以其它的整数或除以任何数,均调用乘除法子程序。用移位的方法得到代码比调用乘除法子程序生成的代码效率高。...提高CPU的并行性 (1)使用并行代码 尽可能把长的有依赖的代码链分解成几个可以在流水线执行单元中并行执行的没有依赖的代码链。...需要注意的是,重排序的代码和原来的代码在代码上一致并不等价于计算结果一致,因为浮点操作缺乏精确度。在一些情况下,这些优化可能导致意料之外的结果。...说明 该方案主要是考虑到在嵌入式开发中对程序执行速度的要求特别高,所以该方案主要是为了优化程序的执行速度。
在这里毕竟不是为了分析框架的具体实现原理,以后有机会慢慢展开,在此主要为了讨论,如何快速使用这些框架来写出字符设备的驱动程序。...module_exit(first_drv_exit); MODULE_AUTHOR("Ethan Lee xxxxxxxxx"); MODULE_LICENSE("GPL"); //指定协议 以上的代码基本是关于字符型设备驱动的框架结构了...可以看到以上的代码其实就是一个简单的驱动程序框架了,其实如果没有 first_drv_open 和 first_dev_write 两个函数也是可以的,在硬件上可以正确的安装该驱动,在安装驱动的时候会调用注册在...那么我们就来改进一下我们的代码来实现自动分配设备号以及创建设备文件吧。...第二个问题,解决起来也不是很困难,在Linux中提供了一种机制是udev,可以用于自动的创建设备,在嵌入式Linux的文件系统,比如busybox,也有一套简化版的机制,是mdev,在配置文件系统的时候会进行相应的配置
当更新完代码后,每次都得重启,效率比较低 可以使用官方的热更新包,实现修改代码后,自动重启 如果是新版本安装 composer require hyperf/watcher --dev 如果是使用旧的版本可以直接在...=> ['.env'], 'scan_interval' => 2000, ], ]; 使用这句命令启动 php bin/hyperf.php server:watch 更改代码后
Apache+mysql) Windows10 64位 PHPStorm 将源码放到WWW目录,访问/install.php安装即可 0x01 目录结构 开始审计前,先看一下目录结构,判断是否使用框架开发...,常见的框架如Thinkphp、Laravel、Yii等都有比较明显的特征 判断没有用框架,就先搞清楚目录结构、路由。...0x02 代码审计 审计代码可以从两个方向出发: 从功能点进行审计,通过浏览网页,寻找可能存在漏洞的功能点,然后找到相对应的源码进行审计 从代码方向进行审计,通过全局搜索危险函数,审计相关函数的参数是否可控
前面讲了如何不写代码可以实现自动化。 但是录制的代码很杂乱且冗余,可读性和维护性太差。 下面来介绍如何搭建自动化框架,将录制的代码整理,让其变得简洁。 python市面见得多的是以下两种框架。...unittest是python自带的测试库,自我感觉的话,如果对python只是了解基础知识,学unittest框架相对于来说要好理解些,unittest框架也完全可以实现市场上大部分的业务测试!...建议可以先了解下unittest框架,然后在学pytest框架,可以更好的去感受一下两个框架的优缺点。...,失败是 F,出错是 E,跳过是 S 测试的执行跟方法的顺序没有关系, 默认按字母顺序 每个测试方法均以 test 开头 Verbosity=2情况下会打印测试的注释 被测代码,demo.py文件 #!...,可以用来作为我们自动化测试框架的用例组织执行框架 2、unittest流程:写好TestCase,然后由TestLoader加载TestCase到TestSuite,然后由TextTestRunner
降序列表: {{ [1,2,3,4,5,6,10,9,7] | sort | reverse }} 11、macro.py """ 11_代码复用之宏...macro my_div() %} 我是一个孤独的div {% endmacro %} 12、extends.py """ 12_代码复用之继承...[掌握] - 解释: 一个子模板继承自父模板 - 作用: 共性抽取,代码复用 - 父模板 - 1.所有子类都具有的相同的内容的, 在父模板中直接写死 - 2.每个子类的模板中不一样的内容,使用
1.前言 帧缓冲框架是Linux下专门为显示类设备设计的接口,目的是将硬件和软件层分离开,方便应用层的编程,也方便应用层程序移植。...帧缓冲框架向驱动层和应用层分别提供了一套标准接口,驱动层按照框架编写驱动,应用层按照框架编写应用程序。帧缓冲在/dev目录下生成的标准节点是fb,比如:/dev/fb0,/dev/fb1等等。...这篇文章就介绍在应用层 如何利用帧缓冲框架接口封装LCD屏的画点函数,获取LCD屏的硬件信息,完成对LCD屏编程,实现文字、数字显示。...后续正常开发中一般采用矢量字库完成字体显示,大小调整方便,字体更换方法,在前面文章有介绍过嵌入式Linux如何交叉编译freetype库。 2....完整示例代码 3.1 中文显示 下面这份代码是单个汉字取模进行显示的,代码较少,整体比较简单。
demo01blueprint.py """ 蓝图基本使用[掌握] - 作用: 为了进行模块化开发 - 特点: 属于flask中自带的,不需要安装扩展就能使用...
Acceleo基于Eclipse平台以及EMF(Eclipse模型框架),开放源代码,可以免费使用。...它能够以界面引导方式产生代码,定制代码生成模板。J2EE Spider当前能够生成基于Struts/JSF,Spring,Hibernate等框架的源代码。...J2EE Spider的主要特性如下: •支持以界面引导方式产生代码 •支持与Eclipse集成 •支持增量构建 •支持正向逆向工程 •产生代码的国际化 •支持利用模版生成代码 •支持利用多个框架 J2EE...搭建spring,springmvc,hibernate开发环境 代码生成:生成curd代码,包括jsp slave4j框架能帮你做什么?...支持多项目管理,文件编辑,一键式生成代码。快速构建基础框架代码,并支持MVC 3层构架。 生成的项目可以直接导入Eclipse,并且可以直接运行部署Tomcat服务器中,大大减少程序员的工作量。
领取专属 10元无门槛券
手把手带您无忧上云