树莓派驱动开发--搭建环境篇(保姆级)

这篇具有很好参考价值的文章主要介绍了树莓派驱动开发--搭建环境篇(保姆级)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:树莓派的环境搭建关系到之后的驱动开发,故一个好的环境能让你顺手完成驱动开发!我使用的是64位树莓派4b!有显示屏的前提!!!(因为wifi连接太刁钻了)

一、ubantu相关

        1.1、虚拟机环境搭建

下载虚拟机vm,然后建立一个虚拟机,我这边用的ubantu版本是16.04,正点原子的,很稳定这个版本,推荐!

链接:https://pan.baidu.com/s/1r6NEANYDDbs7bg_lmPMeXA?pwd=hsw1 
提取码:hsw1

        1.2、 ssh、nfs、ftp搭建

使用命令搭建ssh

sudo apt-get install openssh-server

按步骤使用命令搭建nfs       

sudo apt-get install nfs-kernel-server rpcbind

sudo vi /etc/exports

#打开/etc/exports 以后在后面添加如下所示内容:
#/home/zuozhongkai/linux/nfs *(rw,sync,no_root_squash)  
#/home/zuozhongkai/linux/nfs 改成你想挂载的目录路径

sudo /etc/init.d/nfs-kernel-server restart

ftp使能ubantu使用文件传输软件,快捷传输文件

树莓派开发环境搭建,驱动开发这个软件自行安装

按步骤使用命令搭建ftp

sudo apt-get install vsftpd

sudo vi /etc/vsftpd.con

#打开 vsftpd.conf 文件以后找到如下两行:
#local_enable=YES
#write_enable=YES
#确保上面两行前面没有“#”,有的话就取消掉

sudo /etc/init.d/vsftpd restart

        1.3、交叉编译链的搭建

交叉编译下载:链接

下载上面链接中的 gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

使用文件传输软件传到ubantu

然后使用命令解压

tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz

使用命令创建一个目录专门存放编译工具

sudo mkdir /usr/local/arm

将解压好的工具改名且cp到该目录下,然后修改环境变量

sudo vi /etc/profile

export PATH=$PATH:/usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin
#这个export的gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu要根据你的来改

修改好以后就保存退出,重启 Ubuntu 系统,交叉编译工具链(编译器)就安装成功了。

使用前安装依赖

sudo apt-get install lsb-core lib32stdc++6

验证

aarch64-linux-gnu-gcc -v

        1.4、内核编译+内核模块编译加载

为什么要编译内核,因为驱动基于内核源码,我们要根据树莓派开发板厂家提供的内核源码对Linux源码进行修剪配置,来适应我们的板子,说白了就是,根据树莓派厂家的描述文件bcm2711_defconfig生成一个适应该板子的配置文件.config,供顶层Makefile使用,Makefile根据这个配置来修剪得到一个适应我们使用的板子的内核,只有使用这个内核,才能正确让树莓派驱动运行,那为什么要加载内核模块,板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出来的,才能适应我们的板子。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、模块,并且放到板子上去。

参考:韦东山

树莓派开发环境搭建,驱动开发

使用命令安装编译环境所需的依赖

sudo apt-get install git bison flex libssl-dev zip libncurses-dev make

获取内核源码,建议使用这个

mkdir pi_kernel     #创建一个目录存放内核源码

git clone --depth=1 --branch rpi-5.15.y https://github.com/raspberrypi/linux
#如果报错,就多试几次就好了,网络就是这样的

按顺序执行

#获取后得到一个源码目录,改名为linux

cd linux

make distclean  #或者make mrproper

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL=kernel8 bcm2711_defconfig

make -j3 ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- KERNEL=kernel8
#开始编译

其中,KERNEL=kernel8参考:

树莓派开发环境搭建,驱动开发

编译大概持续40分钟。

编译完成后,在内核源码目录下执行命令加载更新内核模块

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=/home/hsw/pi_kernel/linux/ modules_install

#INSTALL_MOD_PATH=/home/hsw/pi_kernel/linux/ 改成自己的路径

 树莓派开发环境搭建,驱动开发

 得到5.15.92-v8+这个内核模块版本!

这步完成后,我们就得到了3个要更新到树莓派上的东西

(1)Image;内核                位于内核目录/arch/arm64/boot/

(2)dtb;设备树                 位于内核目录/arch/arm64/boot/dts/broadcom/

(3)内核模块;                  位于INSTALL_MOD_PATH/lib/modules/ 

至此我们就告一段落!

二、树莓派相关

        2.1、镜像烧写

链接:https://pan.baidu.com/s/1La93Og_kUzVTPRlsVPEiAQ?pwd=hsw1 
提取码:hsw1

建议使用这个镜像,因为能无显示屏连接wifi

连接WiFi只需2文件和一个读卡器

链接:https://pan.baidu.com/s/1oreylGMvZHX1DwRdy7wD-A?pwd=hsw1 
提取码:hsw1

其中wpa_supplicant.conf里面的内容

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
	ssid="hsw"        #换成你的WiFi名称
	psk="12345678"    #换成你的WiFi密码
}

ssh是使能树莓派的ssh服务

烧好后就插卡上电,电脑开热点,得到ip后使用软件

树莓派开发环境搭建,驱动开发ssh登录连接   账户:pi      密码:raspberry

        2.2、树莓派环境搭建 nfs

我们需要挂载文件来加速我们的开发,使用需要打通开发板与u版图的nfs通信;

按顺序使用命令

sudo apt-get install nfs-kernel-server rpcbind

sudo vi /etc/exports

#打开/etc/exports 以后在后面添加如下所示内容:
/mnt *(rw,sync,no_root_squash)

sudo /etc/init.d/nfs-kernel-server restart

过程如报错

树莓派开发环境搭建,驱动开发

问题根源:源在国外,解决方法:更换源

按顺序执行

sudo nano  /etc/apt/sources.list 

#将初始化中的代码中默认的官方软件源注释掉# 
#添加下面的软件源   
     
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi

deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi

树莓派开发环境搭建,驱动开发

然后,

sudo apt-get update

再去执行我们的命令,就成功了

树莓派开发环境搭建,驱动开发

最后,成功了后,就能挂载了。

挂载测试

mount -t nfs -o nolock,vers=3 192.168.16.128:/home/hsw/linux_tools/nfs /mnt
#192.168.16.128是我u版图的wifi    ip地址  换成你的

 树莓派开发环境搭建,驱动开发

 使用命令进入su,密码我们要换一个

sudo passwd root

树莓派开发环境搭建,驱动开发

在执行

su

进入root,然后再执行挂载命令,会显示卡住,别急,回到u版图执行命令

sudo sudo mount -t nfs 192.168.137.50:/mnt /home/hsw/linux_tools/nfs -o nolock 
#192.168.137.50是我的开发板树莓派的ip 换成你的
#/home/hsw/linux_tools/nfs是我的ubantu挂载目录路径 换成你的

树莓派开发环境搭建,驱动开发

 此时,已经挂载成功,可以在ubantu挂载路径下mkdir一个目录,然后回到开发板会发现出现mkdir的目录。

树莓派开发环境搭建,驱动开发

        2.3、更新内核及内核模块

在做这步之前我们先用命令查看一下树莓派出厂的内核版本

uname -r

uname -a

树莓派开发环境搭建,驱动开发

这个是有依据的

树莓派开发环境搭建,驱动开发

pi4加载默认是这个5.10.63-v7l+,且是armv7l模式。

接下来,我们用读卡器吧树莓派sd卡插回电脑。

先在虚拟机~目录下创建2个空文件

cd ~
mkdir data1
mkdir data2

然后挂载,

sudo mount /dev/sdb1 ~/data1
sudo mount /dev/sdb2 ~/data2

复制boot所需文件,安装内核模块

sudo cp linux/arch/arm64/boot/dts/broadcom/*.dtb ~/data1
sudo cp linux/arch/arm64/boot/dts/overlays/*.dtb* ~/data1/overlays/
sudo cp linux/arch/arm64/boot/dts/overlays/README ~/data1/overlays/
# 复制内核
sudo cp linux/arch/arm64/boot/Image ~/data1/kernel8.img

#以上路径改成自己的内核下的xxx

sudo cp -r lib/modules/ ~/data2/lib/

#lib/modules/改成  INSTALL_MOD_PATH的值,这个是内核模块加载时的路径

卸载sd卡

sudo umount ~/data1

sudo umount ~/data2

插回树莓派。

打开终端,编写config.txt

sudo vi /boot/config.txt

# 在末尾!!!添加内容并保存退出

arm_64bit=1
kernel=kernel8.img

重启树莓派,reboot

打开终端,再输入

uname -r

uname -a

树莓派开发环境搭建,驱动开发

就变成我们编译的内核版本了。

三、常见错误

        3.1、加载内核模块

树莓派开发环境搭建,驱动开发

 这个错误就是因为没有更新板子上的内核

那你如果按照我的步骤一步一步来,就不会这样!

而是会成功加载进来,如下:

树莓派开发环境搭建,驱动开发

        3.2、 执行app时,架构冲突

树莓派开发环境搭建,驱动开发

在树莓派执行./app 文件时报错:没有那个文件或者目录。

那就到/bin下面file一下bash,如图,是32位的,

在file一下app文件,如图,是64位的。

64位兼容32位,而32位不行,

所以我们的交叉编译工具要变成32位的。

四、总结

        到此,我们就把驱动环境都搭建好了,下篇我们将讲驱动开发的实际操作了!文章来源地址https://www.toymoban.com/news/detail-861644.html

到了这里,关于树莓派驱动开发--搭建环境篇(保姆级)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Vue篇】mac上Vue 开发环境搭建、运行Vue项目(保姆级)

    首先,了解一下,Vue 的整体开发环境。 Homebrew :Mac 系统下的包管理器,类似于 Linux 下的 apt-get,Windows 的控制面板 - 安装删除程序 Node.js : JavaScript 运行环境(runtime),不同系统之间不能直接运行各种编程语言,Runtime类似于各国会议上的同声传译 npm : Nodejs 下的包管理器

    2024年02月05日
    浏览(41)
  • (三)(Driver)驱动开发之双机调试环境搭建及内核驱动的运行

    请参考另一篇:https://blog.csdn.net/qq_41273999/article/details/133341733 请参考另一篇:https://blog.csdn.net/qq_41273999/article/details/133376458 准备好安装包,勾选将VMware Workstation控制台工具添加到系统PATH。 输入秘钥:ZF71R-DMX85-08DQY-8YMNC-PPHV8,如果失效,勾选试用30天。 下载完成后, 以管理员身份

    2024年02月06日
    浏览(38)
  • windows驱动开发-vs2019-vs2022 WDK开发环境搭建

    QQ群: 852283276 微信: arm80x86 微信公众号: 青儿创客基地 B站:主页 https://space.bilibili.com/208826118 好久不开发Windows驱动,现在又变天了,微软的工具更新的非常快,Visual Studio和WDK都发了新版本,推荐安装新版本,但如果非想安装老版本,也可以。Visual Studio 2022不支持Windows 1

    2024年02月04日
    浏览(76)
  • 【STM32开发环境搭建】 - st-link驱动安装和串口驱动安装

    下载地址:https://download.csdn.net/download/weixin_39035140/86248921 包含软件如下: 1、下载线我们使用了st-link,为了能够下载程序到开发板,需要先安装st-link驱动。打开设备管理器,可以通过热插拔法确认是哪一个设备(STM32 STLink显示感叹号就是缺少驱动),右击更新驱动,选择浏览

    2024年02月12日
    浏览(48)
  • 测试驱动的嵌入式开发 002:VSCode + CMake + Unity 环境搭建

    本文是对《测试驱动的嵌入式 C 语言开发》第二章的实践。 这部分参考博文《基于Windows 的 VS Code C/C++ 编译环境搭建》。 安装 CMake ,在官网下载最新安装包。安装时选择 对所有用户添加 CMake 到系统 PATH 。 安装以下插件: CMake:VSCode 的 CMake 语言支持插件 CMake Tools:对插件

    2023年04月18日
    浏览(40)
  • 树莓派(五)驱动开发

    Linux下的设备通常可分为三类: 字符设备 块设备 网络设备 常见字符设备有鼠标、键盘、串口、控制台等。 常见的块设备有各种硬盘、flash磁盘、RAM磁盘等。 在Linux里一个网络设备也可以叫做一个网络接口,如eth0,应用程序是通过Socket而不是设备节点来访问网络设备,在系统

    2024年02月02日
    浏览(31)
  • 【树莓派初始化】教你从0开始搭建树莓派的使用环境

    为了完善本专栏的内容,这次我把树莓派的初始化配置也给大家加上。 干货满满,跟着我一步一步配置,从无到有玩转树莓派!😋 当然前提是你要有一个树莓派,2022年的树莓派价格可太魔幻了,涨价1倍,堪比显卡市场…… 不扯这些没用的了,本篇博客,带你走入树莓派这

    2024年02月04日
    浏览(51)
  • 树莓派高级开发之树莓派博通BCM2835芯片手册导读与及“相关IO口驱动代码的编写”

    首先我们要知道, 驱动的两大利器:电路图(通过电路图去寻找寄存器)和芯片手册 芯片手册第六章的89页,GPIO有41个寄存器,所有访问都是32位的。Description是寄存器的功能描述。GPFSEL0(寄存器名) GPIO Function Select 0(功能选择:输入或输出);GPSET0 (寄存器名) GPIO Pin

    2023年04月27日
    浏览(36)
  • 2.树莓派4B 64位操作系统 从零搭建深度学习项目运行环境

    探索目标 树莓派的系统烧录 树莓派的基础配置 树莓派的开机连接 树莓派的文件传输 树莓派的软件安装 树莓派的运行环境 树莓派的系统备份 测试运行现有模型 1.1 系统选择 1.1.1 Raspbian OS:官方的树莓派操作系统 ​ Raspbian OS 是官方支持的树莓派板卡操作系统。它集成了很多

    2024年01月16日
    浏览(39)
  • 搭建nacos环境(保姆级教程)

    2.2.1 服务发现中心 根据上节讲解的网关的架构图,要使用网关首先搭建Nacos。 首先搭建Nacos服务发现中心。 在搭建Nacos服务发现中心之前需要搞清楚两个概念:namespace和group namespace:用于区分环境、比如:开发环境、测试环境、生产环境。 group:用于区分项目,比如:xueche

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包