首页 > 其他分享 >构建 openEuler Embedded 24.03 LTS (Phytium BSP)

构建 openEuler Embedded 24.03 LTS (Phytium BSP)

时间:2024-09-13 16:46:16浏览次数:8  
标签:LTS kernel Embedded Phytium sudo dev dtb openeuler phytium

Ubuntu 24.04 构建 openEuler Embedded 24.03 LTS (Phytium BSP)

参考链接:Phytium-OpenEuler-Embedded-BSP - Gitee

1 介绍

本文档介绍如何在Ubuntu 24.04上构建openEuler Embedded 24.03 LTS (Phytium BSP)。对计算机配置有要求。

2 脚本

将以下内容复制到新文件oe_phy.sh,添加权限sudo chmod +x oe_phy.sh,运行./oe_phy.sh即可一键编译:

#!/bin/bash

# 安装oebuild

sudo apt install python3 python3-pip -y
sudo pip install oebuild --break-system-packages
# 在Ubuntu 24.04中,不加--break-system-packages会报错

# 安装docker

sudo apt install docker -y
sudo groupadd docker
sudo usermod -a -G docker $(whoami)
sudo systemctl reload docker
sudo systemctl restart docker
sudo chmod o+rw /var/run/docker.sock

# 初始化oebuild目录

oebuild init -b openEuler-24.03-LTS oe_phy
cd oe_phy && oebuild update

# 下载 openeuler-meta-phytium

rm -rf src/yocto-meta-openeuler/bsp/meta-phytium
git clone https://gitee.com/phytium_embedded/phytium-bsp-openeuler-embedded.git  src/yocto-meta-openeuler/bsp/meta-phytium
cp  src/yocto-meta-openeuler/bsp/meta-phytium/phytium.yaml  src/yocto-meta-openeuler/.oebuild/platform/

# 支持编译SD卡镜像:在local.conf.sample 里添加变量

# vim src/yocto-meta-openeuler/.oebuild/local.conf.sample
# MACHINE_FEATURES += " sd"
# uboot 默认支持4G内存,如果支持2G内存修改如下变量
# vim recipes-bsp/phyuboot/phyuboot.bb
# RAMSIZE="2GB"

# 执行构建操作
oebuild generate -p phytium
cd ./build/phytium/

# 1. 正常编译:
# oebuild bitbake openeuler-image
# 或(两条指令二选一即可):
# oebuild bitbake phydisk

# 2. 带menuconfig的编译:
oebuild bitbake
# 配置menuconfig,比如找到Realtek devices,勾选所有
# 以下需要手动输入:
# bitbake -c menuconfig linux-openeuler
# 然后在图形界面中配置编译选项
# 继续手动输入指令:
# bitbake openeuler-image

注意,根据需求方面是否要配置menuconfig,脚本末尾部分(正常编译)和(带menuconfig的编译)二选一。具体而言:

  1. 若要正常编译,则开放openeuler-image或phydisk的注释,二选一。openEuler-image是编译出内核、设备树、文件系统,可以分别加载。phydisk是包含内核、设备树、文件系统的整体镜像。
  2. 若要在menuconfig中配置,则开放oebuild bitbake的注释。余下部分是在oebuild环境中,需要手动输入。以添加Realtek网卡驱动为例,需要勾选Device Drivers > Network device support > Ethernet driver support > Realtek devices下的各项:
    Realtek Driver

3 在eMMC加载镜像

镜像输出位置:

kernel image和rootfs
<work-directory>/build/phytium/output/xxxxx/
dtb file
<work-directory>/build/phytium/tmp/deploy/images/phytium

通过SD卡加载镜像很简单,用读卡器插入SD卡烧录,插入开发板即可。下面讨论如何在eMMC加载镜像:

3.1 搭建TFTP环境

在与板子同一局域网下的Linux PC(以Ubuntu为例)上运行如下指令:

# 搭建TFTP服务器

sudo apt install tftp-hpa tftpd-hpa
sudo apt install xinetd

# 创建一个目录存放tftp文件并开放权限
# (使uboot可以从tftpboot中下载文件)

mkdir tftpboot
chmod 777 tftpboot

新建文件sudo vim /etc/xinetd.d/tftp,输入如下内容:

server tftp
{
        socket_type = dgram
        protocol    = udp
        wait        = yes
        user        = root
        server      = /usr/sbin/in.tftpd
        server_args = -s ~/Work/7-2024/tftpboot
        disable     = no
        per_source  = 11
        cps         = 100 2
        flags       = IPv4
}

启动tftp服务:

sudo systemctl start tftpd-hpa

打开sudo vim /etc/default/tftpd-hpa,修改为如下内容(TFTP_DIRECTORY需为绝对路径):

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/xilong/Work/7-2024/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"

重启tftp服务器:

sudo systemctl restart tftpd-hpa

3.2 传输镜像Image和设备树dtb文件至开发板

将之前编译生成的Image和dtb文件拷贝到tftpboot文件夹中,并开放权限:

# cp复制各文件
cp Image ~/Work/9-2024/tftpboot
cp e2000q-hanwei-qcore.dtb ~/Work/9-2024/tftpboot

# 修改文件夹及所有文件权限(也可逐个修改)
sudo chmod 777 -R ./tftpboot

重启开发板,在uboot界面加载系统镜像和设备树文件:

# 通过TFTP将Image和dtb传输到DRAM中

tftp 90000000 192.168.0.10:Image
tftp 80800000 192.168.0.10:e2000q-hanwei-qcore.dtb

# 将Image和dtb从DRAM加载到eMMC中(持久存储)
# 其中e53200是Image的大小(十六进制,单位:字节)

fatwrite mmc 0:1 90000000 Image e53200
fatwrite mmc 0:1 80800000 e2000q-hanwei-qcore.dtb 6098

# 以后每次可以从mmc加载文件:
# fatload mmc 0:1 90000000 Image
# fatload mmc 0:1 80800000 e2000q-hanwei-qcore.dtb

# 启动
# booti <Image地址> <initrd地址> <dtb地址>
# 其中initrd地址可不指定,用"-"代替
booti 90000000 - 80800000

注意修改IP地址和dtb文件名。

3.3 加载rootfs(By LA)

  1. openeuler通过TF卡启动。

  2. 把板载的emmc重新分区

    1. 通过fdisk删除/dev/mmcblk0的第二个分区/dev/mmcblk0p2 (mmcblk0p1现在存储了image和dtb,暂时保留了,如果mmcblk0p1足够大,分2个区就足够)
    2. 通过fdisk 在/dev/mmcblk0重新创建分区/dev/mmcblk0p2 大小为10G(只要能放下rootfs就行)
    3. 通过fdisk 在/dev/mmcblk0重新创建分区/dev/mmcblk0p3(大小为mmcblk0剩余的所有空间)

    重新分区完成后效果如下:

    phytium ~ # fdisk /dev/mmcblk0

    The number of cylinders for this disk is set to 954240.
    There is nothing wrong with that, but this is larger than 1024,
    and could in certain setups cause problems with:

    1. software that runs at boot time (e.g., old versions of LILO)
    2. booting and partitioning software from other OSs
      (e.g., DOS FDISK, OS/2 FDISK)

    Command (m for help): p
    Disk /dev/mmcblk0: 29 GB, 31268536320 bytes, 61071360 sectors
    954240 cylinders, 4 heads, 16 sectors/track
    Units: sectors of 1 * 512 = 512 bytes

    Device Boot StartCHS EndCHS StartLBA EndLBA Sectors Size Id Type
    /dev/mmcblk0p1 * 0,32,33 636,67,22 2048 6108975 6106928 2981M b Win95 FAT32
    /dev/mmcblk0p2 1023,3,16 1023,3,16 6108976 27080495 20971520 10.0G 83 Linux
    /dev/mmcblk0p3 1023,3,16 1023,3,16 27080496 61071359 33990864 16.2G 83 Linux

    Command (m for help):

  3. 格式化/dev/mmcblk0p2, /dev/mmcblk0p3

    phytium ~ # mkfs.ext4 /dev/mmcblk0p2
    phytium ~ # mkfs.ext4 /dev/mmcblk0p3

  4. 把rootfs存放到/dev/mmcblk0p2中

    mkdir /home/disk2
    mount -t ext4 /dev/mmcblk0p2 /home/disk2
    scp 用户名@地址:rootfs路径 /home/disk2

    例如 scp [email protected]:/rootfs/openeuler-image-phytium-20240828023833.rootfs.ext4 /home/disk2

  5. 烧写rootfs到/dev/mmcblk0p3

    dd if=rootfs路径 of=/dev/mmcblk0p3 bs=1M status=progress
    sync

    例如 dd if=/home/disk2/openeuler-image-phytium-20240828023833.rootfs.ext4 of=/dev/mmcblk0p3 bs=1M status=progress

  6. 调整uboot 环境变量
    setenv boot_linux “booti $kernel_addr - $kernel_fdt_addr“
    setenv kernel_name Image
    setenv distro_bootcmd "run load_kernel;run load_fdt;run boot_linux"
    setenv dtb e2000q-hanwei-qcore.dtb
    setenv kernel_fdt_addr 80800000
    setenv kernel_fdt_name "$dtb"
    saveenv

    当前的环境变量如下:
    HANWEI_E2K#printenv
    arch=arm
    baudrate=115200
    board=e2000
    board_name=e2000
    boot_linux=booti 0x90000000 - 80800000
    boot_os=$boottype $kernel_addr -:- $kernel_fdt_addr
    boot_sylixos=bootelf
    bootargs=console=ttyAMA1,115200 audit=0 earlycon=pl011,0x2800d000 root=/dev/mmcblk0p3 rootwait rw
    bootcmd=run distro_bootcmd
    bootdelay=2
    boottype=bootm
    cpu=armv8
    distro_bootcmd=run load_kernel;run load_fdt;run boot_linux
    dtb=e2000q-hanwei-qcore.dtb
    eth0addr=9c:69:b4:c0:44:fb
    eth1addr=9c:69:b4:c0:44:fc
    eth2addr=9c:69:b4:c0:44:fd
    eth3addr=9c:69:b4:c0:44:fe
    ethaddr=9c:69:b4:c0:dc:a0
    fdtcontroladdr=f9c265b0
    fileaddr=90000000
    filesize=e01a00
    gatewayip=192.168.1.1
    ipaddr=192.168.1.101
    kernel_addr=0x90000000
    kernel_fdt_addr=80800000
    kernel_fdt_name=e2000q-hanwei-qcore.dtb
    kernel_name=Image
    load_fdt=load $loadtype 0:1 $kernel_fdt_addr $kernel_fdt_name
    load_kernel=load $loadtype 0:1 $kernel_addr $kernel_name
    loadaddr=0x90000000
    loadtype=mmc
    netdev=eth0
    netmask=255.255.255.0
    serverip=192.168.1.7
    show_pad_ver=1
    usb_install=run usb_install_bootargs;usb start;fatload usb 0:1 0x91000000 Images/Image_initrd;fatload usb 0:1 0x90000000 dtbs/e2000q-hanwei-qcore.dtb;fatload usb 0:1 0x800000000
    usb_install_bootargs=setenv bootargs "console=ttyAMA1,115200 quiet loglevel=0 audit=0 root=/dev/ram rw"
    use_eeprom_mac=1
    vendor=phytium

    Environment size: 1367/4092 bytes

  7. 拔掉TF卡,板卡重新上电可自动进入系统。默认即root登录,首次登录设定密码。

注意:需要把Image和e2000q-hanwei-qcore.dtb提前放到/dev/mmcblk0p1中。

标签:LTS,kernel,Embedded,Phytium,sudo,dev,dtb,openeuler,phytium
From: https://www.cnblogs.com/EndPoem-ZH/p/18146574

相关文章

  • 【2024潇湘夜雨】WIN10_LTSC2021_21H2.19044.4894软件选装纯净特别版9.12
    【系统简介】=============================================================1.本次更新母盘来自WIN10_LTSC2021_21H2.19044.4894.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为19044.48......
  • [昌哥IT课堂]|如何确定 MySQL 服务器是否为 LTS 版本(译)
     根据支持LTS(长期支持)发布的新发布模型,给定的MySQL服务器将分为以下两类:要么是LTS版本。要么是创新版本。本博客文章将解释如何确定给定的MySQL服务器是否为LTS版本。 定义发布类型MySQL服务器源代码存储库中包含一个名为MYSQL_VERSION的文件,用于定义当前发......
  • saltstack使用介绍
    saltstack使用介绍saltstack是什么早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这些脚本复杂且难以维护。系统管理员面临的问题主要是1、系统配置管理,2、远程执行命令,因此诞生了很多开源软件,系统维护方面有fabric、puppet、chef、ansible、saltstack等,这些......
  • Unity(2022.3.41LTS) - 音频
    目录一、音频系统概述二、音频资源类型三、音频组件四、音频空间定位五、音频效果处理六.音乐框架设计一、音频系统概述Unity的音频系统允许开发者在游戏中添加各种声音效果,包括背景音乐、音效、环境音等。它提供了丰富的功能来控制音频的播放、音量、循环、空间定......
  • MyBatis 源码解析:DefaultSqlSession 功能解析
    摘要DefaultSqlSession是MyBatis中的核心类,负责执行SQL语句和管理事务。在日常开发中,我们经常会通过SqlSession来执行数据库的增删改查操作。你是否想深入了解DefaultSqlSession的内部实现机制?本文将通过自定义实现一个DefaultSqlSession类,带你全面解析MyBatis......
  • Ubuntu Server 24.04 LTS 安装 Docker 与 Docker Compose
    参考https://www.sysgeek.cn/install-docker-ubuntu/(主要参考)https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/(清华镜像站)https://blog.csdn.net/dragonstrong/article/details/118915771(ubuntu设置代理,需要梯子开启局域网访问,并指定端口号)https://blog.csdn.ne......
  • LTSPICE include导入模型
    以mos为例:1、includelib命令输入.include,放入原理图后右键,导入模型2,首先加入一个mos按住ctrl,右键mos spicemodel输入型号,prefix输入X,Value可不填。设置好之后就可以开始仿真了。 ......
  • LTspice使用教程,LTspice仿真教程资源大全
      LTspice简介 LTspice是英文SimulationProgramwithIntegratedCircuitEmphasis的缩写,意思是集成电路通用模拟程序。是ADI旗下的一款免费软件,很多国外的工程师、教授、学生基本用的都是LTspice,感觉应该是最好用的一款,也是教程在国内普及的比较好的一款仿真软件......
  • LTSPICE仿真教程,LTSPICE使用教程汇总
    LTspice介绍LTspice由亚德诺半导体(ADI)推出。LTspice是一款功能强大的SPICE仿真器软件,具备原理图捕获图形界面,能够探测原理图并生成仿真结果,用户可通过其内置的波形查看器轻松探索仿真结果。与其他SPICE解决方案相比,LTspice的增强功能和模型极大地提升了模拟电路仿真......
  • 使用MySQL Shell 8.4.1-LTS 直接将数据复制到 MySQL实例
     在之前的文章中,我谈到了如何使用MySQLShell通过多线程过程来转储和加载数据,以及如何以不同格式导出表数据,然后可以将这些数据导入到新的MySQL实例中。这篇文章将讨论我们如何直接将数据复制到另一个MySQL实例,而无需执行单独的转储和加载操作。在开始这个演示之前,我按......