四川大学电气信息学院嵌入式操作系统考试要求的内容Word格式.docx
- 文档编号:22861505
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:16
- 大小:121.14KB
四川大学电气信息学院嵌入式操作系统考试要求的内容Word格式.docx
《四川大学电气信息学院嵌入式操作系统考试要求的内容Word格式.docx》由会员分享,可在线阅读,更多相关《四川大学电气信息学院嵌入式操作系统考试要求的内容Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
比如液晶屏刷新允许有短暂的延迟。
7.目前比较流行的嵌入式操作系统有些(需例举3种)
VxWorks,QNX,PalmOS,WindowsCE,LynxOS,嵌入式Linux,uC/OS.
8.CISC和RISC
CISC:
ComplexInstructionSetComputer);
RISC:
reducedinstructionsetcomputer
从代码密度、寻址方式的多少、指令长度、指令数量、专用性、平均执行周期(CPI)、是否采用Load/Store结构,算术和逻辑操作仅针对寄存器?
9.Load/Store结构:
Load:
数据处理时,将要处理的数据从存储器加载(load)到寄存器去处理,计算结果存回(store)寄存器
10.流水线技术
通过程序并行运行提高运行速度,ARM7三级流水,ARM9五级流水
11.ARM处理器的各种基本工作模式
用户模式、快速中断模式、外部中断模式、管理模式、中止模式、未定义指令中止模式和系统模式。
12.冯·
诺依曼体系结构和哈佛体系结构
前者操作数和指令分时共用同一组总线,后者操作数和指令所采用的总线不同因而取指和取操作数可以同时进行,从而提高了运行速度
13.高速缓存
高速缓存是一种小型、快速的存储器,它保存部分主存内容的拷贝。
数据
14.闪速存储器(FLASH)与EEROM
EPROM,可擦除可编程ROM,EEPROM,电可擦写可编程只读存储器
FLASH(闪存):
是EEPROM的变种,EEPROM与闪存不同的是,它能在字节水平上进行删除和重写而不是整个芯片擦写,这样闪存就比EEPROM的更新速度快。
由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的BIOS(基本输入输出程序)、PDA(个人数字助理)、数码相机中保存资料等。
NandFlash与NorFlash相比较:
编程、擦除、读的速度以及可靠性
NOR技术,FlashMemory的擦除和编程速度较慢,但读出速度快,可靠性高
15.Nandflash与NorFlash
16.从编程的角度看,ARM微处理器的工作模式有哪些?
从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:
第一种为ARM状态,此时处理器执行32位的字对齐的ARM指令;
第二种为Thumb状态,此时处理器执行16位的、半字对齐的Thumb指令。
17.ARM体系结构两种存储字数据方法——大端格式和小段格式
大端:
字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。
小端:
与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。
18.ARM寄存器组织、分类,Thum状态和ARM状态下寄存器组织上的异同
通用寄存器包括R0~R15,可以分为三类:
不分组寄存器R0~R7;
分组寄存器R8~R14;
程序计数器PC(R15)。
上述寄存器那些是Thumb状态下所没有的?
R8-R12
19.什么是异常向量
异常是由内部或外部源产生并引起处理器处理一个事件,它会导致正常的程序执行流程发生暂时的停止,例如外部中断或试图执行未定义指令都会引起异常。
异常出现后强制从异常类型对应的固定存贮地址开始执行程序,这些固定的地址称为异常向量。
第3、4章
1.简述虚拟文件系统在Linux系统中的位置和通用文件系统模型。
虚拟文件在linux系统中的位置
通用文件系统模型
2.底层文件操作和标准文件操作之间有哪些区别?
底层文件操作不带缓存,效率低,但安全性高,标准I文件I/O正好相反
3.不带缓存的I/O与标准I/O的区别
在存取效率上,后者提供流缓冲的目的是尽可能减少使用read和write调用的次数,提高I/O效率。
文件标识:
文件描述符号,文件指针(或称为流)
4.什么事标准I/O的全缓冲、行缓冲与不缓冲
全缓冲:
在这种情况下,当填满标准I/O缓存后才进行实际I/O操作。
对驻留在磁盘上的文件的访问通常是由标准I/O库实施全缓冲的。
行缓冲。
在这种情况下,当在输入和输出中遇到新行符时,标准I/O库执行I/O操作,这允许我们一次输出一个字符(如fputc函数),但只有写了一行之后才进行实际I/O操作。
当流涉及一个终端时(例如标准输入和标准输出),典型地使用行缓冲。
下面是行缓冲的一个例子
printf(“stdoutisline-buffered“);
/*因为标准输出是行缓冲,所以没有遇到’\n’之前输出的内容先保存在标准输出缓冲区里*/
sleep
(2);
//进程睡眠2秒钟
fflush(stdout);
//刷新标准输出流,缓冲区的内容被送到标准输出
不带缓冲:
标准I/O库不对字符进行缓冲。
如果用标准I/O函数写若干字符到不带缓冲的流中,则相当于用write系统调用将这些字符写到打开的文件上。
标准出错况stderr通常是不带缓存的,这就使得出错信息可以尽快显示出来。
5.什么叫多任务系统?
任务、进程、线程分别是什么,它们之后有何区别?
任务、进程、线程的关系如下图
6.操作系统实现多任务的机制
当多任务操作系统使用某种任务调度策略允许两个或更多进程并发共享一个处理器时,事实上处理器在某一时刻只会给一件任务提供服务。
因为任务调度机制保证不同任务之间的切换速度十分迅速,因此给人多个任务同时运行的错觉。
多任务系统中有3个功能单位:
任务、进程和线程。
7.进程和程序的区别:
程序是静态的一段代码,是一些保存在非易失性存储器的指令的有序集合,没有任何执行的概念;
而进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程,它是程序执行和资源管理的最小单位。
8.在linux程序中如何如何标识一个进程?
进程号(ProcessIdenityNumber,PID)
9.如何理解进程的阻塞,并举一个例子。
进程等待某个条件的满足或某一个信号的到来时进程一直停留在某处。
比如用阻塞方式读串口时,当串口无数据时,程序就会卡在哪个地方。
进程的阻塞和睡眠是一回事。
10.进程的创建和执行:
许多操作系统都提供的是产生进程的机制,也就是首先在新的地址空间里创建进程、读入可执行文件,最后再开始执行。
Linux中进程的创建很特别,它把上述步骤分解到两个单独的函数中取执行:
fork()和exec函数族。
首先,fork()通过拷贝当前进程创建一个子进程,子进程与父进程的区别仅仅在于不同的PID、PPID和某些资源及统计量。
exec函数族负责读取可执行文件并将其载入地址空间开始运行。
11.wait函数的作用:
赐死等待的子进程,子进程占用的所有资源被全部释放
12现在在Linux中使用较多的进程间通信方式
(1)管道(Pipe)及有名管道(namedpipe);
(2)信号(Signal);
(3)消息队列;
(4)共享内存;
(5)信号量;
(6)套接字(Socket)
13.Linux系统资源分配和程序调度的最小单位分别是?
进程、线程。
14.线程创建和退出,读懂如下程序!
voidthread(void)
{
/*具体线程函数*/
}
ret=pthread_create(&
id,NULL,(void*)thread,NULL);
/*等待线程结束*/
pthread_join(id,NULL);
//不处理子线程退出时返回的值
15用open函数说明阻塞这个概念:
如果在打开方式假如不指定NONLOCK,则为阻塞,这时程序如果打开不成功就不会返回。
16exec函数族的作用:
为fork函数创建的进程执行具体的程序,从而最终实现在一个有实际意义的进程,比如完成打卡一个文件。
17.理解:
异步、同步、互斥三概念
异步:
事件或信号的到来没有一定的先后顺序就是异步(如中断、及进程间通信的信号通信方式都为异步),否则就是同步。
互斥就是一个操作与另一个操作不能同时进行,只有等一个操作完成后才能进行下一个操作
18.exit()和_exit()的区别
_exit()函数的作用最为简单:
直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;
exit()函数则在这些基础上作了一些包装,在执行退出之前加了若干道工序。
exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,就是图中的"
清理I/O缓冲"
一项。
19.线程创建和退出所做的工作:
分别为线程分配线程特定的资源,释放线程的资源
第2章C语言基础、6章裸机编程
1.如何从键盘向main函数传入参数
用scanf函数
2.带参数main函数
3.12理解下面语句的含义
#definerGPGCON(*(volatileunsigned*)0x56000060)
//“(*(volatileunsignedlong*)0x56000010)”的含义:
long是32位整型,unsigned指无符号数,左边的*表示取内容volatile表示易变的,告诉编译器不要优化,这个地址的内容不一定是在程序中改变的。
volatileunsignedlong*表示将后面跟的内容转化成一个指针,并且是指向一个易变的无符号整数。
左边再加个*,表示取该指针指向地址的内容。
总的意思是取那个内存单元(内存地址0x56000010)里存的数,并将这个数转化为无符号整数请参考指针的概念
rGPGCON=rGPGCON&
0xfff0ffff|0x00050000;
//这个语句是先清零后置位,要理解它,如何清零如何置位,没有搞清楚考试时是不能得分的
rLCDCON1=(CLKVAL_TFT<
<
8)|(MVAL_USED<
7)|(PNRMODE_TFT<
5)|(BPPMODE_TFT<
1)|0;
rGPGCON=rGPGCON&
(~(3<
8))|(3<
8);
上述语句的内容必考,但死记硬背是没有用的
4.采用或逻辑对寄存器进行设置
5.采用位掩码对寄存器的某个功能区位进行设置
6.如何对I/O口的功能进行配置并进行相关操作,让输出端口电平变化(配置为输出,然后向端口数据寄存器位写入相应电平),要求能进行编程
7.CPU与外设传输数据的方式有哪几类
查询方式、中断方式、DMA;
考虑三种方式下对cpu的占用、总线的控制权有何不同。
8.中断部分应掌握如下内容:
1)中断过程、与中断相关的寄存器的作用、中断挂起寄存器和中断源挂起寄存器的区别、与中断屏蔽有关的寄存器(中断屏蔽寄存器、子中断屏蔽寄存器以及CPSR),中断屏蔽(挂起)寄存器和子中断屏蔽(挂起)寄存器有何关系
9.PWM编程:
改变频率和脉冲宽度以及定时器观测值的读取
改变频率:
定时器减法缓冲寄存器(TCNTBn);
改变脉冲宽度:
比较缓冲寄存器(TCMPBn);
定时器观测值:
定时器观测寄存器(TCNTOn)。
10.串口:
帧错误、奇偶校验错误,溢出错误,前两种错误的校验原理,数据的发送和接收、回环模式、自动流控制,串口数据传输的编程,从某一个内存单元取数,然后发往串口(包括DMA方式)
11从下面三条语句理解typedef在程序移植时重新定义数据类型
typedefintint_32;
int_32a;
//与下一句等价
inta;
为什么有int还要取同名INT32?
答:
A微处理器int16位,long
32位
B微处理器short16位,int32位,long
64位
原本A处理器下程序:
typedef
int
INT16;
typedef
long
INT32;
要移植到B处理器下,则仅仅需要更改这些新名称就行,而不用更改整个程序。
short
INT16;
int
12为什么要使用动态链接库:
它们的区别:
为什么要用库:
方便开发,技术保密
区别:
静态链接库:
在对程序源程序编译时用到的库,它和程序源文件编译形成可执行文件。
由于静态库在程序编译时已经连接到目标代码,程序运行时不再需要加载,因此代码体积大。
动态链接库英文为DLL,是DynamicLinkLibrary的缩写形式,是程序运行时加载的库。
在程序编译时并不会连接到目标代码中,因此在程序运行时必须加载,因此代码体积小。
13.Makefile的作用:
一个工程中的源文件不计数,按类其型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
14.汉字显示原理:
LCD上无论图形还是字符的显示都是以像素为单位
voidPutPixel(U32x,U32y,U32c)
{
LCD_BUFFER[y][x]=c;
}
在向显示缓冲区写入显示数据时,需对LCD初始化:
其作用是建立LCD的工作环境:
显示屏、虚拟显示屏大小,黑白、灰度、彩色等显示模式的设置,以及帧同步、行、像素时钟的设置等,图形和字符的显示最终被一个点一个点的显示出来
无论是TurboC支持的各种显示器,还是单片机系统常用的LCD,它们的分辨率都是以像素为单位的,一个像素就是LCD屏上的一个可以显示的最小单位,也就是常说的点。
因此,要在LCD屏上显示一个汉字或图形就必须将汉字或图形用点来表式,这些表示某种图形的点的集合就是所说的点阵。
如嵌入式控制系统中最常用的汉字是16×
16点阵,它是由行列各16个点,共256个点组成的点阵图案,每行的16个点在内存中占两个字节,一个16×
16点阵汉字共16行,在内存中占32个字节。
15.字模:
字对应的点阵信息数据如16×
16点阵的一个汉字由32个字节组成,它表示在哪些点只需保持背景色对应像素点的位为0,哪些点像素点对应的位为1应输出指定的与背景色不同的颜色,从而显示汉字或英文字符等汉字
16.如何区别汉字和英文字符?
国标码规定,组成两字节代码的最高位为0,即每个字节仅只使用7位,这样在机器内使用时,由于英文的ASCII码也在使用,可能将国标码看成两个ASCII码,因而规定用国标码在机内表示汉字时,将每个字节的最高位“置”1,以表示该码表示的是汉字,这些国标码两字节最高位加1后的代码称为机器内的汉字代码,简称内码。
17.理解汉字区位码的作用:
汉字区位码用于指定汉字字模数据在存储区的位置,区位码可从内码运算得到
18.LCD调色板的作用:
用颜色的索引值表示颜色:
比如所有颜色共有216种,则每个颜色按通常表示方法需16位来存储,如果只用到其中的256色,用索引值来表示其中的每一颜色则只需八位就可以了,因此如果在所有颜色中只有部分颜色被采用时采用调色板可以节省存储空间
19.理解下列与屏幕显示相关的函数
voidBrush_Background(U32c)
intx,y;
for(y=0;
y<
LCD_HEIGHT;
y++)
for(x=0;
x<
LCD_WIDTH;
x++)
LCD_BUFFER[y][x]=c;
voidPutPixel(U32x,U32y,U32c)//绘制像素点
LCD_BUFFER[y][x]=c;
voidDraw_Text16(U32x,U32y,U32color,constunsignedcharch[])
unsignedshortinti,j;
unsignedcharmask,buffer;
for(i=0;
i<
16;
i++)
mask=0x80;
//掩码
buffer=ch[i*2];
//提取一行的第一个字节
for(j=0;
j<
8;
j++)
if(buffer&
mask)
PutPixel(x+j,y+i,color);
//为笔画上色
mask=mask>
>
1;
mask=0x80;
buffer=ch[i*2+1];
//提取一行的第二个字节
PutPixel(x+j+8,y+i,color);
voidDraw_ASCII(U32x,U32y,U32color,constunsignedcharch[])
buffer=ch[i];
第7章嵌入式系统开发环境
1.需要知道嵌入式系统的两种软件编程模式:
裸机编程和基于操作系统的编程
2.操作系统是一个计算系统所必须的吗?
不是的,一个计算机可以没有操作系统,对应裸机编程。
3在目标板上linux操作系统的安装过程
bootloader、内核、根文件系统,建立交叉编译环境
4:
Bootloader:
是在操作系统内核运行之前运行的一段小程序。
通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
通常,BootLoader是严重地依赖于硬件而实现的,特别是在嵌入式世界。
因此,在嵌入式世界里建立一个通用的BootLoader几乎是不可能的。
5:
嵌入式目标版用nfs挂载开发主机(PC)的意义:
通过此种方式可以在目标版上直接运行nfs挂载的主机中的内容,这样在开发过程中不需要每次修改后都下载到目标版上运行,只需开发完成后再下载到目标版。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 四川大学 电气 信息 学院 嵌入式 操作系统 考试 要求 内容