beaglebone AI环境搭建与运行是怎样的

技术beaglebone AI环境搭建与运行是怎样的beaglebone AI环境搭建与运行是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所

很多新手对Beaboneai环境的构建和操作不是很清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。

beaglebone AI环境搭建与运行

1.前言

本文主要介绍了beaglebone的开发过程和启动模式。同时,搭建嵌入式Linux开发环境。为了更好的掌握和理解beaglebone AI的使用。工人要想做好,就要磨利工具,搭建完整的开发环境,才能更好地开展后续工作。如果你想很好地使用一个芯片,你还需要很好地了解它的启动模式。让我们实际展示下面的操作流程。

00-1010首先,我选择了beaglebone AI作为嵌入式Linux学习的开发板,因为良好的芯片数据表支持和TI芯片的大规模使用,使其更具通用性和可扩展性。板值高、性能强、可玩性好、DIY能力强的项目很多。这些都让我有动力把这块板往前推。在挖坑填洞的过程中,也将作为树莓派4之外的另一个主要业余开发学习项目。在国内,这个板不是很受欢迎,但在国外玩的人还是很多。也希望更多的人一起玩,从而学习更好的设计,写出更多更好的文章与大家分享。

2.beaglebone AI 开发板特性

10-1010当前的开发环境建立在ubuntu之上。首先,连接开发板的调试串口。

beaglebone  AI环境搭建与运行是怎样的

的前视图如下:

beaglebone  AI环境搭建与运行是怎样的

该输出用作调试串行端口。

00-1010首先,确保默认pc为64位,这不适合32位机器。

wget-c https://releases . linaro . org/components/tool chain/binaries/6.5-2018.12/arm-Linux-gnueabihf/gcc-linaro-6 . 5 . 0-2018.12-x86 _ 64 _ arm-Linux-gnueabihf . tar . xz

tarxfgcc-linaro-6 . 5 . 0-2018.12-x86 _ 64 _ arm-Linux-gnueabihf . tar . xz

export cc=` pwd `/gcc-linaro-6 . 5 . 0-2018.12-x86 _ 64 _ arm-Linux-gnueabihf/bin/arm-Linux-gnueabihf-

其中pwd是默认路径。

然后检查gcc的版本。

${CC}gcc -版本

您可以看到以下结果。

beaglebone  AI环境搭建与运行是怎样的

00-1010.然后就可以开始编译uboot了。

gitclone-bv2019.07-rc4https://github.com/u-boot/u-boot深度=1

cdu-boot/

然后为uboot生成补丁文件。

wget-c https://github.com/ee wiki/u-boot-patches/raw/master/v 2019.07-RC4/0001-am57xx _ EVM-fixes . patch

修补程序-p 10001-am57xx _ EVM-修复

es.patch

 

接着开始编译

make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am57xx_evm_defconfig
make ARCH=arm CROSS_COMPILE=${CC}

 

编译完成就可以进行下面的操作了。

 

4.beaglebone AI启动方式

学习一款嵌入式开发板的使用,首先就要理解其启动模式。

按照https://github.com/beagleboard/beaglebone-ai/BeagleBone-AI_sch.pdf上标注,可以知道,在启动上,首先会从USB中寻找程序,然后第二启动项是SD卡,接着是eMMC。

beaglebone AI环境搭建与运行是怎样的

本文主要介绍SD卡与eMMC的启动模式。并且将uboot烧录到SD卡中进行启动。

首先准备一张小于等于16GB的SD卡(实测32GB的卡插入没用),接着插入Ubuntu系统中。

输入lsblk

bigmagic@bigmagic:~/work$ lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop1    7:1    0  55.3M  1 loop /snap/core18/1885
loop2    7:2    0 162.9M  1 loop /snap/gnome-3-28-1804/145
loop3    7:3    0 217.9M  1 loop /snap/gnome-3-34-1804/60
loop4    7:4    0 255.6M  1 loop /snap/gnome-3-34-1804/36
loop5    7:5    0  62.1M  1 loop /snap/gtk-common-themes/1506
loop6    7:6    0  43.2M  1 loop /snap/snap-store/415
loop7    7:7    0  50.7M  1 loop /snap/snap-store/481
loop8    7:8    0    31M  1 loop /snap/snapd/9607
loop9    7:9    0    31M  1 loop /snap/snapd/9721
loop10   7:10   0  55.4M  1 loop /snap/core18/1932
sda      8:0    0 931.5G  0 disk
├─sda1   8:1    0 465.9G  0 part /
└─sda2   8:2    0 465.7G  0 part
sdb      8:16   0 223.6G  0 disk
├─sdb1   8:17   0   200M  0 part /boot/efi
├─sdb2   8:18   0  99.4G  0 part
├─sdb3   8:19   0   589M  0 part
├─sdb4   8:20   0 115.4G  0 part
└─sdb5   8:21   0     8G  0 part
sdc      8:32   1    15G  0 disk
└─sdc1   8:33   1    15G  0 part

 

可以看的标识是sdc,则我们可以通过下面的命令导出到全局变量。

export DISK=/dev/sdc

 

输入下面三条指令则可以将uboot烧录到卡里了。

sudo dd if=/dev/zero of=${DISK} bs=1M count=10
sudo dd if=./u-boot/MLO of=${DISK} count=2 seek=1 bs=128k
sudo dd if=./u-boot/u-boot.img of=${DISK} count=4 seek=1 bs=384k

 

完成后输入sync后,可以看到uboot已经正常启动了。

beaglebone AI环境搭建与运行是怎样的


 

从上面的过程不难分析,一般的TI芯片都会将启动分为三部分

ROM->MLO(SPL)->uboot.img

 
 

5.beaglebone AI的Linux编译

 

5.1 编译kernel

git clone https://github.com/RobertCNelson/ti-linux-kernel-dev.git
cd ti-linux-kernel-dev/

 

如果是编译正常的内核

git checkout origin/ti-linux-4.14.y -b tmp

 

编译实时性内核

git checkout origin/ti-linux-rt-4.14.y -b tmp

 

其中实时性内核是就是RT_LINUX。输入下面的命令开始编译。

./build_kernel.sh

 

中途会有个menuconfig的界面需要配置

beaglebone AI环境搭建与运行是怎样的


 

直接选择Exit即可,程序会继续编译下去。直到编译结束。

 

5.2 选择根文件系统

跟文件系统可以选择Debian 10或者Ubuntu 20.04 LTS

Debian 10

首先下载

wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-10.4-minimal-armhf-2020-05-10.tar.xz

 

可以校验一下

sha256sum debian-10.4-minimal-armhf-2020-05-10.tar.xz

 

得到结果如下即可

beaglebone AI环境搭建与运行是怎样的

接着解压

tar xf debian-10.4-minimal-armhf-2020-05-10.tar.xz

 

解压后进入目录可以看到下面的文件

beaglebone AI环境搭建与运行是怎样的

其中user_password.list中存放的是用户名和密码。

debian:temppwd

 

Ubuntu 20.04 LTS

可以下载

wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz

 

校验一下

sha256sum ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz

 

校验的结果如下:

de0177ac9259fdbcc626ee239f4258b64070c0921dbc38c45fab6925a5becaa1  ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz

 

解压即可

tar xf ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz

 

在ubuntu上可以使用输入用户名Ubuntu,密码temppwd即可。

 

6.将Linux的镜像烧录

接下来烧录Linux的镜像到SD卡中。

 

6.1 格式化SD卡

首先和烧录uboot的方式一样,如果检测到sd卡的号为sdc。

export DISK=/dev/sdc

 

如果是mmcblk0则修改成该名称。

输入下面的命令查看sfdisk的版本。

sudo sfdisk --version

 

看到输出

sfdisk,来自 util-linux 2.34

 

如果检测到sfdisk >= 2.26.x则输入:

sudo sfdisk ${DISK} <<-__EOF__
4M,,L,*
__EOF__

 

如果检测到sfdisk <= 2.25.x则输入:

sudo sfdisk --unit M ${DISK} <<-__EOF__
4,,L,*
__EOF__

 

然后格式化SD卡

for: DISK=/dev/mmcblkX
sudo mkfs.ext4 -L rootfs ${DISK}p1
  
for: DISK=/dev/sdX
sudo mkfs.ext4 -L rootfs ${DISK}1

 

挂载分区

sudo mkdir -p /media/rootfs/
  
for: DISK=/dev/mmcblkX
sudo mount ${DISK}p1 /media/rootfs/
  
for: DISK=/dev/sdX
sudo mount ${DISK}1 /media/rootfs/

 
 

6.2 拷贝rootfs到SD卡中

为了可以进行内核版本的区分,我们可以为内核镜像定义一个名字,该名字可以查看编译出来的文件得到4.14.108-ti-r137.zImage

export kernel_version=4.14.108-ti-r137

 

Linux完全引导起来需要rootfs,所以可以将rootfs解压到指定的路径下:

sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/
sync
sudo chown root:root /media/rootfs/
sudo chmod 755 /media/rootfs/

 

为了方便,此时我们可以重名了内核版本,在/boot/uEnv.txt文件中。

sudo sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"

 

接着输入文件系统挂载

sudo sh -c "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"

 
 

6.3 拷贝Linux内核镜像

进入到刚才编译ti-linux-kernel-dev的上层目录,输入

sudo cp -v ./ti-linux-kernel-dev/deploy/*.zImage /media/rootfs/boot/vmlinuz-${kernel_version}

 
 

6.4 拷贝设备树文件

sudo mkdir -p /media/rootfs/boot/dtbs/${kernel_version}/
sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-dtbs.tar.gz -C /media/rootfs/boot/dtbs/${kernel_version}/

 
 

6.5 拷贝内核模块

sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/

 
 

7.启动与验证

上述过程完成后,可以移除SD卡,并插入beaglebone AI的板子中。

sync
sudo umount /media/rootfs

 

上电后,首先会从SD卡中启动,最后的效果如下:

beaglebone AI环境搭建与运行是怎样的

由于烧录了ubuntu系统,可以看到启动信息。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/142324.html

(0)

相关推荐

  • 如何利用树莓派监控家里温度和湿度

    技术如何利用树莓派监控家里温度和湿度小编给大家分享一下如何利用树莓派监控家里温度和湿度,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!硬件需求W

    攻略 2021年11月20日
  • 容斥问题公式,四个集合的容斥原理公式怎么解决

    技术容斥问题公式,四个集合的容斥原理公式怎么解决用|A|表示集合A的基数,也即集合A中元素的个数。则有|A∪B∪C∪D|=|A|+|B|+|C|+|D|-|A∩B|-|A∩C|-|A∩D|-|B∩C|-|B∩D|-|C∩

    生活 2021年10月26日
  • TP6管理后台实战第五天-文章管理

    技术TP6管理后台实战第五天-文章管理 TP6管理后台实战第五天-文章管理第五天目标:
    1、文章管理进入开发:
    1、文章分类管理1.1 文章分类列表 -- ok搜索项: 分类名称 分类状态列表项:ID,

    礼包 2021年10月27日
  • 宫寒不孕症状,不孕的原因就只是“宫寒”吗

    技术宫寒不孕症状,不孕的原因就只是“宫寒”吗日常生活中我们经常会听到有人说怀不上孩子是因为“宫寒”宫寒不孕症状,这其实是一个误区。不孕是有多种原因导致的生育状态障碍,男女双方因素都有,在这里我们主要谈论女性因素导致的不孕

    生活 2021年10月27日
  • 炼铁的原理化学方程式,赤铁矿炼铁的化学方程式是什么

    技术炼铁的原理化学方程式,赤铁矿炼铁的化学方程式是什么赤铁矿炼铁的化学方程式是:Fe₂O₃+3CO=高温=2Fe+3CO₂。 原理:一氧化碳和氧化铁在高温的条件下生成铁和二氧化碳。 赤铁矿石主要用来冶炼生铁。赤铁矿在自然

    生活 2021年10月28日
  • 15firewalld和iptables

    技术15firewalld和iptables 15firewalld和iptablesFirewalld 防火墙
    复习
    1、keepalived的作用是什么 在集群中生成VIP,主要用于高可用。

    礼包 2021年11月7日