完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
之前的工作内容大多为调试各部分的硬件和系统的bug,真正编写代码的机会很少,或者说根本没有。
首先,要达到一个基本的目的,在ubuntu18.04的pc机上,编写出的程序可以在板子上跑的通。 很简单,只要安装交叉编译工具链即可。 sudo apt-get install gcc-5-aarch64-linux-gnu 这样使用aarch64-linux-gnu-gcc hello.c,命令编译得到的a.out即可在开发板上运行。 2.由于交叉编译,若一直使用filezilla来进行文件传输,有些多次一举,因此计划采用挂载pc机共享目录的方式进行 首先得在宿主机上安装nfs服务器,并设置共享目录(以Ubuntu 12.04为例): 1_1、sudo apt-get install nfs-kernel-server nfs-common #安装nfs服务器# 1_2、sudo vim /etc/exports #打开exports,更改配置文件# 1_3、在最后加入/home/steve/share *(rw,sync,no_root_squash) #设置共享目录# 1_4、sudo /etc/init.d/nfs-kernel-server restart #重启nfs服务器# 做完这四步,基本就完成了宿主机上nfs服务器的配置,你要是不放心的话,也可以在本地挂载,做个测试: 1_5、sudo mount -t nfs -o nolock 192.168.0.XXX:/home/steve/share /mnt # 其中,棕色为服务器ip地址,红色为共享的目录, 蓝色为本地的挂载目录 # 开发板也需要安装nfs服务: sudo apt-get install nfs-common 至此,开发板已经可以访问PC机的目录了。 3、最根本的目的是,在pc机上编译驱动,可以直接在开发板上运行,而不必编译整个内核。 由于rk3399的内核编译时,使用的是一个rockchip提供的sdk,经过测试,如果将其中的kernel单独拷贝出来,那么首先内核编译就不通过,所以后续的交叉编译就无法执行,因此,直接将Makefile中的内核路径,指定为sdk中的内核路径,编译模块成功,insmod成功,可以在/proc/devices路径下看到自己注册的字符设备。 Makefile采用了韦东山的文件: KERN_DIR = /home/cwp/work/rockchip/linux/kernel all: make -C $(KERN_DIR) M=`pwd` modules clean: make -C $(KERN_DIR) M=`pwd` modules clean rm -rf modules.order obj-m += first_drv.o 补充: 查看sdk中内核版本为4.4.179,于是从linux官网下载了该内核,使用sdk中的内核配置,当拷贝了sdk中的设备树后,直接按照sdk的编译方法编译设备树时,发下不通过,应该是瑞芯微做了一些修改,所以直接make,对提示的配置项直接回车默认。 结果编译出的ko模块时x86-64架构的,很明显,需要修改内核中的架构和编译器配置,发现如下两行并做出修改: #ARCH ?= $(SUBARCH) #CROSS_COMPILE ?= $(CONFIG_CROSS_COMPILE:"%"=%) ARCH ?= arm64 CROSS_COMPILE ?= aarch64-linux-gnu- 编译出来的ko模块可以在开发板上insmod,至此,交叉编译环境的搭建完成,必每次都重新编译和烧写内核,也不必依赖于rockchip的sdk开发包。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
678 浏览 0 评论
920 浏览 1 评论
814 浏览 1 评论
2030 浏览 1 评论
3275 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 10:57 , Processed in 0.813562 second(s), Total 71, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号