嵌入式 Linux 应用程序开发概览

这是我给公司研发部同事的一个分享培训课程,把内容大纲分享出来。

知识图谱

大学课程

  • 数字逻辑
  • 计算机组成原理
  • 汇编语言
  • 编译原理
  • 操作系统
  • 计算机网络
  • 高级语言(C、C++、Java)
  • 算法与数据结构
  • 数据库
  • 面向对象方法
  • 软件工程

自学内容

  • ARM 指令集、体系架构
  • ARM 外设
  • Linux 内核、驱动
  • Linux 系统接口编程
  • Linux 网络编程
  • Qt 开发框架
  • Perl、Python
  • OpenCV、OpenCL
  • XML、JSON 以及其他很多即学即用的知识技能

软件工具

  • Ubuntu 及各种命令行工具
  • Git、SVN
  • Vim、Notepad++
  • Gcc、Makefile
  • ssh、scp
  • Xshell
  • VMware、VirtualBox
  • QtCreator

搜索引擎

  • 谷歌
  • 必应(国际版、国内版)
  • 百度
  • 搜狗、360
  • 站内搜索(site: 语法)

开发流程

常规软件开发工程

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

例程开发流程

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

生产测试系统开发流程

  • 确定待测外设
  • 确定测试方法和判断标准
  • 进行测试程序开发
  • 对测试程序本身进行测试验证
  • 整合所有测试到自动化测试框架
  • 整理测试指导文档

开发思维

模块化思维

  • 一个函数只做一件事
  • 一个类只实现一个功能
  • *NIX 哲学:小即是美;让程序只做好一件事
    • find . -name *.jpg | wc

对比思维

  • Git 工具的原理与使用
  • 定位问题的多种影响因素
  • 找茬:http://liaojieliang.com/2013-04-18/spot-the-difference.html

隔离与分层

  • 隔离与模块化相似,模块内外进行隔离
  • 对系统进行分层
  • 不同层次的东西不直接交互,不相提并论

抽象

  • 过程抽象
  • 数据抽象

迭代演化

  • 里程碑式开发
  • 快速推出原型

避免重复造轮子

  • 使用 Linux 自带的工具
    • /proc、grep、awk
  • 使用众多的自由软件、开源软件
  • 使用 TI 提供的资源
  • 使用同事开发的成果

案例分享

外设通用例程-按键监听

  • 例程功能
  • 开发进程
    • 确立需求、任务
    • 讨论确定程序命名、使用参数、核心功能
    • 驱动接口确定
    • 开发编码
    • 代码审查、优化
    • 各平台测试与反馈
  • 赏析(划掉)瞧瞧代码

自动化测试系统

  • 开发进程
    • 自动化测试框架开发(Python),v0.1、v0.2……v0.6.1 。
    • 8148、138、138f、5728……
    • 测试程序的不断完善
    • 测试指导文档的不断完善
  • 相关技术
    • Python(OrderDict、os.system、os.popen)
    • 程序退出值
    • 各硬件接口的程序接口
  • 输出文件
    • 品质测试指导文档
    • 测试框架仓库
    • 测试程序仓库
    • 测试程序包(测试做卡系统)

资源推荐

书籍

  • 《深入理解计算机系统》
    • CSAPP,Computer Systems - A Programmer's perspective
    • 基础概念
  • 《计算机程序的构造和解释》
    • SICP
    • 逻辑抽象
    • 程序思维
  • 《代码大全》
    • CC2
    • 程序构造
    • 工程实践

站点

  • Stack Overflow
  • GitHub
  • CSDN
  • 博客园
  • V2EX

影视

  • 夸张的创作发挥,非典型
  • 《IT 狂人》
  • 《硅谷》

廖杰良 - 2018-12-7

你可能感兴趣的:(其他)