Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin


...

This

...

is

...

a

...

page

...

about

...

TI's

...

Cortex-A15

...

based;

...

BeagleBone-AI.

...

hide-comments

...

Table of Contents

...

indent

...

20px

...

style

...

disc

Availability

Boards:
BeagleBone-AI at Digi-Key
BeagleBone-AI at Digi-Key

Adapters:
Debug Cable Adapter for FTDI at Digi-Key
Debug Cable (usb-serial) at Digi-Key
Replacement HeatSink at Digi-Key

Vendor Documentation

official BeagleBone-AI Support Page: https://github.com/beagleboard/beaglebone-ai/wiki/System-Reference-Manual

...

Basic Requirements

  • Running a recent supported release of Debian, Fedora or Ubuntu on a x86 64bit based PC; without OS Virtualization Software.
  • Many of the listed commands assume /bin/bash as the default shell.
  • ARM Cross Compiler – Linaro: https://www.linaro.org

...

    • Linaro

...

    • Toolchain

...

    • Binaries:

...

...

  • Bootloader
    • Das U-Boot

...

    • the

...

    • Universal

...

    • Boot

...

    • Loader:

...

...

    • Source:

...

...

  • Linux

...

  • Kernel

...

    • Linus's

...

    • Mainline

...

    • tree:

...

...

  • ARM

...

  • based

...

  • rootfs

...

    • Debian:

...

...

    • Ubuntu:

...

...

ARM Cross Compiler:

...

GCC

...

This

...

is

...

a

...

pre-built

...

(64bit)

...

version

...

of

...

GCC

...

that

...

runs

...

on

...

generic

...

linux,

...

sorry

...

(32bit)

...

x86

...

users,

...

it's

...

time

...

to

...

upgrade...

...


Download/Extract:

...

:=}
Code Block
title
user@localhost:~$
wget -c https://releases.linaro.org/components/toolchain/binaries/6.5-2018.12/arm-linux-gnueabihf/gcc-linaro-6.5.0-2018.12-x86_64_arm-linux-gnueabihf.tar.xz
tar xf gcc-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-
{code}

Test

...

Cross

...

Compiler:

...

:=}
Code Block
title
user@localhost:~$
${CC}gcc --version
{code}
{code:title=Test Output:}
Code Block
titleTest Output:
arm-linux-gnueabihf-gcc (Linaro GCC 6.5-2018.12) 6.5.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
{code}
 
h2. 

Bootloader:

...

U-Boot

...

Das

...

U-Boot

...

the

...

Universal

...

Boot

...

Loader:

...

http://www.denx.de/wiki/U-Boot

...


eewiki.net

...

patch

...

archive:

...

https://github.com/eewiki/u-boot-patches

...


Download:

...

:=}
Code Block
title
user@localhost:~$
git clone -b v2019.07-rc4 https://github.com/u-boot/u-boot --depth=1
cd u-boot/
{code}

Patches:

...

:=}
Code Block
title
user@localhost:~/u-boot$
wget -c https://github.com/eewiki/u-boot-patches/raw/master/v2019.07-rc4/0001-am57xx_evm-fixes.patch
 
patch -p1 < 0001-am57xx_evm-fixes.patch
{code}

Configure

...

and

...

Build:

...

:=}
Code Block
title
user@localhost:~/u-boot$
make ARCH=arm CROSS_COMPILE=${CC} distclean
make ARCH=arm CROSS_COMPILE=${CC} am57xx_evm_defconfig
make ARCH=arm CROSS_COMPILE=${CC}
{code}
 
h2. Linux Kernel
This script will build the kernel, modules, device tree binaries and copy them to the deploy directory.
h3. TI BSP
Download:
{code:title=~/}}

Linux Kernel

This script will build the kernel, modules, device tree binaries and copy them to the deploy directory.

TI BSP

Download:

Code Block
title~/
git clone https://github.com/RobertCNelson/ti-linux-kernel-dev.git
cd ti-linux-kernel-dev/
{code}

For

...

TI

...

v4.14.x:

...

:=}
Code Block
title
~/ti-linux-kernel-dev/
git checkout origin/ti-linux-4.14.y -b tmp
{code}

For

...

TI

...

v4.14.x:

...

Real-Time

...

:=}
Code Block
title
~/ti-linux-kernel-dev/
git checkout origin/ti-linux-rt-4.14.y -b tmp
{code}

Build:

...

:=}
Code Block
title
user@localhost:~/ti-linux-kernel-dev$
./build_kernel.sh
{code}
 
h2. Root File System
h3. Debian 10
|| User || Password ||
| debian | temppwd |
| root | root |
Download:
{code:title=user@localhost:~$}

Root File System

Debian 10

User

Password

debian

temppwd

root

root

Download:

Code Block
titleuser@localhost:~$
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/debian-10.4-minimal-armhf-2020-05-10.tar.xz
{code}
 

Verify:

...

:=}
Code Block
title
user@localhost:~$
sha256sum debian-10.4-minimal-armhf-2020-05-10.tar.xz
{code}
{code:title=sha256sum output:}
Code Block
titlesha256sum output:
cd598e42850cbef87602bf15ee343abfbf0d8c6ba81028c741672b5f24263534  debian-10.4-minimal-armhf-2020-05-10.tar.xz
{code}
 

Extract:

...

:=}
Code Block
title
user@localhost:~$
tar xf debian-10.4-minimal-armhf-2020-05-10.tar.xz
{code}
 
h3. Ubuntu 

Ubuntu 20.04

...

LTS

...

User

Password

ubuntu

temppwd

Download:

Code Block
titleuser@localhost:~$
wget -c https://rcn-ee.com/rootfs/eewiki/minfs/ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz
{code}
 

Verify:

...

:=}
Code Block
title
user@localhost:~$
sha256sum ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz
{code}
{code:title=sha256sum output:}
Code Block
titlesha256sum output:
de0177ac9259fdbcc626ee239f4258b64070c0921dbc38c45fab6925a5becaa1  ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz
{code}
 

Extract:

...

:=}
Code Block
title
user@localhost:~$
tar xf ubuntu-20.04-minimal-armhf-2020-05-10.tar.xz
{code}
 
h2. Setup microSD card
We need to access the External Drive to be utilized by the target device. Run lsblk to help figure out what linux device has been reserved for your External Drive.
{code:title=Example: for .tar.xz

Setup microSD card

We need to access the External Drive to be utilized by the target device. Run lsblk to help figure out what linux device has been reserved for your External Drive.

}
Code Block
titleExample: for DISK=/dev/sdX
lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 465.8G  0 disk
├─sda1   8:1    0   512M  0 part /boot/efi
└─sda2   8:2    0 465.3G  0 part /                <- Development Machine Root Partition
sdb      8:16   1   962M  0 disk                  <- microSD/USB Storage Device
└─sdb1   8:17   1   961M  0 part                  <- microSD/USB Storage Partition
{code}
{code:title=Thus you would use:}
Code Block
titleThus you would use:
export DISK=/dev/sdb
{code}
{code:title=
}
Code Block
titleExample:
for
DISK=/dev/mmcblkX
lsblk
NAME      MAJ:MIN   RM   SIZE RO TYPE MOUNTPOINT
sda         8:0      0 465.8G  0 disk
├─sda1      8:1      0   512M  0 part /boot/efi
└─sda2      8:2      0 465.3G  0 part /                <- Development Machine Root Partition
mmcblk0     179:0    0   962M  0 disk                  <- microSD/USB Storage Device
└─mmcblk0p1 179:1    0   961M  0 part                  <- microSD/USB Storage Partition
{code}
{code:title=Thus you would use:}
Code Block
titleThus you would use:
export DISK=/dev/mmcblk0
{code}
 
Erase partition 

Erase partition table/labels

...

on

...

microSD

...

card:

...

}
Code Block
sudo dd if=/dev/zero of=${DISK} bs=1M count=10
{code}
 
Install Bootloader:
{code:title=10

Install Bootloader:

}
Code Block
titleuser@localhost:~$
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
{code}

Create

...

Partition

...

Layout:

...


With

...

util-linux

...

v2.26,

...

sfdisk

...

was

...

rewritten

...

and

...

is

...

now

...

based

...

on

...

libfdisk.

...

:= }
Code Block
title
Check
the
version
of
sfdisk
installed
on
your
pc
sudo sfdisk --version
{code}
{code:title=Example Output}
Code Block
titleExample Output
sfdisk from util-linux 2.27.1
{code}
{code:title=sfdisk 
}
Code Block
titlesfdisk >=
2.26.x
sudo sfdisk ${DISK} <<-__EOF__
4M,,L,*
__EOF__
{code}
{code:title=sfdisk 
}
Code Block
titlesfdisk <=
2.25.x
sudo sfdisk --unit M ${DISK} <<-__EOF__
4,,L,*
__EOF__
{code}
 
Format 

Format Partition:

...

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

Mount

...

Partition:

...


On

...

most

...

systems

...

these

...

partitions

...

may

...

be

...

auto-mounted...

...

}
Code Block
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/
{code}
 
h2. Install Kernel and Root File System
To help new users, since the kernel version can change on a daily basis. The kernel building scripts listed on this page will now give you a hint of what kernel version was built.
{code}

Install Kernel and Root File System

To help new users, since the kernel version can change on a daily basis. The kernel building scripts listed on this page will now give you a hint of what kernel version was built.

Code Block
-----------------------------
Script Complete
eewiki.net: [user@localhost:~$ export kernel_version=5.X.Y-Z]
-----------------------------
{code}
 
Copy and paste that "export 

Copy and paste that "export kernel_version=5.X.Y-Z"

...

exactly

...

as

...

shown

...

in

...

your

...

own

...

build/desktop

...

environment

...

and

...

hit

...

enter

...

to

...

create

...

an

...

environment

...

variable

...

to

...

be

...

used

...

later.

...

}
Code Block
export kernel_version=5.X.Y-Z
{code}
 
h3. Copy Root File System
{code:title=

Copy Root File System

}
Code Block
titleuser@localhost:~$
sudo tar xfvp ./*-*-*-armhf-*/armhf-rootfs-*.tar -C /media/rootfs/
sync
sudo chown root:root /media/rootfs/
sudo chmod 755 /media/rootfs/
{code}
 
h3. Set 

Set uname_r

...

in

...

/boot/uEnv.txt

...

:=}
Code Block
title
user@localhost:~$
sudo sh -c "echo 'uname_r=${kernel_version}' >> /media/rootfs/boot/uEnv.txt"
{code}
 
h3. Copy Kernel Image
Kernel Image:
{code:title=user@localhost:~$}

Copy Kernel Image

Kernel Image:

Code Block
titleuser@localhost:~$
sudo cp -v ./ti-linux-kernel-dev/deploy/${kernel_version}.zImage /media/rootfs/boot/vmlinuz-${kernel_version}
{code}
 
h3. Copy Kernel Device Tree Binaries
{code:title=user@localhost:~$}}

Copy Kernel Device Tree Binaries

Code Block
titleuser@localhost:~$
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}/
{code}
 
h3. Copy Kernel Modules
{code:title=

Copy Kernel Modules

}
Code Block
titleuser@localhost:~$
sudo tar xfv ./ti-linux-kernel-dev/deploy/${kernel_version}-modules.tar.gz -C /media/rootfs/
{code}
 
h3. File Systems Table 

File Systems Table (/etc/fstab)

...

:=}
Code Block
title
user@localhost:~/$
sudo sh -c "echo '/dev/mmcblk0p1  /  auto  errors=remount-ro  0  1' >> /media/rootfs/etc/fstab"
{code}
 
h3. Remove 

Remove microSD/SD

...

card

...

}
Code Block
sync
sudo umount /media/rootfs
{code}
 
h2. Comments
Any questions or comments please go to our TechForum: [TechForum|https://forum.digikey.com/c/linux-on-arm/]

Comments

Any questions or comments please go to our TechForum: TechForum