《2023年linux嵌入式实验报告.docx》由会员分享,可在线阅读,更多相关《2023年linux嵌入式实验报告.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大连理工大学本科实验报告实验名称:嵌入式操作系统学院(系):计算机学院实验专 业: 计算机系班 级:070 3学 号:学生姓名:m q 1 z202 3 年 1 2 月 6 H实验一:linux内核裁剪# i nclude / * COPY_TO_US ER*/static struct f il e _opera t ions m y driv e r_op s =o w r i t e : mydriver_w r it e ,r e ad:mydr i ver_re a d,oopen: mydr i ver_ope n ,release:。m y driver_r e lease, ;
2、int i n it mydriv e r_ i nit(vo i d) “nt re s ult;” e g i ster_chrdev(demo_M A JOR,Hmy d r i verl d r ive r _ops); 4f( r e sult0) oprin t k(nregister e rrn );return r e sul t ;/ / printk(DEVI C E_N A ME nin i t o kn n );叩ri ntk (nin i t oknH);r e t ur n 0;vo i d exi t mydriver_e x it(void) unregi s
3、te r _chrdev(d e mo_MAJO R , mydriverl);V/p r i ntk(D E VIC E N A ME H e x i toknn);叩 ri ntk ( n exi t o kn n );modul e _in i t(mydrive r _ini t );mod u 1 e exi t (m y d r iver_e x it);3、 编译文献Makefi 1 eDI R =/u s r/src / linux_2.4.2 0 -8C C= armv41un k nown-linuxg c cFLG=-D KERNEL_ -DMODULE - I $(D
4、I R)/includ ea 1 l:mydr i v e r . c,$(CC) -c $(F LG) $Aclean:rm f * o /4、 动态安装(1)创建设备文献。m k nod /dev/mydriver c ma j or minorc是指字符设备,ma j or是主设备号,就是在/p r oc/d evice s里看到的。minor是从设备号,设立成0就可以了。安装设备, in s mod - f myd r i v e r .o假如安装成功,在/proc/devices文献中就可以看到设备my d r i ver,并可以看到它的主 设备号。(3)卸载设备$ rmmod my
5、d r i v er总结报告一、实验结果编写的驱动程序很好的运营,完毕预定的功能二、实验总结通过一天的实验,让我学会了很多以前没有接触过的有趣的知识进一步的掌握了 linux 环境下的一些she 命令和对v i的运用,但是在里面也碰到了一些问题,比如编完程序 由于对编译工具make的掌握不够纯熟又不想照搬书上的东西,所以花了很长时间在研 究ma k e上,导致最后的实验进度落后同学很多,但是最终还是学会了写makefil e文献 的方法,最后写出了一个完美的ma kefi 1 e文献,通过这个实验使我对1 i nux驱动编程产 生强烈的爱好,以后的生活中linux的应用场合一定会越来越多,比如
6、andr o id,假如掌握 它的驱动开发对以后的工作会非常有帮助。预习报告一、实验目的:1、了解Linux内核源代码的目录结构及各目录的相关内容2、了解Linux内核各配置选项内容和作用3、掌握Linux内核配置文献的作用4、握Li nux内核的编译过程5、掌握将新增内核代码加入到Lin ux内核结构中的方法二、实验原理L i nux对于计算机硬件、网络和文献系统等部件的驱动程序支持既可以放在系统 内核中,也可以作为一个可加载的模块(modules)使用。必当驱动程序放在系统内核中时, Li nux假定该硬件是存在于系统中的;而作为可加载模块使用时,只有在知道该硬件 存在于系统时才会作为系统
7、内核的一部分,当Lin u x检测到硬件时,该模块才被加 入到系统内核中。三、实验环节1、检查编译器的版本用低版本的编译器去编译高版本的内核有也许不能编译或 使内核不能使用。要查看编译器版本,可以执行命令:A#g C C -V”进入系统内核源代码目录。一般系统内核的源代码放在/usr/src/目录下。用1 s -1命令 查看也许显示如下:用Is - 1 /u s r / s rcT o tai 3 oAJrw x rwxrwx 1 root root, 1 2 M a y4 14:36linux2.4-linux-2.4.2 0-8o d r w xr- x rx1 5 root root 1
8、 0 2 4 May 1 4 11: 37 lin u x -2.4 . 20-8A d r wxr- x r -x 3r o ot root 1 024 May 4 14:38 sendmai 1 4G 其中、L i nux 2.4是一个链接文献,它的链接目的是指向linux-2 . 4. 20-8 目录,因此、cd li n ux-2.4 就是进入 lin u x-24 2。-8 目录。2、删除过时的目的文献A进入/usr/src/lin UX2. 4. 20-8目录,运营make mrproper命令以清除过时、旧的目的文献。这是由于通过多次编译后系统会 留下部分目的文献,假如没有清除干
9、净也许导致本次编译犯错。假如没有编译过或者是 系统升级的新解压缩目录,则这一环节可以省略。3、重新设立系统内核配置系统内核的目的是建立一个适合大小、满足需求的系统内核;因此,用户必须根据自 己所设计系统的需要对Linux系统支持的硬件和软件进行适当淘汰,即从配置内容中选 择相应的硬件类型和合适的设备驱动程序。不同的内核版本显示的配置内容有所不同, 这里以Linux内核2-420版本为例说明。配置内容共有35个类别,如下表所示:编 号类别含义1Co d e m a turi t y 1 ev e 1 op t ion s代码成熟级别2Loadab 1 e modu 1 e suppo r t可装
10、载模块支持3P r o c e ssor type and f e atu r es解决器类型与特性4G e neral set u p一般设立5Memory T e c h n ology Dev i ceMTD设备支持6Par a 1 1 el port s upport并行口支持7P 1 ug a n d Play config u rat i o n即插即用支持8Block de v i c e s块设备支持9Multi-devic e su p p ort (RAID an d L VM)多设备支持10C r ypto g raphy su p po r t密码系统支持11N etw
11、or k in g options网络选项1 2Tel e p hon y Support电话支持13ATA/IDE/MFM/RLL suppor t多种接口存储设备支持1 4S C SI sup p ortSCSI设备的支持1 5Fusi o n MPT d e vice suppo r tFu s ion MPT设备支持16IEEE 13 94 (FireW i re) su p p ortIEEE 1394防火墙设备支持1712 0 dev ices uppor t120设备支持18N e two r k devi c e s u pp o r t网络设备支持1 9Amateur R a
12、 dio s u p p or t业余无线电支持20I r D A (infrared) s up p ort红外线支持21IS DN sub s y s t emISDN子系统22Old CD-R OM dr i ve r s(not S C SE notIDE)非 SCSI/IDE 接口的 CD-ROM 设备23i nput core s u p po r t输入核心支持24Char act e r d ev i ce s字符设备25Multimedia devi c es多媒体设备26Cryp t o Hardwar e su p portC r y p t 0硬件支持27F i le
13、s ystems文献系统28Cons o 1 e dr i v e rs控制台驱动29Soun d声卡驱动30USB su p protUS B支持31A d di t i o nal d e vice driv e r support附加设备驱动支持32B luet o oth s up p ort蓝牙支持33p rofilin g supportProfi ling 支持34Ke r nel hacki n g内核分析35L ib r a ry r outine s库例程4、编译系统内核 当配置完毕并保存退出后就要重新编译系统内核。系统一般会在配置结束时提醒要进行 make dep操作。4
14、运营带有c 1 e an和dep选项的mak e文献以清除过时的目的 文献并建立合适的独立性(假如要对的编译代码,必须要满足该规定)。命令为:om a ke d ep ma k e c 1 e a ns假如没有出现错误提醒,就可以运营 make z Image 命令,该命令将在 /us r /s r c/ 1 inux-2. 4. 2 O-8/arch/i3 8 6/b o ot 目录下生成 一个全新的内核。该内核文献名称为zl mage,使用中注意大小写。假如给内核添加了许多驱动程序或各种各样的支持,也许需要使用 make b z Image 命令,该命令可以制作出一个很大的内核映象文献,该
15、文献可以带所有的选项进行启动。 一般当编译的内核较大时系统会推荐内核命名为bz Ima g eo假如看到类似于以下的提醒信息,就表达已经完毕了内核创建工作。aR。t devi c e is (3, 1)Boo t s e c tor x x x byt e s.S e t up is x x xx b y tes. aSystemis x x x kBSy n a k e 1 : Le a v i ng dire c tor y 7u s r / s r c /linux- 2 .4.20-8/ar c h/i386/ b oot aw这时在 /usr/ s r c / 1i nu x -2.
16、 4 .20-8/ arch/ i 38 6 /bo o t 目录下生成一个 zlmag e 或 bz I mag e 文献; 假如没有这个文献说明编译中有错误,导致编译错误的因素也许有:内核配置有问题,应重新配置后再编译O A内核源代码有问题,应尽量选用稳定的内核(版 本号为偶数)版本。A文献连接的问题。系统硬件的兼容性问题也也许导致内核编译失败。内核编译完毕后,由于有些模块并没有编译进内核、而是通过加载的(选择m”);所以 需要编译、安装模块。命令为:必make modul e smak e mod u 1 e s _inst a 1 1,重新编译内核的过程,会花费比较多的时间;具体的时间
17、取决于你选择内核的大小、解决 器的速度等因数。一般在嵌入式系统中内核比较精悍,编译过程会比较快;此外、假如没有运营其他的负载密集型的应用程序(如X图形程序),编译过程会更快。5、启用新系统内核以上各个环节完毕之后,就可以准备启用新的系统内核来工作了。假如你没有采用GRU B或LILO等引导程序进行多培、配置启动,则一定要备份正在使用的系统内核。在启用新的系统内核前,作好正在使用的系统内核备份是非常重要的! 一旦新系统内核崩 溃,用应急启动盘进入Linux系统,恢复旧系统内核。制作环节如下:。 cd / b oota m v vmlinuz-2.4. 2 0-8 vmli n u z . o I
18、d# 现有的内核更名cp /u s r / src/li n ux- 2 .4. 20-8 / arch/i38 6 / boot / z Imag e / b o ot# 复制新内核到/ boot目录假如你用GRUB或LILO配置文献启动,则要修改该文献。以grub.conf文献为例 default = Otim e out= 1 Ospl a shimage=(hd 0 , 1 )/b o ot/ g rub / s pl a sh.xpm. g zt i tl e Red Hat L inux (2.4.2 0 -8)r o o t (h d 0, 1 ) aker n el /boot
19、/vmlin u z 2 .4.20- 8 r o r o ot=LA B EL=/M n i t rd /boot / initrd2. 4 . 2 0-8 .imgt i t 1 e WinXProo t nover i f y (hdO, 0 )c hai n loade r + 1 a第一种方案,不增长启动选项:把 gr u b. c o n f 文献中的以下行:a k er n e 1 / b oot/ v mli n uz 2.4. 2 0 8 ro root二 L ABE L -I改为:a kern e 1 /boot/ z Image r o root= LABEL 二/6、试
20、用新的内核启修改后保存文献,假如是用LILO 一定要在超级用户提醒符下执行lilo或1 il。- v命 令以使配置文献生效;假如用GRUB则无须执行命令。重启系统后则可以用Linux新 的内核启动了。总结报告一、实验结果在另一终端中打开m i nicom,复位开发板,进入PPCBoot的命令行界面,执行下面两行 语句aS MDK 2 4 1 0 # s e tenv b o o t a r g s c onsol e =ttySA C 0 i n itrd=Ox 3 0 8 00 0 0 0 , 0 x 00440 00 0 ro o t =/ d ev/ram i nit=/linux r
21、aS MDK24 1 0 #tf t p 0x30 0 080 0 0 z Image; g o 0 x 30 0 08000足注意:4上述两行语句中的ttySACO、0 x0 0 4 40 0 00部分,跟第一部分内核移植是不同的。这里测试没有使用ramdisk文献系统,因素是前面移植的文献系统不能在这个内 核下使用,需要移植更高版本的b usybox才干使用。出现如下信息,。s 1131g I /1vix . . * * * olo n e,o o t in g t.Li n ux version . 5 (n) (arm linu x - g c c versio n 3.4. 1) #
22、7 Sun S e p 2 14:24:4 3 CST 2 02 3CPU: ARM920 T 41129200 re vis i on 0 (ARMv4T), cr= c 00 0 7 177AMachine: SMDK2410 ATA G_INITRD i s d 叩 re cat e d ; p le a se update your bo o (loader a Mem o r y policy: E CC disabled, D a ta c ach e wri t eb a c kCPU S3C2 410(id 0 x 3 2 4 1 0 0 00) aS3c2 4 1 0 : c
23、ore 20 2 .8 0 0 MHz, memory 1 01 .400 MHz, peri p h e ral 50.70 0 MHzS3C24XX C1 o ck s , (c) 20 2 3 Simtec Electronics表白内核可以运营在开发板上,实验成功二、实验心得Linux内核看似偃庞大,其实对于初学者来说,我们不必学习之初就一头钻进浩如烟海 的内核代码中问剑;纯熟配置内核的一些常用选项,并编译出来下载到开发板中运营试 用,也是迈向Linux系统顶峰的必行之路。本周本来想制作自己的内核镜像和根文献系 统,后来发现这并非易事,最后放弃了自己制作,而选择配置开发板的内核文献,其
24、实学 习Linux不像单片机系统,你不必从“零”代码开始,一切先从学会配置、编译、下载 运营开始。几天的学习中,在老师的帮助下学到很多有用的知识收获很大。实验一:li nux下串口驱动开发预习报告一、实验目的:1、学习在linux下进行驱动设计原理2、掌握使用模块方式进行驱动开发调试的过程二、实验内容:1、编写虚拟硬件驱动程序,实验驱动的各个接口函数的实现,分析理解驱动与应用程 序的交互过程。2、编写应用程序加以验证。三、实验环节:1、 实验任务:编写一驱动,实现将用户输入的数据,顺序排序2、实验代码:# de fine KERNEL# define MOD U LE#incl u de # i nclude #inc 1 u d e # incl u d e # i n c lu d e /* printk() */#inc 1 ude / * kmallo c () * /# inc 1 u d e /* ever ything. */#in c 1 ude /* s i z e t */# i n clud e #incl u de /* 0 ACCMODE* /