凡科做的网站可以在百度搜到吗,阿里云nas做网站,大型游戏平台排行榜,wordpress视频大小前言#xff1a;树莓派的环境搭建关系到之后的驱动开发#xff0c;故一个好的环境能让你顺手完成驱动开发#xff01;我使用的是64位树莓派4b#xff01;有显示屏的前提#xff01;#xff01;#xff01;#xff08;因为wifi连接太刁钻了#xff09; 一、ubantu相关 …前言树莓派的环境搭建关系到之后的驱动开发故一个好的环境能让你顺手完成驱动开发我使用的是64位树莓派4b有显示屏的前提因为wifi连接太刁钻了 一、ubantu相关 1.1、虚拟机环境搭建
下载虚拟机vm然后建立一个虚拟机我这边用的ubantu版本是16.04正点原子的很稳定这个版本推荐
链接https://pan.baidu.com/s/1r6NEANYDDbs7bg_lmPMeXA?pwdhsw1 提取码hsw1 1.2、 ssh、nfs、ftp搭建
使用命令搭建ssh
sudo apt-get install openssh-server
按步骤使用命令搭建nfs
sudo apt-get install nfs-kernel-server rpcbindsudo 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 vsftpdsudo vi /etc/vsftpd.con#打开 vsftpd.conf 文件以后找到如下两行
#local_enableYES
#write_enableYES
#确保上面两行前面没有“#”有的话就取消掉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/profileexport 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 lib32stdc6
验证
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 --depth1 --branch rpi-5.15.y https://github.com/raspberrypi/linux
#如果报错就多试几次就好了网络就是这样的
按顺序执行
#获取后得到一个源码目录改名为linuxcd linuxmake distclean #或者make mrpropermake ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- KERNELkernel8 bcm2711_defconfigmake -j3 ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- KERNELkernel8
#开始编译
其中KERNELkernel8参考 编译大概持续40分钟。
编译完成后在内核源码目录下执行命令加载更新内核模块
make ARCHarm64 CROSS_COMPILEaarch64-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个要更新到树莓派上的东西
1Image内核 位于内核目录/arch/arm64/boot/
2dtb设备树 位于内核目录/arch/arm64/boot/dts/broadcom/
3内核模块 位于INSTALL_MOD_PATH/lib/modules/
至此我们就告一段落
二、树莓派相关 2.1、镜像烧写
链接https://pan.baidu.com/s/1La93Og_kUzVTPRlsVPEiAQ?pwdhsw1 提取码hsw1
建议使用这个镜像因为能无显示屏连接wifi
连接WiFi只需2文件和一个读卡器
链接https://pan.baidu.com/s/1oreylGMvZHX1DwRdy7wD-A?pwdhsw1 提取码hsw1
其中wpa_supplicant.conf里面的内容
countryCN
ctrl_interfaceDIR/var/run/wpa_supplicant GROUPnetdev
update_config1network{ssidhsw #换成你的WiFi名称psk12345678 #换成你的WiFi密码
}ssh是使能树莓派的ssh服务
烧好后就插卡上电电脑开热点得到ip后使用软件
ssh登录连接 账户pi 密码raspberry 2.2、树莓派环境搭建 nfs
我们需要挂载文件来加速我们的开发使用需要打通开发板与u版图的nfs通信
按顺序使用命令
sudo apt-get install nfs-kernel-server rpcbindsudo 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 rpideb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi然后
sudo apt-get update
再去执行我们的命令就成功了 最后成功了后就能挂载了。
挂载测试
mount -t nfs -o nolock,vers3 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 -runame -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#以上路径改成自己的内核下的xxxsudo cp -r lib/modules/ ~/data2/lib/#lib/modules/改成 INSTALL_MOD_PATH的值这个是内核模块加载时的路径
卸载sd卡
sudo umount ~/data1sudo umount ~/data2插回树莓派。
打开终端编写config.txt
sudo vi /boot/config.txt# 在末尾添加内容并保存退出arm_64bit1
kernelkernel8.img重启树莓派reboot
打开终端再输入
uname -runame -a就变成我们编译的内核版本了。 三、常见错误 3.1、加载内核模块 这个错误就是因为没有更新板子上的内核
那你如果按照我的步骤一步一步来就不会这样
而是会成功加载进来如下 3.2、 执行app时架构冲突 在树莓派执行./app 文件时报错没有那个文件或者目录。
那就到/bin下面file一下bash如图是32位的
在file一下app文件如图是64位的。
64位兼容32位而32位不行
所以我们的交叉编译工具要变成32位的。
四、总结 到此我们就把驱动环境都搭建好了下篇我们将讲驱动开发的实际操作了