嵌入式操作系统程课程设计报告

2020-03-02 02:58:33 来源:范文大全收藏下载本文

目录

一、实习任务和目的„„„„„„„„„„„„1

二、实习基本要求„„„„„„„„„„„„„1

三、实习题目„„„„„„„„„„„„„„„1

四、实习地点„„„„„„„„„„„„„„„1

五、实习内容„„„„„„„„„„„„„„„3

六、实习总结、心得体会„„„„„„„„„„8

七、参考资料„„„„„„„„„„„„„„„9

0

一、实习的任务和目的:

本次实习的目的是在学生已掌握了嵌入式操作系统的知识、对当前嵌入式操作系统的主要种类和应用领域有较清晰的概念的基础上,以嵌入式LINUX操作系统教学内容为指导,以S3C2410经典实验箱为平台,使学生掌握配置、裁剪、移植和维护嵌入式LINUX操作系统的技能和相关理论知识,具备一个初级嵌入式LINUX系统程序员的综合技能。

本次实习的任务是通过教师对嵌入式LINUX的配置、裁剪、移植以及文件系统的移植等内容的讲解,让学生掌握如何搭建嵌入式开发环境、嵌入式LINUX系统移植、文件系统移植以及简单的驱动程序的开发。

二、实习基本要求:

1、了解嵌入式操作系统技术前沿、应用领域、发展趋势及相关领域研究成果;

2、熟悉嵌入式操作系统的特点、分类、基本概念;

3、熟悉主流实时操作系统。深入了解嵌入式LINUX,包括系统配置、裁剪、移植;

4、熟悉并掌握嵌入式文件系统的建立、移植;

5、以嵌入式处理器器S3C2410为例,掌握嵌入式LINUX驱动程序开发的一般方法。

三、实习题目:

1、复习LINUX系统基本操作,常用命令;

2、嵌入式LINU开发基础知识;

3、嵌入式LINUX开发环境的建立;

4、Bootloader移植;

5、LINUX内核的配置、裁剪;

6、LINUX内核移植与编译;

7、建立根文件系统;

8、模块方式驱动程序设计;

9、中断、LED驱动程序设计。

四、实习地点:

应用技术学院五楼四机房。

五、实习内容:

第一部分 嵌入式LINU开发基础知识:

1 1.1 嵌入式LINUX简介

嵌入式系统的定义为以应用为中心,以计算机技术为基础,软硬件可裁剪,适用于应用系统,对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统,它的主要特点是潜入、专用。本次实训的平台是在LINUX下的ubuntu系统上进行的。

1.2 嵌入式LINUX开发平台简介

本次实训的需要一台主机及一块开发板,它们需要满足一定的硬件要求,主机的硬件要求是:有一个25针的并口接口,它用来连接JTAG连线,有一个9针的串口接口,支持网络,至少20GB的硬盘,用到的开发板是s3c2410,它有如下的部件:64MB SDRAM,1MB NOR Flash,64MB NAND Flash,两个网卡,5个串口(内置3个,外扩2个),音频输入输出。2.5寸IDE接口,标准SD/MMC卡座,GPIO按键,外接I2C接口的实时时钟(RTC)芯片。 1.3 嵌入式LINUX开发流程

(1)在主机上编译Bootloader,然后通过JTAG烧入单板,(2)在主机上编译嵌入式LINUX内核,通过Bootloader烧入单板或直接启动,(3)在主机上编译各类应用程序,单板启动内核后通过NFS运行他们,经过验证后再烧入单板。 1.4 嵌入式LINUX开发环境的建立

开发环境的搭建:硬件开发环境的搭建很简单,将主机与目标板通过JTAG、串口线(接单板上的串口0)、网线(接单板上的网卡0)连接起来,将各类设备连接到目标板上即可,软件的搭建环境相对要复杂的多,时间也要得多,首先第一步需要移植U—boot,然后再来烧写LINUX内核,再创建根文件系统,最后才可以来写相应的驱动程序来进行开发的! 第二部分 嵌入式LINUX系统构建:

2.1 Bootloader移植

u-boot是德国DENX小组的开发用于多种嵌入式CPU的bootloader程序, u-boot不仅仅支持嵌入式LINUX系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。u-boot除了支持PowerPC系列的处理器外,还能支持MIPS、x8

6、ARM、NIOS、XScale等诸多常用系列的处理器。 移植过程:

在主机上创建一个文件夹,把以下四个已下载的文件复制到里面,这四个文件分别为:

u-boot.bin ,---- LINUX操作系统启动的bootloader; uImage ,--- LINUX操作系统内核;

root.cramfs ,---- 根文件系统; yaffs.tar.bz2 ,---- 应用程序压缩包。运行sjf2410-s命令如下:sjf2410-s /f:u-boot.bin。然后按回车,等待烧写完成后,设置开发板的地址与服务器的地址,命令如下:设置本机服务器IP地址:(根据具体主机环境更改IP)setenv serverip 192.168.1.113, 设置ARM设备IP地址:(随意设置成与上面主机同一网段IP即可),setenv ipaddr 192.168.1.199,保存变量设置:saveenv。

2

3

2.2 内核裁剪与移植

LINUX本次实验目录下存放着已经修改好的博创经典2410平台的内核源码包,将该源码包拷贝到宿主机LINUX系统中,解压至本次实验目录,配置编译生成内核uImage文件烧写到ARM设备中。在内核根目录下,用命令make menuconfig进入配置界面,对系统进行裁剪,如下:

4

选择硬件系统

配置LCD驱动

网卡驱动

5

配置NANF Flash驱动

配置文件系统

然后运行 bootm 启动内核即可。 2.3 创建根文件系统

解压busybox源码后,进入busybox源代码目录,打开Makefile,修改两个地方,分别是在Makefile文件中的CROSS_COMPILE=后面添加上arm-LINUX-这一行以及ARCH ?=后面改成arm.然后在busybox根目录下使用命令make menuconfig进入配置界面进行配置,如图:

Busybox截图

退出后,使用命令make,make install。用shell脚本创建根文件系统的目录结构,并在想要运行根文件系统的地方运行脚本,需要创建一个文件夹rootfs,里面包括了一些LINUX下的基本的文件。还需要把busybox源码目录下的/etc

6 的内容拷贝到此处创建的文件夹的etc下,修改拷贝过来的profile文件,修改初始化文件inittab和fstab,修改初始化的脚本文件,init.d/rcS,创建一个空的mdev.conf文件,在挂载根文件系统时用到,再把本机上的pawd,shadow,group文件拷贝过来,把busybox默认安装目中的文件全部复制到这里的rootfs中,会发现多了LINUXrc->bin/busybox,这是挂载文件系统需要执行的,这时,在rootfs目录下,使用命令cp -rvf /rootfs/busybox-1.12.2/_install/* ./,,到此,就用busybox创建了一个基本的文件系统。

第三部分 设备驱动程序设计:

3.1 模块方式驱动实验

在这里,需要有两个程序,一个驱动程序,一个用户程序,驱动程序通过用户程序来调用,完成基本的读写以及注册设备号等,在本程序中,用户程序非常简单,驱动程序的核心部分是如下代码所示:

static struct file_operations demo_fops = { owner: THIS_MODULE, write:demo_write, read: demo_read, ioctl: demo_ioctl, open: demo_open, release: }; demo_release, 其他的所有程序都是在这个基础上延伸出来的。还有一个注册设备号的函数如示:

register_chrdev(0, DEVICE_NAME, &pxa270_fops); 假设本驱动程序的源代码名字是s3c2410_led.c编译驱动程序模块的方法是把驱动程序复制到内核目录下的drivers/char子目录下,在drivers/char/Makefile中增加一行:obl-m +=s3c2410_led.o,然后在内核根目录下执行make modules.就生成drivers/char/s3c2410_led.ko,再把它复制到开发板上,就可以使用insmod s3c2410_led.ko,rmmod s3c2410_led.ko了,此时,就可以执行本用户程序了,结果如下:

7

3.2 LED驱动实验

本实验的主要目的是写一个驱动程序来点亮开发板上的一颗LED灯。主要的程序核心还是集中在怎么给led灯引脚一个电平以及用户程序中ioctl程序的使用。程序的核心代码如下:

static struct file_operations s3c24xx_leds_fops = { .owner =

THIS_MODULE,

.open

=

s3c24xx_leds_open,

.ioctl =

s3c24xx_leds_ioctl, }; static int s3c24xx_leds_ioctl(

struct inode *inode,

struct file *file,

unsigned int cmd,

unsigned long arg) {

if (arg > 4) {

return -EINVAL;

}

switch(cmd) {

case IOCTL_LED_ON:

s3c2410_gpio_setpin(led_table[arg], 0);

return 0;

8

case IOCTL_LED_OFF:

s3c2410_gpio_setpin(led_table[arg], 1);

return 0;

default:

return -EINVAL;

} } 编译好模块后,复制到开发板目录下即可在开发板下执行,点亮led灯。

命令led_test 1 off/on,如此,就可以关闭或点亮一个led灯了! 3.3 中断按键控制LED实验 核心代码如下:

注册中断:request_irq(button_irqs[i].irq, buttons_interrupt, button_irqs[i].flags,

button_irqs[i].name, (void *)&pre_cnt[i]); 注册备:register_chrdev(BUTTON_MAJOR, DEVICE_NAME, &s3c24xx_buttons_fops); 中断函数:

static irqreturn_t buttons_interrupt(int irq, void *dev_id) {

volatile int *pre_cnt = (volatile int *)dev_id;

*pre_cnt = *pre_cnt + 1; /*

ev_pre = 1;

wake_up_interruptible(&button_waitq);

return IRQ_RETVAL(IRQ_HANDLED); } 同理,把它的目标文件放到内核根目录下的drivers/char编译后,把生成的模块文件复制开发板下,即可完成相应的任务,通过按键可以来控制led灯了,同时,可以通过命令cat /proc/devices, cat /proc/interrupt来查看设备及中断的注册情况!

六、实习总结、心得体会:

通过为期将近几周的嵌入式操作系统实习,我收获颇深。这次实习虽然短,可是收获很大,感觉平时上课学到的东西都没有这几天学到的多。正所谓:“实践是检验真理的唯一标准”。这次实习可以形象的概括为:“山重水复疑无路,柳暗花明又一村”。只有自己经历过才会真正的懂,书本知识还远远不够!

此次嵌入式操作系统实习给我最深的体会就是:理论+细心+实践才能在实际

9 生产中体现所学知识的价值。

在嵌入式行业发展如此快速完善的今天,理论与细心与实际的完美结合才能让自己在专业领域占有一席之地。在实习中,我初步了解了嵌入式处理器S3C2410的工作原理、也加深了对嵌入式处理器S3C2410的认识;也见识了关于嵌入式处理器的一些工作方式等。

几周的嵌入式操作系统实习结束了,做了好几个小实验,有成功也有失败,然而终究还是学会了很多东西。在整个实习期间,我体会到了自己的进步,并且从中也体会到了它的快乐。实习也让我明白了:第一,通过实践真正觉得自己可以做些什么了有点存在的小成就感;第二,通过嵌入式操作系统实习,加强了我们的动手实践能力和设计创新精神。作为信息时代的大学生基本的动手能力是一切工作和创造的基础和必要条件。第三,在嵌入式操作系统实习的这些日子里,大家的团队精神得到了很大的加强,闭门就会造车那是不可能的事情。

在为期两周的实习当中感触最深的便是实践联系理论的重要性,当遇到实际问题时,只要认真思考,运用所学的知识,一步一步的去探索,是完全可以解决遇到的一般问题的。本次实习的目的主要是:使我们嵌入式操作系统及LINUX相关操作有一定的感性和理性认识,培养和锻炼我们的实际动手能力。使我们的理论知识与实践充分地结合,作到不仅具有专业知识,而且还具有较强的实践动手能力,能分析问题和解决问题的应用型技术人才,为以后的顺利就业作好准备。 此次实习学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变,和与人合作共同提高,都受益非浅,今后的制作应该更轻松,自己也都能扛的起并高质量的完成项目。在此,感谢老师及其他老师的细心指导,也同样谢谢其他各组同学的无私帮助!

七、参考资料:

1、雅默著.构建嵌入式LINUX系统[M].北京:中国电力出版社.2004年

2、孙琼著.嵌入式LINUX应用程序开发详解[M].北京:人民邮电出版.2003年

3、2410经典实验指导书3.2 北京博创兴业科技有限公司2410经典实验箱配套教材

4、韦东山著. 嵌入式LINUX应用开发完全手册

北京:人民邮电出版

10

操作系统课程设计报告

操作系统课程设计报告

操作系统课程设计报告

嵌入式课程设计报告

操作系统课程设计

操作系统课程设计

操作系统课程设计

操作系统课程设计

操作系统课程设计

操作系统课程设计

《嵌入式操作系统程课程设计报告.doc》
嵌入式操作系统程课程设计报告
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档
下载全文