根文件系统裁剪
- 格式:doc
- 大小:49.00 KB
- 文档页数:5
嵌入式系统开发模拟试题(附参考答案)一、单选题(共100题,每题1分,共100分)1.嵌入式系统软件结构可分为A、以上都是B、板级支持包、实时操作系统C、应用编程接口(API)正确答案:A2.嵌入式系统的设计思路是()。
A、够用即可B、越复杂越好C、功能越强大越好正确答案:A3.下载模式的作用是()A、从宿主机上下载文件到SDRAM或FLASHB、储存C、加载程序正确答案:A4.()是指在输入/输出时数据处理以块为单位的设备,它一般都采用缓存技术,支持数据的随机读写。
A、块设备B、字符设备C、套接字正确答案:A5.gmtime函数功能是A、获取从今日凌晨到现在的时间差,并存放在tv,然后将当地时区的信息存放到tzB、将日历时间转化为格林威治标准时间,并将数据保存在tm结构中C、获取日历时间正确答案:B6.lsmod命令功能A、列出当前动态加载的模块清单B、将驱动模块加载到操作系统内核C、将驱动模块从内核中删除正确答案:A7.在字符设备驱动程序开发中,不允许出现()。
A、全局变量B、死循环C、静态变量正确答案:B8.函数库一般分为()和()两种格式A、动态共享B、静态动态C、静态共享正确答案:C9.从系统定制能力考虑,()系统具有优势A、LinuxB、WindowsC、UCOS正确答案:A10.中断服务子程序,又称()A、驱动程序B、驱动程序的下半部分。
C、驱动程序的上半部分。
正确答案:B11.Linux I/O 操作默认是:A、同步阻塞模式B、同步非阻塞模式C、异步阻塞模式正确答案:A12.汽车导航系统可使用()A、弱实时B、不需要使用C、以上都对正确答案:A13.嵌入式系统中的CPU具有一些与通用计算机所使用的CPU不同的特点,下面不是其特点的是()。
A、高主频B、支持实时处理C、低功耗正确答案:A14.Linux系统会用()字母表示字符设备A、bB、aC、c正确答案:C15.ARM11系微处理器的优点()A、11级流水线B、动态预测C、多线程组合D、能耗低正确答案:A16.大部分Unix系统,只能一次传送一个或多个长度是()字节(或一个更大的2次幂的数)的整块数据。
基于Xilinx FPGA的嵌入式Linux设计流程FPGA是通过逻辑组合电路来实现各种功能的器件。
由于FPGA内部集成了大量的逻辑资源和可配置的I/O引脚,加上独特的并行处理架构,可以轻松实现同时对多个外部设备的配置和管理,以及内外各种接口数据的传输。
现在开发厂商又在FPGA 内部加入了大量的DSP和Block RAM资源,非常适合图像处理、数字信号处理等运算密集的应用,因此在这些领域取得了广泛的应用。
但是由于FPGA 程序编写的灵活性和功能的多样性,使得它在一个复杂工程中对各个程序的使用调度、统筹管理上有很大的局限性,这样就必须引入操作系统进行统一的管理。
Linux 系统则因为其良好的可裁减、可配置等特点在嵌入式领域应用广泛。
Linux 操作系统提供了许多系统级的应用,例如网络协议的实现、进程调度、内存管理等,同时Linux 是一个成熟的开源操作系统,有丰富的应用资源,利用这些资源和强大的系统功能,用户可以快速地开发基于嵌入式环境复杂系统。
因此,结合FPGA和Linux双方优势,可以很好地满足嵌入式系统设计需求,量体裁衣,去除冗余。
本文给出了一种基于Xilinx FPGA的嵌入式Linux操作系统解决方案。
基于FPGA的嵌入式系统的硬件设计本设计是基于Xilinx XC4VFX40系列 FPGA,它内部集成了两个PowerPC405处理器, 4个10/100/1000M以太网MAC模块,运行频率300MHz时,具有420D-MIPS性能,能解决高速网络数据传输问题,并且能解决通过网络加载操作系统和交叉编译等问题。
它内部有448个可配置I/O口,2592kb BlockRAM,能实现对各种外部设备的并行控制以及较多数据的存储与处理。
加载一个操作系统,一般需要几十兆的内存空间,FPGA内部自带的RAM空间是远远不够的,本设计在板上扩展了两片MICRON公司的256Mb DDR内存,作为上电时操作系统的加载和运行空间。
1.8 练习题P141.选择题(1)A说明:嵌入式系统的发展趋势表现在以下几方面:1.产品种类不断丰富;应用范围不断普及2.产品性能不断提高3.产品功耗不断降低;体积不断缩小4.网络化、智能化程度不断提高5.软件成为影响价格的主要因素(2)D说明:常见的嵌入式操作系统: VxWorks;Windows CE、uC/OS-II和嵌入式Linux..(3)A说明:VxWorks是美国WindRiver公司于1983年开发的一种32位嵌入式实时操作系统..2.填空题(1)嵌入式计算机(2)微处理器外围电路外部设备(3)板级支持包实时操作系统应用编程接口应用程序(4)嵌入式处理器微控制器数字信号处理器3.简答题(1)简述嵌入式系统的定义和特点答:定义:以应用为中心;以计算机技术为基础;软硬件可裁剪;应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统..特点:专用性强、实时性好、可裁剪性好、可靠性高和功耗低等.. (2)简述计算机系统的发展历程第一阶段大致在20世纪70年代前后;可以看成是嵌入式系统的萌芽阶段;第二阶段是以嵌入式微处理器为基础;以简单操作系统为核心的嵌入式系统;第三阶段是以嵌入式操作系统为标志的嵌入式系统;也是嵌入式应用开始普及的阶段;第四阶段是以基于Internet为标志的嵌入式系统;这是一个正在迅速发展的阶段..(3)简述MCU和DSP的区别MCU是微控制器;DSP是数字信号处理器..MCU相当于小型的电脑;内部集成的CPU、ROM、RAM、I/O总线;所以集成度高是它的特点..DSP是专用的信息处理器;内部的程序是对不同的机器和环境进行特别优化;所以处理速度是最快的..2.4 练习题1. 填空题1 ARM7 ARM9 ARM9E ARM10E ARM112 精简指令集计算机3 Samsung ARM920T IIC总线4 BGA 显卡布线5 1.8V 3.3V6 8 128 17 S3C2410 64MB 64MB2. 选择题1 D 2C 3A 4B 5B6C 7D 8C 9C 10B3. 简答题1ARM和S3C2410X有什么关系S3C2410是韩国三星公司生产的嵌入式处理器;它采用了ARM公司的ARM920T即ARM9内核2ARM7是32位RISC处理器;使用3级流水线;采用冯诺依曼体系结构;不支持MMU..3ARM8是32位RISC处理器;使用5级流水线;采用哈佛体系结构;支持MMU..4S3C2410X芯片有27根地址线;8根片选线nGCS;32根数据线..5S3C2410X芯片内部集成了一个LCD控制器;SDRAM控制器;3个通道UART;4个通道DMA;4个具有PWM功能的计时器和一个内部时钟;8通道的10位ADC..6ARM体系结构有哪几种工作状态又有哪几种运行模式其中哪些为特权模式哪些为异常模式并指出处理器在什么情况下进入相应模式工作状态:第1种:ARM状态..处理器执行32位的字对齐的ARM指令..第2种:Thumb状态..处理器执行16位的半字对齐的Thumb指令.. 运行模式:用户模式usr 快速中断模式fiq 外部中断模式irq管理模式svc 数据访问中止模式abt 系统模式sys未定义指令中止模式und在这7种运行模式;除了用户模式外;其他6种处理器模式都为特权模式..在这6种特权模式中;除了系统模式外的其他5种特权模式又称为异常模式..用户模式:非特权模式;也就是正常程序执行的模式;大部分任务在这种模式下执行..在用户模式下;如果没异常发生;不允许应用程序自行切换果没异常发生;不允许应用程序自行改变处理器的工作模式;如果有异常发生;处理器会自动切换工作模式..快速中断模式:支持高速数据传输和通道处理;当一个高优fast中断产生时将会进入这种模式..外部中断模式:也称为普通中断模式;当一个低优先级中断产生时将会进入这种模式..在这模式下按中断的处理器方式又分为向量中断和非向量中断两种..通常的中断处理都在IRQ模式下进行..管理模式:是一种操作系统保护模式;当复位或软中断指令执行时处理器将进入这种模式..数据访问中止模式:当存取异常时将会进入这种模式;用来处理存储器故障、实现虚拟存储或存储保护..系统模式:使用和user模式相同寄存器组的特权模式;用来运行特权级的操作系统任务..未定义指令中止模式:当执行未定义指令时会进入这种模式;主要是用来处理未定义的指令陷阱;支持硬件协处理器的软件仿真;因为未定义指令多发生在对协处理器的操作上..7ARM体系结构支持的数据类型有多少寄存器如何组织支持的数据类型:1.字节byte;各种处理器体系结构中;字节的长度均为8位..2.半字half-word;在ARM体系结构中;半字的长度为16位..3.字word;在ARM体系结构中;字的长度为32位..ARM处理器共有37个寄存器;其中31个通用寄存器;6个状态寄存器.. 8S3C2410的存储控制器如何对内存空间进行管理S3C2410X存储控制器为片外存储器提供控制信号..它将系统的存储空间分成8组Bank;每组的大小为128MB;共1GB..9分析程序状态寄存器各位的功能描述;并说明C、Z、N、V在什么情况下进行置1和清0状态寄存器PSR的具体格式为V—溢出标志位对于加/减法运算指令;当操作数和运算结果为二进制补码表示的带符号数时;V=1表示符号位溢出;其它指令通常不影响V位..例如:两个正数最高位为0相加;运算结果为一个负数最高位为1;则符号位溢出;相应V=1.C--进位或借位标志位对于加法指令包括比较指令CMN;结果产生进位;则C=1;表示无符号数运算发生上溢出;其他情况下C=0;在减法指令中包括比较指令CMP;结果产生借位;则C=0;表示无符号数运算发生下溢出;其他情况下C=1;对于包含移位操作的非加/减法运算指令;C中包含最后一次溢出位的数值;对于其他非加/减法运算指令;C位的值通常不受影响..Z--结果为0标志位Z=1表示运算结果是0;Z=0表示运算结果不是零;对于CMP指令;Z=1表示进行比较的两个数大小相等..N--符号标志位本位设置成当前指令运算结果的bit31的值..当两个补码表示有符号整数运算时;N=1表示运算的结果为负数;N=0表示结果为正数或零..10ARM指令可分为哪几类说出哪几条指令是无条件执行的..ARM指令可分为:数据处理指令;跳转指令;程序状态寄存器处理指令;加载/存储指令;协处理器指令;异常产生指令..无条件执行指令:BLX指令;BKPT指令产生软件断点中断11如何实现两个64位数的加法操作;如何实现两个64位的减法操作;如何求一个64位数的负数实现64位数据加法运算:假设R0和R1存放了一个64位数据作为被加数;R0存放数据的低32位;R2和R3中存放了另一个64位数据作为加数;R2中存放低32位数据..运算结果送回到R1:R0中R0中存放低32位..ADDSR0;R0;R2;低32位相加并影响标志位ADCR1;R1;R3;高32位相加再加上C标志位进位值实现64位数据减法运算:如果寄存器R0和R1中放置一个64位的被减数;其中R0中放置低32位数值;寄存器R2和R3中放置一个64位的减数;其中R2中放置低32位数值..运算结果送回到R1:R0中R0中存放低32位..SUBSR0;R0;R2;低32位相减并影响标志位SBCR1;R1;R3;高32位相减再减去C标志位的反码求一个64位数的负数:如果寄存器R0和R1中放置一个64位数;其中R0中放置低32位数值;寄存器R4和R5中放置其负数;其中R4中放置低32位数值.. RSBSR4;R0;#00减去低32位并影响标志位RSCR5;R1;#00减去高32位再减去C标志位的反码4.程序题(1)分析下列每条语句;并说明程序实现的功能..CMP R0; #0 //判断R0是否等于0MOVEQ R1; #0 //当R0等于0;则R1等于0MOVGT R1;#1 //当R0为正数时;则R1等于1此功能码段可以判别R0中的值为正数还是0..(2)写一条ARM指令;分别完成下列操作..R0 = 16 MOV RO; #16R0 = R1 / 16 MOVRO;R1;LSR#4R1 = R2 * 4R0 = - R0 RSBRO;RO;#0(3)写出实现下列操作的ARM指令..当Z=1时;将存储器地址为R1的字数据读入寄存器R0.. MOVEQR0;R1当Z=1时;将存储器地址为R1+R2的字数据读入寄存器R0.. LDREQR0;R1;R2将存储器地址为R1-4的字数据读入寄存器R0..LDRR0;R1;#-4将存储器地址为R1+R6的字数据读入寄存器R0;并将新地址R1+R6写入R1..LDRR0;R1;R6(4)写出下列指令所实现的操作..LDRR2;R3;#-2将存储器地址为R3-2的字数据读入R2;并将地址R3-2写入R3 LDRR0;R0;R1将存储器地址为R0的字数据读入R0;并将地址R0+R1写入R0 LDRR1;R0;R2;LSL #2将存储器地址为R0+R2*4的字数据读入R1;并将地址R0+R2*4写入R0STRBR1;R2;#0xB0R0的低8位存入存储器地址为R2+0xB0字节中LDMIAR0;{R1;R2;R8}将内存单元R0所指向的地址单元以字为单位递减方式读取到R1;R2;R8中;低地址编号的字数据内存单元对应低编号寄存器STMDBR0;{R1~R5;R8;R9}R1~R5;R8;R9存储到以R0为起始地址的递减内存中;最终R0指向存放R9的地址单元5.计算题某设备的接口电路如图所示;请计算出该设备的地址..3.5 练习题1.选择题(1)B 2 A 3 C 4 D 5 A2.填空题(1).so .a 程序运行过程中编译过程中(2)L I o(3)$(4)$@ $^ $< CC、CFLAGS等(5)目标文件的完整名称所有不重复的依赖文件;以空格隔开第一个依赖文件的名称、3.简答题(1)m ake和Makefile之间的关系答:make是一种命令;是根据Makefile文件的规则决定如何编译和连接程序或其他的动作..2Makefile的普通变量与预定义变量有什么不同预定义变量有哪些它们分别表示什么意思答:普通变量:引用变量时;只需在变量前面加上$符;预定义变量:已经定义好;直接引用即可..预定义变量有:$@、$^、$<..$@:表示完整的目标文件名;$^:表示所有的依赖文件;$<:表示依赖文件列表中的第一个文件..3GCC编译器的常用参数有哪些它们的功能分别是什么答:gcc编译器的常用参数:-o;-I;-L;-E;-S;-c功能:-o表示编译成一个可执行程序;-I表示指定头文件目录;-L 表示指定库文件目录选项;-E表示对源代码进行预编译;-S表示编译成汇编代码;-c表示把.c文件转换为以.o为扩展名的目标文件.. 4.编程及调试题1根据要求编写Makefile文件..有5个文件分别是main.c、visit.h、study.h、visit.c、study.c;具体代码如下..//main.c文件//visit.h文件//study.h文件//visit.c文件//study.c1如果上述文件在同一目录;请编写Makefile文件;用于生成可执行程序zhs..//Makefile 文件2 如果按照下面的目录结构存放文件;请改写Makefile文件.. bin:存放生成的可执行文件obj:存放.o文件include:存放visit.h、study.hsrc:存放main.c、visit.c、study.c和Makefile.3 如果按照下面的目录结构存放文件;请改写Makefile文件.. bin:存放生成的可执行文件obj:存放.o文件include:存放visit.h、study.hsrc:存放main.c和Makefilesrc/src1:存放visit.csrc/src2:存放study.c说明:这可能只是其中一种方法;方法不唯一..我这种做法有一个缺点就是需要修改visit.c和study.c文件的内容;如修改#include “../include/visit.h”..(2)按要求完成以下操作..①vi编辑test.c文件;其内容如下..②用gcc –o test.o test.c编译;生成test.o③用gcc –g –o test1.o test.c编译;生成test1.o④比较test.o和test1.o文件的大小;思考为什么带调试选项-g的目标文件test1.o比较大..因为在gcc编译源代码时指定-g选项可以产生带有调试信息的目标代码..(3)使用GDB调试上面的程序①调试参数-g进行编译#gcc –g test.c –o test②启动GDB调试;开始调试#gdb Gtest③使用gdb命令进行调试..略..4编写一个程序;将系统时间以year-month-day hour:minute:second 格式显示在屏幕上;并将它保存在time.txt文件..4.4 练习题1.填空题1 串口2 115200 8 1 无无3 编程器串口网络接口4 Bootloader5 程序仿真调试程序的烧写6 zImage root.cramfs7启动加载模式下载模式8 汇编语言C语言9 U-Boot Blob ARMBoot 或者RedBoot vivi10 BusyBox11启动加载模式说明:按回车进入启动加载模式;按回车外的任意键进入vivi的下载模式..2. 选择题1 A2 C3 A4 A5 A3. 简答题1简述嵌入式开发环境的搭建过程答:1、交叉编译工具链的安装;2、安装配置TFTP服务;3、安装配置NFS服务;4、C-Kermit的安装配置;5、minicom的安装配置;6、windows下超级终端的配置..2 BootLoader的结构分两部分;简述各部分的功能答:两部分:Stage1:用汇编语言编写;主要进行设备的初始化;Stage2:用C语言编写;增强程序的移植性和可读性..(2)ARM常用的Bootloader程序有哪些答:U-Boot;Blob;RedBoot;vivi(3)简述生成内核映像文件zImage的步骤..答:1、make config 进入命令行;2、make menuconfig 内核裁剪;3、make clean 清理以前已生成的目标文件;4、make dep 编译变量的依赖关系;5、make zImage 生成内核镜像文件zImage..4 BusyBox工具的功能是什么答:BusyBox工具用来精简基本用户命令和程序;它将数以百计的常用UNIX/Linux命令集成到一个可执行文件中..5简述根文件系统的创建过程..答:1、建立基本的目录结构;2、交叉编译BusyBox;3、创建配置文件;4、利用cramfs工具创建根文件系统映像文件..5.4 练习题1.选择题1B 2D 3C 4A 5C 6D2.填空题1 内核态2 字符设备块设备3 主设备号次设备号4 静态编译动态编译5 insmod说明:用于加载模块化驱动程序的命令是insmod;用于卸载已安装模块化驱动程序的命令是rmmod;用于查看已安装的模块化驱动程序的命令是lsmod..3.简答题(1)简述驱动程序的主要功能..答:1、对设备初始化和释放;2、数据传送;3、检测和处理设备出现的错误..(2)简述驱动程序的组成..答:1、自动配置和初始化子程序;2、服务于I/O请求的子程序;3、中断服务子程序..(3)简述设备驱动程序与应用程序的区别..答:1、设备驱动程序工作在内核态下;而应用程序工作在用户态下;2、设备驱动程序从module_init开始;将初始化函数加入内核初始化函数列表中;在内核初始化时执行驱动的初始化函数;从而完成驱动的初始化和注册;之后驱动便停止工作;等待应用程序的调用;而应用程序从main函数开始执行..3、应用程序可以和GLIBC库连接;因此可以包含标准的头文件;驱动程序不能使用标准的C库;因此不能调用所有的C库函数..4简述设备文件、驱动文件、主设备号和次设备号之间的关系..答:驱动程序加载到内核后有一个主设备号..在Linux内核中;主设备号标识设备对应的驱动程序;告诉Linux内核使用哪一个驱动程序为该设备也就是/dev下的设备文件服务;而次设备号则用来标识具体且唯一的某个设备..5简述字符设备驱动程序提供的常用入口点及各自的功能.. 答:open入口点:对将要进行的I/O操作做好必要的准备工作;如清除缓冲区等..如果设备是独占的;即同一时刻只能有一个程序访问此设备;则open子程序必须设置一些标志以表示设备处于忙状态.. close入口点:当设备操作结束时;需要调用close子程序关闭设备..独占设备必须标记设备可再次使用..read入口点:当从设备上读取数据时;需要调用read子程序..write入口点:向设备上写数据时;需要调用write子程序..ioctl入口点:主要用于对设备进行读写之外的其他操作;比如配置设备、进入或退出某种操作模式等;这些操作一般无法通过read或write 子函数完成操作..(6)简述逐次逼近型ADC的结构及工作原理..答:逐次逼近型ADC通常由比较器;数模转换器DAC;寄存器和控制逻辑电路组成..工作原理:初始化时;先将寄存器各位清空..转换时;先将寄存器的最高位置1;再将寄存器的数值送入DAC;经D/A转换后生成模拟量送入比较器中与输入的模拟量进行比较;若Vs<Vi;则该位的1被保留;否则被清除;然后再将次高位置1;再将寄存器的数值送入DAC;经D/A转换后生成的模拟量送入比较器中与输入模拟量进行比较;若Vs<Vi;则该位的1被保留;否则被清除;重复上述过程;知道最低位;最后寄存器中的内容即为输入模拟值转换成的数字量..5.编程题S3C2410X通过GPG3端口来控制LED的亮和灭;具体电路如图;请为该字符设备设计一个驱动程序和应用程序;应用程序能够根据用户需要来控制LED的//驱动程序//应用程序6.7 练习题1.选择题1C2D说明:TinyOS是UC Berkeley加州大学伯克利分校开发的开放源代码操作系统3C2.填空题1X Windows;Micro Windows;MiniGUI或者Qtopia Core;Qt/Embedded;OpenGUI2X Window Server;Xlib;帧缓存3.问答题1简述嵌入式GUI的特点..答:1、轻型;占用资源少..嵌入式GUI要求是轻量型的;这主要是受限于嵌入式硬件资源..2、可配置..由于嵌入式设备的可定制性;要求相应的GUI系统也是可以定制的;所以嵌入式GUI一般都具有可裁剪性..3、高性能..耗用系统资源较少;能在硬件性能受限的情况下、尤其是CPU资源较少的情况下达到相对较快的系统响应速度;同时减少能源消耗..4、高可靠性..系统独立;能适用于不同的硬件;在高性能的同时保证高可靠性..2简述Qt/X11和Qtopia Core的异同点..答:相同点:都是嵌入式GUI;也就是在嵌入式系统中为特定的硬件设备或环境而设计的图形用户界面系统..Qt/X11与Qtopia Core最大的区别在于Qt/X11依赖于X Window Server或Xlib;而Qtopia Core是直接访问帧缓存..它们所依赖的底层显示基础是不同的;从而导致了体系结构上的差异..3简述信号与槽的作用..答:信号:当某个信号对其客户或所有者发生的内部状态发生改变;信号被一个对象发射..只有定义过这个信号的类及其派生类能够发射这个信号;当一个信号被发射时;与其相关联的槽将会被立刻执行..槽:槽是普通的C++成员函数;可以被正常调用;它们唯一的特殊性就是很多信号可以与其相关联..当与其相关联的信号被发射时;这个槽就会被调用..槽可以有参数;但槽的参数不能有缺省值..4.编程题编写Qtopia Core程序:在窗口建立两个按钮;单击Show Te xt按钮时在单行文本框中显示Hello World;单击Quit按钮时关闭窗口..7.4 练习题1.选择题1A 2B 3A2.填空题1可定制性好支持SQL查询语句提供接口函数;供高级语言调用实时性好2自包含跨平台无数据类型3.问答题1常见的嵌入式数据库有哪些嵌入式数据库和其他数据库的主要区别是什么答:常见的嵌入式数据库有mSQL;Berkeley DB;SQLite..数据处理方式的不同;嵌入式数据库属于程序驱动式;其他数据库属于引擎响应式..逻辑模式的不同;其他数据库基本上采用关系模型;而嵌入式数据库除采用关系模型外;还会采用网状模型或两者的结合体..优化重点不同;其他数据库由于面向通用的应用;优化的重点是:高吞吐量、高效的索引机制、详尽的查询优化策略..而嵌入式数据库是面向特定应用的;并且资源有限;优化的重点是:实时性、开销大小、系统性能、可靠性、可预知性和底层控制能力..关键技术不同;嵌入式数据库的很多关键技术与其他数据库不同;如备份恢复、复制与同步、事务和安全性等..2简述SQLite数据库的特点..答:SQLite的特点包括:无需安装和管理配置;存储在单一磁盘文件中的一个完整的数据库;数据库文件可以再不同字节顺序的机器间自由地共享;支持数据库大小最大为2TB;包括TCL绑定;同时通过Wrapper支持其他语言的绑定;独立;没有额外依赖;支持多种开发语言;支持事件;不需要配置、安装..(4)在SQLite中有哪些数据类型答:SQLite支持NULL;INTERGER;REAL;TEXT和BLOB数据类型..4.编程题。
“毕昇杯”全国大学生嵌入式设计大赛“毕昇杯”全国大学生嵌入式设计大赛参赛文档1“毕昇杯”全国大学生嵌入式设计大赛基于嵌入式Linux的视频监控系统Video monitoring system based on the embedded Linux队员:李泳潮任春雷琚汪慧指导教师:张丽平伊芸芸2010年7月22日2“毕昇杯”全国大学生嵌入式设计大赛摘要:以CPU为S3C2410的Techv-2410核心板为硬件平台,通过制作Bootloader,Linux内核,文件系统搭建嵌入式Linux系统。
利用视频监控程序控制 USB摄像头采集并压缩现场视频数据,在服务器的支持下,通过网络将处理后的视频数据传输至客户端,实现对监控现场实时的监控效果。
关键词:嵌入式Linux;S3C2410;采集;压缩;监控;AbstractAs to Techv-2410 core board hardware platform whose CPU is S3C2410, product Bootloader,Linux kernel, file system, to build the embedded Linux system. Making use of controling USB video camera ,video monitoring program collects and compresses field video data. in the server support, the processed video data will be transmitted to the client via the network,as the result of realizing real-time monitoring the field.Keywords:Linux;S3C2410;collect; compress; monitoring3“毕昇杯”全国大学生嵌入式设计大赛0.引言随着多媒体技术、网络技术的迅猛发展和后PC时代的到来,利用嵌入式系统实现远程监控系统、可视电话、和视频会议等应用已成为可能。
基于S3C2440处理器的嵌入式视频
随着通信网络技术的迅速发展,基于网络的高质量视频传输已逐步取代传统的文字语音交互模式,成为当今数字通信的主要研究领域之一。
而随着嵌入式操作系统和集成电路设计水平的不断提高,嵌入式技术与通信网络以及多媒体技术的融合将成为未来数字视频通信领域的主流发展趋势。
一直以来,针对网络传输实时视频对嵌入式软硬件都有较高要求。
本文利用基于ARM920T内核的S3C2440嵌入式微处理器,采用压缩比更高的H.264视频压缩标准和开源嵌入式Linux系统,设计了一款基于嵌入式视频服务器的远程实时视频采集系统。
1 采集系统平台搭建
1.1 系统硬件平台。
论电子信息工程专业发展与就业方向在科技水平和经济水平飞速发展的今天,电子信息工程这门学科在生活中受到越来越多广泛的应用,为社会的发展做出了贡献。
但是知识是无穷无尽的,电子信息工程专业未来还有更大的发展空间。
同时,作为一门涉猎较广的学科,电子信息工程在就业方面,也提供了更多的选择空间。
标签:电子信息工程;发展;就业方向一、电子信息工程的概念及内容概述电子信息工程与技术科学有紧密的联系,技术科学就是发现事物之间的联系,将理论应用到实践中,在基础科学和应用技术之间相互转化的一种科学,人类的技术发展有着重要的影响力。
电子信息工程在科学技术方面有广泛的应用,主要研究信息的获取和处理。
电子信息工程包含的学科有电路分析基础,模拟电子技术,数字电子技术,信号与系统,多媒体技术,计算机原理,高频电路,C 语言程序设计,单片机原理及应用等等。
电子工程是电气工程的一个子类,是面向电子领域的工程学。
本专业培养具备电子技术和信息系统的基础知识,能从事各类电子设备和信息系统的研究,设计,制造,应用和开发的高等工程技术人才。
二、电子信息工程发展现状电子信息工程分为电子和信息两个方向,学科涵盖电子工程领域的诸多方面。
社会的发展越来越快,电子信息工程行业的发展日益提高。
电子信息技术工程在生活中的应用无处不在,公交的IC卡,商场的指示灯广告牌等等都与电子信息工程息息相关。
通过电子信息工程,我们可以了解怎样通过程序编写实现声音和图像的传递,也可以知道如何实现生活物品的智能化。
电子信息为我们的生活提供了便捷之处,加速了科技和生活的进步和发展。
随着科技的进步和经济水平的提高,人们在日常生活中对电子信息工程的需求越来越大。
目前我国仍处于社会主义初级阶段,对科学技术的要求更高,就对电子信息工程的要求越高。
我国正一步步向科技型社会靠拢,需要大量学习电子信息的人才。
在互联网飞速发展的今天,电子科技已经渗透到千家万户。
手机应用功能越来越多,洗衣机越来越智能,电视机也逐步实现了网络化。
[转]qt-4.7交叉编译-mikit的专栏-CSDN博客[转]qt-4.7交叉编译收藏一:环境介绍虚拟机:vmware 7.0Linux 环境:ubuntu 9.04交叉编译环境:arm-linux-g++ 3.4.5硬件平台:TQ2440二:移植步骤安装交叉编译环境由于这里使用的是QT2440管盘中提供的交叉编译工具链EABI-4.3.3_EmbedSky_20100610.tar.bz2,放在/opt/目录下解压主要是在解压后可以看到其中含有两个版本,由于qt4.7.0的编译必须使用3.4.5版本所以在设置交叉编译的路径的时候使用的是在/etc/profile中加入exportPATH=/opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin:$PATH安装tslib1.41. 下载tslib1.4,解压2. 进入解压的目录运行执行./autogen.sh3. 执行./configure --prefix=/opt/tslib/ --host=arm-linux ac_cv_func_malloc_0_nonnull=yes ,经过一段时间的编译4. 执行make install5. 修改/opt/tslib/etc/ts.conf,把第二行的#号去掉(这样做的主要目的是为了在移植到板子上的时候,可以制定输入模块)6. 在/etc/profile中加入export PATH=/opt/tslib:$PATHPS:经过我的测试,我无法用以上的方法编译tslib1.4,我用的是另外一种方法:1、 ./autogen.sh #用于生成configure脚本2、 echo "ac_cv_func_malloc_0_nonnull=yes" >arm-linux.cache#产生一个cache文件arm-linux.cache,欺骗configure,3、 CC=arm-linux-gcc ./configure --host=arm-linux --prefix=/opt/tslib --cache-file=arm-linux.cache4、 make5、 make install交叉成功后在目标位置产生/bin、/etc、/include、/lib 4个文件夹编译qt4.7.0-arm1. 下载qt-everwhere-opensource-4.7.0,并解压最好重命名qt-everwhere-opensource-4.7.0-qte2. 开始进行配置选项./configure -embedded arm -release -opensource -fast -no-accessibility -no-scripttools -no-mmx -no-multimedia -no-svg -no-3dnow -no-sse -no-sse2 -silent -qt-libpng -qt-libjpeg -no-libmng -no-libtiff -no-multimedia -make libs -nomake tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -no-gfx-transformed -no-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-glib -qt-mouse-tslib -I /opt/tslib/include -L /opt/tslib/lib -confirm-license "$@"3. 开始进行交叉编译gmake 此过程要经历很长的一段时间4. 在交叉编译成功后运行gmake install安装,这里会默认安装到/usr/local/Trolltech/QtEmbedded-4.7.0-arm5. 这个时候qte的编译就成功了制作根文件系统(移植到开发板)1.移植tslib,将ubuntu中的/opt/tslib 拷贝到根文件系统中的/opt/下面2.移植qte4.7.0将/usr/local/Trolltech/QtEmbedded-4.7.0-arm下面的lib文件夹拷贝到根文件中的相同目录下(必需得先创建相应的目录)注:此时可以根据需要裁剪lib 中的内容去掉不用的.so文件3. 增加新的显示中文的字体wenquanyi 放到上面的/lib/fonts目录下。
嵌入式系统开发考试题含参考答案一、单选题(共100题,每题1分,共100分)1.生成内核映像文件zImage的过程makezImage是指A、编译变量依赖关系B、内核裁剪C、生成内核映像文件zImage正确答案:C2.下列哪个命令可以用来查看当前目录中的文件和目录?A、rmB、lsC、pwd正确答案:B3.实时在线仿真的缺点是()A、功能有限B、价格昂贵C、响应速度慢正确答案:B4.Cache用于存放主存数据、程序的部分拷贝,主存单元地址与Cache单元地址之间的交换用(A)完成A、硬件B、软件C、用户正确答案:A5.Linux应用程序可以通过()的一-组固定的入口点来访问驱动程序,这组入口点是由每个设备的设备驱动程序提供的。
A、设备文件B、系统C、内存正确答案:A6.gcc-()只编译生成目标文件,后缀为.oA、cB、oFileNameC、g正确答案:A7.典型的块设备有()A、触摸屏B、U盘C、简单按键正确答案:B8.共享型函数库(动态链接库)的后缀为()A、aB、soC、c正确答案:B9.设备号用于区分具体的()。
A、设备B、设施C、状态正确答案:A10.在Linux中,以下哪个命令用于查看当前登录的用户名称?A、whoB、whoamiC、ps正确答案:B11.晶振一般叫做晶体谐振器,用电损耗很小的()经精密切割磨削并镀上电极,焊上引线做成。
A、金刚石B、硅体C、石英晶体正确答案:C12.关于ARM处理器的异常,以下说法错误的是()。
A、FIQ是外部中断异常B、复位异常级别最高C、每个异常中断向量占据4个字节正确答案:A13.嵌入式系统的设计思路是()。
A、功能越强大越好B、越复杂越好C、够用即可正确答案:C14.把Linux操作系统针对具体的目标平台做必要的()之后,安装到该目标平台使其正确运行,这就叫移植。
A、减少B、改写C、复制正确答案:B15.8051系列单片机是()公司设计并生产的A、IntelB、MotorolaC、IBM正确答案:A16.物理系统的()、尺寸和耗电量是否是产品成功的关键因素A、成本B、重量C、大小正确答案:A17.Armboot是一个(),是为基于ARM或者StrongARMCPU的嵌入式系统所设计的。
一、编译内核 得到bzImage 二、定制文件系统 1、创建ramdisk虚拟空间,用来放置文件系统 命令 # mke2fs –m 0 –I 2000 /dev/ram0 注释:mke2fs将会自动判断设备容量的大小并相应的配置自身,-m 0参数防止它给root保留空间,这样会腾出更多有用的空间。 2、挂载刚才创建的虚拟盘,我这里挂载在/mnt/floppy目录下 命令 # mount –t ext2 /dev/ram0 /mnt/floppy 3、创建文件系统必须目录 命令 # cd /mnt/floppy # mkdir dev proc etc bin sbin lib mnt usr 4、确定/dev目录下我们需要的设备文件 方案一、把现有/dev目录中所有设备文件拷贝过来,然后删除不必要的设备文件(不推荐使用) 命令:# cp –dpR /dev /mnt/floppy/dev 注释:该命令会拷贝整个设备目录但不拷贝文件内容,同时dpR开关保证连接文件仍然不变,不会拷贝连接指向原来文件,而且属性不变。如果没有SCSI设备,删除所有以sd开头的设备文件,如果不使用串口设备,删除所有以cua开头的文件,然后保留一些必要的设备文件。 方案二、只拷贝必要的设备文件: console —— 控制台设备 tty* —— 由控制台管理的虚拟终端 ram —— 虚拟内存盘设备(以后我们的系统将运行在虚拟盘中) null —— 空设备,非常有用的字符设备文件,送入这个设备的所有东西将被忽略。如果将任何程序的输出结果重定向到/dev/null,则看不到任何输出信息,因此脚本中常用它来消除本该显示在屏幕上的其他信息 zero —— 零设备,只会得到空的内容,有时为了提高压缩率,需要对某空间全零填充时需要使用该设备 inintrd —— 特殊的字符设备,被用来从用户空间向系统内核发送切换运行级别的信息,属于一个虚拟字符设备。 fd 0 —— 软盘设备 hd 0 —— 硬盘设备(该项不是必须,如果您想挂载硬盘,请选择该项) 命令:# cp –dpR /dev/console /mnt/floppy/dev # cp –dpR /dev/tty* /mnt/floppy/dev # cp –dpR /dev/ram /mnt/floppy/dev 注释:如果要使用多个虚拟盘,可以相应的将ram1,ram2,……等拷贝过来 # cp –dpR /dev/null /mnt/floppy/dev # cp –dpR /dev/zero /mnt/floppy/dev # cp –dpR /dev/initrd /mnt/floppy/dev 6、 确定/etc目录中所需要的系统配置文件 a) rc.d/* —— 系统启动所需要的脚本 b) fstab —— 列出要登陆的文件系统, c) inittab —— 包含启动过程参数 先直接拷贝系统/etc目录下的以上配置文件 命令 # cp –R /dev/rc.d/* /mnt/floppy/dev/ # cp /dev/fstab /mnt/floppy/dev/ # cp /dev/inittab /mnt/floppy/dev/ 然后修改启动配置脚本,用vi或者kwrite等文本编辑工具打开/dev/rc.d/rc文件 # cd /mnt/floppy/dev/rc.d/ # vi rc 修改rc文件为以下内容: #!/bin/sh bin/mount -av /bin/host name fallso 修改fstab文件内容为以下内容: /dev/ram0 / ext2 defaults /dev/fd0 / ext2 defaults /proc /prco proc defaults 修改inittab文件内容: id:2:initdefault: si::sysinit:/etc/rc 1:2345:respawn:/sbin/getty 9600 tty1 2:23:respawn:/sbin/getty 9600 tty2 7、 确定/bin是和/sbin目录包含的命令文件 a) ls ——文件目录陈列,相当于dos的dir b) mv —— c) cat —— d) init —— e) mingetty —— f) login —— 登陆命令 g) mount —— 挂载设备命令 h) umount —— 卸载设备命令 命令:# cp /bin/ls /mnt/floppy/bin # cp /bin/cat /mnt/floppy/bin # cp /bin/mv /mnt/floppy/bin # cp /bin/login /mnt/floppy/bin # cp /bin/mount /mnt/floppy/bin # cp /bin/umount /mnt/floppy/bin # cp /sbin/init /mnt/floppy/bin # cp /sbin/mingetty /mnt/floppy/bin 8、 确定/lib目录下所需要的共享函数库,如果缺少必要的函数库,系统会自动停止启动或出现一些错误信息提示。 a) 列出所有程序需要使用的libc库 命令:# cd /bin # ls –l /lib/libc* -rwxr-xr-x 1 root root 4016683 Apr 16 18:48 libc-2.1.1.so* lrwxrwxrwx 1 root root 13 Apr 10 12:25 libc.so.6 -> libc-2.1.1.so* 拷贝箭头右边所指文件 如 cp –dpR /lib/libc-2.1.so* /mnt/floppy/lib b)察看每一个程序所使用的函数库 命令:# ldd /sbin/mke2fs libext2fs.so.2 => /lib/libext2fs.so.2 (0x40014000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x40026000) libuuid.so.1 => /lib/libuuid.so.1 (0x40028000) libc.so.6 => /lib/libc.so.6 (0x4002c000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 拷贝箭头右边的函数库 如cp –dpR/lib/ld-linux.so.2 /mnt/floppy/lib 9、 关于其他目录,以下目录在软盘版linux中完全可以为空 a) /proc是一个虚拟的文件系统,用来传输资料给核心程序的目录,可以观察这些特殊的文件在内存中运行的信息; b) /usr目录下包含系统运行的所有程序,用户经常用到的一些数据和一些配置数据,该文件系统为只读,以减少系统瘫痪的危险性 c) /mnt 挂载其他设备的临时目录 10、卸载虚拟盘,拷贝、压缩文件系统 命令:# umount /mnt/floppy # dd if=/dev/ram0 bs=1k |gzip –v9>roofs.gz 注释:压缩后在/root下得到一个压缩的根文件系统,检查它是否超过了1.44M,如果超过还得从头再来。
莹石 查看公开信息查找 莹石 发表的更多帖子04-05-30, 21:21 第 3 帖
莹石
注册会员 注册日期: May 2004 帖子: 29 精华: 0 标题: 回复: 提示附件太大,只好把我的制作步骤贴出来 三、 引导程序 裁剪后所得内核大小为850KB,压缩后文件系统大小为1.2M,二者之和大于1.44M,显然超过了软盘容量,所以本软盘版linux采用两张软盘,第一张盘放置内核及启动引导程序,第二张盘放置压缩的文件系统。系统启动过程如下: 由于linux内核无法自己引导,故在系统启动时需要引导器来加载系统内核。通常的我们使用LILO,即the LInux LOader。 微机加电后,基于x86 CPU构架的特性,CPU将去检测执行地址为FFFF0处存储的跳转指令,跳转到较低的地址。接着BIOS就会做一系列的检查操作。这一过程即POST(Power On Self Test)。最后BIOS结束自检,接着读取第一个启动设备的启动信息。一般的是从硬盘启动,但本系统基于软盘,因此,BIOS将从软盘的启动扇区读取系统启动信息,这里即为LILO的引导部分内容,并将控制权交给LILO。 LILO接管系统后将完成信息的显示、操作系统的选择(对多系统共存而言,在这里直接运行软盘上的Linux)、内核启动参数的传递,然后加载/etc/lilo.conf中对应的内核映像文件,最后将控制权交给加载到系统中的内核映像。 当软盘上的Linux的内核被LILO加载到内存后,开始掌握控制权。由于Linux的内核是压缩存储的,所以首先进行的是自解压操作。然后内核将开始检测系统硬件,并配置相应的驱动程序,同时在系统控制台上输出相应结果信息。接下来内核将挂载并检测根文件系统。若挂载成功,内核将在系统后台启动系统的第一个进程init进程。至此,内核加载过程结束。 接下来由init进程根据/etc/inittab中的信息完成Linux系统的初始化操作。本系统裁剪掉了许多不必要的服务,故而只进行下列初始化操作。 init停止在console,按inittab指示打开一个shell或者开getty+login这样用户就可以看到输入用户名的提示符,至此进入系统操作,完成整个系统引导过程。 创建软盘版linux引导程序的步骤如下: 1、 在第一张软盘上标记:系统引导及内核,然后插入软驱,执行命令 a) # mke2fs –N 24 –m 0 /dev/fd0 注释:将软盘格式化为具有24个信息节点、ext2类型的文件系统 b) # mount –o dev /dev/fd0 /mnt 注释:挂载软盘到/mnt目录 c) # mkdir /mnt/boot 注释:创建启动盘的boot目录 d) # mkdri /mnt/dev 注释:创建启动盘的dev目录 e) # cp –R /dev/null /mnt/dev 注释:拷贝空设备到软盘 f) # cp –R /dev/fd0 /mnt/dev 注释:拷贝软盘设备到目标系统的/dev目录下 g) # cp /boot/boot.b /mnt/boot 注释:拷贝启动映像文件到目标系统/dev目录下 h) # cp /boot/bzImage /mnt/boot 注释:拷贝内核到目标系统的/boot目录下 i) # rdev –r /mnt/bzImage 49152li 2、 创建修改lilo.conf文件 a) # cp /etc/lilo.conf /mnt b) 打开lilo.conf,修改为以下内容: boot=/dev/fd0 install=/boot/boot.b map=/boot/map read-write backup=/dev/null compact image=/bzImage label=Linux root=/dev/fd0 3、 将引导装入程序复制到软盘 命令:# lilo –v C lilo.conf –r /mnt 4、 卸载第一张软盘 命令:# umount /mnt