Luckfox开发--SDK环境部署

news/2024/9/21 20:53:41/文章来源:https://www.cnblogs.com/tangwc/p/18353697

前言

嵌入式Linux,在我的认识当中一直属于是嵌入式技术上最顶层的技术,之前一直有学习过相关的基础知识,这次打算系统性的记录学习过程,将完整的从零开始,一步步自学提高相关知识。

虚拟机安装

在学习嵌入式Linux,首先需要的是一个虚拟机,虚拟机软件我接触过两个,一个是VMware,一个是VirtualBox。两者有些许区别,但对于我们只使用基础的功能来说的话其实差别不大,唯一的是后者为开源免费的软件,前者为付费软件(不提倡破解哈)。现在的我跟倾向于选择使用VirtualBox。接下来主要讲解一下VirtualBox安装流程。

一、下载安装软件

1.下载VirtualBox软件

下载地址:Downloads – Oracle VM VirtualBox

2.Linux桌面发行版镜像

官网:Ubuntu Releases

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

二、安装VirtualBox

打开软件一路点击“下一步”,留意下安装路径可以安装在别的盘上。

安装过程略过。

三、新建一个虚拟机

1.配置虚拟机

  1. 运行VirtualBox,点击新建
    image.png
  2. 新建页面如下,名称可以随意起,文件夹可以选择别的盘,类型选择Linux,版本选择Ubuntu(64-bit),暂时不要先选择虚拟光盘。设置完成后选择下一步。
    image.png
  3. 分配内存、处理器和磁盘大小
    image.png
    image.png
  4. 确认好相关信息完成创建
    image.png
  5. 选择刚才创建好的虚拟机进入设置界面
    image.png
  6. 可以改变一下相关配置信息,显存大小建议拉满128MB
    image.png
    image.png
    image.png
  7. 将之前下载好的镜像文件找到并放在对应路径上
    image.png
    按照上面流程走完后就可以运行安装系统了。

2.安装系统

  1. 点击启动,启动系统。
    image.png
  2. 安装Ubuntn
    image.png

[!可能出现的问题]
部分版本安装可能出现显示界面不全的情况,如上,可以使用Ctrl + Alt + T打开终端,输入xrandr -s 1280x720调节下分辨率。
image.png

image.png
image.png

  1. 配置增强功能
  • 自动适应全屏分辨率
    点击界面的“设备”,选择安装增强功能,点击运行。系统会显示出来安装了一个光盘。并弹出提示窗口,点击“运行”。
    image.png
    输入密码。
    image.png确认后命令行脚本自动运行,完成。
    image.png
    这时会发现“视图”选项中的“自动调整显示尺寸”就可以使用了,点击后就可以是显示窗口自动填满界面。
    image.png

  • 共享文件夹设置
    在设置中找到共享文件夹选择项,并按照如下设置。设置路径为win10下自行决定的一个路径。
    image.png
    在虚拟机中新建一个文件夹就在桌面上,Win10
    image.png
    弹出光盘,重新安装增强功能,这次弹出窗口中,选择取消。
    image.png
    打开终端,按照如下操作来
    image.png
    在共享文件夹中创建一个文件后对应路径下也会同时创建好相应的文件。
    image.png
    最后选择设备->共享粘贴板和拖放都设置为双向,既可以将主系统的文件复制粘贴进去。

参考链接见

  • Ubuntu安装时界面显示不全的解决方法_ubuntu显示不完整-CSDN博客
  • 虚拟机||使用VirtualBox安装Ubuntu详细图文教程(安装+调整分辨率+共享文件)_virtualbox安装ubuntu12-CSDN博客
    到此虚拟机系统环境安装和配置就基本完成了,下面是SDK环境的搭建。

Luckfox-SDK环境搭建

官方Wiki指导资料如下:
参考链接:SDK 环境部署(PC端) | LUCKFOX WIKI

1.1 搭建编译环境

  1. 安装依赖环境:
sudo apt update  sudo apt-get install -y git ssh make gcc gcc-multilib g++-multilib module-assistant expect g++ gawk texinfo libssl-dev bison flex fakeroot cmake unzip gperf autoconf device-tree-compiler libncurses5-dev pkg-config bc python-is-python3 passwd openssl openssh-server openssh-client vim file cpio rsync
  1. 获取最新的 SDK :
git clone https://gitee.com/LuckfoxTECH/luckfox-pico.git
  1. 编译镜像:
luckfox@luckfox:~$ ./build.sh lunch  
You're building on Linux  
Lunch menu...pick the Luckfox Pico hardware version:  
选择 Luckfox Pico 硬件版本:  
[0] RV1103_Luckfox_Pico  
[1] RV1103_Luckfox_Pico_Mini_A  
[2] RV1103_Luckfox_Pico_Mini_B  
[3] RV1103_Luckfox_Pico_Plus  
[4] RV1106_Luckfox_Pico_Pro_Max  
[5] RV1106_Luckfox_Pico_Ultra  
[6] RV1106_Luckfox_Pico_Ultra_W  
[7] custom  
Which would you like? [0~7][default:0]: 3  
Lunch menu...pick the boot medium:  
选择启动媒介:  
[0] SD_CARD  
[1] SPI_NAND  
Which would you like? [0~1][default:0]: 1  
Lunch menu...pick the system version:  
选择系统版本:  
[0] Buildroot(Support Rockchip official features)  
Which would you like? [0~1][default:0]: 0  
[build.sh:info] Lunching for Default BoardConfig_IPC/BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk boards...  
[build.sh:info] Running build_select_board succeeded.  luckfox@luckfox:~$ ./build.sh

1.2 SDK 目录说明

  1. SDK目录结构
├── build.sh -> project/build.sh ---- SDK编译脚本  
├── media --------------------------- 多媒体编解码、ISP等算法相关(可独立SDK编译)  
├── sysdrv -------------------------- U-Boot、kernel、rootfs目录(可独立SDK编译)  
├── project ------------------------- 参考应用、编译配置以及脚本目录  
├── output -------------------------- SDK编译后镜像文件存放目录  
└── tools --------------------------- 烧录镜像打包工具以及烧录工具
  1. 镜像存放目录
output/  
├── image  
│ ├── download.bin ---------------- 烧录工具升级通讯的设备端程序,只会下载到板子内存  
│ ├── env.img --------------------- 包含分区表和启动参数  
│ ├── uboot.img ------------------- uboot镜像  
│ ├── idblock.img ----------------- loader镜像  
│ ├── boot.img -------------------- kernel镜像  
│ ├── rootfs.img ------------------ kernel镜像  
│ └── userdata.img ---------------- userdata镜像  
└── out  
├── app_out --------------------- 参考应用编译后的文件  
├── media_out ------------------- media相关编译后的文件  
├── rootfs_xxx ------------------ 文件系统打包目录  
├── S20linkmount ---------------- 分区挂载脚本  
├── sysdrv_out ------------------ sysdrv编译后的文件  
└── userdata -------------------- userdata

1.3 SDK配置文件说明

  1. Luckfox-Pico 系列 SDK 配置文件存放在 project/cfg/BoardConfig_IPC 目录下。
BoardConfig-EMMC-Buildroot-RV1103_Luckfox_Pico-IPC.mk BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Mini_B-IPC.mk  
BoardConfig-EMMC-Buildroot-RV1103_Luckfox_Pico_Mini_A-IPC.mk BoardConfig-SPI_NAND-Buildroot-RV1103_Luckfox_Pico_Plus-IPC.mk  
BoardConfig-EMMC-Ubuntu-RV1103_Luckfox_Pico-IPC.mk BoardConfig-SPI_NAND-Buildroot-RV1106_Luckfox_Pico_Pro_Max-IPC.mk  
BoardConfig-EMMC-Ubuntu-RV1103_Luckfox_Pico_Mini_A-IPC.mk rv1103-spi_nor-post.sh  
BoardConfig-EMMC-Ubuntu-RV1103_Luckfox_Pico_Plus-IPC.mk rv1106-spi_nor-post.sh  
BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pro_Max-IPC.mk
  1. 我们将以 'BoardConfig-EMMC-Ubuntu-RV1106_Luckfox_Pico_Pro_Max-IPC.mk' 为例,详细介绍其中关键的文件配置。
# Config CMA size in environment  
export RK_BOOTARGS_CMA_SIZE="66M"  # Kernel dts  
export RK_KERNEL_DTS=rv1106g-luckfox-pico-pro-max.dts  # Target boot medium: emmc/spi_nor/spi_nand  
export RK_BOOT_MEDIUM=emmc  export RK_PARTITION_CMD_IN_ENV="32K(env),512K@32K(idblock),256K(uboot),32M(boot),512M(oem),256M(userdata),6G(rootfs),-(media)"  # Target rootfs : ubuntu(only emmc)/buildroot/busybox  
export LF_TARGET_ROOTFS=ubuntu  # SUBMODULES : gitee/gitee  
export LF_SUBMODULES_BY=gitee  # Buildroot defconfig  
export RK_BUILDROOT_DEFCONFIG=luckfox_pico_defconfig
  • RK_BOOTARGS_CMA_SIZE:给摄像头分配的内存,如果不使用摄像头可以将其修改为 1M
  • RK_KERNEL_DTS:指定设备树文件
  • RK_BOOT_MEDIUM:指定目标启动介质,可以是 emmc(指的是SD卡)、spi_nor(SPI NOR Flash)或 spi_nand(SPI NAND Flash)
  • RK_PARTITION_CMD_IN_ENV:这是用于配置分区表的信息,如果需要与 SD 卡的存储空间匹配,您可以修改 rootfs 分区。
  • LF_TARGET_ROOTFS:指定目标的根文件系统(Root File System)
  • LF_SUBMODULES_BY:指定子模块的来源
  • RK_BUILDROOT_DEFCONFIG:指定 Buildroot 的配置文件

1.4 编译镜像

从《1.3 SDK配置文件说明》可以得知,Ubuntu 镜像仅支持 SD 卡启动,而 Buildroot 镜像既支持TF卡启动又支持 SPI NAND FLASH 启动。

  1. 如果需要编译ubuntu系统,并且使用gitee源,请修改对应的板型mk文件中LF_SUBMODULES_BY改为gitee,如:
LF_SUBMODULES_BY=gitee
  1. 如果您希望编译 Buildroot 镜像,使其能够支持 TF 卡启动,请修改对应的板型 BoardConfig-EMMC-Ubuntu-xxx.mk文件中 LF_TARGET_ROOTFS 改为 buildroot,如:
export LF_TARGET_ROOTFS=buildroot
  1. 安装交叉编译工具链:
cd {SDK_PATH}/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/  
source env_install_toolchain.sh
  1. 全部编译镜像:
cd luckfox-pico  #编译busybox/buildroot  
./build.sh lunch  
./build.sh  #编译ubuntu  
sudo ./build.sh lunch  
sudo ./build.sh
  • 注意编译ubuntu时需要注意使用sudo,否则会导致文件系统错误
  • 下文就不一一区分两者指令区别,请自行根据情况选择

[!NOTE] 注意
初次编译时间较长,且在初次编译的过程中会下载许多的工具包。有些网络情况不是很好的,有时会中断报错,一定要有耐心坚持编译完成,我这边第一次编译连续看了好几个晚上才完成第一次编译。

1.4.1 部分编译

  1. 单独编译U-Boot
./build.sh clean uboot./build.sh uboot
  • 生成镜像文件: output/image/MiniLoaderAll.bin output/image/uboot.img
  1. 单独编译kernel
./build.sh clean kernel./build.sh kernel
  • 生成镜像文件: output/image/boot.img
  1. 单独编译rootfs
./build.sh clean rootfs./build.sh rootfs
  • 注:编译后需使用./build.sh firmware命令重新打包
  1. 单独编译media
./build.sh clean media./build.sh media
  • 生成文件的存放目录:output/out/media_out ,编译后需使用./build.sh firmware命令重新打包
  1. 单独编译参考应用
./build.sh clean app./build.sh app
  • 注1:app依赖media
  • 注2:编译后需使用./build.sh firmware命令重新打包
  1. 固件打包
./build.sh firmware

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

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

相关文章

交互题使用指南

一般 oi 场上的交互题都是使用 Grader 交互(cf 是 stdio 交互)。本文讲解一下怎么做交互题,评测交互题。 怎么做 基本知识 题目会给你几个函数接口,一般作为询问的方式。出题人会写一个 grader.cpp 里面就包含了这几个函数。 调用 grader 里面的函数的方法是:加上题目给的…

028.Vue3入门,子页面通过v-model,把数据实时传给父页面

1、App.vue代码:<template><Father/> </template><script setup> import Father from ./view/Father.vue </script><style> </style>2、Father.vue代码:<template><h3>父页面</h3><p>搜索内容为: {{ sear…

『模拟赛』暑假集训CSP提高模拟18

『模拟赛记录』暑假集训CSP提高模拟18Rank 致敬传奇不挂分 Rank5 模拟赛A. Mortis 原[ABC302G] Sort from 1 to 4 签,致敬传奇 abc_g 作签到题。 虽然但是还是想了 1h,好在最后成功切了。 具体解释看看题解,求个赞。点击查看代码 #include<bits/stdc++.h> using name…

暑假集训CSP提高模拟18

暑假集训CSP提高模拟18 组题人: @H_Kaguya | @joke3579\(T1\) P227. Mortis \(0pts\)原题: [ABC302G] Sort from 1 to 4 | luogu P1459 [USACO2.1] 三值的排序 Sorting a Three-Valued Sequence部分分\(0pts\) :输出逆序对个数。正解设 \(\{ a \}\) 排序后的序列为 \(\{ b \…

选股指标:涨停缩倍阴战法公式

选股指标:涨停缩倍阴战法 作者: 深海游鱼 QQ:396068801 日期:2024年8月 技术交流请加QQ 396068801

指令的执行过程

指令周期 CPU从主存中每取出并执行一条指令所需的全部时间称为指令周期,不同指令的指令周期可能不同。指令周期常常用若干机器周期来表示,机器周期又叫CPU周期。每个指令周期内的机器周期数可以不等指令周期的数据流指令执行方案

乌克兰生存小技巧——坦克炮测距法

乌克兰生活小技巧 第一集 坦克炮测距法 PS:本系列教程假设您的技术在二战的水平。对于一些条件不错的同学来说,可以直接用激光测距解决问题。 众所周知,炮弹发射出去后会有一定程度的下坠,导致可能打不中目标,这时候测距显得极为重要。所以本教程将会带大家如何正确测距,…

在Kali(Debian)系统上安装dockerdocker-compose并给docker配置socks代理

APT换源、docker安装,docker-compose安装,配置docker socks代理在Kali(Debian)系统上安装docker&docker-compose并给docker配置socks代理 安装docker 方法一:使用kali官方的安装方式(经测试,安装的docker版本为20.0) 参考链接如下 Installing Docker on Kali Linux 由于…

bugbountyhunter scope BARKER:第八滴血 存储型 Storage Cross-Site Scripting XSS SVG文件上传 报告

登录后来到home页面,留言中存在一个Attach image检查 xss payload:https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XSS Injection#xss-in-files使用SVG进行图片上传,发现SVG文件上传成功并返回图片地址poc:https://cfceb12f2bfd-sec875.a.barker-social.…

USB Type-C的工作原理与技术分析

USB TYPE-C更加深入的应用,是从USB3.1开始的,这是因为从USB3.1开始,USB的功能开始变得更加丰富起来。 USB 3.1基本规格有SS字样的代表支持PD,有SS和10的USB标志代表支持USB3.1及PD2.0 历代USB输出功率及标志比较本图来源于:https://www.datapro.net/techinfo/what_is_usb_…

CPU的功能和基本结构

CPU的功能CPU的基本结构运算器控制器CPU中的寄存器 用户可见的寄存器

旧物利用 - 将机顶盒改造为一台Linux开发机!

家里的机顶盒淘汰下来,博主想要物尽其用,看看是否能将其改造为一台Ubuntu"开发机",故开始倒腾前言 机顶盒型号:移动魔百盒CM201-2(CH),芯片组: hi3798mv300(hi3798mv3dmm),其他型号类似 理论上适用于以下SOC:Hi3798Mv100 / Hi3798Cv200 / Hi3798Mv200 / Hi3…