内核模块在虚拟机和开发板上运行的区别
来源:互联网 发布:塑料卫生间门 淘宝 编辑:程序博客网 时间:2024/06/03 21:32
最近在看宋宝华老师的<linux驱动开发详解> ,按照书写第一个字符设备驱动globalmem ~!
驱动源码参考书中,编译内核模块的关键问题就是Makefile 。运行在虚拟机的linux的Makefile 和 在开发板上的Makefile是不一样的。
通过查资料了解到其中的区别,在此写下笔记,方便自己复习,也方便他人。
Makefile如下:
ifneq ($(KERNELRELEASE),)
obj-m := globalmem.o
else
#KDIR :=/lib/modules/3.2.0-48-generic-pae/build // 这个是在虚拟机ubuntu上运行模块的KDIR,如果编译在虚拟机上的module ,把注释打开,下面的KDIR注释掉即可。
KDIR :=/home/mykernel/linux-3.0.1 // 开发板的KDIR (kernel directory),/home/mykernel/linux-3.0.1是开发板的内核源码在虚拟机ubuntu上的路径。
all:
make -C $(KDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux- //指定ARCH 和 CROSS_COMPILE 。如果Makefile里不指定在make时就必须指定
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif
编辑好Makefile之后make生成 globalmem.ko 并拷贝到开发板上。
在开发板上运行命令 mknod /dev/globalmem c 254 0 创建设备节点(也叫设备文件)
echo “hello world” > /dev/globalmem
cat /dev/globalmem
打印 hello world
书中是静态申请的设备号254,但是我的ubuntu254的主设备好已经被用了,所以换个主设备好就ok了。我是直接用alloc_chrdev_region()动态申请。
如何 查看系统中都是用了哪些主设备号?
cat /proc/devices 命令
- 内核模块在虚拟机和开发板上运行的区别
- 编译在linux arm核上运行的内核模块
- Hadoop 在BeagleBoard开发板上的移植和运行
- 在ESX Server上的虚拟机上再运行虚拟机
- python模块和类在import上的区别
- python模块和类在import上的区别
- 内核模块运行在哪
- 在ubuntu上开发编译内核模块,并查看printk打印的消息
- 应用程序和内核模块的区别
- linux内核模块和应用程序的区别
- 在虚拟机上运行vxWorks
- 在虚拟机上运行vxWorks
- 在虚拟机上运行vxWorks
- ubuntu虚拟机下内核模块的编译和安装
- 在kali2虚拟机上第一次成功运行snort和barnyard2
- 解决在开发板上无法卸载内核的办法
- PHP和JAVA在web开发上的的区别
- 内核模块的开发
- 游戏音乐音效添加管理
- 安卓JNI传结构体
- Android手机学习之从入门到高手
- 问候
- gotoBlas 与 lapack
- 内核模块在虚拟机和开发板上运行的区别
- UISegmentedControl
- 海量小文件问题综述
- 创建视图全文搜索[完整版]
- 互联网大会:大数据驱动的智能创新
- Android中dip, dp, px, sp的区别
- string类型与int类型的转换
- poj3422 Kaka's Matrix Travels 最大费用流 (拆点)
- 这10万的学费,花的值!