泰山派开发之—Ubuntu24.04下Linux开发环境搭建

简介

最近翻到了吃灰已久的泰山派,是刚出来的时候用优惠券买的,当时价格挺便宜的,最近给它翻出来了,打算试试做个项目。买的泰山派容量是2G+16G,SOC芯片使用的是RK3566,搭载1TOP算力的NPU,并且具有丰富的接口,详细参数如下:
在这里插入图片描述

官方的参考文档如下:https://wiki.lckfb.com/zh-hans/tspi-rk3566/
由于官方给的是基于Ubuntu18.04的开发环境搭建步骤,然而Ubuntu目前稳定版已经出到了24.04,重新专门为它安装一个18.04版本的系统显然不合适。因此,在这里记录了一下基于Ubuntu24.04进行泰山派Linux开发环境搭建的步骤。

环境准备

  • Ubuntu24.04
  • 泰山派
  • tspi_linux_sdk_repo_20240131.tar.gz
  • buildroot_dl_4c7c9df616fb.tar.gz

python2安装

由于python2目前官方已经结束支持,Ubuntu24.04中已经不再默认安装python2了。然而泰山派的SDK编译依然要用到python2,因此我们这里首先进行python2的安装。

安装python2.7

首先运行如下命令,进行系统的更新。

sudo apt update && sudo apt upgrade

之后安装相关依赖

sudo apt install -y build-essential checkinstall libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev

然后我们下载python2的安装包,这里我选择的是2.7.18版本,也是python2的最后一个版本。
下载页面:https://www.python.org/downloads/release/python-2716/
下载链接:https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
下载完成后,我们对压缩包进行解压

tar -xvf Python-2.7.18.tgz

之后,我们进入解压后的目录,检查依赖项和编译器设置,使用configure命令生成 Makefile 文件,并且使用CFLAGS=-fPIC设置编译器生成位置无关的代码,否则可能会报错

cd Python-2.7.18
./configure --enable-optimizations CFLAGS=-fPIC

在完成上述准备后,我们就能够执行如下命令进行编译安装了

sudo make altinstall

其中altinstall可以保证不会覆盖系统默认的 python 命令,从而避免影响系统自带的python3。
最后,我们使用whereis命令,查看安装好的pyhon2.7的路径

whereis python2.7

在这里插入图片描述

可以看到我们的python2.7已经成功安装到了/usr/local目录下。
下面我们运行如下命令,进入到python环境中,测试python2.7是否能够正常使用

python2.7

在这里插入图片描述

可以看到我们的python2.7已经能够正常运行。

pip安装

目前我们仅仅是安装了python2.7本体,还有许多python的功能包需要使用pip工具进行安装。接下来我们就来安装python2.7的pip工具,运行命令如下:

sudo apt install curl
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
sudo python2.7 get-pip.py

安装完成后,我们运行如下命令进行测试

pip2.7 --version

添加python2软链接

虽然我们上面完成了python2.7的安装,但是系统默认依然还是python3。
在这里插入图片描述

我们还需要使用如下命令添加软连接,使得python3和python2分别对应不同版本的python

sudo ln -s /usr/local/bin/python2.7 python2

其中的/usr/local/bin/python2.7对应于你自己实际的python2.7安装路径

SDK编译

解压SDK

首先运行如下命令,解压下载的SDK压缩包

tar -xvzf tspi_linux_sdk_repo_20240131.tar.gz

之后运行如下命令,进行同步

.repo/repo/repo sync -l -j88

同步完成后,会出现如下successfully界面
在这里插入图片描述

dl库替代

由于buildroot编译时需要下载很多库,而如果网络不好的话,可能会出现buildroot的库下载失败报错的问题,因此我们使用了立创提供的已经下载好的库,直接进行替换即可。

首先将buildroot_dl_4c7c9df616fb.tar.gz复制到SDK目录中,并运行如下命令,解压buildroot_dl_4c7c9df616fb文件到buildroot/dl目录下

tar -xzf buildroot_dl_4c7c9df616fb.tar.gz

解压完成后,buildroot/dl目录下的部分文件展示如下:
在这里插入图片描述

编译准备

在完成上述步骤后,我们就能够进行编译环境的安装了。

安装环境依赖

首先运行如下命令,安装编译环境所需要的依赖。

sudo apt install -y git make openjdk-8-jdk git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libgl1-mesa-dev gcc-multilib g++-multilib libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libxml2-utils xsltproc unzip bc imagemagick ccache schedtool libssl-dev clang
sudo apt-get install whiptail ssh libssl-dev liblz4-tool expect patchelf chrpath gawk texinfo chrpath diffstat binfmt-support qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib unzip device-tree-compiler ncurses-dev

板级配置

运行如下命令进行泰山派SDK的板级配置,并在弹出来的选项卡中选择BoardConfig-rk3566-tspi-v10.mk

./build.sh lunch

在这里插入图片描述

编译buildroot系统

在完成以上准备后,我们就能够编译buildroot系统了。

由于buildroot中使用的python3.8.6,因此我们在编译时也必须使用python3.8环境才能正常进行,否则在编译时可能会报错
在这里插入图片描述

这里我们使用pyenv工具,安装python3.8.19并使其生效。

pyenv install 3.8.19
pyenv local 3.8.19  # 仅当前目录生效

之后需要设置环境变量RK_ROOTFS_SYSTEM为buildroot

export RK_ROOTFS_SYSTEM=buildroot

为避免编译buildroot时报错multiple definition of bwriter_buffer,可以将如下代码添加到buildroot/package/squashfs/0001-include-sysmacros.patch文件的末尾(未验证是否为必须步骤)

diff -ruN squashfs-3de1687d7432ea9b302c2db9521996f506c140a3/squashfs-tools/mksquashfs.h squashfs-3de1687d7432ea9b302c2db9521996f506c140a3-patch/squashfs-tools/mksquashfs.h
--- squashfs-3de1687d7432ea9b302c2db9521996f506c140a3/squashfs-tools/mksquashfs.h       2015-12-07 09:42:03.000000000 +0800
+++ squashfs-3de1687d7432ea9b302c2db9521996f506c140a3-patch/squashfs-tools/mksquashfs.h 2025-01-02 16:59:52.994326895 +0800
@@ -133,7 +133,7 @@#define BLOCK_OFFSET 2extern struct cache *reader_buffer, *fragment_buffer, *reserve_cache;
-struct cache *bwriter_buffer, *fwriter_buffer;
+extern struct cache *bwriter_buffer, *fwriter_buffer;extern struct queue *to_reader, *to_deflate, *to_writer, *from_writer,*to_frag, *locked_fragment, *to_process_frag;extern struct append_file **file_mapping;

最后运行如下命令,进行全编译。

./build.sh all

如果只编译(u-Boot,kernel,Rootfs,Recovery),则在编译完成以后还需要再执⾏./mkfirmware.sh 进⾏固件打包,与./build.sh updateimg生成镜像,否则rockdev目录下生成img镜像不是最新的。

电源配置

在首次进行编译时,会遇到电源配置选项。这里除了VCCIO4和VCCIO6选1.8V其他都选3V3。如果没有弹出电源选择框,则需要安装sudo apt install whiptail后再重新进行编译。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在Ubuntu24.04环境下,可能会在编译完kernel或buildroot后中断并且无报错信息,这时只需要重新执行build命令即可。
编译成功后的输出如下:
在这里插入图片描述

打包固件

之后运行如下命令进行固件打包

./mkfirmware.sh

在这里插入图片描述
运行如下命令查看固件,可以看到固件已经是最新的了。

ls ./rockdev -l

在这里插入图片描述

打包镜像

生成的固件是零散的,并且不便于下载,因此我们可以使用如下命令将打包好的固件生成一个update.img镜像,便于后续的镜像下载。

./build.sh updateimg

在这里插入图片描述

执行完毕后,就能够在rockdev生成update.img镜像文件了。

小结

至此,我们就完成了Ubuntu24.04环境下泰山派的SDK搭建。其中最值得注意的是在Ubuntu24.04环境下执行build命令可能会意外中断,如果未出现error报错,则无需执行clean操作,只需直接重新执行build命令即可。这样可以避免全量编译,从而大幅缩短构建时间,尤其是buildroot根文件系统的编译过程,因为它需要对所有功能包逐一编译,极为耗时。下一博客中,我们将介绍如何在linux下进行固件的烧录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33146.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

05延迟任务精准发布文章(redis实现延迟任务、分布式锁)

上架不代表发布(需要发布app端才会显示文章) 1)文章定时发布 2)延迟任务概述 2.1)什么是延迟任务 定时任务:有固定周期的,有明确的触发时间 延迟队列:没有固定的开始时间,它常常是由一个事件触发的,而在…

linux 命令 ls

ls 是 Linux 系统中用于列出目录内容的核心命令,几乎所有日常操作都会用到。以下是其详细用法和常见场景说明 1. 基础语法 ls [选项] [目录/文件] 不指定目录时,默认列出当前目录的内容。 可以指定文件或目录路径,支持通配符(如…

c++介绍函数指针 十

指针代表内存中地址标识符,变量,数组都是存储内存中的数据。所以可以获得它们的地址,用指针来表示这块内存。 如图输出内存中的地址。 对于一个函数来说,也是内存中存储这段数据,所以我们也可以获取函数的地址。 函数…

艾尔登复刻Ep1——客户端制作、场景切换、网络控制

需要添加的插件内容 Netcode for GameObjects:是一个为 Unity 游戏开发提供高级网络功能的 SDK。它的主要作用是允许开发者在其 GameObject 和 MonoBehaviour 工作流中集成网络功能,并且可以与多种底层传输层协议兼容。 具体内容请看:https:…

WPS的Excel文档如何利用VB脚本批量替换超链接的内容

准备知识 关于WPS的Excel点击单元格打开别的文档的两种方法的探究【为单元格添加超链接】 https://blog.csdn.net/wenhao_ir/article/details/146212767 激活WPS的Excel文档中的VB编辑器功能 没有激活前的截图如下: 原因是我们的电脑中缺乏VBA插件,我们点击“开发工具”:…

Houdini学习笔记

1. Houdini中一次只能显示一个物体 如果要都显示 需要 merge 节点 粉色的是 以参考显示 2.对任意一个节点按F1 可以弹出houdini官方文档 3. 恢复视角 Space H,居中 Space G 居中选中物体

基于SpringBoot实现旅游酒店平台功能十一

一、前言介绍: 1.1 项目摘要 随着社会的快速发展和人民生活水平的不断提高,旅游已经成为人们休闲娱乐的重要方式之一。人们越来越注重生活的品质和精神文化的追求,旅游需求呈现出爆发式增长。这种增长不仅体现在旅游人数的增加上&#xff0…

【一次成功】Win10本地化单机部署k8s v1.31.2版本及可视化看板

【一次成功】Win10本地化单机部署k8s v1.31.2版本及可视化看板 零、安装清单一、安装Docker Desktop软件1.1 安装前<启用或关闭Windows功能> 中的描红的三项1.2 查看软件版本1.3 配置Docker镜像 二、更新装Docker Desktop三、安装 k8s3.1 点击启动安装3.2 查看状态3.3 查…

网络安全之数据加密(DES、AES、RSA、MD5)

刚到公司时&#xff0c;我的工作就是为app端提供相应的接口。之前app使用的是PHP接口&#xff0c;对数据加密方面做得比较少。到使用java接口时&#xff0c;老大开始让我们使用DES加密&#xff0c;进行数据传输&#xff0c;但是后来觉得DES是对称加密&#xff0c;密钥存在客户端…

深度学习知识:softlabel策略

目录 一、hard label和soft label之间的关系 二、如何得到soft label 1. 回归任务&#xff1a;使用离散化方法生成软标签 PS: Soft 标签的定义规则 2. ​分类任务&#xff1a;使用 Label Smoothing 或 Knowledge Distillation 方法1&#xff1a;Label Smoothing PS: 用 …

自然语言处理:文本聚类

介绍 大家好&#xff0c;博主又来和大家分享自然语言处理领域的知识了。今天给大家分享的内容是自然语言处理中的文本聚类。 文本聚类在自然语言处理领域占据着重要地位&#xff0c;它能将大量无序的文本按照内容的相似性自动划分成不同的类别&#xff0c;极大地提高了文本处…

Python----计算机视觉处理(opencv:像素,RGB颜色,图像的存储,opencv安装,代码展示)

一、计算机眼中的图像 像素 像素是图像的基本单元&#xff0c;每个像素存储着图像的颜色、亮度和其他特征。一系列像素组合到一起就形成 了完整的图像&#xff0c;在计算机中&#xff0c;图像以像素的形式存在并采用二进制格式进行存储。根据图像的颜色不 同&#xff0c;每个像…

Spring Boot(十六):使用 Jenkins 部署 Spring Boot

Jenkins 是 Devops 神器&#xff0c;本篇文章介绍如何安装和使用 Jenkins 部署 Spring Boot 项目 Jenkins 搭建、部署分为四个步骤&#xff1b; 第一步&#xff0c;Jenkins 安装 第二步&#xff0c;插件安装和配置 第三步&#xff0c;Push SSH 第四步&#xff0c;部署项目 第…

【Linux 指北】常用 Linux 指令汇总

第一章、常用基本指令 # 注意&#xff1a; # #表示管理员 # $表示普通用户 [rootlocalhost Practice]# 说明此处表示管理员01. ls 指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xf…

解决Windows版Redis无法远程连接的问题

&#x1f31f; 解决Windows版Redis无法远程连接的问题 在Windows系统下使用Redis时&#xff0c;很多用户会遇到无法远程连接的问题。尤其是在配置了Redis并尝试通过工具如RedisDesktopManager连接时&#xff0c;可能会报错“Cannot connect to ‘redisconnection’”。今天&am…

大语言模型学习及复习笔记(1)语言模型的发展历程

1.大模型进入人们视野 ChatGPT 于2022年11月底上线 模型名称 发布时间 核心突破 GPT-3 2020年6月 首款千亿参数模型&#xff0c;少样本学习 GPT-3.5-Turbo 2022年11月 对话能力优化&#xff0c;用户级应用落地 GPT-4 2023年3月 多模态、强逻辑推理 GPT-4o / GPT-4…

MySQL中count(*)与count(字段区别)

核心规则 表达式 统计规则 COUNT(*) 统计所有行数&#xff08;包括所有字段为NULL的行&#xff09;。 COUNT(字段) 仅统计该字段不为NULL的行数&#xff08;若字段为NULL则自动忽略该行&#xff09;。 误区 A表连接B表&#xff0c;若A和B是一对多的关系时&#xff0c;会出现…

【Unity】在项目中使用VisualScripting

1. 在packagemanager添加插件 2. 在设置中进行初始化。 Edit > Project Settings > Visual Scripting Initialize Visual Scripting You must select Initialize Visual Scripting the first time you use Visual Scripting in a project. Initialize Visual Scripting …

vue 仿deepseek前端开发一个对话界面

后端&#xff1a;调用deepseek的api&#xff0c;所以返回数据格式和deepseek相同 {"model": "DeepSeek-R1-Distill-Qwen-1.5B", "choices": [{"index": 0, "delta": {"role": "assistant", "cont…

基于Spring Boot的小区疫情购物系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…