2016嵌入式系统课程设计报告书

2016嵌入式系统课程设计报告书
2016嵌入式系统课程设计报告书

郑州航空工业管理学院嵌入式系统课程设计报告

题目:基于SKYEYE的嵌入式Linux系统设计

20 – 20第学期

院系:

姓名:

专业:

学号:

指导老师:

目录

一、引言-------------------------------------------------------------------------3

二、设计目的-------------------------------------------------------------------3

三、设计要求-------------------------------------------------------------------3

四、课程设计报告内容-------------------------------------------------------4

五、总体设计-------------------------------------------------------------------9

六、总结-------------------------------------------------------------------------9

七、参考文献-------------------------------------------------------------------9

一、引言

随着3C融合进程和我国传统产业结构升级的加速,人们对设备越来越高的应用需要已经无法满足当前和未来高性能的应用与发展需求。显然,嵌入式系统的软硬件技和开发手段,正日益受到重视,成为各领域技术创新的重要基础。

目前,嵌入式系统是近年来发展很快的计算机方面的学科方向,并迅速渗透到控制、自动化、仪器仪表等学科。嵌入式方向包括了软硬件协同设计、嵌入式体系结构、实时操作系统、嵌入式产品设计等方面的知识,大于当代大学生,更需要掌握嵌入式系统设计的典型开发工具和开发核心技术。

对于嵌入式市场的发展来说,中国市场的意义更加重大。中国市场对于嵌入式互联网这场革命来说非常关键。勃勃的生机,很好的产业互动,良好的协作精神,中国现在正在形成一个健康的嵌入式的发展模式和转型模式。中国可能是一个引入点,嵌入式市场现在中国蓬勃发展,然后辐射到全球其他地区。

二、设计目的

通过对嵌入式系统的基本知识及相关概念的了解,在熟悉Linux操作系统的基础上,利用SKYEYE仿真软件,对嵌入式系统的开发过程进行软件仿真,从而掌握嵌入式Linux系统开发中的主要方法。

具体地,在设计过程中,达到以下目标:掌握嵌入式Linux系统基础部分的U-Boot软件、Linux内核的配置、编译与应用;掌握BusyBox软件及根文件系统的制作方法;掌握SKYEYE软件的使用方法,通过SKYEYE仿真软件运行U-Boot文件、vmLinux文件映像及根文件系统root.cramfs映像。

最终,能在掌握嵌入式系统开发过程及SKYEYE软件使用方法的基础上,建立更有效的嵌入式系统开发方法,提高嵌入式系统的开发与应用的效率。

三、设计要求

1. 任务要求

要求能独立地分析题目意义、设计实现步骤、制作相关软件、调试嵌入式系统“三大基础部分”。

该设计的具体要求如下:

(1)建立VMWARE虚拟机。

(2)安装Linux RHEL AS4操作系统环境。

(3)建立Windows操作系统与Linux操作系统的共享功能。

(4)建立交叉编译环境;安装SKYEYE仿真软件。

(5)配置并编译U-Boot-1.3.2软件。

(6)配置并编译Linux-2.6.14内核源代码。

(7)制作Linux根文件系统。

(8)使用SKYEYE仿真嵌入式系统的运行。

2. 设计所需的软硬件设备

(1)硬件环境配置

计算机:Intel(R) Pentium(R) 及以上

内存:1GB及以上

(2)软件环境配置

操作系统:Microsoft Windows XP Professional Service Pack 2

虚拟机:VMware WorkStation 7

Linux系统:Red Hat Enterprise Linux AS 4 (2.6.9-5.EL)

嵌入式交叉编译器:arm-linux-gcc 3.4.4版本

Linux内核版本:Linux-2.6.14

SKYEYE版本:skyeye-1.2.4

U-Boot版本:U-Boot-1.3.2

BusyBox版本:BusyBox-1.2.0

四、课程设计报告内容

1.建立VMWARE虚拟机。

1)双击VMware Workstation的安装程序图标,运行安装程序,进入

VMware虚拟机的安扎un个的初始加载界面。

2)VMware 虚拟机的初始加载结束后,进入安装向导界面,点击

进入下一步。

3)安装类型:选择Typical,在点击进入下一步。

4)设定程序安装路径,点击“change..”按钮,可以选择更改默认的安

装路径,然后设置成自己需要安装的程序路径。在选定安装路径之

后,点击进入下一步。

5)提示安装程序是需要创建的快捷图标(桌面图标、开始菜单中的程

序文件夹及快速启动工具图标等三项),按默认的设置即可,不需要

改动,点击进入下一步。

6)确认前面各个步骤中设置的项目是否正确,并准备进入正式的安装

过程。在这里选择直接点击“continue”按钮进入正式安装过程。

7)安装完毕后,填写注册信息,这里需要产品注册码,按要求将对应

各项填写完之后,直接点击“enter”进行注册信息,并进入下一步。

8)重新启动计算机,完成VMware虚拟机的安装,这里直接点击“restart

now”按钮,重新启动系统。

9)系统重新启动后,点击“开始”→“所有程序”→“VMware”→

“VMware Workstation”,运行虚拟机。

2.安装Linux RHEL AS4操作系统环境。

1)在VMware虚拟机的运行界面中,点击菜单栏中的“File”项,在弹

出下拉菜单中选“New”项,再点选弹出菜单的“Virtual Machine…”

项。出现新的虚拟机向导。

2)安装向导提供两个选项:典型(Typical)安装与自定义安装(Custom)。

这里默认的选项是使用自定义安装,直接点击进入下一步。

3)选择VMware虚拟机平台,不同的VMware虚拟机平台支持的硬件

特性不同,这里选择Workstation 6.5~7.0,点击进入下一步。

4)选择要安装的Linux操作系统光盘镜像,同时使用VMware虚拟机

的“Easy Install”功能自动安装Linux操作系统。选择第一张安装光

盘,然后点击进入下一步。

5)设置安装的Linux系统的用户名和密码信息。点击进入下一

步。

6)设置Linux虚拟机的显示名称及安装路径。安装路径根据自己的情

况选择Linux系统在用户本机上实际的安装路径。Linux虚拟机名称

在这里是默认的。点击进入下一步。

7)配置虚拟机使用的处理器,配置处理器数量,处理器的内核器,这

里使用默认设置:一个单核处理器,点击

8)配置虚拟机使用的存储器空间,按照默认设置,点击

9)设置网络类型,按照默认设置,点击

10)设置I/O适配器类型,按照默认设置,点击

11)创建一个虚拟磁盘,在其上安装Linux操作系统,按照默认设置,

点击

12)选择使用的磁盘类型,按照默认设置,点击

13)设置硬盘的空间大小,按照默认设置,点击

14)设定存储磁盘文件的路径,具体路径可以根据自己的情况进行选择,

完成后点击

15)对话框汇总了前面的设置项目,如果没有错误,不惜要修改,直接

点击“Finish”按钮,进行Linux系统的安装。

16)第一张光盘安装完毕后,需要第二张安装光盘的镜像,点击右下方

的“Change Dise”,在弹出的对话框点击“Browse”,在弹出的对话

框选择第二张安装光盘的镜像,然后返回之前的界面点击“OK”,

继续安装。第二张安装完毕后,同样的方法选择第三张、第四张光

盘安装。完成后又需要第一张光盘安装,同样的方法。

17)Linux系统安装完毕后会自动启动,出现登录页面。输入用户名root、

口令,进入Linux系统的桌面环境,可以看出来,RedHat Linux系统

运行在VMware环境中,这与独立安装的RedHat Linux系统相比几

乎没有差别。

下面安装RedHat Linux系统的应用程序软件包

18)为了能正常安装Linux应用程序,需要进行光盘选项设置,双击右

下角的“CD/DVD2(IDE)”图标,选中右侧的“connected”,点击

ok返回。

19)添加相应的应用程序。点击“Application”→“System Setting”→

“Add/Remove Application”菜单。弹出的“程序包管理器”窗口,

这里选择“windows file…”一项,点击“update”进入下一步。弹

出的窗口点击“continue”,进入下一步,程序自动安装。在安装过

程中不断出现更换光盘镜像的提示,按弹出的对话框内容更换相应

的关盘镜像即可,知道安装完毕。

20)点击“Action”→“Log Out”,注销系统,是安装的程序包可用。3.建立Windows操作系统与Linux操作系统的共享功能。(samba服务)

1)点击Application→system setting→security level,弹出security level

configuration的对话框。

2)在对话框中,将“security level”项设置为”disable firewall”,既无防火

墙。

3)点击Application→system setting→server setting→samba,在samba

server configuration的配置界面中显示的配置内容为空,说明还没有

配置samba服务器。

4)点击ADD,添加一个samba服务共享。弹出的对话框中,选择Basic

选项卡:在Directory文本框中输入/home/zcent;在Share name文本

框中输入zcnet;在Basic Permission选项中选择Read/Write。切换到

Access选项卡中,选择“Allow access to everyone”。

5)在samba server configuration窗口中,点击perference→server

setting…,弹出“服务器设置”对话框,在其中进行服务器设置。

6)Basic选项卡中,按默认内容设置“workgroup”与“description”。

Security选项卡中,“authentication mode”选择“share”,“encrypt

passwords”选择“no”,“guest account”选择“no guest account”。

7)设置/home/zcent文件夹的属性,在permissions的owner、group、others

项全选。

8)设置samba服务器IP地址。点击applications→system tools→network

device control,弹出网络设备控制对话框,点击“etho”设备,确认

“status”栏的内容为“active”,再点击右边的“configure..”按钮。

随后显示的“网络配置”对话框,显示了已有的网络设备。

9)配置网络属性。在windows操作系统环境下,右键点击“网上邻居”

图标,在弹出的“网络连接”对话框中,右键点击“vmware network

vmnet8”,查看它的IP地址,下面将相关的IP地址都配置在同一网

段中。在虚拟机的网络配置对话框中,选中“etho”设备,确认“profile”

栏下面的选择框是选中的,然后点击上面的“Edit”图标按钮,弹出

以太网对话框。选中下面的statically set IP addesses,在Addess项填

入的IP地址要与windows在同一网段,subnet mask项填

255.255.255.0。

10)点击VMware虚拟机的VM菜单,选择setting项,在弹出的对话框

中,在hardware选项卡中左侧选择network adapter项,相应的,

在右侧的network connection中选择“NAT: used to share the host’s IP

addess ”项,同时,在“devices status”框中选择“connected”和“connect

at power on”项。

11)启动samba服务器,启动终端,输入service smb start。

12)在windows下访问共享文件夹/home/zcent,在windows系统中,点

击“开始”→“运行”,输入samba服务器的IP地址,点击“确定”,

就可看到Linux系统下的共享文件夹/home/zcent.

4.建立交叉编译环境;安装SKYEYE仿真软件。

1)在终端运行:tar –xjvf arm-linux-tools-20061213.tar.gz –C/home

2)在终端运行:vi/root/.bashrc

3)编辑/root/.bashrc文件,在最后一行添加export

PATH=$PATH:/home/usr/local/bin.

4)注销Redhat系统,重新登录,使以上设置生效。启动终端,在命令

行输入arm-linux-gcc –v,若出现Thread model:poslx gcc verdion

3.4.4 即为说明交叉编辑环境已经成功安装。

5)将下载的skyeye-1.2.4_Rel.tar.gz源代码压缩文件放在

/home/ilovechina路径下,然后运行如下命令进行解压缩:tar xzvf

skyeye-1.2.4_Rel tar.gz.

6)在当前目录会建立一个名为skyeye-1.2.4的文件夹,进入文件夹运行

make。系统会自动编译SKYEYE源代码,在输出信息中出现“The

binary file located at ‘binary/skyeye’,enjoy it”提示语句时说明已经编

译并且安装SKYEYE成功,得到的可执行二进制skyeye文件也已存

放在skyeye-1.2.4/binary目录中。

5.配置并编译U-Boot-1.3.2软件。

1)将下载的U-Boot-1.3.2放在/home目录中,并解压其源代码包至当前

目录中,运行:tar –xjvf u-boot-1.3.2.tar.bz2 –C/

2)进入U-Boot-1.3.2的目录,运行如下命令配置编译环境:make

smdk2410_config CROSS_COMPILE=arm-linux-,再运行如下命令选

择嵌入式交叉编译工具并进行编译:nake

CROSS_COMPILE=arm-linux-

6.配置并编译Linux-2.6.14内核源代码。

1)下载Linux-2.6.14.tar.bz2文件,将其存放在/home目录下,在终端运

行解压缩:tar –xjvf linux-2.6.14.tar.bz2

2)进入内核解压缩后的目录/home/linux-2.6.14,使用VI编辑器打开该

目录文件下的Makefile文件,修改第192行和193行,分别指令编

译的内核架构与使用的交叉编译工具。

[root@localhost home]#cd linux-2.6.14

[root@localhost linux-2.6.14]#vi Makefile

ARCH ?=arm

CROSS_COMPILE ?=/home/usr/local/bin/arm-linux-

3)运行如下命令启动内核配置菜单:

[root@localhost linux-2.6.14]#cp

arch/arm/configs/smdk2410_defconfig .config

[root@localhost linux-2.6.14]#make ARCH=arm ,menuconfig

4)基本的配置选项:

a)选中code maturity level options,选择select only drivers expected to

compile cleanly

b)general setup按照默认设置不做修改。

c)选中Loadable module support,取消Enable loadable modual

support和Automatic kernel module loading选项。

d)选中System Type,不选S3C2410 DMA support项,需要选择

support thumb user binaries:在S3C24XX Implementations中选择

SMDK2410/A9M2410项。

e)Bus support按照默认设置不做修改。

f)Kernel Features项按照默认全部置空。

g)选中Boot options,将Default kernel command string的内容修改

为root=/dev/ram comsole=ttySAC0

initrd=0xc0800000,0x00800000 ramdisk_size=2048 mem=32M

h)选中Floating point emulation,取消NEFPE math emulation选项。

i)Userspace binary formats选项按照默认设置不做修改。

j)选中Power management options项,取消“power management support”和“advanced power management emulation”的设置。

k)Networking按照默认设置不做修改。

l)Device Drives选项,确保block devices中的RAM Disk support 和Initial RAM disk(initrd)support选项被选中。

m)File system按照默认设置不做修改。

n)Profiling support默认设置置空,不修改。

o)Kernel hacking项中,修改为(16)Kernel log buffer size(…)

p)Security options按照默认设置不做修改。

q)Cryptographic options 按照默认设置全部置空。

r)Library routines项,只选中最后一项

<*>CRC32c (Castagnoli ,et al)Cyclic Redundancy-Check s)选中“Save Configuration to an Alternate File”,保存至.config文件中。

5)配置完之后如下编译:

[root@localhost linux-2.6.14]#make ARCH=arm

CROSS_COMPILE=arm-linux-

7.制作Linux根文件系统。

1)将下载的busybox-1.2.0.tar.bz2压缩文件放在Linux系统中的

/home/ilovechina目录中,在终端运行:

[root@localhost ~]# cd /home/ilovechina

[root@localhost ilovechina]# tar –xjvf BusyBox-1.2.0.tar.bz2

[root@localhost ilovechina]# cd BusyBox-1.2.0

2)配置BusyBox选项

3)创建根文件系统的dev目录

[root@localhost BusyBox-1.2.0]# mkdir _install/dev

[root@localhost BusyBox-1.2.0]# cp /dev/ttyS0 /dev/console /dev/ram0

_install/dev/ -a

4)创建根文件系统的etc等目录及配置文件

[root@localhost BusyBox-1.2.0]# cd _install

[root@localhost _install]# ./make_rootfs.sh

[root@localhost _install]# cd ..

[root@localhost BusyBox-1.2.0]#

5)创建EXT2格式的文件系统映像

[root@localhost BusyBox-1.2.0]# cd if=/dev/zero of=./initrd.img

count=2048 bs=1024

[root@localhost BusyBox-1.2.0]# mak2fs –F –m0 initrd.img

6)添加initrd.img文件系统映像的内容。

[root@localhost BusyBox-1.2.0]# mkdir ./mnt/rootfs

[root@localhost BusyBox-1.2.0]# mount initrd.img /mnt/rootfs/ -o loop

[root@localhost BusyBox-1.2.0]# cp _install/* /mnt/rootfs/ -a

[root@localhost BusyBox-1.2.0]# umont /mnt/rootfs

8.使用SKYEYE仿真嵌入式系统的运行。

1)复制vmlinux到SKYEYE

[root@localhost linux-2.6.14]# cp vmlinux

/home/ilovechina/skyeye-1.2.4/binary/

2)建立skyeye.conf配置文件

[root@localhost binary]# vi skyeye.conf

3)复制文件系统initrd.img到SKYEYE

[root@localhost ilovechina]# tar –xjvf syeye-testsuits-2.3.tar.bz2

[root@localhost ilovechina]# cd

skyeye-testsuits-2.3/linux/s3c2410/s3c2410x-2.6.14/

[root@localhost skyeye-testsuits-2.3]# cp

initrd.img ../skyeye-1.2.4/binary

4)使用SKYEYE仿真Linux系统

[root@localhost skyeye-testsuits-2.3]# cd ../skyeye-1.2.4/binary

[root@localhost binary]# ./skyeye –e vmlinux

可以观察到在屏幕上先出现的SKYEYE配置信息,然后是内核的启

动信息。在Linux 操作系统内核启动完毕后,将进入shell界面,可

以接受用户的输入

五、总体设计

在本次课程设计中,采用ARMv4版本架构的、ARM920T核心的S3C2410微处理器,应用SKYEYE对经过编译的嵌入式系统的基本模版进行仿真。SKYEYE是一个面向完整PC系统的开源仿真器,可以实现嵌入式系统的仿真,给用户提供一个虚拟的硬件操作平台。它是一个指令集仿真器,可以模拟多种嵌入式开发板,可支持多种CPU指令集。在SKYEYE上运行操作系统与在一个真实的硬件环境中运行是一样的,看不出其中的差别,并且开发人员还可以通过SKYEYE调试操作系统和系统软件。通过SKYEYE仿真集成环境不仅可以很方便地进入到嵌入式系统软件学习和开发领域,而且以有效地提高工作效率,有助于进一步学习、分析、精通Linux内核,掌握ARM嵌入式CPU编程。

六、总结

课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,在课程设计的过程中,我们了解到课程设计不光光是埋头做设计,也是同学之间相互学习和互相交流经验和知识的机会,也是我们大家向老师提出疑问和学以致用的机会,这让我们不会成为只知道理论而不会将理论化为实践中去的书呆子。我觉得课程设计就是一个复习课堂上学到知识的机会,医务室毅贺加强学生动手能力设计的机会,更是一个让学习得到升华的过程。在这次课程设计的初期,我们将任务分配好,每个人各就其职,各尽所能。当然,在一开始我们也遇到了一些问题,解决问题的方法是跑到图书馆查看有关书籍,或上网查阅有关信息,或请教老师。终于在大家的相互帮助下,我们最终完成了该次的课程设计。

这次课程设计不仅考察了我们对课堂上所学专业知识的理解程度,也锻炼了我们的动手能力,提高了我们独立思考文理,解决问题的能力。总体上看,我觉得这次课程设计使我自身的知识丰富了不少,但同时也发现了自己的不足之处。例如,在动手方面和知识融合方面,不能与实践相结合。软件操作不够熟练,不能灵活应用。使我了解到要先学好理论知识才能很好地与实践相结合,才能熟练地运用到生活中。

七、参考文献

嵌入式系统应用基础——基于S3C2410A的SKYEYE仿真与实践(赵成)

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

北京科技大学 嵌入式课程设计报告

《嵌入式控制系统》课程设计报告 学院 专业班级 姓名 学号 指导教师 _

目录 摘要 (4)

Abstract (4) 引言 (5) 带中断LED数码管驱动程序设计 (6) 1.设计内容 (6) 1.1 基本功能 (6) 1.2 扩展功能 (6) 1.3创新功能 (6) 2.实验设备 (6) 3.设计功能块说明 (6) 4.设计原理 (7) 4.1 LED发光原理 (7) 4.2 八位LED显示器 (8) 5. 实验步骤 (8) 5.1 驱动程序加载 (8) 5.2 添加控件 (8) 5.3基本功能的实现 (9) 5.4 使用指南 (10) 6. 实验结果 (10) 6.1 基本功能实现结果 (10) 6.2 LED数码管清零功能实现结果 (11) 6.3 中断计数功能实现结果 (12) 6.4 频率设置功能实现结果 (13) 7. 心得体会 (14) 附录 (16)

摘要 通过嵌入式控制系统课程的学习并结合本次课程设计,了解嵌入式系统的开发方法和流程,熟悉Intel XScale硬件平台及其应用处理机的使用方法,熟悉Windows CE嵌入式系统的基本原理、概念。能针对Intel XScale硬件平台、应用需求自行定制、优化WinCE操作系统,并独立编写可在Intel XScale嵌入式设备上运行的应用程序。 本课程设计主要实现了LED数码管的驱动程序,中断计数功能、LED显示清零功能、LED 数字显示频率设置的功能。 关键字:WINCE 中断数码管驱动 Abstract Learning Embedded Control Systems and combining the curriculum design can help us understand the Embedded Control Sy stems’ development methods and processes, and be familiar with Intel XScale Hardware platform and its usage. Know well the basic principles and concepts about WINCE. Design and optimize Windows Embedded Compact and compose Application software program that can operate on the Intel XScale Hardware platform. The main achievement of the curriculum design are drivers for LED, Interrupt Count, clean the results of the LED and set up the display frequency of the LED. Key words: WINCE Interrupt Digital Driving

2013嵌入式系统课程设计任务书

嵌入式系统 课程设计任务书 辽宁工程技术大学软件学院 嵌入式软件系

一、课程设计目的和任务 《嵌入式系统课程设计》是软件工程专业(嵌入式软件方向)学生的专业实践课程,是学习《嵌入式系统》课程后必要的实践教学环节。课程设计是检验学生是否掌握相关专业课程知识的重要手段,以学生为主体,充分调动学生的积极性和创造性,重视学生实际动手能力的培养。 通过本课程设计使学生加深理解、巩固课堂教学和平时实验内容,使学生初步具备基于Android、Linux、C和ARM汇编应用开发的系统分析、系统设计、系统实现与测试的实际能力,强化学生的知识实践意识、提高动手能力,发挥学生的想象力和创新能力,从而培养工程应用型人才。 二、课程设计基本要求 1、学习态度:要有勤于思考、刻苦钻研的学习精神和严肃认真、一丝不苟、有错必改、精益求精的工作态度,积极查阅整理分析相关参考文献,精心设计、认真编码、确保质量。对弄虚作假者,课程设计成绩一律按不及格记。 2、学习纪律:要严格遵守学习纪律,遵守作息时间,不得迟到、早退和旷课。特殊情况不能上课者,必须请假,凡未请假或未获准假擅自不上课者,均按旷课论处。 3、课程目标:掌握Linux和WinCE应用开发的基本理论知识和基本方法技能,概念清楚准确,系统分析、系统设计、系统实现、系统测试符合软件工程相关规范,结构合理,程序运行良好,课程设计报告撰写规范,答辩中回答问题正确。 4、课程设计报告:按照《课程设计报告规范》和《嵌入式系统课程设计任务书》的要求,认真设计、撰写好课程设计报告,总结课程设计的收获和心得体会,及时提交电子和纸质材料。 三、课程设计内容 1.以下学号学生完成题目1:1、11、9 题目1:基于嵌入式技术的烟气检测监控系统的设计(ARM体系结构与编程)设计要求:设计以嵌入式技术为核心的的烟气检测监控系统,完成系统的硬件组成和软件控制的设计,检测监控烟气排放是否符合烟气污染排放标

嵌入式课程设计报告

嵌入式课程设计报告设计题目:电子密码锁

、 摘要 随着科技和人们的生活水平的提高,实现防盗的问题也变得尤为突出,传统机械锁构造简单,电子锁的保密性高,使用灵活性好。根据需要设计运用W90P170开发板,制作一款电子密码锁,密码锁通过键盘输入密码,通过在LCD的文字和图片显示当前密码锁的状态。实现设置密码,密码验证,错误密码自锁、图片显示的功能。 目录

一、选题意义及系统功能 (3) 二、硬件设计及描述 (4) 三、软件设计及描述 (5) 四、程序代码 (6) 五、课程设计体会 (11) 六、运行结果 (12) 七、心得体会 (12) 八、参考文献 (13) 九、附录 (13) 一、选题意义及功能描述 1、选题意义 电子密码锁是通过密码输入来控制电路或是芯片工作,从而控制机械的开关闭合、开锁的电子产品。随着科技提高和人们生活水平的提高,对电子密码锁的需求增加。电子密码做较传统的机械锁安全性能更高。 特点如下: (1)保密性好,编程量大,随机开锁的成功率几乎为零。

(2)密码可变,用户可以随时改变密码,防止密码被盗,同时也可以避免人员的更替而使锁的密级下降。 (3)误码输入保护,输入密码多次错误是,系统进行自锁。 (4)无活动零件,不会磨损,寿命长。 (5)使用灵活性好,无需佩戴钥匙,操作简单。 2、功能描述 基本功能: (1)从键盘输入任意6位数字作为密码,将这六位数字经过USI总线存储到Flash芯片中,设置密码完成。 (2)从键盘输入密码,比较键盘输入的密码与Flash中存储的密码是否相同。 (3)如果密码正确,则LED灯点亮;如果密码不正确,则LED灯闪烁,而且如果连续三次输入密码错误则系统锁定,不允许再次输入密码。 扩展功能: (1)首先显示“请输入密码:”,显示密码锁背景图片1。 (2)如果密码正确则显示“密码正确”,显示成功进入系统的背景图片2。 (3)如果密码不正确则显示“密码不正确,请重新输入:” (4)如果连续三次输入密码错误则显示“对不起,您已经连续三次输入密码错误,系统锁定”,显示图片1。

操作系统课程设计页式存储

操作系统课程设计报告 ——页式存储 姓名:陈锡鹏 班级:J计算机1302 学号:4131110044 指导老师:刘金平 日期:2016/1/12

一、目的和要求 1.理解页式存储的基本概念 2.通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特 点,掌握请求页式存储管理的页面置换算法。 3. 3.根据模拟的页式管理设计,掌握在页式存储管理中最基本的两种种页面 调度算法FIFO、LRU。但在两种种算法中均要求在调度程序中产生的页面序列是随机产生的,而不是人为的输入,在执行时只需改变页面的大小及内存容量就可以得到不同的页面序列,另外还需要说明随机的性能和其性能可能对算法的影响,并对随机性要有一定的参数控制能力。此外,计算并输出FIFO、LRU算法在不同内存容量下的命中率。 具体参数:访问串的长度,访问串,页面个数。 分别用2种不同的方法实现页面的置换,并输出相关信息。

二、基本原理 1.页式存储基本原理 将各进程的虚拟空间划分成若干个长度相等的页(page),页式管理把内存空间按页的大小 划分成片或者页面(page frame),然后把页式虚拟地址与内存地址建立一一对应页表,并用相应的硬件地址变换机构,来解决离散地址变换问题。页式管理采用请求调页或 预调页技术实现了内外存储器的统一管理。 页的划分: 2.静态/虚拟分页管理 页式管理是一种内存空间存储管理的技术,页式管理分为静态分页管理和虚拟分页管理。 ①静态页式存储管理: 用户在作业开始执行之前,讲改作业的程序和数据全部装入到主存中,然后,操作系统统通过页表和硬件地址变换实现逻辑地址到屋里地址的转换,从而执行用户程序。 静态分页管理的第一步是为要求内存的作业或进程分配足够的页面。系统通过存储页面表、请求表以及页表来完成内存的分配工作。 页表:内存中的一块固定存储区。页式管理时每个进程至少有一个页表。 请求表:用来确定作业或进程的虚拟空间的各页在内存中的实际对应位置; 存储页面表:整个系统有一个存储页面表,其描述了物理存储空间的分配使用状况。 ②虚拟页式存储管理 当系统在运行时,经常会出现主存容量不能满足用户程序的要求,一种解决方法是:从逻辑上扩充主存的容量。这便是虚拟存储技术。

嵌入式课程设计

嵌入式课程设计 学院:计算机与通信工程学院专业:物联网工程班级:物联1501 姓名:王强学号:41501602 实验日期:2017年12月25日 实验名称: 嵌入式课程设计 实验目的: 以STC89开发板为硬件平台,开发温度采集、动态数码管显示、按键响应、与PC串口通讯的综合程序,实现以下功能: 1)PC上的串口调试助手通过串口给STC89开发板发送“GetTemp”命令。 2)STC89开发板从串口接收到“GetTemp”命令后启动温度传感器DS18B20的测温程序获取当前温度,测试完成时将所测得温度数据显示在动态数码管上。(动态数码管在温度获取之前应该显示“FFFFFFFF”,只有在获取温度后才显示温度值) 3)动态数码管显示出温度数据后,请通过按键触发STC89开发板通过串口回送步骤2所测的温度数据给PC上串口调试助手,同时恢复动态数码管显示为“FFFFFFFF”。为保证每个同学的实验都独立完成,要求回送的数据包含自己的学号,即如果你的学号是20150809,当前温度值是19.6摄氏度,那么在PC上的串口调试助手应该显示:20150809 : 19.6°C。硬件电路说明: 1)STC89处理器管脚和晶振电路

2)独立按键 独立按键一共5个,分别连接在单片机的P3.0到P3.4口。去抖动的方式,我们采用软件延时的方法。过程如下: 先设置IO口为高电平(一般上电默认就为高),读取IO口电平确认是否有按键按下,如有IO电平为低电平后,延时几个ms,再读取该IO电平,如果任然为低电平,说明对应按键按下,执行相应按键的程序。 3)DS18B20温度传感器部分 DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。 初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。 初始时,计数器1预置的是与-55℃相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。 DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读

操作系统课程设计报告

上海电力学院 计算机操作系统原理 课程设计报告 题目名称:编写程序模拟虚拟存储器管理 姓名:杜志豪.学号: 班级: 2012053班 . 同组姓名:孙嘉轶 课程设计时间:—— 评语: 成绩: 目录 一、设计内容及要求 (4) 1. 1 设计题目 (4) 1.2 使用算法分析: (4)

1. FIFO算法(先进先出淘汰算法) (4) 1. LRU算法(最久未使用淘汰算法) (5) 1. OPT算法(最佳淘汰算法) (5) 分工情况 (5) 二、详细设计 (6) 原理概述 (6) 主要数据结构(主要代码) (6) 算法流程图 (9) 主流程图 (9) Optimal算法流程图 (10) FIFO算法流程图 (10) LRU算法流程图 (11) .1源程序文件名 (11) . 2执行文件名 (11) 三、实验结果与分析 (11) Optimal页面置换算法结果与分析 (11) FIFO页面置换算法结果与分析 (16) LRU页面置换算法结果与分析 (20) 四、设计创新点 (24) 五、设计与总结 (27)

六、代码附录 (27) 课程设计题目 一、设计内容及要求 编写程序模拟虚拟存储器管理。假设以M页的进程分配了N

块内存(N

操作系统实验报告附思考题

操作系统实验报告附思 考题 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

课程设计(综合实验)报告 ( 2015 -- 2016 年度第 1 学期) 名称:操作系统综合实验 题目: oslab综合实验 院系:计算机系 班级: 学号: 学生姓名: 指导教师: 设计周数:分散进行 成绩: 日期: 2015 年 10 月 29 日

实验1 实验环境的使用 一、综合实验的目的与要求 熟悉操作系统集成实验环境OS Lab 的基本使用方法。 练习编译、调试EOS 操作系统内核以及EOS 应用程序。 二、实验正文 1.启动 OS Lab 执行项目 Windows 控制台窗口内容显示 调试项目 使用断点中断执行 单步调试 .3单步调试结果显示: 练习使用“逐语句”功能和“跳出”功能 查看变量的值 快速监视 添加监视 调用堆栈 调用堆栈显示内容 进入Func 函数 双击 main 函数所在的行表示此函数是当前调用堆栈中的活动函数。 3 新建EOS 内核项目 4 EOS 应用程序项目的生成和调试 新建EOS 应用程序项目 调试项目 添加断点后单步调试结果显示 查看软盘镜像文件中的内容 修改EOS 应用程序项目名称 5 退出OS Lab 6 保存EOS 内核项目 三、综合实验总结或结论 思考与练习: 1.在哪些情况下应该使用“逐过程”调试,在哪些情况下应该使用“逐语句”调试。

答:逐语句为每执行一行语句,如果碰到函数调用它就会进入到函数里面。而逐过程碰到函数时不进入函数,把函数调用当成一条语句去执行。 2. 生成EOS SDK 文件夹的目的和作用。明白文件夹的组织结构和各个文件的来源和作用。查看EOS 应用程序包含了SDK 文件夹中的哪些头文件,是如何包含的 (1)EOSSDK为应用程序调用系统API提供服务,可作为用户编程中使用的工具包集合。(2)其主要包括INC头文件LIB文件夹、导入库文件和BIN文件夹、动态链接库、可执行程序、二进制文件。 (3)包含的头文件有:负责导出API函数,声明负责导出函数类型的定义,负责导出错误码。 (4)EOS应用程序在项目的头文件中只是包含了文件,在文件中又包含了和文件。 实验 2 操作系统的启动 一、综合实验的目的与要求 跟踪调试 EOS 在 PC 机上从加电复位到成功启动全过程,了解操作系统的启动过程。 查看 EOS 启动后的状态和行为,理解操作系统启动后的工作方式。 二、实验正文 1. 准备实验 新建一个 EOS Kernel 项目。打开和两个汇编文件。生成项目。找到文件,记录下此文件的大小 1566 字节。 2 调试 EOS 操作系统的启动过程 使用 Bochs 做为远程目标机 找到“远程目标机”属性,将此属性值修改为“BochsDebug” 调试 BIOS 程序 在 Console 窗口中输入调试命令 sreg 后按回车,其中 CS 寄存器信息行中的 “ s=0xf000”表示 CS 寄存器的值为 0xf000。 输入调试命令 r 后按回车,显示当前 CPU 中各个通用寄存器的值。其中 “ rip:0x00000000:0000fff0”表示 IP 寄存器的值为 0xfff0。 输入调试命令 xp /1024b 0x0000,查看开始的 1024 个字节的物理内存。在 Console 中输出的这1K 物理内存的值都为 0,说明 BIOS 中断向量表还没有被加载到此处。 输入调试命令 xp /512b 0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都为 0,说明软盘引导扇区还没有被加载到此处。 可以验证 BIOS 第一条指令所在逻辑地址中的段地址和 CS 寄存器值是一致的,偏移地址和 IP 寄存器值是一致的。由于内存还没有被使用,所以其中的值都为 0。 调试软盘引导扇区程序

嵌入式系统课程设计

《嵌入式系统设计与应用》课程设计 题目嵌入式系统的实践教学探讨 1.嵌入式系统设计与应用课程的内容概述 1.1 内容概述 本课程适用于计算机类专业,是一门重要的专业课程。它的任务是掌握嵌入式系统的基本概念;掌握嵌入式处理器 ARM 体系结构,包括ARM总体结构、存储器组织、系统控制模块和I/O外围控制模块;掌握ARM指令集和Thumb指令集;掌握ARM汇编语言和C语言编程方法;了解基于ARM 的开发调试方法。它的目的是了解和掌握嵌入式处理器的原理及其应用方法。 1)介绍嵌入式系统开发的基础知识,从嵌入式计算机的历史由来、嵌入式系统的定义、嵌入式系统的基本特点、嵌入式系统的分类及应 用、嵌入式系统软硬件各部分组成、嵌入式系统的开发流程、嵌入 式技术的发展趋势等方面进行了介绍,涉及到嵌入式系统开发的基 本内容,使学生系统地建立起的嵌入式系统整体概念。 2)对ARM技术进行全面论述,使学生对ARM技术有个全面的了解和掌握,建立起以ARM技术为基础的嵌入式系统应用和以ARM核为基础 的嵌入式芯片设计的技术基础。 3)ARM指令系统特点,ARM 指令系统,Thumb 指令系统,ARM 宏汇编,ARM 汇编语言程序设计,嵌入式 C 语言程序设计。 1.2实践教学探讨 在IEEE 计算机协会2004年6月发布的Computing Curricula Computer Engineering Report, Ironman Draf t 报告中把嵌入式系统课程列为计算机工程学科的领域之一,把软硬件协同设计列为高层次的选修课程。美国科罗拉多州立大学“嵌入式系统认证”课程目录包括实时嵌入式系统导论、嵌入式系统设计和嵌入式系统工程训练课程。美国华盛顿大学嵌入式系统课程名称是嵌入式系统

嵌入式系统课程设计报告

湖北民族学院 信息工程学院 课程设计报告书 题目 :基于A RM的数字式万年历 课程:嵌入式系统课程设计 专业:电子信息科学与技术 班级: 03114411 学号: 031441119 学生姓名:田紫龙 指导教师:易金桥 2017年6 月20 日

信息工程学院课程设计任务书 学号031441119学生姓名田紫龙专业(班级)0314411 设计题目基于 ARM 的数字式万年历 1.能测量温度并且实时显示; 2.具有时间显示功能,能够显示年月日,时分秒,并且可以手动调节时间。 设 3. 具有 12 小时制和 24 小时制切换功能。 计 技 术 参 数 对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能。温度采集 选用 DS18B20芯片,万年历采用直观的数字显示,数据显示采用1602 液晶显 示模块,可以在LCD1602 上同时显示年、月、日、周日、时、分、秒,还具有 设 时间校准整点灯光提醒等功能。制作仿真和实物。 计 要 求 [1]苏平 . 单片机的原理与接口技术 [M]. 北京 : 电子工业出版社, 2006,1-113. [2]王忠民 . 微型计算机原理 [M]. 西安 : 西安科技大学出版社, 2003,15-55. [3]左金生 . 电子与模拟电子技术 [M]. 北京 : 电子工业出版社, 2004,105-131. [4]新编单片机原理与应用(第二版). 西安电子科技大学出版社, 2007.2 [5]张萌 . 单片机应用系统开发综合实例 [M]. 北京:清华大学出版社, 2007.7 [6] 朱思荣. 51 单片机实现公历与农历、星期的转换[Z].当当电子网 [7]李广弟 . 单片机原理及应用 [M] 北京航空航天大学出版社 ,2004 年 参[8] 王越明 . 电子万年历的设计 [J]. 黑龙江科技信息, 2004 年 考 资 料 2017年 6 月 20 日

Linux操作系统课程设计任务书

Linux操作系统课程设计任务书 一、设计题目 每个人完成在linux上面的J2EE环境部署,并且开发出简单的个人网站(基于J2EE)。 二、设计目的 Linux操作系统课程设计是信息管理类专业的集中实践性环节之一,是学习完《Linux操作系统》课程后进行的一次全面的综合练习。其目的在于加深对Linux操作系统的基础理论和基本知识的理解,在此基础上掌握linux环境下部署与开发软件系统的能力(基于J2EE),提高在Linux操作系统上解决实际问题的能力。 三、设计任务 每人需单独完成,严禁抄袭 四、时间安排 五、设计内容 分为多个步骤。 1、在linux上部署jdk。参考步骤如下: Step1: # 将解压好的jdk1.7.0_04文件夹用最高权限复制到/usr/lib/jvm目录里 sudocp -r ~/jdk1.7.0_04/ /usr/lib/jvm/ Step2: # 配置环境变量 sudogedit ~/.profile 在末尾加上:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_04 然后保存关闭,使用source更新下 $ source ~/.profile 使用env命令察看JAVA_HOME的值 $ env 如果JAVA_HOME=/usr/lib/jvm/jdk1.7.0_04,说明配置成功。 Step3: # 将系统默认的jdk修改过来 $ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_04/bin/java 300 输入sun jdk前的数字就好了 $ sudo update-alternatives --install /usr/bin/javacjavac /usr/lib/jvm/jdk1.7.0_04/bin/javac 300 $ sudo update-alternatives --config java $ sudo update-alternatives --configjavac Step4: 然后再输入java -version,看到如下信息,就说明改成sun的jdk了: java version "1.7.0_04" Java(TM) SE Runtime Environment (build 1.7.0_04-b20) Java HotSpot(TM) Server VM (build 23.0-b21, mixed mode) 2、安装部署Mysql,源码安装方式参考步骤如下,也可以下载安装包,此安装相对简单。 (1) -------------预备工作---------- 1:假如下载的文件名为:mysql-5.0.45.tar.gz 2:假如copy到/home下 3:groupaddmysql #添加mysql组 4:useradd -gmysqlmysql #添加一个mysql用户 5:cd /home #进入到该目录 -----------------------编译过程----------------------- 6:tar zxvf mysql-5.0.45.tar.gz #解压后,在该目录下会出现一个同名的文件夹 7:cd /home/mysql-5.0.45 8:./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=latin1 #参数设置,可以先不明白,以后再修改配置 9:make 10:make install

广东海洋大学嵌入式系统课程设计

《嵌入式系统》设计报告学生姓名 Adao (学号) 所在学院数学与计算机学院 所在班级计科1141 指导教师 成绩

目录 1.课程设计目的 (2) 2.系统分析与设计 (2) 3.系统结构图 (2) 4.实现过程 (3) 5.实验效果 (5) 6.代码分析 (6) 7.系统测试出现的问题和解决的方案 (7) 8.系统优缺点 (7) 9.心得体会 (8) 参考文献 (8)

双按键控制流水灯系统开发 1.课程设计目的: 本次课程设计目的主要是对之前所学习的STM32的某个实验进行更深入的学习与了解,弄懂引脚,端口等相关的配置,对实验原理和具体实现有一定的理解,能做到自己通过原理图和使用库函数等把功能实现出来。我选择的是EXTI-外部中断实验并加以整合,具有一定实用功能的系统,可以对外提供服务。 2.系统分析与设计: 本课程设计所定义的系统主要功能为,通过两个按键KEY1(PA0)、KEY2(PC13)可以实现对流水灯进行同步控制,即一个开关控制产生的灯的状态可以被另一个开关去改变,按键控制需要对两个按键的端口,引脚等进行相关配置,并在两个引脚的中断服务程序中完成对流水灯状态同步控制的操作。本还想通过使用SysTick(系统滴答定时器)功能对流水灯进行精确定时,但由于时间比较匆促,最终没有实现。 3.系统结构图: 图3-1

4.实现过程: 1、GPIO的输入模式有上拉输入模式、下拉输入模式、浮空输入模式和模拟输入模式。GPIO 中的每个引脚可以通过配置端口配置寄存器来配置它的模式。每个引脚的模式由寄存器的4个位控制。 上拉/下拉输入模式:1000 浮空输入模式:0100 模拟输入模式:0000 2、STM32的所有GPIO都可以用作外部中断源的输入端。STM32的中断由中断控制器NVIC 处理。STM32的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表面它的优先级别越高。抢占属性会出现嵌套中断。 3、编写NVIC_Configuration()函数配置NVIC控制器的函数。 static void NVIC_Configuration(uint8_t IRQ) { NVIC_InitTypeDef NVIC_InitStructure; //将NVIC中断优先级分组设置为第1组 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); /* 配置中断源 */ NVIC_InitStructure.NVIC_IRQChannel = IRQ;//设置中断线 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//设置抢占优先级 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//设置响应优先级 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); //对NVIC中断控制器进行初始化 } 4、调用GPIO_EXTILineConfig()函数把GPIOA、Pin0和GDIOC、PIN13设置为EXTI输入线。 GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0); GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13); 5、填写EXTI的初始化结构体,然后调用EXTI_Init()把EXTI初始化结构体的参数写入寄存器。编写EXTI_PA0_Config()函数完成各种需要的初始化。 void EXTI_Pxy_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; EXTI_InitTypeDef EXTI_InitStructure; /* config the extiline clock and AFIO clock */

2016西安交通大学操作系统实验报告

操作系统实验报告 实验一:用户接口实验 一.实验目的 1.理解面向操作命令的接口Shell。 2.学会简单的shell编码。 3.理解操作系统调用的运行机制。 4.掌握创建系统调用的方法。 操作系统给用户提供了命令接口和程序接口(系统调用)两种操作方式。用户接口实验也因此而分为两大部分。首先要熟悉Linux的基本操作命令,并在此基础上学会简单的shell编程方法。然后通过想Linux内核添加一个自己设计的系统调用,来理解系统调用的实现方法和运行机制。在本次实验中,最具有吸引力的地方是:通过内核编译,将一组源代码变成操作系统的内核,并由此重新引导系统,这对我们初步了解操作系统的生成过程极为有利。 二.实验内容 1)控制台命令接口实验 该实验是通过“几种操作系统的控制台命令”、“终端处理程序”、“命令解释程序”和“Linux操作系统的bash”来让实验者理解面向操作命令的接口shell 和进行简单的shell编程。 查看bash版本。 编写bash脚本,统计/my目录下c语言文件的个数 2)系统调用实验 该实验是通过实验者对“Linux操作系统的系统调用机制”的进一步了解来理解操作系统调用的运行机制;同时通过“自己创建一个系统调用mycall()” 和“编程调用自己创建的系统调用”进一步掌握创建和调用系统调用的方法。 编程调用一个系统调用fork(),观察结果。 编程调用创建的系统调用foo(),观察结果。

自己创建一个系统调用mycall(),实现功能:显示字符串到屏幕上。 编程调用自己创建的系统调用。 三.实验步骤 系统调用实验: 1.首先将Linux-3.0.tar.bz2拷贝到/usr/src目录下 ——命令:cp linux-3.0.tar.bz2 /usr/src/ 2.打开终端,获得root权限 ——命令:sudo –s 3.进入/usr/src目录 ——命令:cd /usr/src 4.解压linux源码 ——命令:tar xvzf linux-3.0.tar.bz2 5.进入目录linux-3.0.5 ——命令:cd linux-3.0 6.添加系统调用 ——操作:gedit kernel/myservice.c 在文本编辑器中添加 #include #include asmlinkage void sys_mycall() { printk(KERN_INFO "Hello, world!\n"); return; } 7.修改kernel/Makefile添加生成myservice.c添加到Makefile的编译规则中: obj-y += myservice.o 8..修改arch/x86/include/asm/unistd_32.h,添加以下内容: #define __NR_mycall SYS_ID //SYS_ID表示新添加系统调用的调用号

嵌入式Linux开发课程设计指导书

嵌入式Linux开发课程设计指导书 课程编码: 适应专业:计算机专业、电子信息工程专业 学时:3周(计算机专业),2周(电子信息工程专业) 学分: 3(计算机专业),2(电子信息工程专业)时间安排:分散 先修课程:高级语言程序设计、计算机组成原理、接口技术,嵌入式系统,操作系统指导书名称: 一、目的与任务: 课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际应用问题进行有机结合,锻炼学生分析、解决实际问题的能力。 本课程设计采用理论指导与实践相结合的方式,系统地学习并实践嵌入式Linux程序开发技术。通过课程设计,学生可以熟练掌握Linux的基本操作,系统管理,并具备Linux 下文件、进程、网络、GUI的开发方法,为实际应用开发打下坚实的基础。 二、目标 通过本次课程设计要求学生达到以下目标: 1)熟悉Linux操作系统具体操作(安装、基本命令、系统管理、FTP服务器搭建) 2)熟悉Linux下C程序开发调试的基本过程。 3)熟悉嵌入式Linux进程及进程间通信 4)能够熟练编写Linux应用程序,包括文件、网络、图形等 三、内容 任务1、基础知识,完成以下任务: Linux操作系统的安装、基本命令的使用,网络的配置,FTP服务器搭建,VI编辑器的使用,文件压缩方法。 任务2、Linux系统C程序设计的基本知识,完成以下任务 1)GCC编译器的使用,Linux系统C程序设计编译、调试方法。 2)分别用if和switch判断一个数的奇偶性并输出结果。 3)用for语句编写程序,计算100到200之间所有奇数的和。 4)用while语句编写程序,计算1000到2000之间所有能被16整除的数的和。

操作系统(一个小型操作系统的设计与实现)课程设计

南通大学计算机科学与技术学院操作系统课程设计报告 专业: 学生姓名: 学号: 时间:

操作系统模拟算法课程设计报告 设计要求 将本学期三次的实验集成实现: A.处理机管理; B.存储器管理; C.虚拟存储器的缺页调度。 设计流程图 主流程图 开始的图形界面 处理机管理存储器管理缺页调度 先来先服务时 间 片 轮 转 首 次 适 应 法 最 佳 适 应 法 先 进 先 出 L R U 算 法

A.处理机调度 1)先来先服务FCFS N Y 先来先服务算法流程 开始 初始化进程控制块,让进程控制块按进程到达先后顺序让进程排队 调度数组中首个进程,并让数组中的下一位移到首位 计算并打印进程的完成时刻、周转时间、带权周转时间 其中:周转时间 = 完成时间 - 到达时间 带权周转时间=周转时间/服务时间 更改计时器的当前时间,即下一刻进程的开始时间 当前时间=前一进程的完成时间+其服务时间 数组为空 结束

2)时间片轮转法 开始 输入进程总数 指针所指的进程是 否结束 输入各进程信息 输出为就绪状态的进程的信息 更改正在运行的进程的已运行时间 跳过已结束的程序 结束 N 指向下一个进程 Y 如果存在下一个进程的话 Y N 输出此时为就绪状态的进程的信息 时间片轮转算法流程图

B.存储器管理(可变式分区管理) 1)首次适应法 分配流程图 申请xkb内存 由链头找到第一个空闲区 分区大小≥xkb? 大于 分区大小=分区大小-xkb,修改下一个空闲区的后向指针内容为(后向指针)+xkb;修改上一个空闲区的前向指针为(前向指针)+xkb 将该空闲区从链中摘除:修改下一个空闲区的后向地址=该空闲区后向地址,修改上一个空闲区的前向指针为该空闲区的前向指针 等于 小于延链查找下 一个空闲区 到链尾 了? 作业等待 返回是 否 登记已分配表 返回分配给进程的内存首地址 开始

09嵌入式网络协议及其应用开发课程设计报告1

课程设计说明书 学生信息 系别计算机工程学院专业计算机科学与技术 班级姓名学号 课程设计信息 课程名称嵌入式软件开发课程设计 课程设计题目基于QT的直流电机设计 课程设计时间学期第 1~16 周 小组情况指导教师 批改情况 成绩评阅教师批改时间2012年5月 6 日2011-2012学年第2 学期

目录 1.课程设计内容 (3) 2.课程设计目的 (3) 3.背景知识 (3) 4.工具/准备工作 (3) 5.设计步骤与方法 (3) 5.1.步骤 1:设计直流电机控制界面 (3) 5.1.1. 步骤1.1:添加控件事件代码 (4) 5.2. 步骤2:编译程序 (5) 5.2.1. 步骤2.1:redhat主机下编译程序 (5) 5.2.2. 步骤2.2:在ARM板下测试直流电机界面–嵌入式下运行 (6) 6.软件测试截图 (7) 7.设计结果及分析 (7) 8.设计结论 (7) 9.问题及心得体会 (7) 10.对本设计过程及方法、手段的改进建议 (8) 11.任务分配 (8) 12.参考文献【1】C++ GUI Qt4编程(第2版) 兰切特 (Jasmin Blanchette)、萨默菲尔德(Mark Summerfield)、闫锋欣、曾泉人子工业出版社2008 (8) 13.课程设计评价(教师) (8)

课程设计报告 1. 课程设计内容 本课程设计的内容是设计一个基于QT的直流电机设计,支持电机正反转以及设置参数以控制转速。 2. 课程设计目的 考察自己对课程的掌握程度,以及自己实际的动手能力,编程能力。 3. 背景知识 1.嵌入式linux下驱动程序的基本编译方法 2.掌握直流电机控制基本原理 3.QT软件的应用 4. 工具/准备工作 硬件: 安装有QT的PC机一台 软件: WindowsXP操作系统 VMware Workstation 7.0 Red Hat QT 4.6.3 5. 设计步骤与方法 5.1.步骤 1:设计直流电机控制界面 利用QT Creator,ui文件来编写一个良好的用户交互界面:

操作系统课程设计报告Alarm-Clock

西安电子科技大学 操作系统课程设计 (2016年度) 实 验 报 告 实验名称:Alarm-Clock 班级:1403018 姓名:张可心 学号:14030188030

一实验内容 源代码devices/timer.c中有一个timer_sleep()函数。定义如图1所示 图1 timer_sleep()函数的定义 该函数的功能是让调用它的线程睡眠一段时间(ticks),然后唤醒。事实上,品同时已经实现该函数,只是使用的是“忙等待”的方法。 任务要求:重新实现timer_sleep()函数,避免“忙等待”的发生,设计一种策略并实现。 二分析及设计 1. 阅读相关的源代码文件,并了解其中关键的数据结构和函数的含义:在xd/os/pintos/src/threads目录下的thread.h,thread.c文件,它们是有关线程初始化、阻塞、解除阻塞,线程调度等内容。xd/os/pintos/src/devices/目录下的timer.h,timer.c文件,本实验要修改的timer_sleep()函数就在其中。同时还要注意定时器中断的处理过程。 2. Thread.h中定义了一个结构体struct thread,这个结构体中用于存放线程的基本信息,如图2所示

图2线程的基本信息 3. Pintos中线程的状态有四种,在thread.h函数中的定义如图3 图 3 线程的状态定义 4.系统的驱动:驱动力为定时器中断函数,定时器中断频率在timer.h中定义如

图4所示 图4 定时器中断频率 由此可知一个定时器中断的时长大约为10ms,这里称为一个ticks。 5.中断处理过程 中断处理函数的调用过程如图5所示 图5中断处理函数的调用过程 原线程中这个timer_sleep函数执行过程是不断地循环检测这个函数执行以及执行过后等待时长是否小于cpu的时钟周期,如果是,则重复循环等待,直至等待时间大于等于ticks,则执行线程后续代码。此方法的缺点是,函数不断循环试探,占用cpu。 设计方案从去掉循环测试时间开始,将在thread结构体中添加一个变量block_ticks(线程阻塞时间),来标记时间的变化。当线程度过了ticks,就唤醒它,进入ready状态。 三详细实现 1 改造timer_sleep,如图6所示

相关文档
最新文档