我购买了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
驱动程序大相径庭,现在都不知道怎么办了!恳请各位赐教,在此提前感谢!
还没有啊,卡住了!好像这个论坛只有我一个人这样做一样。
我昨天也按照你的方法做了一下,也是同样的错误,是不是电脑是32位的原因,我看网上说是没有申明交叉变量环境,你做了这么久尝试过什么方法没有有什么启示,我也想做一个这样的驱动程序一起努力啊
兄弟,我已经明白怎么回事了,如果你还有没有解决有需要的话私聊我
To:wenchao1991
听说你明白了,我真是太高兴了!到现在我都没有明白过来,能够指点我一下吗?就是不知道在yocto环境下编译驱动程序。我的QQ:251755689,电子邮件:
embedbird@126.com,手机:13986089722。请您及时联系我!万分感谢!
我的QQ你可以加我,加我的时候请注明你的身份708948311
To:wenchao1991
早就加了你的QQ,一直没有通过你的好友验证呐!