该笔记为百问网韦东山老师免费课程学习过程的整理,学习过程中,软件架构思想很重要,所以在每学习完一个单元后悔整理一下。由于韦老师在授课过程中的函数名称和变量命名时不太直观,所以我就自己根据软件分离来重新对函数命名。

软件架构

整体软件架构

该课程整体的软件架构:

共有三层结构,最后一层是和硬件相关的Driver层。
中间层是基于Driver层抽象出的软件逻辑层,向上提供与硬件无关的功能函数接口,向下对Driver层接口封装抽象。
最上层是应用层,实现用户级别的软体功能。

简单的说,应用层是研发总监,中间层是主管/部门经理,底层是干货的码农兄弟们。

显示系统软件架构


disp_manager.c是主管的角色,他知道手下每个码农兄弟能做什么,然后以领导化的语言汇总抽象之后向上层的研发总监报告。那么他是怎么知道下面各码农能做什么呢?当然是靠各位码农兄弟们向这位主管报告了!

framebuffer.c作为码农兄弟的角色,他们会向主管们报告自己是谁,能干嘛?在入职的时候他们会填写表格信息(就是g_tFramebufferOpr),上交给主管,通过fb_framebufferInit()向主管注册了自己。主管在用到相应的功能时就会叫对应的码农兄弟去干活,并且会把一些要求的参数给到这位码农兄弟。码农兄弟接到之后,运用他多年修炼的C+V功力去完成任务,并且把结果告诉主管。

数据结构抽象

数据结构抽象是非常重要的,在项目初期架构师规划好的数据结构会使代码更加健壮。
数据结构抽象可以理解为是一个公司的各种规章制度,各种表格。有全公司的,也有各部门的,也有各码农为了干活方便自己定义的。

include/disp_manager.h中定义了三个数据结构:

typedef struct disp_region
typedef struct disp_dispbuff
typedef struct disp_oper

便于参数在Driver层和中间层间互传。

===========

测试程序

这里测试程序disp_test也就是应用层了,角色是研发总监。

void lcd_put_ascii(int x, int y, unsigned char c)
int main(int argc, char **argv)

从上到下的函数调用举例如下:

电子产品量产工具-软件架构-显示系统相关推荐

  1. 项目-电子产品量产工具

    项目框架 一.显示设备 disp_manager.c 存在着一个链表.链表中存放在底层设备节点的指针,通过这个链表中的指针来控制底层的  设备,里面有很多控制设备节点的函数 frambuffer.c ...

  2. ubuntu 串口调试工具推荐_升级版全系列视频第一个项目电子产品量产测试与烧录工具...

    第一章 前言 温馨提示:本文共10111字,预计阅读时间26分钟. 之前说过要开源100ASK_IMX6ULL批量测试GUI: 100ask_imx6ull批量测试神器即将开源 ,今天说到做到免费开源 ...

  3. 电子量产工具:输入系统-输入管理单元测试

    软件总框图: 输入管理单元测试 添加input_test.c,内容如下 #include <sys/mman.h> #include <sys/types.h> #includ ...

  4. 慧荣SMI SM32X量产工具G1219 图文教程.恢复方法

    第一步:先用ChipGenius芯片检测工具检测您的U盘信息以便查找合适的量产工具: 第二步:根据ChipGenius检测的结果  找到合适的量产工具: 第三步:点击Scan USB按钮扫描一下就可以 ...

  5. 【电子量产工具】1.显示系统

    文章目录 前言 一.显示系统分析 二.封装显示结构体 三.底层 Framebuffer 四.显示管理层 五.测试程序 实验效果图: 总结 前言 最近看了 电子量产工具 这个项目,本专栏是对该项目的一个 ...

  6. 【电子量产工具】6. 业务系统

    文章目录 前言 一.业务系统分析 二.处理配置文件 三.生成界面 四.根据输入事件找到按钮 五.业务系统总流程测试 测试效果: 总结 前言 最近看了 电子量产工具 这个项目,本专栏是对该项目的一个总结 ...

  7. 【电子量产工具】4. UI系统

    文章目录 前言 一.UI界面分析 二.结构体描述按钮 三.按钮初始化 四.默认绘制按键事件函数 五.默认按下按键事件函数 六.测试程序 实验效果 总结 前言 最近看了 电子量产工具 这个项目,本专栏是 ...

  8. 惊心动魄修复U盘【另附U盘量产工具】(显示文件格式为RAW 需要格式化)

    序 昨天把一个8G的U盘借给同事,结果今天早上来,她和我说U盘打不开要格式化了,因为之前遇到这样的问题,也帮同事们弄过,所以满怀信心安慰MM说,没事的,结果按照以前的办法失效了..拿到自己的电脑试了好 ...

  9. 方便的U盘量产工具不刻盘装系统

    2019独角兽企业重金招聘Python工程师标准>>> 可以把U盘模拟成usb-cdrom,iso文件弄到这个cdrom里面,在能usb启动的机器上设好usb-cdrom启动就可以利 ...

最新文章

  1. 在 Azure 中的 Linux VM 上创建 MongoDB、Express、AngularJS 和 Node.js (MEAN) 堆栈
  2. 如何不用重启在CentOS 7/ RHEL 7虚拟机中添加一块新硬盘
  3. PyPI又双叒叕发现恶意软件,能盗取信用卡还有后门程序
  4. mac睡眠快捷键_告别Mac新手,MacOS电脑高手不得不会的10个使用技巧!
  5. jfinal框架中后台获取前端传递的参数
  6. 概率dp——处理分母为0的情况hdu3853
  7. 【Linux网络编程】并发服务器的三种实现模型
  8. 网络协议入门(OSI七层和TCP/IC四层协议)
  9. android键盘输出增加按键码
  10. verdi中波形怎么看间距_热血传奇:怎么看传奇中的“首充”?
  11. zblog php获取文章的第一张图片,zblog 获取文章图片作缩略图的几种方式
  12. Web Server 配置及上传文件
  13. Linux下修复U盘坏块,快速修复U盘坏块的方法
  14. 官方验证!雨林木风 Ghost XP SP3 装机版 ylmf_xp3_yn9.8 !!附:官方全部MD5!
  15. 彻底解决Python包下载慢问题
  16. 5G手机会给我们带来什么样的变化
  17. linux美元符号切换为井号,struts2 (# % $)井号,百分号,美元符号的含义和使用方法举例...
  18. Android手游3d模型导出,楚留香手游3D模型怎么提取 提取教程
  19. odoo 重写unlink方法
  20. java后台地址(省,市,区)、姓名、手机号算法智能识别

热门文章

  1. SVM之SMO优化算法
  2. 睿智(睿金)ETL介绍
  3. Autojs 查找控件
  4. 远程连接服务端电脑mysql数据库
  5. 32位单片机中各数据类型的数值范围
  6. Hyperspace HDU - 4666
  7. FPGA开发之问题二
  8. DirectX开发环境的快速配置
  9. 计算机中小数如何储存,小数在内存中是如何存储的?
  10. pnpm v8版本升级变化关注点(前瞻速攻版)