- 硬件层面
- 处理单元:嵌入式处理器、DSP处理器、嵌入式GPU、FPGA
- 前向通道 :传感器、信号调理电路、A/D
- 后向通道:D/A、控制
- 人机接口:键盘、显示、BCI(脑机接口)
- 通信通道:UART、网口、WiFi
- 多个电子信息系统,通过网络相连,同时云处理中心也与之相连
- 边缘计算(时延要求高)
- 云计算
- 软件层面
- 操作系统、应用软件
- 图像处理、深度学习
同通用计算机对比,嵌入式系统具备计算机的功能,但都嵌入在产品的内部发挥计算机的功能。从该定义角度,嵌入式系统包括:单片机、嵌入式处理器、DSP处理器等为核心的所有系统。
- ARM:ARM9
- 授权
- MIPS
- 授权
- PowerPC:MPC860
- 摩托罗拉(飞思卡尔)、IBM
- 面向通讯
- 嵌入式CPU、DSP、GPU的特点
- CPU
- 重控制、轻计算,更多晶体管资源用于缓存,通用性好,编程简便,灵活性高,调度管理能力强。
- 芯片大部分用在控制单元上,基本计算单元是ALU,不适合进行计算,适合进行控制
- DSP
- 哈佛结构,具有专门的硬件乘法器,广泛采用流水线操作,提供特殊的指令,可以用来快速地实现各种数字信号处理算法。数据处理能力强和运行速度快,适合进行信号处理。
- GPU
- 有数量众多的计算单元和超长的流水线,适合并行处理大量的类型统一的数据。
- 重计算、轻控制,更多晶体管资源用于计算
- FPGA
- 硬件可编程,依靠硬件来实现所有的功能,延时低,适合大规模并行计算。设计灵活性差,开发周期较长。
- CPU
- RTOS(实时操作系统)
- VxWorks(不开源,商用)
- pSOS(后来被并购)
- 非RTOS
- Embedded Linux
- Android
- 特点
- RTOS
- 实时性、可靠性
- 微内核结构(最小结构<8KB)
- 微秒中断处理
- 高效的任务管理
- 多任务,具有256优先级优先抢占和轮转调度
- 快速,确定的上下文转换
- 灵活的任务间通信
- 满足TCP/IP网络标准
- 灵活的从ROM、磁盘或网络的引导能力
- 快速、灵活的IO系统
- Embedded Linux
- 代码小,速度快,可靠性高,内核代码完全开放,用户可根据需求对内核进行改造,低成本地设计和开发出满足自己需要的嵌入式系统
- 开源、模块化设计
- 网络功能强大
- 跨平台,支持绝大多数众多的处理器
- 软件资源丰富
- 选择多样,商业的Linux和自由团体维护的Linux
- RTOS
- 需求分析(市场部、系统部)
- 了解行业发展现状(当前产品,行业今后发展)
- 结合用户需求(不同领域需求不同,明确市场群体)
- 相关技术发展现状
- 系统方案分析(市场部、系统部)
- 系统硬件
- 处理器
- 外围器件
- PCB结构
- 软件设计方案
- 操作系统选择
- 支持的通信协议
- 基本软件
- 算法
- 视频压缩算法
- 音频编解码算法
- 视频分析算法
- 系统硬件
- 指定时间计划
- 以周为单位,指定研发的时间计划
- 研发设计(研发部)
- 硬件设计
- PCB
- FPGA
- EDA工具,注意设计流程和规范
- 软件设计
- OS移植
- 通信软件
- 应用软件
- Code Review,注意编码规范
- 算法
- 联合调试
- PCB、FPGA、嵌入式OS
- 应用软件和算法的联合调试
- 硬件设计
- 系统测试
- 系统测试方案
- 多轮迭代
- 进行测试
- Bug List
- 研发部进行修改
- 小批量试产
- 进一步测试并修复Bug
- 研发到生产的硬件/软件文件转换
- 大批量生产
- 保证芯片的参数、工艺一致
敏捷开发(极限编程)
- 聚焦客户价值,消除浪费
- 标识和消除软件开发中的浪费
- 交付刚刚好的系统
- 随时构建,不容忍缺陷
- 消除技术债务,快速响应
- 实践证明:45%的软件特性客户未使用。
- 浪费的定义:部分完成、未应用特性、再次学习、移交、任务切换、缺陷、腐烂的架构、复杂度高的代码、低的测试自动化率、静态告警.……
- 激发团队潜能,加强协作
- 认清团队能力
- 激励:自管理
- 绩效:不打扰、自我解决
- 构建:和大于个体
- 管理者转变:由控制变为辅导
- 团队成员转变:由听从变为参与者
- 50人的团队,30%的时间用于编码,70%用于交流,交流的时间成本高。
- 沟通效果:白板>电话>邮件>文档
- 认清团队能力
- 管理实践
- 迭代计划会议
- 团队讨论
- 输入产品BACKLOG
- 输出迭代
- 每日站立会议
- 昨天做了什么
- 今天计划做什么
- 需要什么帮助
- 可视化管理
- Story墙:TODO,DOING,DONE
- 缺陷走势图
- 迭代验收
- 展示真实产品
- 收集反馈
- 迭代回顾会议
- 总结
- 头脑风暴
- 迭代计划会议
- 技术实践
- STORY:用户做事,初始需求一>初次分解一>再次分解
- 结对编程:一个输入,一个检视,随时交流;效率低15%,缺陷少15%。
- TDD(测试驱动开发)
- 持续集成
- 产品Backlog
- 需求对用户价值
- 动态管理
- 迭代需求分析
- 迭代Backlog:任务清单
- DOD(Definition of Done):标准
- Anatomy系统解制:系统功能依赖关系
- 效果
- 开发效率提升30%
- 开发成本下降30%
- 错误减少30%
- 构建速度提升100%
- 配置效率提升40%发布效率提升40%
- 团队成员每天都看到自己的工作的软件成果,信心提升
- 避免产品最终集成爆发大量问题
- 具体可以了解相关书籍