怎么制作公司自己网站,wordpress高仿dz模板,品牌咖啡主题网页界面设计,东乡做网站以下内容源于朱有鹏嵌入式课程的学习与整理#xff0c;如有侵权请告知删除。 步骤1#xff1a;获取编译后的内核源码与镜像 描述 该内核源码主要用来编译驱动源码。该内核源码必须与开发板运行的内核源码的版本一致#xff0c;否则编译后的驱动程序在开发版上运行时#xf…以下内容源于朱有鹏嵌入式课程的学习与整理如有侵权请告知删除。 步骤1获取编译后的内核源码与镜像 描述 该内核源码主要用来编译驱动源码。该内核源码必须与开发板运行的内核源码的版本一致否则编译后的驱动程序在开发版上运行时会遇到不匹配的问题。 操作 1将x210kernel.tar.bz2解压至合适的目录 我这里解压至目录~/iot/embedded_basic/kernel/x210_kernel。 2配置与编译得到内核源码与镜像 操作步骤见内核编译初体验_天糊土的博客-CSDN博客 得到的内核镜像在arch/arm/boot目录中镜像名是zImage。 步骤2将内核镜像下载至开发板 描述 可以利用fastboot或者tftp将此内核镜像下载至开发板且能正常运行。 操作 操作步骤见利用tftp将镜像下载到开发板_天糊土的博客-CSDN博客 步骤3驱动源代码的编写与编译 描述 1此步骤主要是完成驱动源代码的编写、Makefile文件的编写。 2驱动源代码的例子见简单的驱动源代码分析_天糊土的博客-CSDN博客 3驱动源代码的Makefile文件具有普适性。典型的Makefile文件内容如下 #这是ubuntu提供的在本Ubuntu环境下开发驱动的内核源码树
#因此如果想在此Ubuntu中开发驱动则内核源码树目录就是它
#KERN_VER $(shell uname -r)
#KERN_DIR /lib/modules/$(KERN_VER)/build#开发板的linux内核的源码树在ubuntu中的目录
#它表示用来编译这个模块的内核源码树的目录
#注意根据实际路径来改写此目录kernel的Makefile所在的路径
KERN_DIR /home/xjh/iot/embedded_basic/kernel/x210_kernel#注意这里的文件名module_test要修改成你实际所取的名字
#-m表示将module_test.c文件编译成一个单独的模块
obj-m module_test.o#此命令用来编译模块
#利用make -C $(KERN_DIR)进入指定的内核源码树目录
#然后在源码目录树下借用内核源码中定义的模块编译规则去编译该模块modules。
#其实就是make modules。modules是内核中的一个目标。
#中间的是参数表明到某个目录下进行编译编译完后回到当前目录。
#使用make driver和直接make都是执行这个规则
driver:make -C $(KERN_DIR) Mpwd modules #此命令用来编译应用层程序
#注意是利用交叉编译工具链来编译而非ubuntu的gcc
#另外注意这里名字确定为app.c注意修改
#其实这么短的命令直接在ubuntu中调用arm-linux-gcc来编译就好
#写在这里是为了说明要使用交叉编译工具链来编译应用层程序
app:arm-linux-gcc app.c -o app#用来清除编译痕迹
.PHONY: clean
clean:make -C $(KERN_DIR) Mpwd modules clean操作 1编写驱动源码、Makefile文件 比如在/home/xjh/iot/embedded_basic/rootfs/tmp目录中编写驱动源码module_test.c其内容见上面描述中的链接。然后在同路径编写Makefile文件其内容见上面描述中的内容。 2进行编译 即执行make命令得到module_test.ko这个驱动文件。 3将驱动文件转移到开发板系统目录 将ubuntu的/home/xjh/iot/embedded_basic/rootfs/tmp目录挂载到开发板系统的/mnt。在ubuntu的这个tmp目录中更新驱动程序时通过开发板系统的/mnt目录可以获取这个驱动文件。一般我们将这个驱动文件复制到开发板系统的/tmp目录中再进行操作。 附实现挂载的方法 在ubuntu中将被下载的根文件系统中的etc/profile文件中添加下面代码 mount -t nfs -o nolock 192.168.1.141:/home/xjh/iot/embedded_basic/rootfs/tmp /mnt 然后在ubuntu系统中的/etc/exports文件中添加下面代码 /home/xjh/iot/embedded_basic/rootfs/tmp *(rw,sync,no_root_squash,no_subtree_check) 然后重启NFS服务 sudo /etc/init.d/nfs-kernel-server restart 步骤4利用NFS下载根文件系统至开发版 描述 可以利用NFS下载根文件系统至开发版。 操作 操作步骤见以NFS方式挂载rootfs的设置方法_天糊土的博客-CSDN博客 步骤5测试 描述 开发板的系统完全启动后在SCRT上使用insmod命令来装载模块然后测试测试完毕使用rmmod命令卸载模块。 操作 [rootxjh tmp]# rmmod module_test.ko
[ 501.367827] chrdev_exit helloworld exit
[rootxjh tmp]# lsmodNot tainted
[rootxjh tmp]# insmod module_test.ko
[ 520.115699] chrdev_init helloworld init
[ 520.118058] register_chrdev success...
[rootxjh tmp]# lsmod Not tainted
module_test 1059 0 - Live 0xbf00c000
[rootxjh tmp]# rmmod module_test
[ 549.628315] chrdev_exit helloworld exit
[rootxjh tmp]# lsmod Not tainted
[rootxjh tmp]]#