嵌入式 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 内核介绍
《重构》
- 代码优化
《软件测试的艺术》
- 测试思维修炼
《设计模式》
- 高层次软件设计套路
《算法导论》
- 各类算法介绍与算法评估、设计方法
《编码》
- 计算机系统通俗介绍
嵌入式 Linux 应用软件知识体系框架相关推荐
- 嵌入式系统的知识体系、学习误区及学习建议
嵌入式系统的知识体系.学习误区及学习建议 1.嵌入式系统的知识体系 嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计 ...
- 嵌入式系统的知识体系
嵌入式系统的知识体系 嵌入式系统的应用范围可以粗略分为两大类:电子系统的智能化(工业 控制.现代农业.家用电器.汽车电子.测控系统.数据采集等),计算机应用的延伸(MP3.手机.通信.网络.计算机外围 ...
- 快速构建嵌入式全栈知识体系以及如何进阶
快速构建嵌入式全栈知识体系以及如何进阶 嵌入式是一门交叉学科.一个嵌入式电子产品(比如手机)从底层到上层,一般会涉及半导体芯片.电子电路.计算机.操作系统.多媒体等不同专业领域的知识.很多从事嵌入式开 ...
- Android知识体系框架
Android知识体系框架 置顶2018年05月06日 21:43:14 阅读数:13 整体框架结构一: 转自:https://blog.csdn.net/u010635353/article/det ...
- 如何快速构建嵌入式全栈知识体系?
嵌入式是一门交叉学科. 一个嵌入式电子产品(比如手机)从底层到上层,一般会涉及半导体芯片.电子电路.计算机.操作系统.多媒体等不同专业领域的知识. 很多从事嵌入式开发的朋友,通常来自不同的专业(电子. ...
- 嵌入式linux编程,嵌入式Linux学习笔记 - 嵌入式Linux基础知识和开发环境的构建_Linux编程_Linux公社-Linux系统门户网站...
注:所有内容基于友善之臂Mini2440开发板 一.嵌入式Linux开发环境的构建 嵌入式开发一般分为三个步骤: 1.编译bootloader,烧到开发板 2.编译嵌入式Linux内核,烧到开发板 3 ...
- 嵌入式Linux综合知识
2019独角兽企业重金招聘Python工程师标准>>> Tomlinux 嵌入式Linux文档.资源及下载,提供免费版本的嵌入式Linux系统. Linuxforum Linux技术 ...
- 嵌入式linux基础知识累积
一.GCC工具 GCC是一个全功能的ANSI C兼容编译器. 例子:gcc –o test test.c 和./test 基本用法是:gcc [options] [filename] 1.1 编译选项 ...
- 构建自己的知识体系框架
第四课:构建自己的知识框架 1.为什么要建立知识框架(一定要有框架意识) 便于提取 便于分享 便于记忆 2.一般性的学习误区 只收藏,不阅读 只阅读,不归类 只归类,不提炼 3.框架思维下的学习步骤 ...
最新文章
- linux查看流量开源,Linux流量监控工具 - iftop
- Java 的序列化和反序列化,你该知道得更多
- 二值网络--Structured Binary Neural Networks for Accurate Image Classification and Semantic Segmentation
- 智源发布!《人工智能的认知神经基础白皮书》
- 用Java或Jsp向数据库存取二进制图片
- 数组去重是面试中经常问到的问题
- 《终身成长》读书笔记(part3)--如果一个人能学会什么东西,那么世界上其他人也都可以学会
- SystemParametersInfo (SPI_GETNONCLIENTMETRICS... 在VC 2008 里不能正常工作
- mysql查询优化以及面试小结
- 复习django项目一——迁移数据库
- CSS练习_云层效果
- 东大OJ-最大子序列问题的变形
- 英国PHP轴承,php – 纵向宽度将如何影响轴承
- 游戏设计创造对话探秘之迭代
- 浪潮之巅--蓝色巨人读后感
- Open Source Drives IOT From Device to Edge
- 【性能提升神器】STRAIGHT_JOIN
- spring boot 源码解析52-actuate中MVCEndPoint解析
- 一分钟让你学会做搜索关键字高亮
- 余杭医保卡指定使用医院和药店