您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页嵌入式linux复习资料

嵌入式linux复习资料

来源:好走旅游网


1、文件系统是指操作系统中与管理文件有关的软件和数据,windows文件系统是以驱动器盘符为基础的,而且每个目录与相应的分区对应;linux下,分区属于目录结构。

1、Swap交换分区一般设为内存大小的2倍;windows选择FAT32、NTFS两种格式,linux使用EXT3格式。

2、文件属性:-rwx rwx rwx - 表示普通文件

d 表示目录文件 l 表示链接文件 3、文件系统目录结构

/bin 存放常用操作命令文件

/boot 存放操作系统启动时所要用到的程序

/etc 存放系统管理时要用到的各种配置文件和子目录 /home 系统默认的用户工作根目录 4、常见系统管理命令

Ps 显示当前系统中由该用户运行的进程列表

Kill 输出特定的信号给指定的PID(进程号)的进程 5、chmod:改变文件的访问权限

(1)符号标记 格式:chmod [选项] 。。。符号权限 [符号权限] 。。。文件

U:文件所有者、g:所属的用户组、o:系统里的其他用户、a:所有这3个不同的用户级别。+:增加权限、—:删除权限、=:设置权限

例: #chmod a+rx,u+w abc.tgz (2)八进制数 格式:chmod [选项] 。。。八进制权限 文件。。。

例:-r w x -rwx rw- r-x

4 2 1 7 6 5

#chmod 765 abc.tar.gz 使用chmod必须具有root权限 7、linux的启动过程:(简答)

(1)打开电源,CPU进入实模式,并从地址0xFFFF0000开始自动执行程序代码,这时BIOS进行开机自检,并按bios的设置进行设备启动,接着启动设备上安装的引导程序lilo或grub开始引导linux,linux获得启动权。

(2)linux进行内核引导,主要完成磁盘引导、读取机器系统数据、实模式和保护模式的切换、加载数据段寄存器以及重置中断描述符表等。

(3)执行init程序,init程序调用了rc.sysinit和rc等程序,而rc.sysinit和rc在完成系统初始化和运行服务的任务后返回init。

(4)Init启动mingetty,打开终端供用户登录系统,用户登录成功后进入shell,这样就完成了系统的整个启动过程。

8、vi的模式:命令行模式、插入模式、底行模式 9、Gcc所支持后缀名解释 .c .m .i .ii

1

C原始程序 Objective-C原始程序 已经预处理的C原始程序 已经预处理的C++原始程序 .s/.S .h .o .a/.so 汇编语言原始程序 预处理文件(头文件) 目标文件 编译后的库文件 .c/.cc/.cxx C++原始程序

P62 表3.7

-I dir 在头文件的搜索路径列表中添加dir目录 P63 表3.8

-L dir 在库文件的搜索路径列表中添加dir目录

10、库函数有静态库和动态库两种,它们的相同点及区别?(简答)

静态库是指编译连接时,将库文件的代码全部加入可执行文件中,因此生产的文件比较大,但在运行时也就不需要库文件了,其后缀名通常为“.a”。动态库与之相反,在编译链接时并没有将库文件的代码加入可执行文件中,而是在程序执行时加载库,这样可以节省系统的开销,后缀名一般为“.so”。 11、makefile(P76-80) P78 表3.16 12、几种主流的嵌入式操作系统

嵌入式linux、VxWorks、QNX、windows CE 、Palm OS 13、理解嵌入式的特点P96(考小题) 14、ARM微处理器工作状态(简答)

(1)ARM状态,此时处理器执行32位的字对齐的ARM指令。

(2)Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。 (3)Thumb2状态,此时处理器执行16/32位混合的、多类型对齐的指令。 15、ARM系统结构的存储格式(简答)

大端格式:在这种格式中,字数据的高字节存储在低地址中,而子数据的低字节则存放在高地址中。

小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。

16、P110 深刻理解交叉编译。交叉编译:就是在一个平台上生成可以在另一个平台上执行的代码,把相同的程序代码翻译成不同CPU的对应可执行二进制文件。

17、minicom是在Linux下串口通信的软件,在minicom中“ttyS0”对应“COM1”,“ttyS1”对应“COM2”。

18、内核的编译主要分别为3个步骤:内核配置、建立依赖关系、创建内核映像。 19、内核支持4种不同的配置方法:(简答)

Make config:基于文本的最为传统的配置界面,不推荐使用。

Make menuconfig:基于文本选单的配置界面,字符终端下推荐使用。 Make xconfig:基于图形窗口模式的配置界面,Xwindow下推荐使用。

Make oldconfig:自动读入“.config”配置文件,并且只要求用户设定前次没有设定过的选项。

20、linux内核源码目录结构 P129

/arch子目录包含了所有处理器体系结构的内核代码。 /drivers子目录包含了内核中所有的设备驱动程序。 21、linux支持多种文件系统,在嵌入式系统中常见的系统文件有cramfs、romfs、jffs、yaffs。

在嵌入式linux中,busybox是构造文件系统最常用的软件工具包。 22、Bootloader的两大作用:初始化硬件、加载内核。

23、在linux系统中,将程序的运行空间分为内核空间和用户空间。

24、通常,一个进程启动时,都会打开3个文件:标准输入、标准输出、标准出错处理。 25、终端有3种工作模式:规范模式、非规范模式、原始模式。 26、P178-182 串口 27、进程运行的状态:

2

a) 执行态:该进程正在运行,即进程正在占用CPU。

b) 就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间片。 c) 等待态:进程不能使用CPU,若等待事件发生则可将其唤醒。 28、linux中的进程包含3个段:数据段、代码段、堆栈段。 29、常用的进程通信方式有以下几种:P234(简答)

(1)管道及有名管道:管道可用于具有亲缘关系进程的通信,有名管道,除具有管道所具有的功能外,它还允许无亲缘关系进行间的通信。

(2)信号:信号是在软件层次上对中断机制的一种模拟,用于通知进程有某件事发生。 (3)消息队列:消息队列是消息的链接表,包括Posix消息队列、systemV消息队列。 (4)共享内存:最有用的进程间通信方式。

(5)信号量:主要作为进程之间以及同一进程的不同线程之间的同步和互斥手段。 (6)套接字:是一种更为一般的进程通信机制,可用于网络中不同机器之间的进程通信,应用非常广泛。

实验题1、P157-截取文件内容 /* copy_file.c */ #include #include #include #include #include #include

#define BUFFER_SIZE 1024 /* 每次读写缓存大小,影响运行效率*/ #define SRC_FILE_NAME \"src_file\" /* 源文件名 */

#define DEST_FILE_NAME \"dest_file\" /* 目标文件名文件名 */ #define OFFSET 10240 /* 拷贝的数据大小 */ int main() { int src_file, dest_file; unsigned char buff[BUFFER_SIZE]; int real_read_len; /* 以只读方式打开源文件 */ src_file = open(SRC_FILE_NAME, O_RDONLY); /* 以只写方式打开目标文件,若此文件不存在则创建, 访问权限值为644 */ dest_file=open(DEST_FILE_NAME,O_WRONLY|O_CREAT,S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); if (src_file < 0 || dest_file < 0) { printf(\"Open file error\\n\"); exit(1); } /* 将源文件的读写指针移到最后10KB的起始位置*/ lseek(src_file, -OFFSET, SEEK_END); /* 读取源文件的最后10KB数据并写到目标文件中,每次读写1KB */

3

while ((real_read_len = read(src_file, buff, sizeof(buff))) > 0) { write(dest_file, buff, real_read_len); } close(dest_file); close(src_file); return 0; }

实验题2、p183-写串口 /* com_writer.c */ #include #include #include #include #include #include #include \"uart_api.h\" int main(void) { int fd; char buff[BUFFER_SIZE]; if((fd = open_port(HOST_COM_PORT)) < 0) /* 打开串口 */ { perror(\"open_port\"); return 1; } if(set_com_config(fd, 115200, 8, 'N', 1) < 0) /* 配置串口 */ { perror(\"set_com_config\"); return 1; } do { printf(\"Input some words(enter 'quit' to exit):\"); memset(buff, 0, BUFFER_SIZE); if (fgets(buff, BUFFER_SIZE, stdin) == NULL) { perror(\"fgets\"); break; } write(fd, buff, strlen(buff)); } while(strncmp(buff, \"quit\ close(fd);

4

return 0; }

实验题3、P184-读串口 /* com_reader.c */ #include #include #include #include #include #include #include \"uart_api.h\" int main(void) { int fd; char buff[BUFFER_SIZE]; if((fd = open_port(TARGET_COM_PORT)) < 0) /* ´ò¿ª´®¿Ú */ { perror(\"open_port\"); return 1; } if(set_com_config(fd, 115200, 8, 'N', 1) < 0) /* ÉèÖô®¿Ú */ { perror(\"set_com_config\"); return 1; } do { memset(buff, 0, BUFFER_SIZE); if (read(fd, buff, BUFFER_SIZE) > 0) { printf(\"The received words are : %s\ } } while(strncmp(buff, \"quit\ close(fd); return 0; }

5

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务