喜羊羊系列之【低级驱动笔记一】
喜羊羊系列之【初级驱动笔记一】
mkdir /lib/modules
----------------------------------------------------------------------------------------
博客:http://blog.****.net/muyang_ren
一、制作内核错误
(1)make uImage
"mkimage" command not found - U-Boot images will not be built make[1]: *** [arch/arm/boot/uImage] 错误 1 make: *** [uImage] 错误 2解决方法:
如果要生成uImage,需要mkimage这个工具,此工具是在编译uboot的时候生成的,是用来生成uImage的工具。在编译uboot生成mkimage工具后,需要将此工具拷贝到ubuntu的/usr/bin目录下,并需要修改此文件的权限为可执行的。
(2)tar -xvf filesystem.tar.gz
tar: filesystem/dev/console:无法 mknod: 不允许的操作 filesystem/proc/ tar: 由于前次错误,将以上次的错误状态退出解决方法:
使用root用户就可以实现解压缩
(3)rmmod hello
rmmod: chdir(/lib/modules): No such file or directory解决方法:
mkdir /lib/modules
----------------------------------------------------------------------------------------
rmmod: chdir(3.0.8): No such file or directory解决方法:
mkdir /lib/modules/3.0.8
(4)modinfo hello.ko
modinfo: can't open '/lib/modules/3.0.8/modules.dep': No such file or directory解决方法:
mkdir /lib/modules/3.0.8/modules.dep
(5)简单makefile分析
//分析Makefile ifeq ($(KERNELRELEASE),) //KERNELRELEASE宏定义 KERNELDIR =/home/farsight/work/kernel/linux-3.0.8 //内核源码所在路径 PWD =$(shell pwd) //内核模块hello.c所在路径 modules: //进入内核源码所在路径(KERNELDIR), 获取其中的Makefile(MAKE), 并利用Makefile将*.c -> *.o文件,同时将KERNELRELEASE赋值 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules //(1) cp hello.ko /opt/filesystem/s5pv210 //(3) modules_install: //这句没有执行 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install clean: rm -rf *.so *.o *.ko .tmp_versions *.mod.c *.order *.symvers else obj-m :=hello.o //hello.o -> hello.ko //(2) endif