在前面的四篇博客中我们完成了在QEMU上开发环境的搭建,现在我们可以在开发板上运行应用以及内核驱动程序,运行一些简单的例子来尝尝鲜。
运行应用程序
在Linux主机端交叉编译生成arm端的可执行文件
arm-linux-gnueabi-gcc -o hello_arm hello.c
拷贝到NFS共享文件夹
cp hello_arm ../../qemu/rootfs/work
在arm端查看
执行
内核驱动开发
hello.c
#include<linux/init.h>
#include<linux/module.h>
MODULE_LICENSE("GPL");
static int hello_init(void)
{
printk(KERN_ALERT"-----------------!\n");
printk(KERN_ALERT"hello world!\n");
printk(KERN_ALERT"hello vexpress!\n");
printk(KERN_ALERT"-----------------!\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_ALERT"goodbye, crazy world!\n");
}
module_init(hello_init);
module_exit(hello_exit);
Makefile
.PHONY:all clean
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
EXTRA_CFLAGS += -DDEBUG
KDIR := /home/gyy/work/qemu/linux-4.4.76
all:
make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm -C $(KDIR) M=$(PWD) modules
clean:
rm -fr *.ko *.o *.mod.o *.mod.c *.symvers *.order .*.ko .tmp_versions
endif
make
编译完成后
将hello.ko复制到NFS共享文件夹
cp hello.ko ../../../qemu/rootfs/work/drivers/
在开发板上安装驱动
insmod hello.ko
卸载驱动
rmmod hello.ko