首页 > 专栏

【超详细】嵌入式软件学习大纲

更新时间:2023-11-03 21:41:15 阅读: 评论:0

工作展望简短-朝着阳光奔跑作文

【超详细】嵌入式软件学习大纲
2023年11月3日发(作者:土龙刍狗)

【超详细】嵌⼊式软件学习⼤纲

⽬录

随便聊聊

  前两天上传了我⾃⼰在整个⼤学阶段单⽚机的学习历程(个⼈感觉已经⾮常详细和真实了,包括⾃⼰在某个阶段遇到的问题,单⽚机学

  好了分析完单⽚机与嵌⼊式的差别,我们再来了解⼀下什么是PC机,PC机与嵌⼊式的差别体现在哪?

  PC是什么呢?PC指的就是个⼈计算机,它是指⼀种⼤⼩、价格和性能适⽤于个⼈使⽤的多⽤途计算机(这是PC机的⼀⼤特点即通⽤

  在编程语⾔⽅⾯嵌⼊式开发主要使⽤C语⾔,有的朋友会问我:我C语⾔⼀窍不通能不能学习嵌⼊式?我认为是可以的,不过前提是先

去学习⼀下简单的C语⾔基础,不需要你学的特别精深,但是基础的知识内容还是要懂的。当然嵌⼊式开发还会⽤到汇编语⾔,这个可以在

学习嵌⼊式裸机的时候边学裸机边学ARM汇编(没必要吧汇编学的太精通,当然如果你有的是时间,那当然多多益善),在嵌⼊式中间层

的开发上会⽤到C++多⼀些,个⼈建议⽤到哪⼀步学到哪⼀步,不建议把CC++汇编java都学好再来看嵌⼊式(那都猴年马⽉了),应

1.了解当前主流操作系统及其特点

2.了解什么是双系统与虚拟机

3.基于VMware搭建⾃⼰的linux开发环境

4.了解什么是隐藏⽂件与⾮隐藏⽂件(与windows系统做对⽐学习)

5.了解什么是相对路径与绝对路径(与windows系统做对⽐学习)

6.了解linux内核&各个发⾏版的差别

7.了解GUI(图形⽤户界⾯)和cmdline(命令⾏)

常⽤命令:例如lscd pwd&mkdir&mv&touch&cp rm&cat&rmdir ln(软连接与硬连接)、manapt-get

9.学习linux中的⽂件类型标记⽅法

10.学习什么是编辑器&vivim的关系

11.了解vi的两种⼯作模式

12.学习vi⾼级应⽤:查找&快速切换⾏&设置显⽰⾏号

13.学习linux命令⾏中⼀些符号的含义

14.学习vi⾼级应⽤:⾏删除&⾏复制粘贴

15.了解普通⽤户与特权⽤户 su命令切换⽤户

linux中权限表⽰

17.懂得ubuntu中使⽤sudo暂时获取root权限

18.学习linux⾼阶命令:findgrep&which&whereisuname&关机重启命令、tree&mount&df、⽤户管理&权限管理及其他可能⽤到的⾼阶命令

预备知识第⼀部分-C基础学习⼤纲

1.C语⾔基本概念

2.C语⾔程序开发的⼀般步骤

3.使⽤printf进⾏格式化输出

中共享⽂件夹功能的使⽤

5.C语⾔数据类型之整形

6.数据类型之整形回顾

7.数据类型之浮点型

8.数据类型之字符型

9.有符号数和⽆符号数

10.C语⾔运算符之算术运算符

11.复合算术运算符

12.++--运算符和代码风格问题

13.运算符总结和顺序结构

14.第⼀种选择结构if el

循环

16.第⼆种选择结构switch ca结构

17.循环结构whiledo while

18.C语⾔之函数

19.函数三要素:定义声明和调⽤

20.函数的形参和实参

21.函数的返回值、函数名

22.C语⾔之数组

23.数组的初始化

24.不同数据类型的数组

运算符

26.字符数组和字符串

27.C语⾔之指针

28.C语⾔之结构体

29.C语⾔之共⽤体(Union

30.C语⾔之宏定义

31.宏定义和枚举

32.C语⾔进阶篇

⼆、ARM裸机学习

  这⾥的ARM裸机学习与STM32的裸机学习是完全不同的,这⾥的裸机学习基于嵌⼊式系统硬件的,不再是基于windows下的IDE进⾏

开发,⽽是在Linux中拥有ARM-linux交叉编译链进⾏开发,通过usb、SD卡多种⽅式进⾏烧写。当然ARM裸机的学习不单单是学习ARM

裸机,他同样是的针对Linux的基本操作的训练,及学习makefile的制作重定位连接⽂件的制作等等,对下⼀步学习Uboot及Linux内核有

着⾄关重要的作⽤,好了废话不多说,直接上⼤纲:

ARM琐碎知识的学习(⾄关重要)

  这部分主要是针对ARM的背景知识和零散杂碎知识的学习,⽬的是为之后的正式学习做铺垫。这些内容对于初学者来说⾮常重要。

1.了解ARM的成长史

2.了解ARM的商业模式和⽣态系统

4.了解开发板的各个版本号学习

5.学习SoCCPU的区别&外设概念的引⼊

6.了解主流学习型主芯⽚

7.详细了解开发板

8.了解嵌⼊式和单⽚机的区别

9.学习嵌⼊式系统的构成特点和演进⽅向

10.学习什么是交叉编译

11.了解CPU的设计原理、数据总线和地址总线

12.学习JlinkSD卡等辅助设备的使⽤及使⽤原因

ARM裸机第⼆部分-ARM体系结构与汇编指令

  这部分是ARM裸机学习的第⼆部分,主要内容是ARM体系结构(指令集和CPU的关系、RISC与CISC、冯诺依曼结构与哈佛结构

等)、S5PV210的地址映射、内存外存的连接⽅式,S5PV210的启动过程详解,S5PV210的编程模式与内部通⽤寄存器、异常向量

表,ARM常⽤汇编指令等。

1.学习可编程器件的编程原理

2.学习指令集对CPU的意义

3.了解RISCCISC的区别

4.了解统⼀编址&独⽴编址&哈佛结构&冯诺依曼结构

5.深⼊了解软件编程控制硬件的关键-寄存器

6.学习ARM体系结构要点

7.了解S5PV210的内存映射详解

8.学习CPU和外部存储器的接⼝

9.学习S5PV210的启动过程详解

11.学习如何在开发板上选择不同启动⽅式

12.了解ARM的编程模式和7种模式

13.了解ARM37个寄存器详解

14.学习ARM的异常处理⽅式

15.学习ARM汇编指令集(简单学习即可))

ARM裸机第三部分-开发板、原理图和数据⼿册

1.开发板硬件⼿册带读

2.开发板刷系统(USBSD两种⽅式)

3.X210核⼼板、底板原理图导读

4.S5PV210数据⼿册导读

5.x210dnw刷机

下使⽤dd命令刷写uboot

ARM裸机第四部分-GPIOLED

1.裸机实验体验之usb启动配合dnw⼯具下载

2.裸机实验体验之SD卡下载

3.⾃⼰动⼿安装交叉编译⼯具链

le⼤侠隆重登场

210_image.c⽂件详解

6.⼀步步点亮LED1_硬件⼯作原理及原理图查阅

7.⼀步步点亮LED2_数据⼿册查阅及相关寄存器浏览

8.⼀步步点亮LED3_从零开始⼿写汇编点亮LED

9.⼀步步点亮LED4_使⽤位运算实现复杂点亮要求

10.⼀步步点亮LED5_汇编编写延时函数并实现LED闪烁效果

11.⼀步步点亮LED6_再难⼀点的流⽔灯效果

12.反汇编⼯具objdump的使⽤简介

ARM裸机第五部分-SDRAM和重定位relocate

1.汇编写启动代码之关看门狗

2.汇编写启动代码之设置栈和调⽤C语⾔

3.汇编写启动代码之开iCache

4.重定位引⼊和链接脚本

5.代码重定位实战

引⼊

初始化

8.汇编初始化SDRAM详解

ARM裸机第六部分-S5PV210的时钟系统

时钟系统简介

2.S5PV210的时钟系统简介

3.S5PV210时钟域详解

4.S5PV210时钟体系框图详解

5.时钟设置的关键性寄存器

6.汇编实现时钟设置代码详解

7.C语⾔实现时钟设置代码详解

ARM裸机第七部分-串⼝通信详解

1.通信涉及的⼏个基础概念

2.串⼝通信的基本概念

3.串⼝通信的基本原理

4.S5PV210串⾏通信接⼝详解

5.S5PV210串⾏通信编程实战

stdio的移植

7.串⼝实验烧录问题总结

ARM裸机第⼋部分-按键和CPU的中断系统

1.什么是按

2.轮询⽅式处理按键

3.串⼝输出和按键消抖

1.主流的外存设备介绍

卡的特点和背景知识

卡的编程接⼝

.4.S5PV210SD卡启动详解1

5.S5PV210SD卡启动详解2

6.S5PV210SD卡启动实战1

7.S5PV210SD卡启动实战2

8.解决X210开发板的软开关按键问题

ARM裸机第⼗⼀部分-NandFlashiNand

ash的接⼝

ash的结构

ash的常见操作及流程分析

4.S5PV210NandFlash控制器

操作代码解析

介绍

/iNand操作

/iNand代码实战分析1

/iNand代码实战分析2

/iNand代码实战分析3

ARM裸机第⼗⼆部分-I2C通信详解

1.什么是I2C通信

2.I2C学通信时序

3.S5PV210I2C控制器

4.X210板载gnsor介绍

5.I2C总线的通信流程

6.I2C通信代码分析1

7.I2C通信代码分析2

ARM裸机第⼗三部分-ADC

的引⼊

的主要相关概念

3.S5PV210ADC控制器

转换的编程实践1

转换的编程实践2

ARM裸机第⼗四部分-LCD显⽰器

简介

的接⼝技术

如何显⽰图像1

如何显⽰图像2

的六个主要时序参数1

.的六个主要时序参数2

显⽰的主要相关概念

8.颜⾊在计算机中的表⽰

9.S5PV210LCD控制器

编程实战1-LCD控制器初始化

编程实战2-显⽰像素&刷背景

编程实战3-横线竖线斜线&画圆

编程实战4-写英⽂中⽂字符

编程实战5-画图

编程实战6-画图测试及调试

16.未完成事项展望

ARM裸机第⼗五部分-触摸屏TouchScreen

1.输⼊类设备简介

2.电阻式触摸屏的原理

3.S5PV210的电阻触摸屏控制器

4.电容触摸屏的原理

5x06电容触摸IC简介

ARM裸机第⼗六部分-shell原理和问答机制引⼊

是什么⿁

实战1-从零写最简单shell

实战2-将简易shell移植到开发板中

实战3-定义标准命令集及解析

实战4-添加第⼀个命令

实战5-添加其他命令1

实战6-添加其他命令2

实战7-实现开机倒计时⾃动执⾏命令1

实战7-实现开机倒计时⾃动执⾏命令2

实战8-初步实现环境变量

⼆、C语⾔进阶

内存这个⼤话题

1.程序运⾏为什么需要内存1

2.程序运⾏为什么需要内存2

3.位、字节、半字、字的概念和内存位宽

4.内存编址和寻址、内存对齐

5.C语⾔如何操作内存

6.内存管理之结构体

7、内存管理之栈

8、内存管理之堆

9、复杂数据结构

C语⾔位操作

1.常⽤位操作符

2.位与位或位异或在操作寄存器时的特殊作⽤

3.如何⽤位运算构建特定⼆进制数

4.位运算实战演练1

5.位运算实战演练2

1.指针数组与数组指针

2.函数指针与typedef

3.函数指针实战1

4.函数指针实战2

5.再论typedef

6.⼆重指针

7.⼆维数组

8.⼆维数组的运算和指针

数组&字符串&结构体&共⽤体&枚举

1.程序中内存从哪⾥来1

2.程序中内存从哪⾥来2

3.程序中内存从哪⾥来2

4.程序中内存从哪⾥来4

5.C语⾔的字符串类型

6.字符串和字符数组的细节

7.C语⾔之结构体概述

8.结构体的对齐访问1

9.结构体的对齐访问2

10.结构体的对齐访问3

of宏与container_of

12.共⽤体union

13.⼤⼩端模式1

14.⼤⼩端模式2

15.枚举

C语⾔宏定义与预处理、函数和函数库

1.C语⾔预处理理论

2.C语⾔预处理代码实战

3.宏定义1

4.宏定义2

5.函数的本质

6.函数的基本使⽤

7.递归函数

8.函数库

9.字符串函数

10.数学库函数

11.⾃⼰制作静态链接库并使⽤

12.⾃⼰制作动态链接库并使⽤

三、ubootlinux内核移植

介绍

2.动⼿写第⼀个shell

编程学习1

编程学习2

中的循环结构

中其他值得关注的知识点

le基础回顾

补充学习1

le补充学习2

零距离初体验uboot

1.X210官⽅uboot配置编译实践1

2.X210官⽅uboot配置编译实践2

的源码⽬录分析1

的源码⽬录分析2

的源码⽬录分析3

Insight的基本使⽤

uboot配置和编译过程详解

Makefile分析1

Makefile分析2

Makefile分析3

Makefile分析4

Makefile分析5

Makefile分析6

配置过程详解1

配置过程详解2

的链接脚本

uboot源码分析1-启动第⼀阶段

.S引⼊

_armboot函数简介

_armboot解析1

3.内存使⽤排布

_armboot解析2

_armboot解析3

_armboot解析4

_armboot解析5

_armboot解析6

_armboot解析7

_armboot解析8

_armboot解析9

_armboot解析10

_armboot解析11

_armboot解析12

_armboot解析13

_armboot解析14

启动2阶段总结

uboot源码分析3-uboot如何启动内核

和内核到底是什么

2.启动内核第⼀步:加载内核到DDR

uImage的区别联系

启动细节

启动

_bootm_linux函数

7.传参详解

启动内核的总结

uboot源码分析4-uboot的命令体系

命令体系基础

命令解析和执⾏过程分析

如何处理命令集1

1.移植前的准备⼯作

14.04上⽹及安装openssh

3.移植初体验

4.时钟和DDR的配置移植

地址另外配置

地址另外配置2

驱动问题的解决

8.⼀些⼩问题的修补

9.⽹卡驱动移植1

10.⽹卡驱动移植2

11.⽹卡驱动如何⼯作

12.使⽤⾃⼰移植的uboot启动内核

uboot的移植2-uboot官⽅标准uboot开始移植

1.选择合适的官⽅原版uboot

2.先初步浏览官⽅原版uboot

ig脚本分析

4.先解决官⽅版本uboot的烧录运⾏

.S⽂件分析与移植1

.S⽂件分析与移植2

7.添加DDR初始化1

8.添加DDR初始化2

9.添加uboot第⼆阶段重定位1

10.添加uboot第⼆阶段重定位2

时钟信息显⽰移植1

时钟信息显⽰移植2

时钟信息显⽰移植3

DDR配置显⽰移植

_init_r移植

2013.10SD/MMC驱动浏览

卡驱动移植1

卡驱动移植2

卡驱动移植3

20.环境变量的移植

21.环境变量的测试和配置移植

22.⽹卡驱动的移植1

23.⽹卡驱动的移植2

uboot杂记-logo显⽰和fastboot原理等

1.X210ubootLCD操作分析

显⽰和LCD屏幕分辨率适配

ot的基本分析

fastboot代码分析1

fastboot代码分析2

话说linux内核

1.内核和发⾏版的区别

2.内核和驱动的关联

3.内核和应⽤程序、根⽂件系统的关联

内核的模块化设计

5.选择合适版本的内核

内核的配置和编译原理

内核源码⽬录结构1

内核源码⽬录结构2

3.内核配置和编译体验

4.内核的配置原理1

nfig的使⽤和演⽰

nfig的⼯作原理

g⽂件详解1

g⽂件详解2

nfig的实验学习思路

内核的启动过程分析

1.做好内核分析的准备⼯作

.S⽂件分析1

3.内核启动的汇编阶段

4.内核启动的C语⾔阶段1

5.内核启动的C语⾔阶段2

6.内核启动的C语⾔阶段3

7.内核启动的C语⾔阶段4

8.内核启动的C语⾔阶段5

9.内核启动的C语⾔阶段6

进程详解1

进程详解2

e常⽤参数

13.内核中架构相关代码简介

内核的移植1-从三星官⽅内核开始移植

1.内核移植初体验

2.初步移植以看到启动信息

3.内核中机器码的确定

4.解决内核启动中的错误

的问题和安排

6.⽹卡驱动的移植和添加实验

7.内核启动第⼀阶段的调试⽅法

根⽂件系统的原理

1.根⽂件系统概述

2.根⽂件系统的形式

3.⾃⼰制作ext3格式的根⽂件系统

1.X210bsp介绍

⽂件分析

oot引⼊

四、linux应⽤编程和⽹络编程

linux中的⽂件IO

1.应⽤编程框架介绍

2.⽂件操作的主要接⼝API

3.⼀个简单的⽂件读写实例

函数的flag详解1

函数的flag详解2

6.⽂件读写的⼀些细节

系统如何管理⽂件

详解

9.多次打开同⼀⽂件与O_APPEND

10.⽂件共享的实现⽅式

11.⽂件描述符的复制1

12.⽂件描述符的复制2

函数介绍

14.标准IO库介绍

⽂件属性

中各种⽂件类型

2.常⽤⽂件属性获取

函数的应⽤案例

4.⽂件权限管理1

5.⽂件权限管理2

6.读取⽬录⽂件

获取系统信息(系统时间、随机数、proc中的⽂件)

1.关于时间的概念

系统中的时间

3.时间相关API实战1

4.时间相关API实战2

中使⽤随机数

⽂件系统介绍

⽂件系统的使⽤

进程(进程环境、进程控制、进程关系、守护进程、进程间通信)

1.程序的开始和结束

2.进程环境

3.进程的正式引⼊

创建⼦进程

5.⽗⼦进程对⽂件的操作

6.进程的诞⽣和消亡

7.⽗进程wait回收⼦进程

信号

1.什么是信号

2.常见信号介绍

3.进程对信号的处理

pau函数

⾼级IO

1.⾮阻塞IO

2.阻塞式IO的困境

3.并发式IO的解决⽅案

多路复⽤原理

多路复⽤实践

6.异步IO

7.存储映射IO

线程

1.再论进程

2.线程的引⼊

3.线程常见函数

4.线程同步之信号量1

5.线程同步之信号量2

6.线程同步之互斥锁

1.开启驱动开发之路

2.最简单的模块源码分析1

3.最简单的模块源码分析2

4.最简单的模块源码分析3

字符设备驱动⾼级

1.注册字符设备驱动新接⼝1

2.注册字符设备驱动新接⼝2

3.注册字符设备驱动新接⼝3

4.注册字符设备驱动新接⼝4

5.字符设备驱动注册代码分析1

6.字符设备驱动注册代码分析2

7.⾃动创建字符设备驱动的设备⽂件

8.设备类相关代码分析1

9.设备类相关代码分析2

10.静态映射表建⽴过程分析

11.动态映射结构体⽅式操作寄存器

12.内核提供的读写寄存器接⼝

驱动框架⼊门之LED

1.何谓驱动框架

2.内核驱动框架中LED的基本情况

3.初步分析led驱动框架源码

4.在内核中添加或去除某个驱动

5.基于驱动框架写led驱动1

内核的gpiolib学习1

7.使⽤gpiolib完成led驱动

8.将驱动添加到内核中

linux设备驱动模型

设备驱动模型简介

2.设备驱动模型的底层架构

3.总线式设备驱动组织⽅式

rm平台总线简介

misc类设备与蜂鸣器驱动

input⼦系统基础之按键

1.什么是input⼦系统

设备应⽤层编程实践1

设备应⽤层编程实践2

⼦系统架构总览1

⼦系统架构总览2

6.输⼊核⼼层源码分析1

7.输⼊核⼼层源码分析2

8.输⼊事件驱动层源码分析

9.输⼊设备驱动层源码分析1

10.输⼊设备驱动层源码分析2

11.中断⽅式按键驱动实战1

12.中断⽅式按键驱动实战2

触摸屏驱动移植实战

1.触摸屏驱动概览

2.内核中的竞争状态和互斥1

3.内核中的竞争状态和互斥2

4.中断的上下半部1

5.中断的上下半部2

内核的I2C⼦系统详解1

内核的I2C⼦系统详解2

内核的I2C⼦系统详解3

内核的I2C⼦系统详解4

内核的I2C⼦系统详解5

内核的I2C⼦系统详解6

内核的I2C⼦系统详解7

680驱动的移植实践

680驱动源码分析2

680驱动源码分析2

16.⽼版本触摸屏的驱动

黄昏来临-清蒸虾

【超详细】嵌入式软件学习大纲

本文发布于:2023-11-03 21:41:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/1699018875205369.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:【超详细】嵌入式软件学习大纲.doc

本文 PDF 下载地址:【超详细】嵌入式软件学习大纲.pdf

下一篇:返回列表
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|