2019-2020-1 20175311 20175324 20175330 实验四 外设驱动程序设计
Posted wcqy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019-2020-1 20175311 20175324 20175330 实验四 外设驱动程序设计相关的知识,希望对你有一定的参考价值。
一、实验目的
- 编写最简单的字符驱动程序
- 实现简单的读写功能,并列出常用格式的
Makefile
以及驱动的加载和卸载脚本 - 实现简单的读写功能,并列出常用格式的Makefile以及驱动的加载和卸载脚本
二、实验内容及步骤
1、任务一
- 任务详情
- 学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章
- 提交康奈尔笔记的照片(可以多张)
- 笔记
2、任务二
- 任务详情
- 在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验
- 提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息)
- 实验步骤
- 在VMware虚拟机中创建文件夹
- 将第十一章中关于字符设备的
test
实验中代码:test_drv.c
、test.c
、Makefile
、test_drv_load
、test_drv_unload
敲入并保存在文件夹内 - 要注意在
Makefile
中命令换行要用Tab
键进行缩进 - 实验代码
Makefile
ifeq ($(KERNELRELEASE),) KERNELDIR ?= /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) modules: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules modules_install: $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install clean: rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions .PHONY: modules modules_install clean else obj-m := test_drv.o endif
test.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/stat.h> #include <sys/types.h> #include <unistd.h> #include <fcntl.h> #define TEST_DEVICE_FILENAME "/dev/stdout" #define BUFF_SZ 1024 int main() { int fd,nwrite,nread; char buff[BUFF_SZ]; fd = open(TEST_DEVICE_FILENAME, O_RDWR); if(fd<0) { perror("open"); exit(1); } do { printf("Input some words to kernel(enter ‘quit‘ to exit):"); memset(buff,0,BUFF_SZ); if(fgets(buff,BUFF_SZ,stdin) == NULL) { perror("fgets"); break; } buff[strlen(buff) - 1] = ‘