SS9283403 开发环境搭建(二)

news2024/9/21 12:42:00

1.序

        在前一篇“SS928&3403K开发环境搭建(一)”中已经借助Ebaina搭建好的ubuntu对开发板做了测试,这篇记录从零开始搭建SS928&3403K的开发环境;

2.开发前准备

        下载VMware® Workstation 16 Pro 16.1.0版本

        下载ubuntu18.04开发镜像文件,我使用的是清华源镜像,下载地址如下:

Index of /ubuntu-releases/18.04.6/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

3.安装ubuntu环境

3.1VMware® Workstation 16 Pro 16.1.0

        默认安装即可,建议安装在D盘(习惯…^0^…);

3.2安装ubuntu18.04

        不管,自己去搜(一搜一大把…^0^…);

4.ubuntu系统环境

        目前的开发进度上我只安装nfs、vscode、ssh这几个软件

        nfs:上一篇有提到过,是将ubuntu的文件夹挂在到开发板,挂在后可以直接在开发板访问这个文件夹,省去了更新程序的时间;

        vscode&ssh:安装这两个后,vscode上安装remote-ssh插件,这样可以直接用windows在ubuntu中写程序,编译、调试等,简直不要太爽~,这个的安装和使用我就不在介绍了,我也不熟(一搜一大把…^0^…)。

5.开发环境搭建

        哎呀,写到这里要下班了,不想写了

        启动ubuntu后,换软件源,老规矩,我不熟(一搜一大把,我也记不住命令,好像可以图形操作哦…^0^…);

        更换源成功后,迅速的按下ctrl+alt+t(好像已经打开了),弹出终端并在终端快速的输入sudo apt-get update(刷刷刷~),完成后在输入sudo apt-get upgrade(刷刷刷),完成!!!

        后续的操作就是在官方提供的“SS927V100 开发环境用户指南.pdf"的步骤啦(这个好像要花人民币才能给),后面的记录是按照用户指南中的操作搭建开发环境的过程了,

这是时间分界线~,20240725

5.1安装软件包

1.更换为bash

        ubuntu默认sh默认是指向dash的,在开发之前需要修改为指向bash,

                命令:sudo dpkg-reconfigure dash,先择no

        bash和sh的区别:

                Bash(‌Bourne Again SHell)‌是一个功能强大的shell解释器;

                Dash(‌Debian Almquist SHell)‌是一个更小、‌更轻量级的Shell解释器;

        至于为什么要更换是因为bash更快?

2.安装需要的软件包

sudo apt-get install make libc6-i386 lib32z1 lib32stdc++6 zlib1g-dev libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo texlive gawk libssl-dev openssl bc p7zip-full gperf bison flex diffutils git unzip

3./etc/ld.so.preload 文件

        创建/etc/ld.so.preload 文件(sudo touch /etc/ld.so.preload ),在终端输入echo "" > /etc/ld.so.preload,解决64bit linux兼容的问题

4.安装mtd-utils的依赖库,e2fsprogs 依赖 texlive

        sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config automake
        sudo apt-get install texlive
5.安装liewOS的编译环境
(1)下载python2.7.18和3.8.9,拷贝到ubuntu的目录(随便哪个):

        wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz
        wget https://www.python.org/ftp/python/3.8.9/Python-3.8.9.tgz
(2)安装python安装需要的依赖包(安装不成功,其实啥装啥)
        sudo apt install build-essential checkinstall
        sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev  libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev  
(3)编译ptyhon2.7
        解压后进入到解压目录,输入下面的命令:
        tar -xf Python-2.7.18.tgz
        cd Python-2.7.18
        ./configure --enable-optimizations(配置)
        make(编译)
        sudo make altinstall(sudo make install,安装)
安装完成后在终端输入python2.7 --version,显示版本信息,便是安装成功。

        python3.8.9和上面python2.7.18一样的安装步骤啦~

(4)安装pip

        这个指令后面使用的时候需要注意,因为在ubuntu安装了多个版本的python,所以pip在默认的指向是python2,而python3.8.9对应pip3.

        pip依赖setuptools,下载地址:setuptools · PyPI

        

        选择对应的版本下载即可,我这里下载和手册上一样的版本(50.3.2,也可下载45.0.0版本),安装指令如下:    

        sudo unzip setuptools-50.3.2.zip
        cd setuptools
        sudo python setup.py install
        
        安装PIP, pip · PyPI ,下载对应的版本,同样和手册一样(20.2.4.)
        安装指令:
        sudo tar -zxvf pip-20.2.4.tar.gz
        cd pip-20.2.4
        sudo python setup.py install

(5)安装kconfiglib,因为这里,我载编译时遇到了一个问题,后续说明

        sudo pip install kconfiglib

6.optee 模块依赖 python3.x.x、pip3、wheel、pycryptodome、pyelftools 库

(1)安装python3.7.6

        同python2.7.18版本安装

(2)安装wheel,pycryptodome、pyelftools 库

wheel · PyPI,版本0.36.2

Links for pycryptodome (tsinghua.edu.cn),版本3.9.8

pyelftools · PyPI,版本0.27

安装指令

        tar -xzf wheel-0.36.2.tar.gz
        cd wheel-0.36.2
        sudo python2 setup.py install
        sudo pip3 install pycryptodome-3.9.8-cp37-cp37m-manylinux1_x86_64.whl
        sudo pip3 install pyelftools-0.27-py2.py3-none-any.whl

5.2安装交叉编译工具和riscv 交叉编译工具

        这个载官方提供的资料包里面,我的是这两个版本:

(1)交叉编译工具安装:

        tar -xvf aarch64-mix210-linux.tgz
        cd aarch64-mix210-linux
        sudo ./aarch64-mix210-linux.install
        
(2)riscv 交叉编译工具
        tar -xvf cc-riscv32-cfg5-musl-20211008-elf.tar.gz
        cd cc-riscv32-cfg5-musl-20211008-elf
        sudo ./install.sh
(3)添加环境变量
        我在后面编译SDK时,出现了未发现aarch64-mix210-linux-gcc的错误,原因时未将aarch64-mix210/bin添加到环境变量,添加后错误消失,但是我查看ebaina虚拟机的下面两个文件未发现添加的这条指令(我只看了文件末尾,没仔细找,hhhh)。

        在~/.bashrc或~/.profile文件中变价aarch64-mix210-linux-gcc和ccc-riscv环境变量
        export PATH=/home/mc/work/cc-riscv32-cfg5-musl-20211008-elf/cc-riscv32-cfg5-musl-20211008-elf/bin:${PATH}
        export PATH=$PATH:/opt/linux/x86-arm/aarch64-mix210-linux/bin

5.3安装交叉编译工具和riscv 交叉编译工具

        SDK包在官方提供的SS928V100R001***/01.software/board目录下

        我的版本:

        后面还有个补丁包要装,hhhh

        tar -zxf SS928V100_SDK_V2.0.2.2.tgz

        ./sdk.unpack
        补丁包在这个目录下SS928V100R001***02.only for reference\software
        我的版本:

        下面两个都要拷贝到虚拟机和SS928V100_SDK_V2.0.2.2在同一目录即可,看看readme,

        哇,里面写了怎么安装~

6.编译

        进入到SS928V100_SDK_V2.0.2.2/osdrv目录下,打开readme_cn.txt,还有个readme_en.txt,俺英语不好不想看,

        你看告诉你了怎么编译,hhhh~

        make all~漫长的等待

        目前我的理解时SDK的编译主要分为,

        uboot、kernel、rootfs、liteOS几个可独立编译的模块,后续的开发方便可不整个编译,分别对这几个单独编译,提高开发效率!

         编译成功,至此,开发环境搭建完成~

7.编译遇到的问题

1."ModuleNotFoundError: No module named 'kconfiglib' "

只有一个版本
pip install kconfiglib

同时安装了Python 2.x和Python 3.x,并且pip指向Python 2.x版本,请使用pip3
pip3 install kconfiglib
pip3.6 install kconfiglib


2./home/mc/work/SS928V100_SDK_V2.0.2.2/platform/liteos/liteos/targets/ss928v100_mcu/include/menuconfig.h Not found file
    缺少menuconfig.h文件的原因liteos编译前,make menuconfig和make savemenuconfig的过程异常,没生成menuconfig.h文件,异常原因如下:
    liteos是使用python2.7编译的,python没有安装kconfiglib模块(这个可能在解决1的问题时,让我不小心卸载了,模糊的记得输入了pip uninstall kconfiglib),将python改为指向python2.7后,安装kconfiglib模块即可,操作如下:
    $ ls /usr/bin/python -l
    lrwxrwxrwx 1 root root 9 4月  16  2018 /usr/bin/python -> python3.6
    $ cd /usr/bin/
    $ sudo rm python
    $ sudo ln -s python2.7 python
    $ ls /usr/bin/python -l
    lrwxrwxrwx 1 root root 9 9月  13 20:14 /usr/bin/python -> python2.7
    $ sudo pip install kconfiglib

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

封装导出功能(export)

业务描述: 通过一个button按钮, 实现导出功能, 导出后文件保存到电脑上 目录 一. file-saver 介绍 二. 项目中应用 1. 安装 file-saver库 2.创建 util / exportExcel.js 3. 页面内引入, 使用 4. 页面反馈 展示 一. file-saver 介绍 file-saver是一个用于在前端导出文件…

基于VueCli自定义创建Vue项目架子

基于VueCli自定义创建Vue项目架子 一、VueCli 自定义创建项目1.1安装脚手架 (已安装)1.2.创建项目1.2.1选项1.2.2手动选择功能(按空格可选中)1.2.3选择vue的版本1.2.4是否使用history模式1.2.5选择css预处理1.2.6选择eslint的风格 (eslint 代…

正点原子imx6ull-mini-Linux驱动LED(新字符设备驱动)(3)

经过前几节实验的实战操作,我们已经掌握了 Linux 字符设备驱动开发的基本步骤,字符 设备驱动开发重点是使用 register_chrdev 函数注册字符设备,当不再使用设备的时候就使用 unregister_chrdev 函数注销字符设备,驱动模块加载成功…

Springboot原理相关

目录 配置优先级 bean的管理 获取bean bean的作用域 第三方bean SpringBoot原理 自动配置 配置优先级 在springboot中优先级application.properties>application.yml>application.yaml 虽然支持多种格式配置文件,但是在项目开发中,推荐统…

[MIT6.5840]MapReduce

MapReduce Lab 地址 https://pdos.csail.mit.edu/6.824/labs/lab-mr.html 论文地址 https://static.googleusercontent.com/media/research.google.com/zh-CN//archive/mapreduce-osdi04.pdf 工作原理 简单来讲,MapReduce是一种分布式框架,可以用来处理…

英伟达最强劲敌Groq一招绝杀GPU,反超GPT-4o mini2倍,AI大佬Karpathy:直接飞升AGI!

Llama 3.1 405B被吐槽太笨重? 英伟达对手AI新星Groq一招绝杀:上LPU直接速度翻倍,直接让Llama 3.1飞升AGI! Meta 最新发布的 Llama 3.1 405B 的开源让AI圈不平静了! 追捧者感慨"GPT-4o的能力已握在手中”,而批评者反驳说,大体量消耗这么多算力,有些结果跑得还不如GP…

【内网】安装wget

先是去RPM Search 下载了wget-1.24.5-2.1.x86_64.rpm这个包,结果安装的时候报一堆错 [rootlocalhost ~]# rpm -ivh wget-1.24.5-2.1.x86_64.rpm warning: wget-1.24.5-2.1.x86_64.rpm: Header V3 RSA/SHA512 Signature, key ID 29b700a4: NOKEY error: Failed dep…

不同WEB下的的ApplicationContext的选择

依赖 ApplicationContext类型选择 默认情况下,spring通过选择的web端的框架来选择使用哪个ApplicationContext子类,默认情况下我们一般使用spring mvc框架,这个时候AC的实现类为 org.springframework.boot.web.servlet.context.AnnotationC…

docker安装mysql8自动备份脚本

引用:https://blog.csdn.net/leovnay/article/details/140585094 # 创建两个卷 docker volume ls docker volume create mysqlData docker volume create mysqlSQL# 运行容器 docker run -d --namemysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORDxxx -e TZAsia/Shangh…

Java小抄|Java中的List与Map转换

文章目录 1 List<User> 转Map<User.id,User>2 基础类型的转换&#xff1a;List < Long> 转 Map<Long,Long> 1 List 转Map<User.id,User> Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getId, v -> v, …

自闭症儿童上小学教育方法:个性化关怀,引领全面发展

在教育的征程中&#xff0c;为自闭症儿童提供适合他们的小学教育方法至关重要。这些孩子如同独特的星星&#xff0c;需要我们用个性化的关怀去照亮他们的成长之路&#xff0c;引领他们实现全面发展。 个性化关怀是自闭症儿童小学教育的核心。每个孩子都是独一无二的&#xff0c…

钡铼技术PLC网关:实现PLC数据无缝对接MQTT协议

MQTT 协议概述 MQTT 是用于物联网的标准消息传递协议。它被设计为一种非常轻量级的发布/订阅消息传送&#xff0c;非常适合以较小的代码占用量和网络带宽连接远程设备。 PLC网关是一种专门设计用于连接可编程逻辑控制器&#xff08;PLC&#xff09;与其它网络设备或系统的中间…

元器件基础学习笔记——二极管基础

一、二极管基础 二极管是用半导体材料(硅、硒、锗等)制成的一种电子器件&#xff0c;具有单向导电性&#xff0c;是现代电子技术的基石。它在电子电路中扮演着至关重要的角色&#xff0c;通过与电阻、电容、电感等元器件的合理连接&#xff0c;能够实现整流、检波、限幅、稳压等…

python实现GUI版图片锐化小工具

目录 效果展示代码脚本代码 效果展示 锐化前&#xff1a; 锐化后代码 sharpen_img.py import tkinter as tk from tkinter import filedialog from PIL import Image, ImageTk,ImageFilter import os class ImageViewerApp:def __init__(self, root):self.root rootself.r…

空气净化器CE认证简介

空气净化器中有多种不同的技术和介质&#xff0c;使它能够向用户提供清洁和安全的空气。由于空气净化器本身就和我们的生活息息相关。因此对于产品本身的安全性是消费者首先需要考虑的&#xff0c;另一方面就是其在净化空气上的效率和效果。如今国内的空气净化器随着工艺上的不…

ts 下使用 interactjs 的时候,事件类型该如何定义 InteractEvent

ts 下使用 interactjs 的时候&#xff0c;事件类型该如何定义 InteractEvent 一、问题 interactjs 是一个很好用的给元素添加拖动事件的插件&#xff0c;它可以实现如下的效果。 其官网是 https://interactjs.io/ vitetsvue3 项目中用到了 interactjs 这个库&#xff0c;但在…

42度酒和52度酒哪个好?

我们平时在聚会的时候都会喝酒&#xff0c;而在买酒时通常会看到超市或者白酒专卖店里的白酒大多都是52度或者是42度的&#xff0c;而喝酒的人当中大多对白酒没有一定的了解&#xff0c;所以在接到买酒任务的时候&#xff0c;当看到一款酒有两种度数的时候&#xff0c;就有些拿…

元宇宙营销,能够持续下去吗?

Photo by Oberon Copeland veryinformed.com on Unsplash 一场完美风暴让一些行业观察人士怀疑&#xff0c;元宇宙这个曾经营销界最喜欢的闪亮对象&#xff0c;是否正在维持生命。像ChatGPT这样的生成式人工智能(AI)已经接管了技术炒作周期&#xff1b;关键平台的参与度微乎其…

为什么要加密源代码?六款好用的源代码加密软件推荐

在当今数字化时代&#xff0c;源代码是许多企业和开发人员最重要的资产之一。无论是保护知识产权、维护竞争优势&#xff0c;还是确保应用程序的安全性&#xff0c;加密源代码都是至关重要的措施。以下将详细探讨为什么需要加密源代码&#xff0c;并推荐六款好用的源代码加密软…

手把手教你暗通道先验去雾算法

0&#xff0c;流程 暗通道先验去雾算法&#xff08;Dark Channel Prior, DCP&#xff09;是一种基于图像的去雾技术&#xff0c;由Kaiming He等人在2009年提出。这种算法利用了大气散射模型&#xff0c;通过估计大气光和图像的传输图来去除雾的影响。以下是暗通道先验去雾算法…