嵌入式Linux软件设计实验报告
嵌入式Linux软件设计实验报告——排序算法执行速度班级:XX姓名:XX学号:XX同组组员:XX指导老师:XX时间:XX摘要嵌入式操作系统EOS(Embedded OperatingSystem)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。
EOS负责嵌入系统的全部软、硬件资源的分配、调度工作,控制协调并发活动;它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。
Linux是一类Unix 计算机操作系统的统称。
Linux操作系统的内核的名字也是“Linux”。
Linux操作系统也是自由软件和开放源代码发展中最著名的例子。
严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。
Linux是一套免费使用和自由传播的类Unix操作系统。
Linux的理念―自由、开源、团结互助‖在该理念的指导下,经过二十多年的发展和完善,Linux的功能越来越完善。
Linux的特点是开放源码,丰富的软件资源,广泛的软件开发者的支持,价格低廉,结构灵活,适用面广。
可以适用于不同的CPU,支持多种体系结构,如X86、ARM、MIPS、ALPHA、SPARC 等。
提供完整的开发工具和SDK,同时提供PC 上的开发版本。
Linux系统的优势也是显而易见的。
层次结构清晰且内核完全开放,具有强大的网络支持功能。
Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境,并且可以跨越嵌入式系统开发中仿真工具的障碍,且Linux具有广泛的硬件支持特性。
一、项目名称排序算法在ARM Linux上执行速度的比较二、需求分析实验要求:三种或三种以上排序算法在ARM Linux上执行速度的比较。
例如可以随机产生1000个数,在排序过程开始前计下系统时间,结束后再计下系统时间,算出时间差即为算法执行时间。
在本实验中,我们采用了四种排序算法,分别为直接插入排序、希尔排序、快速排序、简单选择。
三、项目分工小组成员:xx xx任务分工:在本次实验中,我主要负责利用所学的C语言和数据结构的知识,编写排序算法,和调试通过程序。
经过两人的协作,在反复试验和纠错改错的努力下,顺利完成实验任务。
四、概要设计在ARM机上执行排序算法,需要两个必要条件:硬件的和软件的。
一在硬件上,保证虚拟机和超级终端ARM的通信;二是所编写的排序算法是可执行的,能够得出正确结果的。
在Linux下编写主程序和函数库,然后编译连接成ARM 可运行的二进制文件,最后把该二进制文件下载到超级终端上运行,查看运行结果是否正确。
软硬件流程图如图所示:GUN交叉编译工具链:Arm-linux-gcc 编译C程序(.c)或汇编程序(.s)使用交叉编译工具编译一个程序的arm可执行程序:#arm-linux-gcc -Wall -o (生成arm程序的名字)(源程序名).c-c:只编译不链接,-o:编译且链接,-Wall:显示出错信息读elf文件的文件头#arm-linux-readelf –h 生成arm程序的名字可得Machine: ARM 生成的文件为arm是超级终端上可执行的文件同样的若用gcc –wall –o (生成的程序名)(源程序).c读elf文件的文件头,可得Machine: 80X86 生成的的文件为二进制文件,可以在PC机上执行。
gcc的使用格式如下:$ gcc [options][filenames]其中filenames为所要编译的程序源文件。
当使用gcc时,gcc会完成预处理、编译、汇编和连接。
前三步分别生成目标文件,连接时,把生成的目标文件链接成可执行文件。
gcc可以针对支持不同的源程序文件进行不同处理,文件格式以文件的后缀来识别。
五、详细设计排序算法:计算机程序设计的一种重要操作,作用是将一些数据元素或者记录,用不同的算法按照一定的顺利(升序或逆序)排列。
在这次实验中:在本实验中,我们采用了四种排序算法,分别为直接插入排序、希尔排序、快速排序、简单选择。
下面先给出程序的设计思路和流程图,然后具体讲述每种算法的原理和实现的时间复杂度及具体的实现算法。
5.1 程序流程图特别指出:这里的正序是指把随机排序已经排好的序列再次排序;逆序是指把生成的随机数逆向存储,再进行升序排序。
5.2实现算法5.2.1 随机数的生成思路:若直接用rand()来生成随机数,俺每次生成的随机数都一样,所以要用srand(time(0))来初始化。
RAND_MAX是VC中stdlib.h中宏定义的一个字符常量:其值为32767。
通常在产生随机小数时可以使用RAND_MAX。
因为要实现逆序排序所以使用(i=1,j=n;i<=n,j>0;i++,j--)C[j]=A[i];逆向存储产生的随机数。
实现代码:srand((unsigned)time(NULL));/* 使用系统时间产生随机数,srand()函数对下面的随机函数rand()进行初始化*/ printf("请输入想要生成的随机数的个数n(n<=30000):\n");scanf("%d",&n);for(i=1,j=n;i<=n,j>0;i++,j--){A[i]=(int)(((double) rand() /( RAND_MAX+1) )*10000); /*随机数设置在0-1万之间*/B[i]=A[i];C[j]=A[i];}5.2.2计算执行时间clock_t start, finish;double t;start = clock(); /*计时开始*/执行算法代码finish = clock(); /*计时结束*/t= (double)(finish - start) / CLOCKS_PER_SEC;/*花费时间*/return(t);5.2.3直接插入排序(1)原理:直接插入排序(direct insert sort)是一种简单的排序方法,它的基本操作是把一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增一的有序表。
直接插入排序的示例如下:R(49),R(38) ,R(65),R(97),R(76),R(13)如果前四个记录已经按升序排好:R(38) ,R(49),R(65),R(97)现将第五个关键字R(76)插入排序。
则将76于前面已排好的四个关键字依次比较,因为65<76<97,则得到的新的有序序列为:R(38) ,R(49),R(65),R(76),R(97)(2)时间复杂度:当待排序列中记录按关键字非递减有序排列时,所需关键字间比较的次数达最小值n-1,记录不需要移动。
反之记录按关键字非递增有序排列,总的比较次数达最大值(n+4)(n-1)/2,若记录是随机的,我们可取最小值和最大值的平均值,作为直接直接插入排序时所需进行关键字间的比较次数和移动记录的次数,约为2n /4,所以时间复杂度为2O n ()(3)实现代码 int i,j;for(i=2;i<=n;i++){A[0]=A[i]; /*待插入记录存入监视哨A[0]*/ j=i-1;while(A[0]<A[j]) {A[j+1]=A[j]; j--; } A[j+1]=A[0];5.2.4希尔排序 (1)原理:希尔排序又称“缩小增量排序”,也是一种排序类算法。
基本思想是先将整个记录序列分成若干个子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对记录全体记录进行一次直接插入排序。
希尔排序的示例如下:(原始序列):49 38 65 97 76 13 27 52 55 04 49 13 38 27 65 52 97 55 76 04 一趟排序结果:13 27 52 55 04 49 38 65 97 76 13 55 38 76 27 04 6552 49 97二趟排序结果:13 04 52 38 27 49 55 65 97 76…………………………(2)时间复杂度:它的时间是所取“增量”序列的函数。
在大量的实验基础上推出:在n在某个特定范围内,希尔排序所需的比较和移动次数约为:n^1.3,当n趋近于无穷大时,可以减小到22n(log)n(3)实现代码int m;for(d=n/2;d>0;d/=2) /*缩小增量为d/2*/for(i=d;i<=n;i++){m=B[i];for(j=i;j>d;j-=d)if(m<B[j-d])B[j]=B[j-d];else break;B[j]=m;}5.2.6快速排序(1)原理:快速排序是起泡排序的一种改进。
它的基本思想是,通过一趟排序将待记录分割成独立的两部分,其中一部分记录的关键字均比另一部分小,则可分别对这两部分记录继续进行排序,以达到整个记录有序。
快速排序的示例如下:(初始序列){ 49 38 65 97 76 13 27 52 }一次划分之后{27 38 13} 49 {76 97 65 52}分别就行行快排之后{13} 27 {38}结束结束{52 65} 76 {97}52 {65} 结束结束有序序列 { 13 27 38 49 52 65 76 97 } (2)时间复杂度 快速排序的平均时间为avg T n knlnn()=,其中n 为待排序列中记录的个数,k 为某个常数。
快速排序被认为是,在所有同数量级O nlogn ()中的排序方法中,其平均性能最好。
但是若初始记录序列按关键字有序或基本有序,快速排序将退化为起泡排序,时间复杂度为2O n () (3)实现原理void swap(int *a, int *b) /*交换*/ { int t;t=*a; *a=*b; *b=t; }float quicksort(int C[],int beg,int end) {clock_t start, finish; float t;start = clock(); /*计时开始*/if (end >= beg + 1){ int piv = C[beg], k = beg + 1, r = end;while (k < r){ if (C[k] < piv)k++;elseswap(&C[k], &C[r--]);}if (C[k] < piv){ swap(&C[k],&C[beg]);quicksort(C, beg, k);quicksort(C, r, end);}else { swap(&C[--k],&C[beg]); quicksort(C, beg, k); quicksort(C, r, end);}}finish = clock(); /*计时结束*/t= (float)(finish - start) / CLOCKS_PER_SEC;/*花费时间*/ return(t); }5.2.7 简单选择 (1)原理每一趟在1(1,2,1)n i i n -+=- 个记录中选取关键字最小的记录中作为有序序列中的第i 个记录 (2)时间复杂度简单选择中,所需进行记录移动的次数较少,其最小值为“0”,最大值为3(1)n -。
Linux嵌入式系统实验报告一
Linux嵌入式系统实验报告一一、实验目的通过编写fork和exec等系统调用的程序,加深对系统进程及其控制的了解。
二、实验原理fork后父子进程会同步运行,但父子进程的返回顺序是不确定的。
设两个变量global 和test来检测父子进程共享资源的情况。
同时在进程退出时对exit和_exit的区别进行测试和说明;exec函数族可以让启动一个外部程序。
三、实验内容1.编译执行,并分析结果:执行结果:the test content!fork test!global=24 test=2 Parent,my PID is 3236global=23 test=1 Child,my PID is 3237分析:pid = fork(); 之后,pid == 0 的话,就是子进程,子进程才执行:global++;test++;printf("global=%d test=%d Child,my PID is %d\n",global,test,getpid());所以输出:global=23 test=1 Child,my PID is 3237主进程执行:global+=2;test+=2;printf("global=%d test=%d Parent,my PID is %d\n",global,test,getpid());exit(0)所以输出:global=24 test=2 Parent,my PID is 32362.将上述代码最后的两行代码替换为注释掉替换为printf("global=%dtest=%d Parent,my PID is %d",global,test,getpid());_exit(0);重新编译,查看结果,解释原因。
输出:the test content!fork test!global=23 test=1 Child,my PID is 3278输出结果少了之前的第四行原因:exit()在结束调用它的进程之前,要进行如下步骤:1.调用atexit()注册的函数(出口函数);按A TEXIT注册时相反的顺序调用所有由它注册的函数,这使得我们可以指定在程序终止时执行自己的清理动作.例如,保存程序状态信息于某个文件,解开对共享数据库上的锁等.2.cleanup();关闭所有打开的流,这将导致写所有被缓冲的输出,删除用TMPFILE函数建立的所有临时文件.3.最后调用_exit()函数终止进程。
LINUX嵌入式实验报告
LINUX嵌入式实验报告目录目录 (1)实验一:嵌入式Linux开发流程 (2)实验二:嵌入式Linux开发环境搭建 (6)实验三:串行端口程序设计 (11)实验四:A/D D/A接口实验 (16)实验五:图形界面应用程序设计 (18)实验六:内核与根文件系统实验 (23)实验七:驱动程序设计实验 (29)实验八:无线通信实验 (33)实验一:嵌入式Linux开发流程一.实验目的了解嵌入式Linux的开发流程,会进行简单的开发。
二.实验内容进行Linux的开发流程的简单介绍。
三.实验步骤嵌入式Linux开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过程:建立开发环境,操作系统一般使用REDHAT-LINUX,版本7到9都可以,选择定制安装或全部安装,通过网络下载相应的GCC交叉编译器进行安装(比如arm-linux-gcc、arm-uclibc-gcc),或者安装产品厂家提供的交叉编译器。
使用Linux的Red Linux 9的开发界面截图如下:配置开发主机,配置MINICOM,一般参数为波特率115200,数据位8位,停止位1,无奇偶校验,软硬件控制流设为无。
在WINDOWS下的超级终端的配置也是这样,MINICOM 软件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;配置网络,只要是配置NFS网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。
系统配置截图如下:建立引导装载程序BOOTLOADER,从网络上下载一些公开源代码的BOOTLOADER,如-BOOT、BLOB、VIVI、LILO、ARM-BOOT、RED-BOOT等,根据自己具体芯片进行移植修改。
有些芯片没有内置引导装载程序,比如三星的ARM7、ARM9系列芯片,这样就需要编写烧写开发板上的flash的烧写程序,网络上有免费下载的WINDOWS下通过JTAG并口简易仿真器烧写ARM外围flash芯片程序。
嵌入式linux系统实验报告
嵌入式系统实验报告课程名称:嵌入式系统班级:姓名:学号:实验一. ARM 实验板卡资源及程序调试1.实验目的熟悉嵌入式Linux 开发环境,学会基于IMX6UL 教学平台的Linux 开发环境的配置和使用;利用arm-poky-linux-gnueabi-gcc 交叉编译器编译程序,使用基于NFS 的挂载方式进行实验,了解嵌入式开发的基本过程2. 实验内容本次实验使用ubuntu 操作系统环境,创建一个新目录,并在其中编写hello.c 和Makefile 文件。
学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。
将已经编译好的文件通过NFS 方式挂载到目标开发板上运行2.实验环境硬件:IMX6 教学平台,PC 机酷睿i3 以上, 硬盘120G 以上,内存2G 以上软件:Vmware Workstation +Yocto 项目3硬件接线:电源线接到“12V电源线”,网线接到网口,串口线接到com1,4.实验原理4.1 嵌入式开发方式嵌入式开发当中通常会使用2 种方式来运行应用程序:1、下载;2、挂载。
4.2下载的方式:使用FTP、TFTP 等软件,利用宿主机与目标机的网络硬件进行,此种方法通常是将宿主机端编译好的目标机可执行的二进制文件通过网线或串口线下载固化到目标机的存储器(FLASH)中。
在目标机嵌入式设备存储资源有限的情况下受到存储容量的限制,因此,在调试阶段通常的嵌入式开发经常使用NFS 挂载的方式进行。
而在发布产品阶段才使用下载方式。
4.3 NFS 挂载方式:利用宿主机端NFS 服务,在宿主机端创建一定权限的NFS 共享目录,在目标机端使用NFS 文件系统挂载该目录,从而达到网络共享服务的目的。
这样做的好处是不占用目标机存储资源,可以对大容量文件进行访问。
缺点是由于实际并没有将宿主端文件存储到目标机存储设备上,因此掉电不保存共享文件内容。
通常在嵌入式开发调试阶段,采NFS 挂载方式进行。
《嵌入式软件设计》实验报告-动态库和静态库的制作和使用
host_serial host_serial.c Makefile serial.c serial.h
(1)将串口设置文件serial.c单独封装成动态库。
(2)参考Makefile,使用动态库编译生成host_serial应用程序,验证动态库的正确性
(3)将串口设置文件单独封装成静态库。
(4)参考Makefile,使用静态库编译生成host_serial应用程序,验证动态库的正确性
四、实验结果与数据处理
五、分析与讨论
1.如果制作好的动态库不拷贝到/usr/lib,而是放在当前目录,这种情况下怎样使用该动态库?
2.如何在目标机使用动态、静态库?
六、教师评语
签名:
日:
成绩
《嵌入式系统软件设计》实验报告
实验序号:01实验项目名称:动态库和静态库的制作和使用
学 号
姓 名
专业、班
实验地点
指导教师
实验时间
一、实验目的
1.熟悉linux的编译方法
2.掌握动态库、静态库的制作和使用。
二、实验设备(环境)及要求
硬件:PC机;PXA270试验箱
软件:PC机操作系统linux
三、实验内容与步骤
实验一 嵌入式Linux系统的制作
Linux与嵌入式实验报告嵌入式Linux系统的制作学院电子与信息学院专业信息工程(3)班学生姓名叶志成实验台号指导教师秦华标、官权升实验日期2016年6月9日作为嵌入式系统,使用环境通常比较恶劣,而应用又比较简单,因此在很多嵌入式系统中经常会使用 u 盘之类的存储设备来代替硬盘,本实验的要求就是基于 u 盘制作一个 linux 运行系统。
目前新出的主板 BIOS 都支持 USB 软盘和硬盘的启动方式,在优盘上建立Linux 启动盘,可以加深对 linux 系统的理解,你可以使用 Linux 建立小巧的内核,建立网络环境,快速地判断和排除网络故障与传送文件。
一、实验目的1.了解 linux 系统内核的基本工作原理。
2.掌握系统内核的裁减方法,了解 linux 内核裁减过程,裁减系统内核并编译。
3、学会基于 busybox 的根文件系统的制作。
4、学会制作一个基于 U 盘的 linux 运行系统。
验收标准:成功从 U 盘启动自己裁剪编译并带有个人信息的 linux 系统二、实验原理1、LINUX 操作系统启动过程分析:当用户打开 PC 的电源,BIOS 开机自检,按 BIOS 中设置的启动设备启动,接着启动设备上安装的引导程序 lilo 或grub开始引导 Linux,Linux 首先进行内核的引导,接下来执行 init 程序,init 程序调用了 rc.sysinit 和 rc 等程序,rc.sysinit 和 rc 当完成系统初始化和运行服务的任务后,返回 init;init 启动了 mingetty 后,打开了终端供用户登录系统,用户登录成功后进入了 Shell,这样就完成了从开机到登录的整个启动过程。
下面就将逐一介绍其中几个关键的部分:Ubuntu 可以使用 lilo 或 grub 等 boot loader 开始引导 Linux 系统,当引导程序成功完成引导任务后,Linux 从它们手中接管了 CPU 的控制权,然后 CPU就开始执行 Linux 的核心映象代码,开始了 Linux 启动过程。
Linux嵌入式系统实验报告
嵌入式操作系统实验报告一.在VMware Player 下安装Redhat Linux根据学习需要我将Redhat Linux 分为四个主分区,总大小12G /boot按常理分了100M,/home因为需要今后练习多用户登录,管理分了5000M,swap可交换空间按常理内存的2倍分了1000M,根目录给予剩余的空间。
按老师的安装步骤(如下图):调试了网络,安装了虚拟光驱,完成了windows与Linux 的分享文件夹的建立,Redhat Linux在虚拟机上的安装基本完成。
二.常用的命令和VIM1.为自己方便我对bash的环境配置进行了设置:先以普通用户身份登入RedHatLinux,开启终端输入su –root 再输入密码切换成root 身份,LoginShell只会读两个配置文件,我要修改的~/.bash_profile文件,它是属于用户个人设置的文件。
用vim(程序编辑器)修改~/.bash_profile文件内容输入PS1=’[\# \u@\h \w]\$’,对提示符进行修改,在原本[root@localhost ~]前面加上命令执行过的条数,方便我自己记录。
改好后在一般模式下输入:wq保存退出。
我不想在注销重新登入后看到提示符的改变,所以我用source命令(读取环境配置文件的命令),将主文件夹的~/.bash_profile的设置读入目前的bash环境。
(改后如图)2.新增与删除用户:useradd,相关配置文件,passwd,usermod,userdel 用useradd完全参考默认值新建一个用户3.用passwd命令修改账号密码(2012.3.22)以root身份可以给账号设置各种各样的密码,给Sky账号设置密码可以用Sky账号登入,修改自己的密码需要先输入自己账号的旧密码,相对root的更为严格4.job control的管理直接将命令丢到后台中“执行”的&将目前的工作丢到后台中“暂停”:[ctrl]+z直接输入fg去“+”的工作执行输入fg %工作号码取对应的工作执行, +和-的顺序改变管理后台当中的工作:kill立即强制删除工作号码为2的任务,参数为“-9”以正常方式结束程序的方式参数“-15”三.调试编译工具和内核编译1.串口调试工具minicom的使用2.编译器文件Makefile的使用练习用vim编写hello.c源代码用vim编写编译器make的调用执行规则文件Makefile3.编译器gcc的使用练习4.调试器gdb的使用练习5.内核的定制编译用命令wget下载Linux-2.6.30.3的内核压缩文件,解压缩到/usr/src/kernels/目录下。
嵌入式Linux实验报告
嵌 入 式 程 序 设 计
实 验 报 告
评 语:
成绩
教 师:
年 月 日
班 级:
学 号:
姓 名:
地 点:EII-506
7)用命令service启动宿主机上的nfs服务,并用exportfs命令查看nfs的共享目录。然后在目标机上挂载nfs
8)在目标机中运行web_server_process。
9)打开宿主机的浏览器,输入http://192.168.0.5/file,查看执行结果
10)在宿主机的浏览器中输入http://192.168.0.5,查看执行结果。
unsigned long *CS1_Address, *CS2_Address;
structseg
{
char LED1_Val;
char LED2_Val;
char LED3_Val;
char LED4_Val;
char negative;
};
2)同时更新所有七段数码管驱动显示函数:CS1_address对应第一组七段数码管的位选信号,该组第一个数码管的段选信号保存在short变量的低8位,该组第二个数码管的段选信号保存在short变量的高8位。CS2_address对应第二组七段数码管,其余操作和第一组的七段数码管一致。
嵌入式Linux系统的启动过程分析
1)启动Bootloader
Bootloader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于PC机上的BIOS。在本系统中这段程序的起始地址为0x。Bootloader在完成初始化RAM、初始化串口、检测处理器类型、设置Linux启动参数后,开始调用Linux内核。本系统Linux内核镜像zImage放在Flash中,Bootloader首先把它拷贝到RAM中,然后跳转到RAM中对zImage进行解压缩。解压缩后启动内核。
嵌入式linux实验报告
嵌入式linux实验报告嵌入式Linux实验报告一、引言嵌入式系统是指嵌入在各种设备中的计算机系统,它通常包括硬件和软件两部分。
而Linux作为一种开源的操作系统,被广泛应用于嵌入式系统中。
本实验报告将介绍嵌入式Linux的相关实验内容和实验结果,以及对实验过程中遇到的问题的解决方法。
二、实验目的本次实验旨在通过搭建嵌入式Linux系统,了解Linux在嵌入式领域的应用,并掌握相关的配置和调试技巧。
具体目标如下:1. 理解嵌入式系统的基本概念和原理;2. 掌握Linux内核的编译和配置方法;3. 熟悉交叉编译环境的搭建和使用;4. 实现简单的应用程序开发和调试。
三、实验环境1. 硬件环境:嵌入式开发板、计算机;2. 软件环境:Ubuntu操作系统、交叉编译工具链、嵌入式Linux内核源码。
四、实验步骤与结果1. 内核编译与配置通过下载嵌入式Linux内核源码,使用交叉编译工具链进行编译和配置。
在编译过程中,需要根据实际需求选择合适的内核配置选项。
编译完成后,生成内核镜像文件。
2. 系统烧录与启动将生成的内核镜像文件烧录到嵌入式开发板中,并通过串口连接进行启动。
在启动过程中,可以观察到Linux内核的启动信息,并通过串口终端进行交互。
3. 应用程序开发与调试在嵌入式Linux系统中,可以通过交叉编译工具链进行应用程序的开发。
开发过程中,需要注意与目标平台的兼容性和调试方法。
通过调试工具,可以实时监测应用程序的运行状态和调试信息。
五、实验结果与分析在本次实验中,我们成功搭建了嵌入式Linux系统,并实现了简单的应用程序开发和调试。
通过观察实验结果,我们可以得出以下结论:1. 嵌入式Linux系统的搭建需要一定的配置和编译知识,但通过合理的配置选项和编译参数,可以实现系统的定制化;2. 应用程序的开发过程中,需要注意与目标平台的兼容性和调试方法,以确保程序的正确运行和调试的有效性;3. 嵌入式Linux系统的稳定性和性能受到硬件和软件的综合影响,需要进行系统级的优化和调试。
linux嵌入式实验报告
大连理工大学本科实验报告实验名称:嵌入式操作系统学院(系):计算机学院实验专业:计算机系班级:0703学号:学生姓名: mqlz2010年 12 月 6 日实验一:linux内核裁剪预习报告一、实验目的:1、了解Linux内核源代码的目录结构及各目录的相关内容2、了解Linux内核各配置选项内容和作用3、掌握Linux内核配置文件的作用4、握Linux内核的编译过程5、掌握将新增内核代码加入到Linux内核结构中的方法二、实验原理Linux对于计算机硬件、网络和文件系统等部件的驱动程序支持既可以放在系统内核中,也可以作为一个可加载的模块(modules)使用。
当驱动程序放在系统内核中时,Linux 假定该硬件是存在于系统中的;而作为可加载模块使用时,只有在知道该硬件存在于系统时才会作为系统内核的一部分,当 Linux 检测到硬件时,该模块才被加入到系统内核中。
三、实验步骤1、检查编译器的版本用低版本的编译器去编译高版本的内核有可能不能编译或使内核不能使用。
要查看编译器版本,可以执行命令:#gcc –v进入系统内核源代码目录。
一般系统内核的源代码放在 /usr/src/ 目录下。
用 ls –l 命令查看可能显示如下:#ls –l /usr/srcTotal 3lrwxrwxrwx 1 root root 12 May 4 14:36 >linux-2.4.20-8drwxr-xr-x 15 root root 1024 May 14 11:37drwxr-xr-x 3 root root 1024 May 4 14:38 sendmail其中、是一个链接文件,它的链接目标是指向目录,因此、cd 就是进入目录。
2、删除过时的目标文件进入 /usr/src/linux-2.4.20-8 目录,运行 make mrproper 命令以清除过时、旧的目标文件。
这是因为经过多次编译后系统会留下部分目标文件,如果没有清除干净可能造成本次编译出错。
ARM嵌入式linux系统设计与开发实验报告
ARM嵌入式linux系统设计与开发实验报告一.实验目的1. 了解Qt Designer的使用方法以及Qt/Embedded交叉编译的基本步骤;2. 学会在使用Qt Designer编写程序,交叉编译,在开发上运行。
二.实验内容编写一个电子时钟显示器程序,并将结果在开发板的LCD显示屏上显示。
三、预备知识1. 熟悉使用C++语言程序设计;2. 掌握Linux下常用编辑器的使用;3. 掌握Linux下程序编译;4. 熟悉Qt程序设计;四、实验室设备和工具硬件: PC机Pentumn500以上, 硬盘10G以上、UP-CUP S2410嵌入式开发试验箱软件:PC机操作系统REDHAT LINUX 9.0 +MINICOM +ARM-LINUX开发环境五.实验步骤1. 源代码的编写。
(1)新建实验文件夹。
在/home/sprife/qt4/for_pc/下新建文件夹fuxiaqing(2)编写源程序,生成digiclock.cpp和moc_digiclock.cpp 文件。
(3)用vi编辑器编写main函数,生成文件main.cpp。
2. 检查程序能否在PC机上运行。
开启终端,在fxq目录下进行编译,运行。
输入命令:/home/sprife/qt4/for_pc/qt-embedded-4.4.0/bin/qmake–project,生成fuxiaqing.pro文件。
/home/sprife/qt4/for_pc/qt-embedded-4.4.0/bin/qmake 生成Makefile文件。
#make 生成可以执行文件fuxiaqing执行可执行文件:./fuxiaqing ,查看运行结果。
3.挂载共享目录,设置环境变量。
在windows下,开启超级终端。
与虚拟机正确接通之后输入以下命令:mount -o nolock,rsize=4096,wsize=4096 192.168.0.119:/arm2410cl/mnt/nfs //192.168.0.119为虚拟机IPexport QTDIR=$PWDexport LD_LIBRARY_PATH=$PWD/libexport TSLIB_TSDEVICE=/dev/input/event0export TSLIB_PLUGINDIR=$PWD/lib/tsexport TSLIB_CONSOLEDEVICE=noneexport TSLIB_CONFFILE=$PWD/etc/ts.confexport POINTERCAL_FILE=$PWD/etc/ts-calib.confexport QWS_MOUSE_PROTO=tslib:/dev/input/event0export TSLIB_CALIBFILE=$PWD/etc/ts-calib.confexport LANG=zh_CNinsmod /mnt/yaffs/touchscreen/ts-uptech.o4.把fxq文件夹拷贝到目录/home/sprife/qt4/for_arm下进行编译。
