嵌入式操作系统实训报告Word下载.docx

上传人:b****2 文档编号:3830341 上传时间:2023-05-02 格式:DOCX 页数:13 大小:21.30KB
下载 相关 举报
嵌入式操作系统实训报告Word下载.docx_第1页
第1页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第2页
第2页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第3页
第3页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第4页
第4页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第5页
第5页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第6页
第6页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第7页
第7页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第8页
第8页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第9页
第9页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第10页
第10页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第11页
第11页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第12页
第12页 / 共13页
嵌入式操作系统实训报告Word下载.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式操作系统实训报告Word下载.docx

《嵌入式操作系统实训报告Word下载.docx》由会员分享,可在线阅读,更多相关《嵌入式操作系统实训报告Word下载.docx(13页珍藏版)》请在冰点文库上搜索。

嵌入式操作系统实训报告Word下载.docx

3修改board/tekkaman/tekkaman2410/Makefile文件

4修改include/configs/tekkaman2410.h文件,添加如下内容:

5修改board/tekkaman/tekkaman2410/lowlevel_init.S文件

依照开发箱的内存区的配置情况,修改board/tekkaman/tekkaman2410/lowlevel_init.S文件

6修改/board/tekkaman/tekkaman2410/tekkaman2410.c......

8在include/linux/mtd/nand_ids.h的结构体nand_flash_ids加入

staticstructnand_flash_devnand_flash_ids[]={

......

{"

SamsungKM29N16000"

NAND_MFR_SAMSUNG,0x64,21,1,2,0x1000,0},

SamsungK9F1208U0M"

NAND_MFR_SAMSUNG,0x76,26,0,3,0x4000,0},

Samsungunknown4Mb"

NAND_MFR_SAMSUNG,0x6b,22,0,2,0x2000,0},

......

{NULL,}

};

9修改/lib_arm中的board.c。

10修改common/env_nand.c

11在/board/tekkaman/tekkaman2410/tekkaman2410.c文件的末尾添加对NandFlash的初始化函数

u-boot运行至第二阶段进入start_armboot()函数。

其中nand_init()函数是对nandflash的最初初始化函数。

Nand_init()函数在两个文件中实现。

其调用与CFG_NAND_LEGACY宏有关,如果没有定义这个宏,系统调用drivers/nnd/nand.c中的nand_init();

否则调用自己在board/smdk2410/smdk2410.c中的nand_init()函数。

3C2410_GetBase_NAND();

12修正U-Boot的NE2000驱动的低级错误

将第45行:

at*/

改为:

at

13因为没有NorFlash芯片,所以注释掉/common/cmd_bootm.c中关于imls命令的程序段和/common/cmd_flash.c中的程序。

不然,按上面的修改,编译会出错。

三、交叉编译U-Boot

二)、移植Linux2.6.24.7到博创2410

操作系统:

ubuntu9.04

交叉编译工具:

arm-linux-gcc-4.1.1

开发板:

2410-S(s3c2410s)

一、下载并解压Linux2.6.24.7内核源码

从网上下载linux-2.6.24.7内核源码到/arm2410s目录下,并解压

进入内核解压后的目录

二、修改内核源码根目录下的Makefile文件

修改Makefile中的ARCH和CROSS_COMPILE变量,修改为

ARCH=arm

CROSS_COMPILE=arm-linux-

三、设置nandflash分区信息

修改arch/arm/plat-s3c24xx/common-smdk.c文件,修改NandFlash的分区信息和NandFlash的硬件信息。

修改的内容如下:

staticstructmtd_partitionsmdk_default_nand_part[]={

[0]={

.name="

vivi"

.size=SZ_128K,

.offset=0,

},

[1]={

param"

.offset=SZ_128K,

.size=SZ_1M-SZ_128K,

[2]={

kernel"

.offset=SZ_1M,

.size=SZ_1M*3,

[3]={

root"

.offset=SZ_4M,

.size=SZ_4M*5,

[4]={

user"

.offset=SZ_4M*6,

.size=SZ_4M*10,

四、禁止nandflash的ECC校验

修改文件drivers/mtd/nand/s3c2410.c文件,查找函数s3c2410_nand_init_chip(),在函数的最后一行,添加chip->

ecc.mode=NAND_ECC_NONE;

五、增加yaffs2文件系统的支持

1、下载Yaffs2到~/arm2410s目录下

2、解压Yaffs2并将其加入Linux内核(打补丁的方式)

六、博创2410所配网卡AX88796(NE2000兼容网卡)驱动的移植。

1、修改arch/arm/Kconfig文件,增加ISA总线支持,使其在makemenuconfig时出现NE2000的网卡配置选项。

2、修改include/asm-arm/arch-s3c2410/map.h文件。

加入AX88796的地址映射。

3、修改arch/arm/mach-s3c2410/mach-smdk2410.c文件。

在smdk2410_iodesc中加入AX88796的地址信息。

4、修改网卡驱动的主要文件drivers/net/ne.c

(1)、添加头文件和定义

(2)、确保定义总线宽度为16位。

(3)、在do_ne_probe函数中增加配置总线参数、基地址和中断的语句

(4)、修改ne_probe1函数

七、配置内核

1、载入up2410的默认配置文件,以简化配置过程

2、手动配置内核,在s3c2410_defconfig基础上,增加以下配置选项:

产生.config文件。

八、编译内核

内核的编译操作

makemenuconfig配置编译选项

makedep提供变量依赖关系信息

makeclean删除生成的模块和目标文件

makezImage编译内核生成压缩的映像

makemodules编译模块

至此,内核的编译工作完成,在arch/arm/boot目录下生成了zImage文件,即为压缩的内核映像。

最后,将内核镜像烧写到博创arm2410s开发板上,启动正常,网卡也正常

三)、使用BusyBox制作linux根文件系统(CramFS+mdev)

操作系统:

Ubuntu9.04

内核版本:

linux-2.6.24.7

开发板:

博创arm2410s

交叉编译工具:

arm-linux-gcc-4.1.1

BusyBox:

busybox-1.11.1

CramFS:

CramFS-1.1

一、准备根文件系统

使用shell脚本create_rootfs.sh,建立根文件系统的目录框架

vicreate_rootfs.sh

create_rootfs.sh内容如下:

#!

/bin/sh

echo"

------Createrootfsdirectons......"

mkdirrootfs

cdrootfs

--------Createroot,dev......"

mkdirrootdevetcbinsbinmntsysproclibhometmpvarusr

mkdirusr/sbinusr/binusr/libusr/modules

mkdirmnt/usbmnt/nfsmnt/etcmnt/etc/init.d

mkdirlib/modules

chmod1777tmp

cd..

-------makedirectiondone---------"

为create_rootfs.sh添加执行权限

chmoda+xcreate_rootfs.sh

执行create_rootfs.sh,建立根文件系统的目录框架

$./create_rootfs.sh

二、创建设备文件

mdev是通过init进程来启动的,在使用mdev构造/dev目录之前,init至少要用到设备文件/dev/console、/dev/null,所以需要事先建立这两个设备文件

$cddev

$sudomknod-m660consolec20464

[sudo]passwordforlingd:

$sudomknod-m660nullc13

$ls-l

total0

crw-rw----1rootroot5,12010-04-0215:

49console

crw-rw----1rootroot1,32010-04-0215:

50null

三、准备一些配置文件和系统启动时所需的文件

1、mdev配置文件mdev.conf

mdev会在/etc目录下找mdev的配置文件:

mdev.conf.如果该文件不存在,那么在执行mdev–s这个命令时,会提示找不到mdev.conf。

我们不需要mdev规则,所以只是touch生成一个空文件就OK了。

当然也可以根据mdev的规则来编写mdev.conf。

$cd../mnt/etc

$touchmdev.conf

$ls

init.dmdev.conf

2、linuxrc

linuxrc位于根文件系统的顶层目录/,这里为rootfs。

/Linuxrc执行init进程初始化文件。

主要工作是把已安装根文件系统中的/etc安装为ramfs,并拷贝/mnt/etc/目录下所有文件到/etc,这里存放系统启动后的许多特殊文件;

接着Linuxrc重新构建文件分配表inittab;

之后执行系统初始化进程/sbin/init。

3、rcS

rcS文件位于/etc/init.d,是busybox版init第一个运行的脚步(常见的init还有SysVinit版,其第一个执行的脚步是/etc/rc.d/rc.sysinit)。

/mnt/etc/init.d/rcS完成各个文件系统的mount,再执行/mnt/etc/rc.local;

通过rcS可以调用ifconfig程序配置网络。

rcS执行完了以后,init就会在一个console上,按照inittab的指示开一个shell,或者是开getty+login,这样用户就会看到提示输入用户名的提示符。

4、/etc/rc.local

/etc/rc.local是被init.d/rcS文件调用执行的特殊文件,与Linux系统硬件平台相关,如安装核心模块、进行网络配置、运行应用程序、启动图形界面等。

5、/etc/profile

rc.local首先执行该文件配置应用程序需要的环境变量等。

6、/etc/inittab

内核引导完成后,内核会启动初始化进程init(用户级进程)来进行系统的各项配置。

init是系统第一个进程,它是系统上运行的所有其他进程的父进程,他会观察其子进程,并在需要时启动、停止、重启它们。

init主要是用来完成系统的各项配置。

init从/etc/inittab获取所有信息。

/etc/inittab内容如下:

#/etc/inittab

:

sysinit:

/etc/init.d/rcS

console:

askfirst:

-/bin/sh

ctrlaltdel:

/sbin/reboot

shutdown:

/bin/umount-a-r

7、/etc/fstab

文件/etc/fstab存放的是系统中的文件系统信息。

当正确的设置了该文件,则可以通过"

mount/directoryname"

命令来加载一个文件系统,或mount-a来加载该文件中所有文件系统。

每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。

同时fsck、mount、umount的等命令都利用该程序。

$vifstab

/etc/passwd文件存放着所有用户的信息,包括账号和密码。

内容如下:

#username:

password:

UserID:

GroupID:

comment:

homedirectory:

shell

root:

x:

0:

/root:

四、编译busybox

首先修改Makefile,将以下两项改为

CROSS_COMPILE=arm-linux-

配置busybox,

$make

$makeinstall

五、lib库文件复制到rootfs/lib目录下(根据需要复制)

六、生成Cramfs文件系统镜像文件。

Cramfs.img在cramfs-1.1目录下会出现两个bin文件mkcramfs和cramfsck把他们copy到/usr/bin:

创建根文件系统的cramfs镜像

$mkcramfs../rootfsCramFS01.img

Directorydata:

6020bytes

Everything:

908kilobytes

Superblock:

76bytes

CRC:

526c6bb5

warning:

gidstruncatedto8bits(thismaybeasecurityconcern)

COPYINGcramfsckGNUmakefilemkcramfsNOTES

CramFS01.imgcramfsck.clinuxmkcramfs.cREADME

测试一下刚生成的CramFS01.img:

$sudomount-oloop-tcramfs~/CramFS01.img/mnt/usb

$ls/mnt/usb

查看是否有bin、etc等目录在ubuntu软件源里zlib和zlib-devel叫做zlib1gzlib1g.dev

四)、内核驱动设计入门-模块方式驱动实验

一、在LinuxPC机上进行

1.修改Makefile文件两个地方

a.注释CROSS_COMPILE=arm-linux-这一行

b.修改KERNELDIR?

=/usr/src/kernels/2.6.9-42.EL-smp-i686/

makeclean;

make

生成demo.ko

2.用insmod命令插入设备驱动

#insmoddemo.ko

#cat/proc/devices

3.用mknod命令建立demo设备节点

#mkdir/dev/demo

#mknod/dev/demo/0c2530

4.运行测试程序

#./test_demo

write32bytesdatato/dev/mydemo

0123

1:

4567

2:

891011

3:

12131415

4:

16171819

5:

20212223

6:

24252627

7:

28293031

*****************************************************

Read32bytesdatafrom/dev/mydemo

31302928

27262524

23222120

19181716

15141312

111098

7654

3210

5.删除设备节点[root@vm-devdemo_driver]#rm-f/dev/demo

二.完善代码部分

1.分析Makefile文件,把为PClinux编写的Makefile文件改写为ARM开发平台编写的Makefile文件

a.去掉注释CROSS_COMPILE=arm-linux-这一行

=/home/hq/kernel/linux-2.6.24.4(开发板的内核目录)

三、编译驱动模块及测试程序

按第二部分完善代码后,用make命令编译驱动和测试程序

$make

armv4l-unknown-linux-gcc-c-I..-Wall-O-D__KERNEL__-DMODULE

-I/arm2410dev/kernel-2410dev/includedemo.c-odemo.o

demo.c:

108:

warning:

initializationfromincompatiblepointertype

-I/arm2410dev/kernel-2410dev/includehello.c-ohello.o

armv4l-unknown-linux-gcc-I..-Wall-O-D__KERNEL__-DMODULE

-I/arm2410dev/kernel-2410dev/include-c-otest_demo.otest_demo.c

armv4l-unknown-linux-gcctest_demo.o-otest_demo

下面使用测试程序来进行测试,按照上面步骤成功后会出现下面的结果:

#./test_demo

write32bytesdatato/dev/demo

Read32bytesdatafrom/dev/demo

23222111

201098

如果模块没有成功插入的话,会出现下面的情况:

#./test_demo

####DEMOdeviceopenfail####

在驱动模块成功插入后,会在

/dev下面建立一个叫做demo用的设备文件,我们也可以使cat命令来直接调用read函数,来测试读过程。

#cat/dev/demo

deviceopensuccess!

四、心得体会

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2