嵌入式知识体系
2022-05-20 00:17:13 45 举报
AI智能生成
嵌入式开发知识点汇总
作者其他创作
大纲/内容
库函数基于文件IO实现
比文件IO多了一个流的实现
不能操作设备
标准IO
是系统调用
Linux对设备(包括硬盘)的操作提供一个统一的接口
文件IO
IO(Linux)
进程间拥有独立私有的地址空间
共享内存
消息队列
管道
信号量
...
进程间通信需要借助一些手段
使用信号量
同步
互斥
..
通信的一些问题
进程间通信
进程
系统不提供线程,是库函数实现
在同一个进程的不同线程,可以直接通信
通信方式
线程
进程是拥有资源最小单位,线程不拥有资源
线程是CPU调度的最小单位
区别
进程、线程(Linux)
嵌入式的概念
基本的数电基础
电路原理图
硬件基础
ARM架构芯片基本结构
ARM汇编
ARM异常和中断
GPIO编程
串口
I2C总线
SPI总线
通信
PWM
ADC/DAC
ARM架构
SOC芯片内部的一个ram
为C准备运行环境
跳转到main
汇编
一些寄存器初始化
为内核传递参数
启动内核
C
执行uboot
搭建C运行环境
内核核心模块的一些初始化
挂载设备树
挂载根文件系统
内核启动
操作系统的启动过程
uboot移植
Makefile适配
config修改/menuconfig 裁剪内核模块
内核移植
根文件系统的制作,busybox
根文件系统移植
设备树移植
系统移植
向下操作硬件,向上(内核)提供接口
作用
module_init
module_exit
module_license
三要素
字符设备驱动框架
大多数以设备文件的形式存在
网络设备不是以文件形式存在
设备存在方式
自动创建
手动创建
创建方式
硬编码模型
作用:设备和驱动分离
核心层维护了一些数据结构,存储驱动和设备信息
插入驱动模块或者设备模块的时候,核心层进行了一个匹配的过程
方式
platform总线
input子系统
总线式设备模型
外设的地址信息
设备树的内容
client设备模块
driver直接进行设备树匹配设备
设备树的使用
设备树
设备模型
设备
阻塞
非阻塞
调用select检测
应用层
调用驱动层函数,向应用层提供接口
poll_wait函数轮询fd,回调函数层层通知到应用层
驱动层
poll机制
IO多路复用
异步通知
IO模型
callback
时钟,定时器
中断处理函数
异常上下文同步机制注意要点
上下文上半部,下半部机制
异常上下文
中断
中断与时钟
段式、页式、段页式
内存管理
内核学习思想:面向对象
内核驱动模块开发
嵌入式
延迟变量或函数的声明周期,同时限制其作用域
static
外部寻找这个变量的声明
extern
指明变量不可修改,声明时离哪个近,哪个不能变
const
警告编译器编译的指令去内存中取数据,不要优化成直接读取cpu内部的寄存器
volatile
对基本类型的别名,不能用宏定义,要用typedef
typedef
注意sizeof是一个关键字
sizeof
关键字
基本数据类型
设计结构体时注意内存4字节对齐
attribute机制
内存对齐
结构体
联合体
枚举
复杂数据类型
数据类型
数组和指针的异同
数组和指针
函数三要素:返回类型,参数,函数体
本质是一个指针,指针指向的是一个函数的地址
函数指针
需要函数指针的支持
回调函数
递归
函数
C语言基础
堆栈
用完注意释放,防止内存泄露
释放后注意置NULL,防止野指针
动态内存
#define 宏定义
预处理相关
C语言高级
异常向量表
堆栈空间
初始化(一段汇编)
C语言执行环境
预处理
编译
链接
编译过程
交叉编译是指编译目标与编译环境处于不同的处理器架构等环境
交叉编译器
编译原理
动态库
静态库
库的制作和使用
gdb调试
Makefile项目管理
C工程
C语言
链式
顺序
线性表
是一种线性表,操作受限的数据结构
队列
与队列同理
栈
主要利用递归去创建和遍历树
二叉树
图
哈希表
数据结构
查找
直接插入排序
插入排序
冒泡排序
快速排序
交换排序
直接选择排序
选择排序
排序
算法
数据结构与算法
OSI模型
TCP/IP
网络模型
套接字
IP地址
端口
字节序
子网掩码
网关
相关基础
阻塞、非阻塞
点对点
广播,多播
多线程、多进程并发
select
poll
epoll
多路复用
udp/tcp
服务器模型
网络IO
网络
Root
0 条评论
下一页