11.1 模块编程实验<br />1.源程序<br />模块程序清单:<br />#define MODULE<br />#include <linux/module.h><br />int init_module(void){<br /> printk (“<1>Hello,world!\n”);<br /> return 0;<br />}<br />void cleanup_module(void){<br /> printk(“<1>Goodbye cruel world!\n”);<br />}<br />我们在基于PC机的Linux驱动学习时,已经完成过该实验,现在再次用这个最简单的实验来学习嵌入式Linux驱动的开发过程,和验证它与PC机Linux驱动的相同性。<br />2.PC机上编译运行<br />#gcc –c hello.c<br />#insmod ./hello.o<br />hello,world!<br />#rmmod hello <br />Goodbye cruel world!<br />#<br />3.为目标板编译和运行<br />Makefile脚本清单:<br />CROSS=/opt/host/armv4l/bin/armv4l-unknown-linux-<br />INCPATH=/linuette/target/box/kernel/include<br />all: hello <br />hello:<br /> $(CROSS)c –I$(INCPATH) hello.c<br />clean:<br /> rm –rf *.o<br />写好脚本后,输入make编译<br />#make<br />/opt/host/armv4l/bin/armv4l-unknown-linux-gcc –I/linuette/target/box/kernel/include hello.c<br />将生成的目标文件下载到目标板的/tmp目录下,动态装载和卸载时将在终端打印相应的字符串,如下:<br />#insmod ./hello.o<br />Hello,world!<br />#rmmod hello<br />Goodbye cruel world!<br />当装载后,可以查看 /proc/modules的内容,是否装载成功。<br />#cat /proc/modules<br />
|