20145209&20145309信息安全系统设计基础实验报告 (4)
实验步骤
阅读和理解源代码
demo_read,demo_write 函数完成驱动的读写接口功能,do_write 函数实现将用户写入的数据逆序排列,通过读取函数读取转换后的数据。这里只是演示接口的实现过程和内核驱动对用户的数据的处理。
代码:
#define DEVICE_NAME "demo"
static ssize_t demo_write(struct file *filp,const char * buffer, size_t count)
{
char drv_buf[];
copy_from_user(drv_buf , buffer, count);
…
}
static ssize_t demo_read(struct file *filp,char *buffer,size_t count,loff_t *ppos)
{
char drv_buf[];
copy_to_user(buffer, drv_buf,count);
….
}
static int demo_ioctl(struct inode *inode, struct file *file,unsigned int cmd, unsigned long arg)
{
}
static int demo_open(struct inode *inode, struct file *file)
{
}
static int demo_release(struct inode *inode, struct file *filp)
{
MOD_DEC_USE_COUNT;
DPRINTK("device release\n");
return 0;
}
static struct file_operations demo_fops = {
owner: THIS_MODULE,
write:demo_write,
read: demo_read,
ioctl: demo_ioctl,
open: demo_open,
release:demo_release,
};
#ifdef CONFIG_DEVFS_FS
static devfs_handle_t devfs_demo_dir, devfs_demoraw;
#endif
static int __init demo_init(void)
{
int result;
#ifdef CONFIG_DEVFS_FS
devfs_demo_dir = devfs_mk_dir(NULL, "demo", NULL);
devfs_demoraw = devfs_register(devfs_demo_dir, "0", DEVFS_FL_DEFAULT,
demo_Major, demo_MINOR, S_IFCHR | S_IRUSR | S_IWUSR,&demo_fops, NULL);
#else
SET_MODULE_OWNER(&demo_fops);
result = register_chrdev(demo_Major, "scullc", &demo_fops);
if (result < 0) return result;
if (demo_Major == 0) demo_Major = result; /* dynamic */
#endif
printk(DEVICE_NAME " initialized\n");
return 0;
}
static void __exit demo_exit(void)
{
unregister_chrdev(demo_major, "demo");
kfree(demo_devices);
printk(DEVICE_NAME " unloaded\n");
}
module_init(demo_init);
module_exit(demo_exit);
Open方法
- Open方法提供给驱动程序初始化设备的能力,从而为以后的设备操作做好准备,此外open操作一般还会递增使用计数,用以防止文件关闭前模块被卸载出内核。 •递增使用计数
- 检查特定设备错误。
- 如果设备是首次打开,则对其进行初始化。
- 识别次设备号,如有必要修改 f_op 指针。
- 分配并填写 filp->private_data 中的数据。
编译驱动模块及测试程序
- 在 Makefile 中有两种编译方法,可以在本机上使用gcc 也可以使用交叉编译器进行编译,我们组采用交叉编译器进行编译。
测试驱动程序
- 如果使用 gcc 编译的话,需要通过下面的命令来建立设备节点,如果使用交叉编译器的话,不需要建立设备节点。
修改makefile

make编译

实验结果

make错误,需要创建一个bin文件夹

20145209&20145309信息安全系统设计基础实验报告 (4)的更多相关文章
- 20145220&20145209&20145309信息安全系统设计基础实验报告(5)
20145220&20145209&20145309信息安全系统设计基础实验报告(5) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132249 ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(3)
20145220&20145209&20145309信息安全系统设计基础实验报告(3) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132243 ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(4)
20145220&20145209&20145309信息安全系统设计基础实验报告(4) 实验报告链接: http://www.cnblogs.com/zym0728/p/6132246 ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(2)
20145220&20145209&20145309信息安全系统设计基础实验报告(2) 实验报告链接: http://www.cnblogs.com/zym0728/p/6083664 ...
- 20145220&20145209&20145309信息安全系统设计基础实验报告(1)
实验贡献:韩旭飞 刘一阳 李昊实验报告贡献:李昊 刘一阳 韩旭飞 PART1 一.实验原理 交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码.同一个体系结构可以运行不同的操作系统:同样 ...
- 20145209&20145309信息安全系统设计基础实验报告 (5)
班级:1452 1453 姓名:20145309李昊 20415209刘一阳 20145220韩旭飞 实验日期:2016.12.1 时间:10:10-12:30 实验序号:5 实验目的: 掌握在 AR ...
- 20145209&20145309信息安全系统设计基础实验报告 (3)
实验内容.步骤与体会: 实验过程的理解,实验指导书中知识点的理解. (1)为什么在双击了GIVEIO和JTAG驱动安装文件后还需要手动进行配置? 因为安装文件只是将驱动文件释放了出来,并没有在系统中将 ...
- 20145215&20145307信息安全系统设计基础实验报告
20145215&20145307信息安全系统设计基础实验报告 PART1 一.实验原理 交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码.同一个体系结构可以运行不同的操作系统 ...
- 信息安全系统设计基础实验一:Linux开发环境的配置和使用
北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础 班级:1353 姓名:芦畅 傅冬菁 学号:20135308 20135311 成绩: 指导教师:娄家鹏 ...
随机推荐
- 技术:使用Amazon S3接口云存储(Java版)
http://blog.sina.com.cn/s/blog_6c7c14270102wait.html
- Mac 自带 apache
1.启动服务器 sudo apachectl start http://localhost 能访问就ok sudo apachectl stop sudo apachectl restart ht ...
- java中的URLConnection和HttpURLConnection
URL url = new URL(strUrl); URLConnection con = url.openConnection(); URL url = new URL(strUrl); Http ...
- HDU5863 cjj's string game(DP + 矩阵快速幂)
题目 Source http://acm.split.hdu.edu.cn/showproblem.php?pid=5863 Description cjj has k kinds of charac ...
- BZOJ3588 : fx
考虑从左往右填数,维护当前数字权值与$A$权值的差值,如果差值大于9,那么以后无论怎么填,都不会改变大小关系. 所以设$f[i][j][k]$表示填了前$i$位,差值为$j$,是否卡住$B$上限为$k ...
- Haskell 笔记 ②
①如何写一个求阶层函数? fac 0 =1 fac n=n*fac(n-1) 函数自适应匹配参数,可以把特判情况写在前面,注意按顺序匹配的,n这种万能情况写在最前面就完蛋了.同时你也注意到,函数只能一 ...
- struts.properties配置详解
Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等.除此之外,Struts 2框架还包含 st ...
- ROW_NUMBER() OVER函数的基本用法
转自:http://www.cnblogs.com/icebutterfly/archive/2009/08/05/1539657.html 语法:ROW_NUMBER() OVER(PARTITIO ...
- Android & iOS 第三方 Crash ANR 捕捉上传
1. Bugly 地址:http://bugly.qq.com/ 提供:专业的Crash(崩溃).Android ANR(application not response).iOS卡顿监控和解决方案. ...
- Zepto Code Rush 2014 B - Om Nom and Spiders
注意题目给的是一个nxm的park,设元素为aij,元素aij 有4种可能U(上移),D(下移),L(左移),R(右移) 假设第i行第j列元素aij(注意元素的索引是从0开始的) 当aij为D时,此时 ...