实验四实验报告

北京电子科技学院(BESTI


课程:信息安全系统设计基础             班级:201352           

姓名:池彬宁 贺邦

学号:20135212 20135208

成绩:             指导教师:娄嘉鹏       实验日期:2015.12.1

实验密级:         预习程度:           实验时间:15:30-17:30

仪器组次:         必修/选修:必修          实验序号:3

实验名称:基于 S3C2410 的 linux 开发环境的配置和使用的基础上进行交叉编译

实验目的与要求:

  1. 在掌握基于 S3C2410 的 linux 开发环境的配置和使用的基础上进行交叉编译。
  2. 理解驱动程序的一般设计方法。
  3. 正确使用连接线等实验仪器,并注意保护实验箱。实验结束之后将实验箱送回。 

实验仪器:

名称

型号

数量

ARM

S3C2410

1

PC

WindowsXP

1

一、实验内容:

本次实验建立在掌握嵌入式开发平台使用方法和配置方法的基础上,要求使用windows xp,linux(red hat),arm三个系统(即NFS方式);在linux系统中安装arm系统,然后对01_demo文件夹中的.c文件进行交叉编译。

二、实验原理

  1. 什么是驱动程序?

目的:驱动程序是应用程序和硬件之间的一个软件层,为(许多个)应用程序提供硬件的所有功能。为了处理并发的情况,还需要考虑互斥量和锁等机制。

特点:应用程序一般有一个 main 函数,从头到尾执行一个任务;驱动程序却不同,它没有main函数,通过使用宏module_init(初始化函数名)。

用法:将初始化函数加入内核全局初始化函数列表中,在内核初始化时执行驱动的初始化函数,从而完成驱动的初始化和注册,之后驱动便停止等待被应用软件调用。驱动程序中有一个宏moudule_exit(退出处理函数名)注册退出处理函数。它在驱动退出时被调用。

2.接口实现方法

Open 方法

Open 方法提供给驱动程序初始化设备的能力,从而为以后的设备操作做好准备,此外open

操作一般还会递增使用计数,用以防止文件关闭前模块被卸载出内核。在大多数驱动程序

中Open 方法应完成如下工作:

1. 递增使用计数

2. 检查特定设备错误。

3. 如果设备是首次打开,则对其进行初始化。

4. 识别次设备号,如有必要修改 f_op 指针。

5. 分配并填写 filp->private_data 中的数据。

Release 方法

与 open 方法相反,release 方法应完成如下功能:

1. 释放由 open 分配的filp->private_data 中的所有内容

2. 在最后一次关闭操作时关闭设备

3. 使用计数减一

Read Write 方法

ssize_t demo_write(struct file *filp,const char * buffer, size_t count,loff_t *ppos)

ssize_t demo_read(struct file *filp, char *buffer, size_t count, loff_t *ppos)

read 方法完成将数据从内核拷贝到应用程序空间,write 方法相反,将数据从应用程序空

间拷贝到内核。对于者两个方法,参数filp 是文件指针,count 是请求传输数据的长度,

buffer 是用户空间的数据缓冲区,ppos 是文件中进行操作的偏移量,类型为64 位数。由

于用户空间和内核空间的内存映射方式完全不同,所以不能使用象memcpy 之类的函数,必

须使用如下函数:

unsigned long copy_to_user (void *to,const void *from,unsigned long count);

unsigned long copy_from_user(void *to,const void *from,unsigned long count);

三、实验步骤

①改写makefile文件,打开makefile 文件将其文件源部分替换为下列红色代码。

 

KERNELDIR = /usr/src/linux

#KERNELDIR = /arm2410cl/ kernel/linux-2.4.18-2410cl/

②进入make 所在文件夹,执行命令make ,进行编译。

 

 

③在/usr/src 下建立一个linux 连接。

 

④测试程序来进行测试。

 

四、实验遇到的感想和遇到的问题。

本次实验是在实验一的基础上进行的拓展,难度并不大,但是我们在做时候,总是提示insnod,mknod命令not found,老师说是armv4l工具包安装出错,但是,我们重装了很多次,换了很多台机器,都没有成功。后来,在redhat虚拟机登录root账户后,成功做出。(之前一直登陆的bc账户)后来分析可能是因为权限不够等原因。

转载于:https://www.cnblogs.com/L1nke/p/5027683.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值