2019-2020 -1 20165213 20165224 20165311 实验四
任务一
学习资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章
提交康奈尔笔记的照片(可以多张)
康奈尔笔记:
康奈尔笔记系统把一页纸分成了三部分:
右上最大的空间是我们平时做笔记的地方,你按照平时的习惯记录
就行了。
左边那竖着的一条空间叫做“线索栏”,是用来归纳右边的内容的,写一些提纲挈领的东西,这个工作不要在做笔记的时候做,而是在上完课之后马上回顾,然后把要点都写到左边,这样一方面马上复习了内容,另一方面理清了头绪。
下面那横着的一栏是用来做总结的,就是用一两句话总结你这页记录的内容,这个工作可以延后一点儿做,起到促进你思考消化的作用,另外也是笔记内容的极度浓缩和升华。
我的笔记:
任务二:
在Ubuntu完成资源中全课中的“hqyj.嵌入式Linux应用程序开发标准教程.pdf”中的第十一章的test试验
提交编译,加载模块,卸载模块,测试运行的截图(要多张,全屏,体现学号信息)
在实验过程中遇到一些问题,比如每次make clean的时候都出现遗漏分隔符。
在进行搜索之后发现存在的问题是命令前面没有加上tab键导致了错误,在修改了错误之后就可以make clean了,但是make的时候一直显示的是没有什么可以为modules做的,不知道是什么原因。
已下是各个文件的代码
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 / 将生成的模块命名为test_drv.ko/
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/test_dev" /* 设备文件名*/
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)