|
如何使用yocto编译用户驱动程序,请教各位!
[复制链接]
我购买了Helio开发板,按照Altera的GSRD流程完成了下面的工作:
(1)在SocEDS命令行中编译preloader及uboot;
(2)使用yocto的bitbake编译Linux内核以及JFFS2文件系统;
(3)直接在QSPI中构建JFFS2文件系统;
(4)使用quartus_hps软件对QSPI烧写preloader和uboot;
(5)在uboot中烧写内核及文件系统到QSPI中。
现在可以正常从QSPI启动Linux内核,并在Linux命令行中加载FPGA配置文件soc_system.rbf。
使用led_blink工程从应用程序访问板上的跑马灯也能正常跑起来。下一步将构建用户驱动程序。
准备仿照骏龙提供的驱动程序范例(参见附件)来构建。makefile的文件内容如下:
obj-m += char_dev.o
char_dev-objs = char_dev_driver.o read_register.o
KDIR := /home/ebsoc/yocto/build/tmp/work/socfpga_cyclone5-poky-linux-gnueabi/linux-altera-dist-1.0-r1/linux-socfpga
PWD = $(shell pwd)
default:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
在Linux命令行中运行make命令,出现下面的错误:
$ make
make -C /home/ebsoc/yocto/build/tmp/work/socfpga_cyclone5-poky-linux-gnueabi/linux-altera-dist-1.0-r1/linux-socfpga M=/mnt/share/cytec modules
make[1]: Entering directory `/home/ebsoc/yocto/build/tmp/work/socfpga_cyclone5-poky-linux-gnueabi/linux-altera-dist-1.0-r1/linux-socfpga'
CC [M] /mnt/share/cytec/char_dev_driver.o
/mnt/share/cytec/char_dev_driver.c:1: 错误:代码模式‘kernel’在 32 位模式下不受支持
/mnt/share/cytec/char_dev_driver.c:1: 对不起,尚未实现:未编译入对 64 位模式的支持
make[2]: *** [/mnt/share/cytec/char_dev_driver.o] 错误 1
make[1]: *** [_module_/mnt/share/cytec] 错误 2
make[1]: Leaving directory `/home/ebsoc/yocto/build/tmp/work/socfpga_cyclone5-poky-linux-gnueabi/linux-altera-dist-1.0-r1/linux-socfpga'
make: *** [default] 错误 2
现在的问题是:在yocto环境中,如何正确编译驱动程序呢?现在这个yocto和bitbake与先前传统的ARM9开发Linux
驱动程序大相径庭,现在都不知道怎么办了!恳请各位赐教,在此提前感谢!
|
|