嵌入式复习
Posted dxpo1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式复习相关的知识,希望对你有一定的参考价值。
五、试题题型
有单选题、填空题、简答题、命令应用题、程序设计题等五种题型。
?单选题:给出一些有关vi编辑器、gdb调试器、make工程管理器、Bootloader、文件系统以及嵌入式Linux应用程序、嵌入式Linux驱动程序、Linux进程间通信以及Linux下的SOCKET通信等知识的不完全叙述,要求学生从题后给出的供选择的答案中选择合适的答案,补足这些叙述。这类题目主要考察学生对知识点的掌握程度。
?填空题:给出一些有关交叉编译、gcc编译器、Linux内核、嵌入式Linux驱动程序、Linux下web服务器等知识点的部分语句缺失,让学生补充完整。这类题目主要考察学生阅读理解的能力和对知识的应用能力。
?简答题:给出一个问题,让学生简述,目的在于考核学生对交叉编译、Bootloader、嵌入式Linux应用程序等内容的理解和掌握。
?命令应用题:给出操作说明,然后写出相应的操作命令,这类题目主要考察学生对Linux命令、gcc编译器、Linux内核、嵌入式Linux应用程序以及Linux多线程等内容的熟练使用程度。
?程序设计题:给出设计要求,编制出程序,用来考察若干个知识点。考察学生综合运用所学习知识解决问题的能力。
1、嵌入式Linux编程环境
(1)掌握嵌入式Linux开发交叉编译环境的搭建;
(2)掌握Linux常用操作命令:文件目录指令,文件的压缩处理指令,权限管理指令,其它系统管理指令★;
(3)掌握vi编辑器的使用★;
(4)掌握gcc编译器的使用★;
(5)掌握gdb调试器的使用★;
(6)掌握makefile的基本结构、变量与规则★。
2、嵌入式Linux的开发环境
(1)理解Bootloader的定义、特点、种类、镜像存放区域、启动流程;
(2)掌握Bootloader的编译与移植★;
(3)理解Linux内核文件结构;
(4)掌握Linux内核的配置、编译及移植★;
(5)了解常见的嵌入式文件系统;
(6)掌握根文件系统的制作★。
3、嵌入式Linux应用程序开发
3.1嵌入式Linux驱动程序
(1)掌握嵌入式Linux应用程序编写、编译及移植★;
(2)理解驱动程序的定义、分类、驱动程序与应用程序的区别、驱动程序的加载等基本概念;
(3)掌握字符设备驱动程序的开发★;
3.2嵌入式Linux进程间通信
(1)理解进程的概念、进程与程序的区别;
(2)掌握进程的标识符、进程创建、进程终止、进程休眠以及进程等待的编程★;
(3)掌握无名管道的通信机制★;
(4)掌握有名管道的通信机制★;
(5)掌握Linux信号处理机制★;
3.3Linux多线程
(1)理解线程的定义、进程与线程的区别;
(2)掌握线程标识符、线程创建、线程终止的编程★;
(3)掌握多线程的同步与互斥★。
3.4 Linux串口通信
(1)理解串口通信原理、串口通信基本参数、termios 结构体等相关概念;
(2)掌握Linux串口通信的程序设计★。
3.5 Linux下的SOCKET通信
(1)理解TCP协议、UDP协议等网络通信相关概念;
(2)掌握SOCKET编程函数★;
(3)掌握TCP协议的通信流程★;
(4)掌握UDP协议的通信流程★。
3.6 Linux下web服务器
(1)理解嵌入式Web服务器的功能以及常用的嵌入式Web服务器;
(2)掌握Boa服务器的移植★;
(3)理解CGI的功能;
(4)掌握CGI程序开发★。
3.7 Linux下嵌入式数据库SQLite
(1)理解嵌入式数据库SQLite的基本概念;
(2)掌握SQLite数据库的配置,编译,安装及移植★;
(3)掌握SQLite程序开发★。
linux的编程环境(16)
第一章
第二章
链接方式:JTAG 串口,以太网,USB接口
开发流程:
引导:BootLoader
第三章
cd | 打开/切换工作目录 | ![]() |
---|---|---|
ls | 列表 | |
mkdir | 创建目录 | |
cp | 复制 粘贴 | cp (-r -p -f)[1] 源文件 目标文件 |
mv | 移动/重命名 | mv 源文件 目标文件 |
rm | 删除 | -f强制 |
touch | 创建文件 | |
useradd | 创建用户 | |
chmod | 权限指令 | ![]() |
chown | 设置归属 | |
??tar | 解压 | ![]() |
mount | 挂载 | ![]() |
ifconfig | 配置网络 | ![]() |
ps | 查看进程 | -aux : 查看所有进程 |
kill | 杀死进程 | -9 : 强制终止进程 |
https://www.cnblogs.com/dxpo1/p/13143870.html
/etc/shadow :存密码
/etc/passwd : 存账户
第四章
vi





- 光标的快速移动
- 删除,复制,粘贴,保存退出
gcc
各个步骤,后缀文件
gdb调试
gcc -g test.c -o test
断点
n
s
恢复程序
第五章make

Makefile的结构三个要素

Makefile的编写
Makefile的变量种类
-
用户自定义变量
-
环境变量
-
预定义变量
-
自动变量
autotools自动生成makefile
linux的开发环境(41)
第六章BootLoader

在flash中

BootLoader结构
stage1 | stage2 |
---|---|
- 硬件初始化 | 用汇编语言跳到main入口 |
为stage2准备RAM | 初始硬件设备 |
拷贝stage2到RAM | 稽查系统内存映射 |
设置堆栈指针sp | 将kernel和根文件从falsh读到RAM |
跳到stage2的c入口 | 为内核设置启动参数 |
调用内核 |
第七章linux内核
三种配置方式

make menuconfig最常用
内核配置选项前括号

linux内核配置选项
CPU | 系统类型 |
---|---|
![]() |
网络管理 |
![]() |
设备驱动程序 |
添加对应的文件系统支持,如EXT4 | 文件系统 |
编译内核
make zImage
生成的zimage在arch/arm/boot/
??内核的配置命令,选项
第八章 文件系统
虚拟文件系统VFS
为各类文件系统提供统一的操作界面和应用编程接口
falsh
是嵌入式系统主要存储媒介
常见文件系统
??理解
Yaffs | JFFS | CRAMFS | Ramdisk |
---|---|---|---|
NAND Flash | NON Flash | 只读压缩文件系统 | 把RAM内存划分出一部分当做分区使用 |
根文件系统
??必须掌握
根文件系统(可以使用busybox制作)

Linux应用程序开发(43)
第九章Linux应用程序开发
NFS : 让本地客户端读取远端服务器的文件,然后挂载到客户端
NFS使用:
宿主机(服务器)
- 关闭防火墙 ifconfig iptables stop
- 设置IP,与目标机IP要在统一网段 ifconfig eth1 192.168.0.90
- 设置共享目录和访问权限 [共享目录] [主机ip]
目标机:
设置ip
挂载mount mount 192.168.1.90: /opt/root_fs /mnt
U盘挂载

第十章驱动开发
什么是驱动程序

驱动程序的分类
字符设备
块设备
网络接口设备
驱动程序的加载
直接编译到内核
编写成模块,需要时动态载入内核,如声卡
理解驱动与应用之间的区别
驱动程序 | 应用程序 |
---|---|
没有main,通过宏调用module_init | 执行一个main函数 |
头文件为<linux/module.h>输出为printk | 头文件为<stdio.h>输出为printf |
字符设备驱动程序框架??????

file_operations

模块注册
模块退出
创建设备文件mknod

第十一章进程控制
程序与进程
程序:可执行的文件比如exe,功能代码
进程:是程序一次执行的过程,动态的
获取进程标识PID和PPID
有文件(获取ID和创建进程一样)
include<sys/types.h>
include<unistd.h>

进程的创建
pif_t fork(void)
进程终止(exit比较好)

进程休眠(sleep)

进程等待/暂停(wait)

第十二章进程通讯(设计)
无名管道是什么/特点
不存在的,临时的,不在系统盘的,内存内的
无名管道通讯??????
父子进程通讯,父向子写数据(关闭读端),子从管道读取父进程所写数据(关闭写端)
无名管道创建
有名管道特点??????
有本地磁盘有文件,不同进程之间通讯

信号
用于通知进程发生的事件,不传递实际数据

信号处理

第十三章(多线程)
线程
就是进程的下一级,一个进程有很多线程,优点是能同时就行多种操作
线程的编程

创建



第十四章网络编程(没有大题,有填空选择)
TCP/UDP
tcp特点:
udp特点:

socket

TCP编程流程
UDP编程流程
第十五章(串口编程)
termios
串口编程流程

第十六章(web服务器)
web服务器特点
单进程服务器
什么事CGI
是web服务器能运行外部程序的一个接口标准
第十七章(Sqlite)

-r 目录树/-p 属性/-f强制覆盖同名 ??
以上是关于嵌入式复习的主要内容,如果未能解决你的问题,请参考以下文章
结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url