嵌入式操作系统课程设计实验报告.docx
《嵌入式操作系统课程设计实验报告.docx》由会员分享,可在线阅读,更多相关《嵌入式操作系统课程设计实验报告.docx(11页珍藏版)》请在沃文网上搜索。
1、 目 录1.课程设计目的32.课程设计环境搭建33.内容一:熟悉和理解Linux编程环境(1)内容要求4(2)计过程及实现44.内容三:掌握添加设备驱动程序的方法(1) 内容要求 7 (2) 设计过程及实现 75.课设感想 12实验内容1 .课程设计目的(1)掌握Linux操作系统的使用方法;(2)了解Linux系统内核代码结构;(3)掌握实例操作系统的实现方法。2 .课程设计环境搭建(1)安装linux(2)更改root登录:在现阶段Ubuntu的系统中,是不允许直接以root身份登录系统的,但是在做课设的过程中,需要大量的使用root权限来进行命令的操作。如果以普通用户登录ubuntu,会
2、连编辑一个文件都非常周折。为此,我找到了一种修改系统文件,以达到直接使用root身份登录的方法:开始的时候,只能以普通用户登录,用Ctrl+Alt+T打开终端:初始化/修改root密码sudo passwd root用vi编辑器修改这个文件:sudo vi /etc/lightdm/lightdm.conf 在文件最后加入这么一行代码:greeter-show-manual-login=true然后保存退出,sudo reboot 重启系统。之后就可以输入root用户登录。(3)在添加系统调用中用到的其他内核包:下载和当前实验环境最为接近的系统版本(这点很重要)使用apt-get instal
3、l linux-source-3.0.0 命令,下载结果是linux-source-3.0.0.tar.bz2 解压命令:tar xjvf linux-source-3.0.0.tar.bz2 C /usr/src解压后,在/usr/src目录下得到内核文件夹linux-source-3.0.0(4)在调用linux图形库时需要安装GTK环境:安装gcc/g+/gdb/make 等基本编程工具apt-get install build-essential Tip:如果提示由于依赖项不能安装,需要使用apt的强化版aptitude,这个工具可以自动分析软件包依赖,系统一般不自带,需要先安装,具体
4、过程是:apt-get install aptitudeaptitude install build-essentialaptitude这个工具很强大,对于解决软件包安装时的依赖问题很有帮助。安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件:apt-get install gnome-core-devel 安装GTK核心组件: apt-get install libgtk2.0-dev 这个安装完成后,GTK环境就基本搭建成功,网上有些教程说要安装其他配置文件,经我亲测,发现只要安装libgtk2.0-dev这个包就能搞定。3.熟悉和理解Linux编程环境 (
5、1)实验内容:实现三个进程之间的并发程序:(2)计过程及实现:这里需要用到课程实验时的fork( )程序以及GTK的图形显示。 基本fork()程序,调用显三个进程的结构如下: #include #include #include #include void main(int argc,char argv) pid_t p1,p2,p3; pid_t t1,t2,t3; int status; if (p1=fork() = 0)/*创建第一个子进程*/ execv(./pa,argv); else if (p2=fork() = 0) /*创建第二个子进程*/ execv(./pb,argv
6、); else if(p3=fork() = 0)/*创建第三个子进程*/ execv(./pc,argv); else t1=waitpid(p1,&status,0); t2=waitpid(p2,&status,0); t3=waitpid(p3,&status,0); 调用GTK显示窗体函数模块的结构: void show(int argc,char *argv ,char *title ) gtk_init (&argc, &argv); /初始化工具包并且获取命令行参数; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /创建新的窗口;
7、 /设定窗口的位置; gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);/监听窗口的destroy事件;g_signal_connect (G_OBJECT (window), destroy, G_CALLBACK (destroy_progress), NULL); gtk_window_set_title (GTK_WINDOW (window), title);/用来设定更改窗口标题; gtk_container_set_border_width (GTK_CONTAINER (window), 20);/设
8、定宽度;/使用gtk_vbox_new函数建立纵向组装盒; /为了显示构件,必须将构件放入组装盒中,并将组装盒放在窗口内; vbox = gtk_vbox_new (FALSE, 10); gtk_container_set_border_width (GTK_CONTAINER (vbox), 100);/设定宽度; gtk_container_add (GTK_CONTAINER (window), vbox); gtk_widget_show (vbox); /使用gtk_box_pack_start函数将构件放到组装盒中; sprintf (id_char, %s ,My ID:%d,
9、 title,getpid ();/显示PID号 label = gtk_label_new (id_char); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10); gtk_widget_show (label); sprintf (id_char, 父进程ID:%d, getppid ();/显示PPID号 label = gtk_label_new (id_char); gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 10); gtk_widget_s
10、how (label); button = gtk_button_new_with_label (close);/关闭窗口按钮 /信号登记函数,监听按钮的clicked事件。/当窗口clicked时, gtk_widget_destroy 就会被调用。 /而 gtk_widget_destroy 函数又调用 gtk_main_quit() 结束程序运行。 g_signal_connect_swapped (G_OBJECT (button), clicked, G_CALLBACK (gtk_widget_destroy), window); gtk_box_pack_start (GTK_B
11、OX (vbox), button, FALSE, FALSE, 10); GTK_WIDGET_SET_FLAGS (button, GTK_CAN_DEFAULT); gtk_widget_grab_default (button); /函数显示窗口中的组件 gtk_widget_show (button); gtk_widget_show (window); /准备将窗口和所有的组件显示在屏幕上,函数必须在GTK程序的最后调用. gtk_main (); 编译代码main.c,运行;编译命令为:gcc -o a main.c pkg-config -cflags -libs gtk+-2
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 操作系统 课程设计 实验 报告
