基础知识

编程语言

  • 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 内核介绍
  • 《重构》

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

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

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

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

    • 计算机系统通俗介绍

嵌入式 Linux 应用软件知识体系框架相关推荐

  1. 嵌入式系统的知识体系、学习误区及学习建议

    嵌入式系统的知识体系.学习误区及学习建议 1.嵌入式系统的知识体系     嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计 ...

  2. 嵌入式系统的知识体系

    嵌入式系统的知识体系 嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业 控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计算机应用的延伸(MP3.手机.通信.网络.计算机外围 ...

  3. 快速构建嵌入式全栈知识体系以及如何进阶

    快速构建嵌入式全栈知识体系以及如何进阶 嵌入式是一门交叉学科.一个嵌入式电子产品(比如手机)从底层到上层,一般会涉及半导体芯片.电子电路.计算机.操作系统.多媒体等不同专业领域的知识.很多从事嵌入式开 ...

  4. Android知识体系框架

    Android知识体系框架 置顶2018年05月06日 21:43:14 阅读数:13 整体框架结构一: 转自:https://blog.csdn.net/u010635353/article/det ...

  5. 如何快速构建嵌入式全栈知识体系?

    嵌入式是一门交叉学科. 一个嵌入式电子产品(比如手机)从底层到上层,一般会涉及半导体芯片.电子电路.计算机.操作系统.多媒体等不同专业领域的知识. 很多从事嵌入式开发的朋友,通常来自不同的专业(电子. ...

  6. 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...

    注:所有内容基于友善之臂Mini2440开发板 一.嵌入式Linux开发环境的构建 嵌入式开发一般分为三个步骤: 1.编译bootloader,烧到开发板 2.编译嵌入式Linux内核,烧到开发板 3 ...

  7. 嵌入式Linux综合知识

    2019独角兽企业重金招聘Python工程师标准>>> Tomlinux 嵌入式Linux文档.资源及下载,提供免费版本的嵌入式Linux系统. Linuxforum Linux技术 ...

  8. 嵌入式linux基础知识累积

    一.GCC工具 GCC是一个全功能的ANSI C兼容编译器. 例子:gcc –o test test.c 和./test 基本用法是:gcc [options] [filename] 1.1 编译选项 ...

  9. 构建自己的知识体系框架

    第四课:构建自己的知识框架 1.为什么要建立知识框架(一定要有框架意识) 便于提取 便于分享 便于记忆 2.一般性的学习误区 只收藏,不阅读 只阅读,不归类 只归类,不提炼 3.框架思维下的学习步骤 ...

最新文章

  1. linux查看流量开源,Linux流量监控工具 - iftop
  2. Java 的序列化和反序列化,你该知道得更多
  3. 二值网络--Structured Binary Neural Networks for Accurate Image Classification and Semantic Segmentation
  4. 智源发布!《人工智能的认知神经基础白皮书》
  5. 用Java或Jsp向数据库存取二进制图片
  6. 数组去重是面试中经常问到的问题
  7. 《终身成长》读书笔记(part3)--如果一个人能学会什么东西,那么世界上其他人也都可以学会
  8. SystemParametersInfo (SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
  9. mysql查询优化以及面试小结
  10. 复习django项目一——迁移数据库
  11. CSS练习_云层效果
  12. 东大OJ-最大子序列问题的变形
  13. 英国PHP轴承,php – 纵向宽度将如何影响轴承
  14. 游戏设计创造对话探秘之迭代
  15. 浪潮之巅--蓝色巨人读后感
  16. Open Source Drives IOT From Device to Edge
  17. 【性能提升神器】STRAIGHT_JOIN
  18. spring boot 源码解析52-actuate中MVCEndPoint解析
  19. 一分钟让你学会做搜索关键字高亮
  20. 余杭医保卡指定使用医院和药店

热门文章

  1. 【截图工具】把图片钉在桌面上的截图工具——QQ截图、Snipaste
  2. 两点定标法_PH计两点校准法
  3. 科普-牛顿第二定律的矢量形式
  4. java+mysql+jsp+servlet 幼儿园管理系统
  5. 电脑如何定位苹果手机
  6. 测绘技术设计规定最新版_2016测绘技术设计规定.doc
  7. 在idea中鼠标光标变成了小手
  8. 结束进程 --inux命令
  9. 维护BOM CSAP_MAT_BOM_MAINTAIN
  10. Dll依赖与被依赖关系查看工具【1】