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文件夹

时间: 2025-01-13 16:03:06

20145209&20145309信息安全系统设计基础实验报告 (4)的相关文章

2014520&amp;20145209&amp;20145309信息安全系统设计基础实验报告

20145215&20145307信息安全系统设计基础实验报告 PART1 一.实验原理 交叉编译,简单地说,就是在一个平台上生成另一个平台上的可执行代码.同一个体系结构可以运行不同的操作系统:同样,同一个操作系统也可以在不同的体系结构上运行.在Linux PC上,利用arm-linux-gcc编译器,可编译出针对Linux ARM平台的可执行代码. 二.实验内容与步骤 1.连接arm开发板 首先连接电源线,使开发板的开关处于闭合状态,再分别将串口线.并口线.网线和USB线与PC机连好.连接串口

20145209&amp;20145309信息安全系统设计基础实验报告 (5)

班级:1452 1453 姓名:20145309李昊 20415209刘一阳 20145220韩旭飞 实验日期:2016.12.1 时间:10:10-12:30 实验序号:5 实验目的: 掌握在 ARM 开发板实现一个简单 WEB 服务器的过程 . 学习在 ARM 开发板上的 SOCKET 网络编程 . 学习 Linux 下的 signal()函数的使用 . 实验内容 阅读并理解源代码 进入/arm2410cl/exp/basic/07_httpd 目录,使用vi 编辑器或其他编辑器阅读理解源代

20145209&amp;20145309信息安全系统设计基础实验报告 (3)

实验内容.步骤与体会: 实验过程的理解,实验指导书中知识点的理解. (1)为什么在双击了GIVEIO和JTAG驱动安装文件后还需要手动进行配置? 因为安装文件只是将驱动文件释放了出来,并没有在系统中将这个硬件设备添加进去,所以需要手动处理. (2)开发板是怎样进入linux和vv模式? 在成功连接开发板后,如果键入回车Enter键,就进入linux模式,键入其他任何键,进入vv模式 实验大致步骤 安装ADS(先卸载再安装) 安装成功后倒入证书破解文件 按照实验指导书对几个驱动进行安装 编译Exp

20145317信息安全系统设计基础实验报告

1 连接arm开发板 首先连接电源线,使开发板的开关处于闭合状态,再分别将串口线.并口线.网线和USB线与PC机连好.连接串口线时接左端的串口. 2 建立超级终端 新建一个通信终端,取名为arm.在属性对话框中,将波特率设为 115200,数据位设为 8,无奇偶校验,停止位为 1,无数据流控制 3 启动实验平台 先打开超级终端,再打开arm机电源开关.等arm机的信息显示在超级终端的窗口中.输入 ifconfig 命令,记录下arm机的ip 4.修改xp系统与redhat虚拟机的ip均与arm机

信息安全系统设计基础实验一报告

信息安全系统设计基础实验一 实验报告封面: 一.实验过程 1. 连接arm开发板 将arm开发板电源线接好,保持开发板开关处于闭合状态.再分别将串口线.并口线和网线与pc机连接好. 2. 建立超级终端 运行windows XP系统下“开始”.“所有程序”.“附件”.“通讯”.“超级终端”.新建一个通信终端,取名为arm.在属性对话框中,将波特率设为115200,数据位设为8,无奇偶校验,停止位为1,无数据流控制.另存为在桌面. 3. 启动实验平台 打开超级终端,打开arm机电源开关.等待一分钟后

信息安全系统设计基础实验二报告

信息安全系统设计基础实验二 实验报告封面: 一.实验过程 1. 配置开发环境同实验一 设置xp系统.redhat虚拟机.arm机的ip在同一网段. 安装arm编译器. 进入虚拟机,在命令行中输入./install.sh,安装脚本程序将会自动建立目录,配置编译环境. 配置环境变量 2. 将实验代码02_ pthread和03_tty拷贝到共享文件夹bc中. 3. 阅读源代码 进入 exp/basic/02_pthread 目录,使用vi 编辑器或其他编辑器阅读理解源代码. 4. 编译应用程序 5.

20145209 《信息安全系统设计基础》第0周学习总结

20145209 <信息安全系统设计基础>第0周学习总结 教材学习内容总结 一.师生关系: 最好的师生关系是健身学员与健身教练的关系.这种关系的前提就是学员即学生必须以自己学习为前提,在学习的过程中接受老师的指导,才能真正提高和进步.老师安排任务只能更具大多数人的水平,并不能完全的更具 你自己的能力给你最好的学习模式,只有通过自己对自己的了解,探索出自己的学习方式,在此期间向老师提出疑问与不解才能真正的进步. 二.习而学的要点: 找到学习共同体:因为大量知识存在于学习共同体的实践中,不是书本中

信息安全系统设计基础——实验二实验报告

北京电子科技学院(BESTI) 实     验    报     告 课程:信息安全系统设计基础                       班级:1352班 姓名:齐岳 孙小博 何伟钦 学号:20135203 20135217 20135223 成绩:             指导教师:娄佳鹏         实验日期:2015.11.17 实验密级:  无       预习程度:            实验时间:15:30~18:00 仪器组次:          必修/选修:必修     

信息安全系统设计基础实验二:固件设计

北京电子科技学院(BESTI) 实验报告 课程:信息安全系统设计基础 班级:1353 姓名:芦畅 傅冬菁 学号:20135308 20135311 成绩: 指导教师:娄家鹏 实验日期:2015.11.10 实验密级: 预习程度: 实验时间:15:30~18:00 仪器组次: 必修/选修: 实验序号:1 实验名称:实验一:Linux开发环境的配置和使用 实验目的与要求: 1.掌握程序的烧写方法; 2.能够实现Bootloader; 3.实现密码学中常见算法的固化. 实验仪器: 名称 型号 数量 嵌