嵌入式 Linux 应用软件知识体系框架

基础知识

编程语言

  • C

    • 掌握基本语法
    • 掌握标准库的使用
  • C++

    • 掌握基本语法
    • 掌握基于 C++ 的面向对象开发方法
  • Python

    • 掌握基本语法
    • 掌握与 Linux 系统的交互
  • Shell(bash)

    • 掌握基本语法
    • 掌握与 Linux 命令的结合使用

Linux 文件系统

  • 启动流程

    • sysvinit

      • 服务的管理与裁剪
    • systemd

      • 服务的管理与裁剪
  • 了解 qt4、qt5 的移植

  • 了解 yocto

    • 构建文件系统

常规 Linux 应用开发

  • 文件操作
  • 内存操作
  • socket 通信
  • 多线程
  • 进程间通信
  • select IO
  • sqlite 数据库使用

嵌入式 Linux 外设

  • LED 操作
  • KEY 操作
  • GPIO 操作
  • LCD 显示与触控
  • ADC 读取
  • I2C 通信
  • SPI 通信
  • CAN 通信
  • UART 通信
  • ……

高级知识

uboot 与内核

  • uboot

    • 启动流程
    • 环境变量配置
  • Linux 内核

    • 启动流程
    • 内存管理
    • 进程调度
    • IO调度
    • 驱动模型
    • 设备树配置

框架

  • Qt4、Qt5

    • 信号槽机制
    • 事件循环
    • 常用控件的使用方法
  • 音视频处理

    • V4L2

    • GStreamer

      • pipeline的控制
      • 自定义插件的实现
    • live555

    • ffmpeg

  • TI 框架

    • IPC、SysLink

      • 多核初始化流程
      • 各通信组件的特点和使用场合
    • SYSBIOS

      • 多任务编程
    • CMEM

    • EDMA

  • 其他

    • OpenCL

协议

  • TCP/IP

    • 协议栈理解
  • HTTP

    • 了解基于 cgi 的 web 应用的实现
    • 了解 RESTful API 设计
  • MQTT

  • FTP

  • OpenCV
  • OpenGL
  • H264 编解码
  • RTSP 流媒体协议
  • FFT 等信号处理库

了解 SoC 平台

  • TI

    • DaVinci 系列
    • Sitara 系列
    • C674x
    • C66x
  • Xilinx

    • Spartan6
    • 7 系列
    • MPSoc
  • NXP

    • IMX6
    • IMX8

软件工程

常规软件开发流程

  • 定义问题(problem definition)
  • 需求分析(requirements development)
  • 规划构建(construction planning)
  • 软件架构(software architecture)
  • 详细设计(detailed design)
  • 编码与调试(coding and debugging)
  • 单元测试(unit testing)
  • 集成测试(integration testing)
  • 集成(integration)
  • 系统测试(system testing)
  • 保障维护(correcting maintenance)

嵌入式 Linux 应用开发流程

  • 了解硬件功能设计

  • 熟悉驱动接口

  • 细化、梳理需求

  • 确立概要设计

  • 规划开发里程碑

  • 确认开发环境、运行环境

  • 分配工作任务

  • 协同开发

  • 测试发布里程碑

  • 测试发现硬件、驱动问题?

    • 是。联合硬件、驱动排查
    • 否。进入下一步
  • 是否最终里程碑版本?

    • 是。进入下一步
    • 否。回到“协同开发”
  • 是否需要与客户联调?

    • 是。进行联合调试
    • 否。进入下一步
  • 整理运行环境

  • 整理做卡工具

  • 在最终环境整体测试

  • 测试发现 bug?

    • 是。修复 bug
    • 否。进入下一步。
  • 发布源码、程序包

  • 维护

嵌入式 Linux 应用开发级别

  • D 级:硬件功能展示 demo 开发

    • 做出一个即用型的工具小程序,运行程序即可展示硬件模块的基本功能。可作为较低要求的硬件功能测试程序。比如 4G 模块的通信功能 demo 程序。
  • C 级:核心功能 demo 开发

    • 这一级别适用于比较复杂的硬件架构、软件框架功能。比如基于 OMAPL138 双核架构的 syslink 通信功能,demo 演示其基本使用。客户可基于 demo 扩展自己的应用程序。
  • B 级:产品级核心功能开发

    • 这一级别着眼于产品的核心功能,涉及业务逻辑的设计实现。由于是产品级功能而非 demo,需求梳理、架构设计必须充分考虑,为后续交付后客户的产品开发打下坚实基础。比如,在良好设计的基础上,把 90E36、AD7606、syslink 的数据采集、分析处理、传输统一组织起来,并留下易于扩展开发的接口。并做好充分的测试验证。
  • A 级:产品级功能开发

    • 完整功能的开发以及测试验证。在 B 级的基础上,完善网络传输、数据存储、故障恢复、长时稳定运行、升级维护等配套的功能的开发。软件满足在实际应用环境运行工作的要求。
  • S 级:解决方案开发(公司内部)

    • 在 A 级的基础上扩展,补充更完善的配套设施,如单元测试、功能模块封装、程序流程拆解优化等。以达到快速修改就可以满足同样应用场景、功能需求有细微差别的不同产品级软件开发。

例程开发流程

  • 了解硬件接口
  • 了解处理器架构与硬件框图
  • 了解、安装软件开发环境
  • 进行例程编码开发
  • 测试例程
  • 整理说明文档并发布

样机开发流程

  • 硬件设计
  • 结构设计
  • 软件设计
  • 样机生产
  • 样机调试
  • 样机测试
  • 样机验收
  • 样机开发结束决策

工具使用

vi、vim

Git

  • 熟悉 Git 基本操作
  • 了解 Git 实现原理
  • 了解 GitFlow 流程

gcc、make、Makefile

Ubuntu、tmux、Samba

Qt Creator

  • Qt 工具链的配置以及远程调试

VirtualBox、VMware

SVN、RDM、GitLab

Putty、XShell、MobaXterm、SecureCRT

everything、wox

xmind

visio

Linux 常用命令

  • find、gerp
  • sed、awk
  • tar、zip、unzip
  • ssh、scp
  • lsmod、insmod、rmmod
  • mount、umount、df、fdisk
  • md5sum、diff、vimdiff

补充了解

  • gdb

  • autotools

  • 硬件仪器

    • 万用表
    • 数字电源
    • 示波器
    • 信号发生器

技术书籍

必读

  • 《C 程序设计语言》

    • 语法基础
  • 《C++ Primer》

    • 语法基础
  • 《深入理解计算机系统》

    • 程序开发基础概念
  • 《UNIX 环境高级编程》

    • 基于 UNIX(Linux)的接口编程
  • 《代码大全》

    • 软件开发方法论

推荐

  • 《流畅的 Python》

    • Python 开发高级技巧
  • 《UNIX 网络编程》

    • 基于 UNIX(Linux)接口的 TCP、UDP 通信编程
  • 《计算机程序的构造和解释》

    • 高级的、抽象的程序设计思维方法
  • 《Linux 内核设计与实现》

    • 精炼的 Linux 内核介绍
  • 《重构》

    • 代码优化
  • 《软件测试的艺术》

    • 测试思维修炼
  • 《设计模式》

    • 高层次软件设计套路
  • 《算法导论》

    • 各类算法介绍与算法评估、设计方法
  • 《编码》

    • 计算机系统通俗介绍
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页