树莓派开发环境搭建及nfs安装测试全流程详细指南

最后的自己制作根文件系统的部分,采用了树莓派默认的根文件系统,如果需要自己裁剪制作,可以进行定制操作。整个嵌入式Linux开发和环境搭建过程都可以在树莓派4b上很好的进行测试,万变不离其宗,掌握了嵌入式开发的流程和工具,做应用和做驱动开发都十分的方便和高效。

树莓派开发环境搭建及nfs安装测试全流程详细指南

其中,10.1.1。*是您网络段的地址信息。

最后重新启动NFS

sudo systemctl restart nfs-kernel-server

测试NFS的安装

安装完成后,您可以安装NFS客户端

sudo apt install nfs-common

然后创建一个本地文件夹目录

sudo mkdir -p /opt/nfs-client

终于安装了

sudo mount -t nfs 10.1.1.160:/opt/nfs  /opt/nfs-client

在 /opt /nfs下创建文件时,也可以看到 /opt /nfs-client目录,表明成功。

2.2 Raspberry Pi开发环境构建2.2.1硬件连接

树莓派开发环境搭建及nfs安装测试全流程详细指南

Raspberry Pi 4上的实际硬件引脚分布显示在上图中,其中需要连接串行端口RX,TX和GND。

准备一个超过8G的SD卡,然后打开Raspberry Pi成像仪,然后选择Raspberry Pi图像将其燃烧。

树莓派开发环境搭建及nfs安装测试全流程详细指南

此步骤的目的是因为Raspberry Pi启动过程需要从SD卡加载启动文件的第一阶段。

默认情况下,连接到串行端口后,燃烧的固件没有输出。您需要自己修改SD卡中的config.txt文件。最后添加以下句子。

enable_uart=1

这样,通过MobaxTerm工具打开串行端口并连接到电源后,您可以看到以下输出

树莓派开发环境搭建及nfs安装测试全流程详细指南

然后输入用户名和密码如下

raspberrypi login:pi
Password:raspberry

这样,您可以使用默认的Raspberry Pi 4串行调试功能。

2.2.2覆盆子PI 4B启动过程分析

为了简要描述Raspberry Pi 4B的启动过程,电源后,Raspberry Pi将自动加载位于SD卡文件中的bootcode.bin文件。该文件被加载到Raspberry Pi的GPU中。该程序初始化PLL,DDR等,然后在SD卡文件中读取start4.elf文件以执行。在执行文件期间,将读取config.txt文件,并且可以根据配置脚本选择可以执行的固件。

在嵌入式开发中,基础启动逻辑必须非常清楚,以便在任何情况下都可以解决问题,从而确保在硬件和软件级别上保持一致性。

树莓派开发环境搭建及nfs安装测试全流程详细指南

上图基本上显示了一个通用嵌入的Linux启动过程,每个阶段的特征和功能点得到很好的描述。

Raspberry Pi 4b上Broadcom BCM2711的启动遵循以下程序。

第一阶段引导程序:

第二阶段引导加载程序:

在本文中,我们主要修改config.txt配置文件以执行UBOOT启动过程。

3。安装交叉兼容工具和层压工具的编译3.1安装ARM 64位交叉补偿环境

由于需要编译64位程序,因此我们需要安装ARM的64位交叉补偿环境。

https://www.linaro.org/downloads/

从上面的网站输入

树莓派开发环境搭建及nfs安装测试全流程详细指南

建议下载gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.xz。

树莓派开发环境搭建及nfs安装测试全流程详细指南

下载完成后,将其放入指定的目录中。

#创建一个文件夹
sudo mkdir -p /opt/linaro
#解压到指定的文件夹路径
sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar -C /opt/linaro

更新环境变量

 sudo vim ~/.bashrc

在最后添加以下内容

alias crosscompiler='export KERNEL=kernel8;export ARCH=arm64;export CROSS_COMPILE=/opt/linaro/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-'

更新环境

source ~/.bashrc

3.2在Raspberry pi上编译UBOOT

首先,您需要下载代码

 git clone https://github.com/u-boot/u-boot.git

正常的下载完成图如下:

树莓派开发环境搭建及nfs安装测试全流程详细指南

然后切换分支并开始编译。

cd u-boot
git checkout v2020.04-rc3

编译之前,您需要首先安装所需的编译程序

sudo apt install u-boot-tools bison bc make flex libssl-dev ncurses-*

安装完成后,执行

crosscompiler

此命令是在环境变量中定义的命令,您可以设置环境变量。

 make rpi_4_defconfig

只需使用默认配置进行编译即可。

make -j $(nproc)

编译后的Uboot.bin文件是可以直接在Raspberry Pi 4B上执行的程序。

树莓派开发环境搭建及nfs安装测试全流程详细指南

3.3将U-Boot放在Raspberry Pi上运行

此时,您可以将编译的U-Boot程序在Raspberry Pi 4B上运行。

将Raspberry Pi的SD卡插入计算机,然后在SD卡中的Config.txt.bak中重新命令config.txt。并创建新的config.txt。

arm_control=0x200
kernel=u-boot.bin
dtoverlay=disable-bt

这三行是指

arm_control=0x200 #因为树莓派4b支持的是64位的架构,这里用来表示运行64位程序

使用UBOOT

kernel=u-boot.bin # kernel表示运行的固件

启用串行端口

 dtoverlay=disable-bt #树莓派4设计的时候,如果打开了串口调试,则蓝牙无法使用

将SD卡插入计算机中,您可以看到UBOOT正常启动。

树莓派开发环境搭建及nfs安装测试全流程详细指南

4。linux编译和下载Raspberry Pi 4b 4.1编译Raspberry Pi Linux源代码

Raspberry Pi 4B的施托功能已经完成,我们将开始编译Raspberry Pi的Linux内核。

Raspberry Pi有一个单独的代码分支可以维护Linux,可以通过以下命令下载。

git clone --branch rpi-5.6.y https://github.com/raspberrypi/linux

输入Linux目录

创建一个新目录来存储编译的固件

mkdir rpi_hw

开始汇编

make O=rpi_hw bcm2711_defconfig

删除MMC/SD/SDIO驱动程序

make O=rpi_hw menuconfig

输入设备驱动程序,然后选择以删除MMC/SD/SDIO卡支持。

保存配置后,您可以编译。

make O=rpi_hw -j $(nproc)

为什么要删除MMC/SD/SDIO驱动程序?

这是因为需要编译从网络开始的驱动程序,因此无需在Raspberry Pi的SD卡中操作。

编译完成后,可以在RPI_HW/ARCH/ARM64/boot中找到编译文件。

树莓派开发环境搭建及nfs安装测试全流程详细指南

将编译的Linux内核文件放入

 sudo cp rpi_hw/arch/arm64/boot/Image /srv/tftp/

4.2运行编译的Linux固件

在通过UBOOT将编译固件加载到RAM中的期间,您需要了解Raspberry Pi 4B内存的分布。

树莓派开发环境搭建及nfs安装测试全流程详细指南

通过UBOOT的BDINFO命令,您可以看到Raspberry Pi 4b上有两家银行。第一银行位于0x00000000,第二个银行为0x400000000。

和Raspberry Pi 4B从SD卡加载图像文件时,开始在DRAM的0x8000的地址运行。

当然,该地址也可以在UBOOT中设置,Linux将重新安置代码。

目前,您需要在uboot中设置启动信息。

首先设置UBOOT的静态IP地址

setenv ipaddr 10.1.1.100 #设置开发板的静态地址(自定义)
setenv serverip 10.1.1.160 #设置服务器的地址
setenv netmask 255.255.255.0
saveenv
reset

以上操作设置IP地址,然后将其设置为启动

setenv kernel_addr_r 0x8000
setenv kernel Image
setenv netboot 'tftp ${kernel_addr_r} ${kernel} && booti ${kernel_addr_r} - ${fdtcontroladdr}'
setenv bootcmd 'run netboot'
setenv bootargs 'console=ttyAMA0'
saveenv
reset

可以显示如下:

树莓派开发环境搭建及nfs安装测试全流程详细指南

最后一家启动后报告了错误

树莓派开发环境搭建及nfs安装测试全流程详细指南

这是正常的,目前没有rootfs。但是现在可以正常加载Linux内核。

让我们将其挂在下面的rootfs中。

5。根文件使用

本文不会提及一般根文件系统的生产过程,但现在它主要描述了如何使用它。

5.1在Uboot中设置启动项目

首先设置了UBOOT中的路径。

setenv nfsroot /opt/nfs/

设置启动参数

setenv bootargs "console=ttyAMA0,115200 root=/dev/nfs rw nfsroot=${serverip}:${nfsroot},v3,tcp ip=$ipaddr:$serverip::$netmask::eth0:off"

保存配置

saveenv

5.2插入SD卡并将其挂在虚拟机上

首先将USB驱动器安装到虚拟机

树莓派开发环境搭建及nfs安装测试全流程详细指南

您可以看到两个磁盘出现

树莓派开发环境搭建及nfs安装测试全流程详细指南

在:

您可以将rootf中的所有文件复制到/opt/nfs/

sudo cp * /opt/nfs/ -R

在 /opt /nfs目录中,创建一个新的文件文件夹,然后将启动中的所有文件复制到其中。

sudo mkdir -p /opt/nfs/file
sudo cp * /opt/nfs/file/

5.3修改文件脚本

需要修改

sudo vim etc/fstab

添加了以下文件

10.1.1.160:/opt/nfs/file /boot nfs defaults,vers=4.1,proto=tcp 0 0

树莓派开发环境搭建及nfs安装测试全流程详细指南

目的是阻止默认的两个项目列表,您只需要将文件系统安装在NFS中即可。

修改完成后,插入SD卡,您可以正常从TFTP获取Linux的内核固件,然后从NFS文件系统安装根文件系统。

树莓派开发环境搭建及nfs安装测试全流程详细指南

如果您发现需要密码,或者忘记了密码,则可以输入

cd /opt/nfs/
sudo vim /etc/passwd

删除中间x。

树莓派开发环境搭建及nfs安装测试全流程详细指南

在Linux中,默认X表示需要输入密码。

6。摘要

本文对Raspberry Pi的整个Linux系统和Raspberry Pi的启动进行了一定的分析。我们在Raspberry Pi,U-Boot Loading Linux内核和安装NFS文件系统的启动下进行了一些实验。

制作自己的根文件系统的最后一部分使用Raspberry Pi的默认根文件系统。如果您需要自己剪裁并制作,则可以执行自定义操作。

可以在Raspberry Pi 4B上对整个嵌入的Linux开发和环境构建过程进行很好的测试,并且永远不会与本质分开。它掌握了嵌入式开发的过程和工具,并且在应用程序和驱动程序开发方面非常方便和有效。

由于时间限制,仍然有一些尚未完成的实验,例如Linux,驱动程序开发等上的应用程序开发以及JLINK调试等。

在Raspberry Pi 4B上使用和启动Linux非常方便,而且价格非常合理。这是一个很好的开发平台。

单片机

基于单片机AT89S51的电子密码锁毕业设计相关介绍

2025-5-4 18:00:32

单片机

基于单片机AT89S51的电子密码锁毕业设计相关介绍

2025-5-4 18:02:07

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索