嵌入式知识图谱:学习路线与知识索引

嵌入式知识图谱WiKi  

作者 将狼才鲸 创建时间 2022-02-18

Gitee文档源文件仓库网址 才鲸 / 嵌入式知识图谱WiKi   

https://gitee.com/langcai1943/embedded-knowledge-wiki

CSDN有图的文档阅读网址 嵌入式知识图谱WiKi   

https://blog.csdn.net/qq582880551/article/details/123013592

Bilibili视频讲解网址(待完成) 才鲸嵌入式主页

一、概述  

1)模块框图  

备注:gitee暂不支持mermaid框图和流程图显示。可以下载本git仓库并用Typora等软件打开本.md文件查看。   也可以点击该CSDN同名文章查看能正常显示图片的版本。

备注:因为mermaid subgraph对框图的自定义布局不支持,所以这里用 -.- 虚线来控制布局。

图1 嵌入式框图

2)知识依赖(各方向学习路线流程图待补充)  

1. 前提依赖(提前劝退)  

  • 1.1 汉语听说:学汉字的前提;  

家庭言传身教;  

  • 1.1 汉字:阅读理工科类知识;  

哔哩哔哩拼音启蒙视频网址: 语文拼音绘本课   

哔哩哔哩汉字启蒙视频网址: 学前班幼儿园幼小衔接学习识字3-6岁认字动画入门视频启蒙早教程  

  • 1.2 行业英语:编程语言关键字、变量命名、函数命名、写部分英文注释、写部分英文文档、阅读只有英文版的芯片资料、协议资料、算法资料、行业资料、源码注释、源码函数名和变量名;  

哔哩哔哩英文字母歌视频网址: ABC song 经典英文字母歌   

哔哩哔哩英语音标视频网址1: 【48个英文音标的示范读音】音标应该怎么读?   

哔哩哔哩英语音标视频网址2: (纯干货)英语音标教学- YouTube   

哔哩哔哩英语单词视频网址1: 1节课刷完高考英语3500单词(绿色护眼乱序版)   

哔哩哔哩英语单词视频网址2: 第1季合集:英语单词速记--刷爆英语1000词  

  • 1.3 数学:逻辑运算(布尔运算)、算术运算表达式(加减乘除余)、十六进制、二进制、十进制;  
  • 1.4 电脑:键盘布局、拼音或五笔、开机关机、装软件、卸载软件、Linux操作系统高级使用(可选)、计算器使用、写Word/Markdown文档、画Excel表格(可选)、写PPT汇报(可选)、画Visio流程图与框图(可选)、画XMind思维导图(可选);  
  • 1.5 计算机(可选,不影响初次入职):操作系统概念(可选)、中断、线程(可选);  
  • 1.6 视力(精度可选):单元测试时要看的LED灯珠(色盲回避)、屏幕显示的UI(可选,色盲色弱回避);  
  • 1.7 上肢:双手健全(键盘打字、快捷键的使用);  
  • 1.8 学历与专业(可选):看老板态度;  

学校相关专业:   计算机科学与技术、电子信息科学与技术、微电子学、测控技术与仪器、数学与应用数学、信息与计算科学、信息工程、物理学、 应用物理学、机械设计制造及其自动化、机械工程及自动化、自动化、电子信息工程、通信工程、电子科学与技术、生物医学工程、其它特定行业相关专业如飞行器设计工程、探测制导与控制技术等(本科)  

电子信息工程技术、应用电子技术、微电子技术、嵌入式技术与应用、电子电路设计与工艺、物联网应用技术、物联网工程技术、计算机应用技术、软件技术、智能产品开发、通信技术、机械制造与自动化、数控技术、电机与电器技术、机电一体化技术、工业过程自动化技术、工业自动化仪表、工业机器人技术、汽车电子技术等(专科)  

备注:计算机相关专业并不占优势(竞争专业过多)

参考网址: 普通高等学校本科专业目录   参考网址: 普通高等学校高等职业教育(专科)专业目录(2015年)

2. 不同方向的入门(首次入职)  

2.1 51单片机(软硬件)   

2.2 硬件   

2.3 电源(纹波、低功耗)  

2.4 功放(匹配)   

2.5 STM32等单片机驱动(裸机)   

2.6 STM32等单片机应用(裸机)   

2.7 RTOS移植和驱动(ARM、DSP等)  

2.8 RTOS应用(ARM、DSP等)   

2.9 FPGA(Verilog、数电)   

2.10 Linux移植(U-Boot、根文件系统)  

 2.11 Linux字符驱动   

2.12 Linux块驱动   

2.13 Linux应用   

2.14 通讯算法(调制解调、Matlab、DSP、汇编、C、数学)   

2.15 编解码算法(音视频等)  

3 进阶(高级工程师、管理)  

3.1 硬件部门管理   

3.2 软件部门管理   

3.3 51单片机硬件+软件+行业应用+GUI(可选)+架构   

3.4 硬件+电源+功放+量产   

3.5 STM32等单片机驱动+行业应用+架构+通讯协议+GUI(可选)+硬件选型+FPGA(可选)   

3.6 RTOS移植+驱动+行业应用+架构+通讯协议+GUI(可选)+硬件选型+FPGA(可选)   

3.7 Linux移植+字符驱动+块驱动+杂项驱动+通讯协议+硬件选型+FPGA(可选)   

3.8 Linux行业应用+架构+GUI(可选)   

3.9 DSP+调制解调+编解码+人工智能算法    

3.10 不同行业多年经验(与上述岗位相结合)  

表1 跳槽时(非第一份工作)需要的特定行业经验

备注:所以入行需谨慎,第一份工作非常重要,决定你以后很多年的工作走向,除非想转行从零开始

参考网址 行业研究数据库   参考网址 软件和信息技术服务业行业分类图(嵌入式系统软件行业)

3)写作背景  

  • 一直想找一个从头到尾介绍嵌入式的网站,就像一般的WiKi网站那样,能够在一个地方就搜到大部分的嵌入式开发知识,但是又没找到,所以我就自己尝试着写,想着花个数十年时间应该能搜集到想要的资料。希望以后也有人和我一起规划和更新这份文档,也希望自己能一直坚持。  

1. 嵌入式定义  

  • 嵌入式:嵌入到各种设备中执行专项任务的计算机软硬件;通常不包含可以执行多种不确定任务(运行各种软件),以计算机原本的功能为主体的设备。  
  • 嵌入式设备举例:广告机、电视机、机顶盒、洗衣机、冰箱、红绿灯、门禁、扫码、体温枪……  
  • 非嵌入式计算机举例:笔记本、台式机、服务器、工作站、计算机集群、手机(应用类)。  

二、各个模块  

1)硬件设计  

详细内容未涉及……

1. 硬件架构框图  

  • 普通硬件设计是围绕着主控芯片及其配套的驱动模块来进行的。  
  • 下图是一个典型的硬件框图,包含芯片最小系统、电源模块、各个外设接口。  

图2 硬件框图举例

参考网址: 基于ARM与μClinux的RTU设计

2. 硬件设计流程  

此处忽略外观设计和结构设计。   

设计流程为:器件选型、原理图设计、PCB设计、输出PCB及BOM表、PCB贴片及验证、软硬件联调。  

参考网址: 嵌入式系统硬件组成   参考网址: 一个完备的嵌入式系统硬件架构有哪几部分构成?   参考网址: 嵌入式系统基本概念(硬件篇)   参考网址: 以硬件架构的思维方式看待软件架构(二)

2)集成电路(IC)设计(扩展内容,可不翻阅)  

1. SoC(主控芯片)设计  

1.1 SoC架构  

  • 嵌入式使用的主控芯片(单片机或者MCU)对应于IC设计中的SoC。  

图3 典型的SoC芯片模块图

参考网址: SoC架构   参考网址: SoC

架构图解析:  

  • SoC(包括MCU、DSP或者单片机芯片)的主要框架就是AHB总线APB总线和总线上的模块(CPU与外设等)。  
  • AHB和APB都是ARM公司出品的基于IP开发的SoC系统集成总线,它们一个高速一个低速,其实功能就和USB等总线协议类似,可以接入和控制多个设备(模块)。  

参考网址: AHB百度百科   参考网址: AHB总线协议   参考网址: SOC常见架构_RISCV AI SOC实战(一,概述及架构设计)   参考网址: SoC知识及选型经验分享

表2 SoC芯片模块英文缩写名词解释

  • 除了电源管理、射频处理等少数几个功能外,SOC几乎包办了其它所有硬件功能。  

1.2 CPU(处理器核)  

  • CPU最重要的特点就是把所有的操作融合成了一种操作方式:指令集。  

图4 典型的CPU内模块框图

表3 CPU内主要模块和子模块

参考网址: 深度分析国产龙芯新架构CPU:自主当崛起 英文框图   参考网址: 微处理器分类及主要技术性能 中文原理框图   参考网址: 微处理器微计算机微处理机单片机cpu区别 有中文框图   参考网址: 计算机组成原理——CPU 有中文的简单框图   参考网址: cpu的结构(CPU的结构与工作原理) 有Cortex-A8的简单框图   参考网址: cpu架构一 有中文的CPU结构图   参考网址: 微架构 里面的结构图最详细   参考网址: CPU芯片逻辑设计技术:CPU设计的基础教程   参考网址: 芯片设计相关基础:有奔腾简单的版图与模块框图   参考网址: 芯片设计的起源:有一张简单的Intel4004版图与模块框图  

1.2.1 C51核指令集

  • C51(8051)的指令并不多,并且比较简单。  
  • 8051单片机共有111条指令,按指令功能分,可分为数据传送类29条,算术运算类24条,逻辑运算类24条,位操作类12条,控制转移类22条。  
  • 指令寻址方式共7种,分别是:立即数寻址,直接寻址,寄存器寻址,寄存器间接寻址,变址寻址,相对寻址,位寻址。  
  • 详细指令内容详见 参考网址: 8051汇编指令集

参考网址: 单片机8051指令集   参考网址: 8051汇编指令   参考网址: 8051单片机共有多少条指令?

  • 汇编通过地址跳转即可以实现各种条件判断和循环功能,如if else switch do while for等高级语言的功能。  
  • 通过压栈和弹栈的指令即可以各种函数的调用。  

1.2.2 ARM核指令集

  • ARM核各个系列的介绍详见 参考网址: 关于ARM的内核架构
  • ARM 可以用两套指令集:ARM指令集和Thumb指令集。  

参考网址: ARM汇编指令集汇总   参考网址: ARM指令集   参考网址: 关于ARM处理器指令集   参考网址: ARM指令集   参考网址: Arm Architecture Reference Manual for A-profile architecture 文档下载  

1.2.3 TI DSP指令集

包含C66x、C67x等型号,有各种加速运算的指令。  

参考网址: KeyStone C66x CorePac Instruction Set Architecture   参考网址: MS320C674x DSP CPU and Instruction Set Reference Guide Chapter 3 Instruction Set   参考网址: C66x-CorePac用户指南---中文版 TI C66x DSP寄存器介绍   参考网址: TMS3205000系列DSP汇编语言程序设计

1.2.4 Cadence Xtensa HiFi DSP指令集   详见 子文档:《XtensaHifiDsp.md》  

1.2.5 Xilinx FPGA   参考网址: Welcome to the Xilinx Wiki!

2. 数字IC设计  

数字IC设计使用硬件描述语言Verilog,设计时要有时序、并行、延时的思想。   芯片设计可以分为两部分,前端和后端,仿真也可以分为前仿和后仿。  

参考网址: 数字芯片设计入门?   参考网址: SoC芯片龙头有哪些,SoC芯片概念股一览   参考网址: 数字IC设计流程介绍   参考网址: 前仿真与后仿真   参考网址: 数字IC设计流程及工具简介

3. 模拟IC设计  

模拟IC设计需要画原理图和版图。  

参考网址: 模拟集成电路设计流程(1)——熟悉Cadence环境   参考网址: 模拟集成电路设计流程(2)——原理图设计与仿真   参考网址: 模拟集成电路设计流程(3)——不同的电路仿真方法   参考网址: 模拟集成电路设计流程(4)——版图设计基础   参考网址: 模拟集成电路设计流程(5)——版图验证   参考网址: 模拟芯片/IC设计,都经历过哪些lesson—learned(经验教训)?   参考网址: 怎样学好模拟集成电路设计?

3)软件开发  

  • 进行一个新项目时,先想好文件夹结构和其中的各个模块,如:   arch 独立出来的硬件相关的内容(arch下也有drivers、fs、kernel、lib、mm、usr文件夹,实现这个模块中的硬件相关功能)   drivers 设备驱动(里面是抽象的接口,不包含实际硬件寄存器的操作)   fs 文件系统(可选)   kernel 进程调度(可选)   lib 通用中间件、基础模块   mm 内存管理(可选)   usr 工具类应用  

参考网址:   Linux内核 -- 内核源码结构   eCos教程2:eCos源码结构分析   RT-Thread / rt-thread   FreeRTOS介绍与源码结构分析   uCOS-II源码下载及源码目录结构

1. boot  

硬件上电流程

  • 前提:一般嵌入式硬件都有内部IROM、内部IRAM、外部ROM、外部RAM。  
  • 在boot前,启动介质中已经烧录或者拷贝了可执行程序。  
  • 一般boot分四步:  

1、芯片上电后判断启动介质(启动介质的选择由几个芯片引脚的电平排序来决定,开发时使用跳线,生产则固定启动介质),直接执行ROM启动介质的0地址上的代码,或者将ROM启动介质的0地址及以后的代码拷贝到内部RAM中执行(最开始的启动代码会初始化芯片:如设置CPU频率、关看门狗、关MMU、分类临时内存执行一部分代码、设置异常向量、初始化内存控制器、初始化DDR、分配中断、确定内存资源范围、建立内存空间的映射表、IO端口资源、定义第二步boot入口地址;这部分源码往往由芯片厂商提供的与IDE配套的芯片配置包或者芯片厂商提供的交叉编译器中自带模板;这部分代码是汇编写的)。  

2、与第一步同时,芯片也接收JTAG指令(JTAG执行时不需要ROM中的初始化代码,芯片直接接收并执行JTAG总线上的机器指令序列,这些序列中包含了最开始的芯片初始化机器指令序列),JTAG可以用来加载程序、烧录程序、运行并调试程序。JTAG中的初始化指令序列也由芯片厂商提供的IDE芯片配置包中自带。JTAG需要使用仿真器(如J-Link)。  

3、调用并运行第二阶段初始化代码(第二阶段代码可以从Flash、SD卡、USB、串口、网口等介质中引导);拷贝第二阶段代码到RAM、初始化堆栈、跳转到RAM运行第二阶段程序,第二阶段程序可以是U-Boot主体,也可以是裸机程序,main函数入口也在第二段初始化代码中,接着会初始化驱动。  

4、如果有操作系统,由U-Boot或者其它的bootloader引导操作系统。  

参考网址: IMX6 uboot的启动流程   参考网址: TMS320F280025的BOOT流程   参考网址: BOOT流程   参考网址: 常见SOC启动流程分析   参考网址: bootloader(xboot)起动流程分析   参考网址: 详解嵌入式系统Boot-Loader   参考网址: 嵌入式u-boot浅析

2. 系统移植  

图5 操作系统框架

  • 操作系统包含以下几个主模块:进程管理(线程)、内存管理、文件系统、设备驱动、网络管理(可选)  

表4 操作系统框架

参考网址: 操作系统包含哪些子系统?   参考网址: Linux 进程与线程的同步与互斥

2.1 uCOS(μC/OS)   2.2 eCos   2.3 RT-Thread   2.4 SYS/BIOS(TI)   2.5 Atomthreads   2.6 FreeRTOS   2.7 ThreadX(Cadence Tensilica)   2.8 VxWorks   2.9 Linux(U-Boot、kernel、根文件系统)  

2.10 根文件系统

  • 如果是Linux可以BusyBox工具来创建根文件系统。  

2.10.1 Ramfs   Ramfs是LinusTorvalds开发的一种基于内存的文件系统,工作于虚拟文件系统(VFS)层,不能格式化,可以创建多个,在创建时可以指定其能使用的内存大小。(实际上,VFS本质上可看成一种内存文件系统,它统一了文件在内核中的表示方式,并对磁盘文件系统进行缓冲。)  

2.10.2 Ramdisk   和网吧一样,用户保存的数据在断电后会丢失,防止入侵和用户乱改乱删文件导致嵌入式设备变板砖。   Ramdisk是将一部分固定大小的内存当作分区来使用。它并非一个实际的文件系统,而是一种将实际的文件系统装入内存的机制,并且可以作为根文件系统。将一些经常被访问而又不会更改的文件(如只读的根文件系统)通过Ramdisk放在内存中,可以明显地提高系统的性能。  

2.10.3 ext4   Linux中使用  

2.10.4 FAT32   兼容U盘、SD卡等经常要在Windows使用的存储设备。  

2.10.5 jffs2  

参考网址: 什么是嵌入式的根文件?嵌入式的根文件系统有哪些?   参考网址:嵌入式系统中常用的文件系统   参考网址:嵌入式 Linux根文件系统移植(三)——根文件系统构建

3. 驱动框架  

驱动寄存器通用结构:输入输出地址(可与DMA配合)、中断控制  

3.1 裸机驱动架构   4.1 RTOS驱动架构   4.1.1 uCos   4.1.2 eCos   4.1.3 RT-Thread   ……   4.1.x Linux驱动架构  

4. 驱动模块  

4.1 通讯类驱动   4.1.1 串口   4.1.1.1 裸机开发   4.1.1.2 RTOS开发   4.1.1.3 Linux开发  

4.1.2 I2C   4.1.3 SPI   4.1.4 网络   4.1.5 USB   4.1.6 蓝牙   4.1.7 CAN   4.1.8 ZigBee   4.1.9 ModBus   4.1.10 I2S  

i2s音频模块详见 子文档:《i2s模块.md》  

4.2 存储类驱动   4.2.1 DDR   4.2.2 Flash   4.2.3 EEPROM   ……  

4.3 传感器、执行器类驱动  

4.4 行业相关驱动   4.4.1 键盘   4.4.2 鼠标   4.4.3 智能卡   4.4.4 PCMCIA   4.4.5 门禁   4.4.6 水浸   4.4.7 温度   4.4.8 破窗   4.4.9 电能   4.4.10 计量   4.4.11 LED   4.4.12 触摸屏   4.4.13 显示   4.4.14 MIPI   4.4.15 PWM   4.4.16 i2s音频   4.4.17 ADC/DAC音频   4.4.18 振镜   4.4.19 激光器   4.4.20 换能器(水声)  4.4.21 电机  

4.5 杂项驱动  

5. 软件架构(应用框架)  

5.1 缓存结构  

  • 1、各种缓存结构:  

基础:指针、链表、内存、数组。   数据结构基础:表、树、图(多对多)。   缓冲区/buffer/顺序表/平直缓存/数组/内存指针(malloc)。   栈/stack:因为是先进后出,也用于函数调用时的压栈,编译器和高级算法中用的多,日常编程基本上不用。   堆/heap/完全二叉树:方便排序,编译器和算法中常用,日常编程基本上不用。   环形缓冲区/环形缓存区/循环队列/loop_buffer/ring_buffer/队列/FIFO/Queue:先进先出,满和空。  

参考网址: 什么是队列(队列存储结构)   参考网址: 链式队列及基本操作(C语言实现)   参考网址: 数据结构与算法教程,数据结构C语言版教程!

分组队列/多级队列/group_buffer/fifo/queue:每个模块都有自己的队列,且不同队列间可直接通过数据指针无消耗转移大块数据。  

  • 2、自行实现的 “多级缓存队列”模块 Gitee仓库源码:点击此处查看源码   本地路径:嵌入式知识图谱WiKi\source\lib\group_buf_queue\  

有gcc-makefile和Qt两个工程都能编过,带详细注释和单元测试用例。  

目录结构:

jim@DESKTOP-SVP3BEM MINGW64 /d/3_doc/嵌入式知识图谱WiKi/source/lib/group_buf_queue (develop) $ tree . |-- Makefile |-- arch_buffer_config.c |-- arch_buffer_config.h |-- group_buf_queue.c |-- group_buf_queue.h |-- group_buf_queue_init.c |-- group_buf_queue_init.h |-- group_buf_queue_unitest.c |-- group_buf_queue_unitest_qt_proj |   `-- group_buf_queue_unitest_qt_proj.pro |-- list.h |-- module_buf_queue.c |-- pair_list.c |-- pair_list.h `-- readme.txt 1 directory, 15 files

单元测试结果:

jim@DESKTOP-SVP3BEM MINGW64 /d/3_doc/嵌入式知识图谱WiKi/source/lib/group_buf_queue (develop) $ ./group_buf_queue_demo.exe         buffer_unitest start           got buf: [group_flag: 1] [addr: 0x0040d760] [buf_maxsize: 512] [len: 0] push data: :) my first buffer message ^_^ got buf data: [group_flag: 1] [msg: :) my first buffer message ^_^] [len: 31] ________ buffer_unitest test pass. ________          pair_list_unitest start           put data: :) my first buffer message ^_^ got data: :) my first buffer message ^_^ ________ pair_list_unitest test pass. ________         circular_linked_list_unitest start         put a node node count: 1 put a tail node node count: 2 delete a node node count: 1 ________ circular_linked_list_unitest test pass. ________ group_buf_queue_unitest.c test pass.

  • 3、实现原理:  

……待编写……  

5.2 模块统一接口  

  • 备注:用Visual Studio和Qt + MSVC编译偏底层的C程序会报错(如使用了typeof等GNU C特性时),推荐使用Qt + MinGW 64-bit 或者 gcc编译。  
  • 备注:Windows下也可以安装gcc和make(安装此软件时同时也会后台安装MinGW环境),然后可以直接在Windows命令行cmd中执行make生成exe。  
  • 备注:Qt + MinGW创建工程时不能使用Paint C++,只能使用Paint C,因为编译时会报一些C++专有的关键字错误(如new关键字),和部分类型强制转换不支持等错误。  
  • 1、自行实现的 “通用模块” Gitee仓库源码:点击此处查看源码   本地路径:嵌入式知识图谱WiKi\source\lib\module_core\ 支持make编译和Qt编译,带详细注释和单元测试用例。  
  • 2、目录结构  

jim@DESKTOP-SVP3BEM MINGW64 /d/3_doc/嵌入式知识图谱WiKi/source/lib/module_core (develop) $ tree . |-- Makefile |-- module.c |-- module.h |-- module1.c |-- module2.c |-- module3.c |-- module_queue.c |-- module_queue.h |-- module_unitest.c `-- module_unitest_qt_proj    `-- module_unitest_qt_proj.pro 1 directory, 10 files

单元测试结果:

jim@DESKTOP-SVP3BEM MINGW64 /d/3_doc/嵌入式知识图谱WiKi/source/lib/module_core (develop) $ ./module_core_demo.exe         module_unitest start         'module1 >>>1<<<' module_create 'module2 )))2(((' module_create 'module3 \\\3///' module_create 'module1 >>>1<<<' module_start 'module2 )))2(((' module_start 'module3 \\\3///' module_start 'module1 >>>1<<<' module_process 'module2 )))2(((' module_process 'module3 \\\3///' module_process module1 >>>1<<< put data:  '@_@ @o@ from module1 1 1'  >>>>>>>> 'module1 >>>1<<<' module_process 'module2 )))2(((' module_process 'module3 \\\3///' module_process module2 )))2((( got data:  '@_@ @o@ from module1 1 1'  <<<<<<<< module2 )))2((( put data:  ':) :-) from module2 2 2'  >>>>>>>> module1 >>>1<<< put data:  '@_@ @o@ from module1 1 1'  >>>>>>>> 'module1 >>>1<<<' module_process 'module2 )))2(((' module_process 'module3 \\\3///' module_process module3 \\\3/// got data:  ':) :-) from module2 2 2'  <<<<<<<< module2 )))2((( got data:  '@_@ @o@ from module1 1 1'  <<<<<<<< module2 )))2((( put data:  ':) :-) from module2 2 2'  >>>>>>>> module1 >>>1<<< put data:  '@_@ @o@ from module1 1 1'  >>>>>>>> 'module1 >>>1<<<' module_stop 'module2 )))2(((' module_stop 'module3 \\\3///' module_stop 'module1 >>>1<<<' module_distroy 'module2 )))2(((' module_distroy 'module3 \\\3///' module_distroy ________ module_unitest test pass. ________ module_unitest.c test pass.

  • 3、实现原理:  

……待编写……  

5.3 状态机  

  • 状态机用于多任务、多线程、循环中反复执行的函数中进行状态切换。  
  • 状态机的实现与应用的源码详见章节 5.2 模块统一接口。  

5.4 循环、TASK、定时器  

  • “循环”实现与应用的源码详见章节 5.2 模块统一接口。  
  • TASK。  
  • 定时器:可以用来实现TASK或者一次性延时任务,也可以用来实现精确的系统时间。  

5.5 多线程、同步与竞争  

6. 汇编应用  

6.1 汇编应用框架  

  • 多用标号和压栈弹栈。  

7. 行业相关应用  

7.1 GUI框架  

7.1.1 Qt编程  

Qt编程详见 子文档:《从零开始学习Qt GUI编程》 内容非常全,含各种源码  

7.1.2 uC/GUI  

7.2 多媒体框架  

7.2.1 Linux、Windows、安卓多媒体框架  

详见 子文档:《2.3_7.2.3_不同操作系统多媒体框架.md》  

7.2.2 嵌入式多媒体(音视频API)  

  • 音视频是指:   a) 音频播放和录制:mp3、aac、ac3、wav(未编码的裸流)、pcm(未编码的裸流)   b) 音视频播放和录制:mp4、mkv、flv、ts(音视频封装),h264、h265(hevc)、vp8、vp9(纯视频流) c) 图片显示和抓取:jpeg(jpg)、mjpeg、png、jif  
  • 音视频基础知识完整内容详见子文档:《音视频开发》 内容全  

音视频编解码的参考源码有ffmpeg。  

  • FFmpeg音视频编解码完整内容详见 子文档:《ffmpeg源码及架构分析》内容全  

7.2.3 Qt多媒体(音视频,含界面)  

  • Qt多媒体详见 子文档:《MultiMedia_VideoAudio.md》 内容全  
  • Qt官方播放器源码(纯应用)
  • 嵌入式播放器源码(自行实现编解码、复用解复用)

7.3 传感器采集与校准   7.4 电视节目加解扰   7.5 键盘键值(不同国家布局、不同游戏手柄布局)   7.6 蓝牙音响  

8. 通用算法  

调制解调   编解码   人工智能  

9. 行业相关算法  

8.1 水声   8.2 激光打标(显示类)   8.3 通讯  

三、工具使用  

1)编码语言  

1. C语言  

1.1 编码规范   1.2 命名规范   1.3 注释规范  

2. 51汇编  

1 指令集  

3. ARM汇编  

4. TI DSP汇编  

5. Cadence Xtensa汇编(HiFi DSP)  

6. Verilog硬件描述语言  

7. VHDL硬件描述语言  

8. Matlab语言  

9.Makefile语法(扩展内容)  

10.正则表达式(扩展内容)  

11.SQL数据库(扩展内容)  

12. Git语法  

13. Markdown语法(扩展内容)  

详见 子文档:《Markdown语法》  

2)通讯协议  

1. OSI七层协议  

2. 网络  

3. USB  

……  

三、理论知识  

1)操作系统原理(扩展内容)  

2)编译原理(扩展内容)  

3)信息论(扩展内容)  

4)离散数学  

  1. 快速傅里叶变换  

5)自动控制  

6)数据结构  

7)开发方法  

瀑布开发 敏捷开发

8)测试方法  

单元测试 集成测试 老化测试 白盒测试 黑盒测试  

四、项目实践  

4.1 自运行的吃豆人程序  

详见 子文档:《才鲸 / C语言小游戏》  

4.2 Linux下视频播放程序  

详见 子文档:《才鲸 / 嵌入式播放器》  

4.3 Qt安卓手机群控PC软件  

详见 子文档:《才鲸 / qtscrcpy_tc_安卓手机群控》  

五、其它  

待完善……  

5.1 嵌入式编程技巧  

详见 子文档:《才鲸 / 嵌入式编程技巧》  

5.2 嵌入式软件笔试题汇总  

详见 子文档:《才鲸 / 嵌入式软件笔试题汇总》  

5.3 QEMU仿真器(模拟器)  

详见 子文档:《QEMU默认支持的所有开发板列表》  

5.4 嵌入式找远程岗位、兼职、和接私单的方法  

详见 子文档:《才鲸 / 嵌入式远程岗位兼职私单》  

5.5 理工科考证获取额外收入  

详见 子文档:《才鲸 / 专利代理师(仅限理工科)》 注:专代很快就要取消,不能考了  

游戏、UI、web前端、web后端、数据库、安卓、iOS、安全、大数据、人工智能、云计算、高级语言:Java,Python,C#、工具类:Json、正则表达式、网络协议栈、XAML、MinGW、MSYS2、Cygwin、Wine兼容层……  

六、缩写列表  

待完善……  

七、索引(文档地图)  

待完善……  

……正在编写中……  

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空