基 CanMV 的 C 开发环境搭建(Linux,Ubuntu篇)

news2024/10/23 10:18:41
不论是使用 CanMV 提供的基于 C 语言和 FreeRTOS 的应用开发方式开发应用程序或是编译
CanMV 固件,都需要搭建基于 CanMV C 开发环境,用于编译 CanMV 源码。

1. 开发环境搭建说明

CanMV 提供了基于 C 语言和 FreeRTOS 的应用开发方式以及基于 MicroPython 语法的应用
开发方式,其中基于 C 语言和 FreeRTOS 的应用开发方式依靠直接编译 CanMV 源码和应用代码
来生成应用程序的可执行文件,而基于 MicroPython 语法的应用开发方式则是需要先编译 CanMV
源码并得到 CanMV 固件,然后在目标芯片上运行 CanMV 固件,以此来解析并运行 MicroPython
脚本的应用程序。
可以发现,无论使用那种开发方式进行 CanMV 的应用开发,都是需要编译 CanMV 的源码,
因此本章介绍的开发环境实际上就是 CanMV 源码的编译环境,因此在搭建好 CanMV 的源码编
译环境后,便可使用基于 C 语言和 FreeRTOS 的应用开发方式开发应用程序以及编译 CanMV
件。
CanMV 项目仓库源码编译相关的文档( build.md )中有这么一句话,如下所示:
Only support Linux(recommend) and macOS
那么,这意味着 CanMV 源码的编译只能在 Linux macOS 操作系统下完成,在 Windows
下是无法完成 CanMV 源码编译的,并且也推荐在 Linux 操作系统下进行 CanMV 源码的编译。
为此本教程文档将选用 Linux 操作系统来搭建 CanMV 的编译环境,具体选用的 Linux 发行版本
Ubuntu Server 20.04.6 。当然,对于具有能够解决所遇到问题的能力的读者,也可以选用其他
Linux 发行版本或 macOS
至此,确定了使用 Ubuntu Server 20.04.6 作为开发环境的操作系统,但是可能大部分读者的
电脑安装的都是 Windows 操作系统,身边并没有装有 Ubuntu Server 20.04.6 操作系统的电脑,那
怎么办呢?以下列出一个解决方案:
一,以购买、租借等方式新增一台安装 Ubuntu Server 20.04.6 操作系统的电脑
二,使用 Windows 下的 WLS (适用于 Linux Windows 子系统)
三,使用 VMware Workstation Player 等应用程序在 Windows 下创建虚拟机,并运行 Ubuntu
Server 20.04.6 操作系统
四,其他
本教程文档将就以上解决方案中的第三点(使用 VMware Workstation Player 等应用程序在
Windows 下创建虚拟机,并运行 Ubuntu Server 20.04.6 操作系统)提供详细的教程步骤,具体将
介绍在 Windows 操作系统下使用 VMware Workstation Player 17.0.0 创建虚拟机并安装运行 Ubuntu
Server 20.04.6 操作系统。

2. 安装 VMware Workstation Player

本教程使用的 VMware Workstation Player 版本为 17.0.0 VMware Workstation Player 是一个
能够在 Windows 操作系统下创建虚拟机并在所创建虚拟机上运行 Ubuntu Server 20.04.6 操作系
统的程序软件

2.1 创建虚拟机并安装 Ubuntu

要使用 VMware Workstation Player 创建虚拟机并安装 Ubuntu Server 20.04.6 操作系统,请读
者先根据 4.2 小节在 Windows 主机下正确安装 VMware Workstation Player
安装 Ubuntu Server 20.04.6 操作系统需要使用 Ubuntu Server 20.04.6 的系统安装镜像文件,
该镜像文件可前往其官方的发布网站进行下载,网址为: https://releases.ubuntu.com/focal ,进入网
站后,在“ Select an image ”处选择“ Server install image ”进行下载,如下图所示:
准备好镜像文件后,打开 VMWare Workstation Player 并点击“创建新虚拟机 (N) ”按钮打开
新建虚拟机向导,如下图所示:
点击“下一步”按钮后,填写简易安装信息,如下图所示
简易安装信息的说明,如下表所示:
虚拟机的磁盘将占用虚拟机安装位置磁盘的空间,因此确保主机的磁盘空间足够。读者可以
根据自己的实际情况来确定虚拟机的磁盘大小,另外,虚拟机的磁盘大小是可以在创建好虚拟机
后再次调整的。
点击“下一步”按钮后,自定义虚拟机的硬件信息,如下图所示:
主要自定义的硬件信息有内存、处理器、网络适配器,其余的硬件信息,读者也可以根据实
际情况进行调整。
点击“完成”按钮后,虚拟机创建完毕,勾选“创建后开启此虚拟机”复选框,虚拟机将自
动开启。
开启虚拟机后, Ubuntu Server 20.04.6 的安装程序将自动运行,安装程序启动后,首先进入
“选择语言”界面,读者可根据实际情况选择语言,但建议选择“ English ”,如下图所示:

小贴士:ALT+CTAL放出鼠标

回车确认后,若此时安装程序已经连接网络,且检测到有新发布的 Ubuntu Server 安装程序, 则弹出更新界面,建议选择“Continue without updating”,如下图所示:
回车确认后,进入键盘配置界面,键盘配置一般保持默认即可,如下图所示
一直回车直到常用的软件镜像源,如下表所示:
软件镜像源 镜像地址 Ubuntu 官方中国镜像 http://cn.archive.ubuntu.com/ubuntu 清华大学开源软件镜像站 https://mirrors.tuna.tsinghua.edu.cn/ubuntu 阿里巴巴开源镜像站 https://mirrors.aliyun.com/ubuntu
一般保持默认 即可
随后进入系统信息配置界面,读者可根据实际情况配置系统信息,如下图所示
回车确认后,进入 SSH 配置界面,SSH 服务用于远程连接 Ubuntu Server,本教程将在 Ubuntu Server 安装完成后手动安装 SSH 服务,因此这里无需重复配置,如下图所示
等待安装程序安装 Ubuntu Server 完成后,会出现“Reboot Now”选项,如下图所示:
选中“Reboot Now”并回车后,虚拟机会重新启动,直到弹出 Ubuntu Server 的登录界面后, 根据提示输入上文系统信息配置中输入的“Your name”和“Choose a password”分别作为用户名和用户密码登入 Ubuntu Server 系统,如下图所示:
至此,完成 Ubuntu 操作系统在虚拟机上的安装,由于在创建虚拟机的时候选择了 Ubuntu Server 20.04.6 的系统安装镜像文件,因此虚拟机在每次开机时都会加载该镜像文件,为了避免在 之后的虚拟机开机时再次自动进入 Ubuntu Server 的安装程序,导致无法正常进入已安装好的 Ubuntu Server 20.04.6 操作系统,因此需要关闭系统安装镜像文件的“启动时连接”,具体方法为: 在 VMware Workstation Player 软件中选择创建好的 Ubuntu 虚拟机并依次点击菜单栏的“Player→ 可移动设备→CD/DVD 2(SATA) →设置”,如下图所示
接着找到并取消勾选“启动时连接”复选框后点击“确认”按钮,如下图所示

开启 SSH 服务并进行远程连接

为了方便开发操作以及主机与虚拟机之间的文件传输,建议在 Ubuntu Server 下开启 SSH 服 务,这样一来,并可在 Windows 下使用 Visual Studio Code、Windows Terminal 等软件访问 Ubuntu Server。 首先在 Ubuntu Server 下安装 openssh-server: # Linux sudo apt update sudo apt install openssh-server -y 安装好 openssh-server 后便自动开启了 SSH 服务,这么一来,同局域网的 SSH 客户端便可 通过 Ubuntu Server 的 IP 地址与 Ubuntu Server 建立 SSH 连接。 查看 Ubuntu Server 的 IP 地址: # Linux hostname -

接下来便可在 Windows 主机下通过 Windows PowerShell、Windows Terminal、Visual Studio Code 等软件的终端与 Ubuntu Server 建立 SSH 连接: # Windows # ssh user@host ssh alientek@192.168.6.666 其中“user”是 Ubuntu Server 中用户的用户名,“host”是 Ubuntu Server 的 IP 地址,若 Ubuntu Server 的 SSH 服务配置正确且网络连接正常,便会提示输入“password”,即 Ubuntu Server 中用 户的密码,成功连接后,如下图所示:

若找不到ip,则下载net工具,来进行ip查询
靠这个ip来链接ssh
输入密码
链接成功
其中“user”是 Ubuntu Server 中用户的用户名,“host”是 Ubuntu Server 的 IP 地址,若 Ubuntu Server 的 SSH 服务配置正确且网络连接正常,便会提示输入“password”,即 Ubuntu Server 中用 户的密码,成功连接后,如下图所示:
关于 Windows PowerShell、Windows Terminal、Visual Studio Code 等工具软件的安装和使用 介绍不是本教程文档的重点,请读者在使用中遇到问题时,善用搜索引擎。 至此,便可在 Windows 下通过 SSH 服务直接访问 Ubuntu Server,非常方便操作
Ubuntu Server 20.04.6 安装完成后,便可在 Ubuntu Server 20.04.6 下安装相关的软件以搭建 CanMV 的开发环境,但为了方便文件管理,本教程文档将创建三个目录来存放 CanMV,具体如 下表所示:

运行开发环境搭建脚本

为方便开发环境的搭建,本教程文档是使用脚本程序来搭建开发环境,读者可在 A 盘→软件资料→软件→CanMV 固件开发环境搭建脚本中找到该脚本文件,脚本文件的文件名为 “canmv_dev_env_setup.sh”。 该脚本文件是在 Ubuntu Server 下运行的脚本程序,因此首先需要将该脚本文件传输到 Ubuntu Server 的文件系统中。主机与虚拟机之间传输文件的方法有很多,本文档教程将介绍使用 SSH 的方式进行文件传输。 在 Windows 环境下可以借助 scp 命令发送文件至 SSH 服务器或从 SSH 服务器复制文件,使 用起来就和 cp 命令一样方便。将脚本文件从 Windows 的文件系统传输到 Ubuntu Server 的文件 系统,如下:
如果需要脚本文件私信我
至此,基于 CanMV 的 C 开发环境基本搭建完成。 下面列出脚本程序的运行流程: 1,检查脚本运行环境 2,更新软件源和软件 3,创建 python 软链接 4,安装 pip 5,安装 Git 6,安装 CMake 7,安装 Toolchain 8,安装 kflash 9,安装 build-essential 有能力的读者可以自行阅读该脚本文件,有需要的话也可以根据需求修改该脚本文件。

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

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

相关文章

IO-LiNK简介

什么是IO-Link? IO-Link( IEC 61131-9 )是一种开放式标准串行通信协议,允许支持 IO-Link 的传感器、设备进行双向数据交换,并连接到主站。 IO-Link 主站可以通过各种网络,如现场总线进行传输。每个 IO-L…

ComfyUI 作者辞职搞开源

ComfyUI 作者发文表示,已从 Stability AI,并与其它开源开发者合作成立了一个致力于迭代和改进 ComfyUI 的开源组织:Comfy Org 目前其生态已经有: node 管理器node registrycomfy 命令行工具自动化测试文档 作者表示&#xff0c…

CCAA:认证通用基础(理解、掌握、应用合格评定功能法的基本概念)

5.合格评定技术 一、合格评定功能法 5.1合格评定功能法 合格评定被视为是一项对与标准相关的规定要求满足程度的一系列技术评价与证明的活动。当需要表明某客体(或特定的对象)是否满足规定要求时使用合格评定功能法所作出的证实能够使之更为切实可 信,可增加使用…

【React Native】measureInWindow在安卓上无法正确获取View在屏幕上的布局信息

问题描述: 在React Native中,我们可以使用measureInWindow的方式去获取一个View在屏幕中的位置信息: 下面这个Demo中,我们写了一个页面HomePage和一个列表项组件ListItemA,我们期望每过5s监测一次列表中每一项在屏幕中…

uniapp 实人认证

首先Dcloud创建云服务空间,开启一键登录并充值 下一步 1. 右键项目 》 创建uniCloud云开发环境 》右键uniCloud》关联云服务空间 2. cloudfunctions右键 新建云函数,任意命名(例:veify),然后右键项目》管…

33.获取入口点

上一个内容:32.双击列表启动目标游戏 前置知识 25.入口点注入(查看pe头)、32.双击列表启动目标游戏 以它的代码为基础进行修改 效果图: 代码实现:原理通过读文件流的方式把文件加载到内存中然后解析pe结构 void CWnd…

ReF:斯坦福提出的新型语言模型微调方法

随着预训练语言模型(LMs)在各种自然语言处理(NLP)任务中的广泛应用,模型微调成为了一个重要的研究方向。传统的全参数微调方法虽然有效,但计算成本高昂,尤其是在大型模型上。为了解决这一问题&a…

CSS样式、选择器、盒子模型

标题 文章目录 一、CSS样式内联样式内部样式外部样式 二、选择器三、颜色四、盒子模型(内边距padding、边框border、外边框margin) 一、CSS样式 可分为:内联样式、内部样式、外部样式 优先级: 内联样式 >内部样式 >外部样式…

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法

2024-6-20 Windows AndroidStudio SDK(首次加载)基础配置,SDK选项无法勾选,以及下载失败的一些解决方法 注意:仅仅是SDK这种刚安装时的配置的下载,不要和开源库的镜像源扯到一起!!!! 最近想玩AndroidStudio的JNI开发, 想着安装后…

机器人阻抗控制相关文献学习(阻抗实现)

机器人阻抗是一个描述机器人与环境交互时动态特性的概念。 定义: 阻抗在机器人领域中,通常用来描述机器人与其环境之间的相互作用。当机器人与环境接触时,环境对机器人施加一个作用力,而机器人也会对环境施加一个反作用力。这个反…

【机器学习】从理论到实践:决策树算法在机器学习中的应用与实现

📝个人主页:哈__ 期待您的关注 目录 📕引言 ⛓决策树的基本原理 1. 决策树的结构 2. 信息增益 熵的计算公式 信息增益的计算公式 3. 基尼指数 4. 决策树的构建 🤖决策树的代码实现 1. 数据准备 2. 决策树模型训练 3.…

Studying-代码随想录训练营day15| 222.完全二叉树的节点个数、110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

第十五天,二叉树part03💪,编程语言:C 目录 257.完全二叉树的节点个数 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和 总结 257.完全二叉树的节点个数 文档讲解:代码随想录完全二叉树的节点个数 视频讲解…

Mistral AI 发布 Codestral-22B,精通 80+ 编程语言,22B 参数超越 70B Code Llama

前言 大型语言模型 (LLM) 在代码生成领域展现出巨大的潜力,但现有的模型在支持的编程语言数量、生成速度和代码质量方面仍存在局限性。法国 AI 独角兽 Mistral AI 近期发布了其首款代码生成模型 Codestral-22B,宣称在多项指标上超越了 GPT-4 和 Llama3&…

计算机网络:应用层 - 万维网 HTTP协议

计算机网络:应用层 - 万维网 & HTTP协议 万维网 WWW统一资源定位符 URL 超文本传输协议 HTTP非持续连接持续连接非流水线流水线 代理服务器HTTP报文 万维网 WWW 万维网是一个大规模的、联机式的信息储藏所。万维网用链接的方法能非常方便地从互联网上的一个站点…

企业的差旅费用还能更节省吗?

对于多数企业而言,差旅成本是仅次于人力资源成本的第二大可控成本。 差旅成本除了差旅产品采购费用、差旅服务费用这些显性成本外,还有预订时间消耗、审批环节、报销流程、票据核查等隐性成本。 据调研数据显示:企业对于专业差旅管理的认知度…

测试服务器端口是否打开,服务器端口开放异常的解决方法

在进行服务器端口开放性的测试时,我们通常使用网络工具来验证目标端口是否响应特定的协议请求。常用的工具包括Telnet、Nmap、nc(netcat)等。这些工具可以通过发送TCP或UDP数据包到指定的IP地址和端口,然后分析返回的数据包&#…

「Python-docx 专栏」docx 获取页面大小、设置页面大小(纸张大小)

本文目录 前言一、docx纸张大小介绍1、document.xml① 关于 document.xml 的一些知识点② 纸张大小在哪里③ 纸张大小都有啥④ EMU对应的尺寸列表二、获取docx纸张大小1、完整代码2、运行效果图三、python为docx设置纸张大小1、完整代码2、效果图前言 今天的这边文章,我们来说…

DNS部署与安全

一、DNS 英文全称:Domain Name Service 含义:域名服务 作用:为客户机提供域名解析服务 二、域名组成 域名组成概述 (1)如"www.sina.com.cn”是一个域名,从严格意义上讲,“sina.com.cn”…

总结 CSS 选择器的常见用法

一,什么是css 在前端网页中,css就相当于化妆术,把一个很生硬的网页页面变得排版有序起来。 CSS可以对网页中的元素位置进行像素级精准控制,实现美化页面的效果,也能做到页面的样式和结构分离。 二,css的基…

前端下载文件流,axios设置responseType: arraybuffer/blob无效

项目中调用后端下载文件接口,设置responseType: arraybuffer,实际拿到的数据data是字符串 axios({method: post,url: /api/v1/records/recording-file/play,// 如果有需要发送的数据,可以放在这里data: { uuid: 06e7075d-4ce0-476f-88cb-87fb0a1b4844 }…