赞
踩
由于本人做的520礼物是一个小小的ESP32-c3电子钟,而现有的代码是基于ESP32的IDF环境下实现的,所以我被迫在自己的电脑上安装了UBUNTU与WINDOWS双系统。下文简单地叙述一下自己的Linux初体验经历。也是给树莓派打下基础。
这里给大家推荐一个比较靠谱的UBUNTU 安装教程:
(56条消息) Ubuntu18.04安装教程——超详细的图文教程_Krasjet_Yu.的博客-CSDN博客_ubuntu18.04
我自己安装的就是18.04,大家安装之前要准备一个空u盘。
之后还有一个是安装之后需要有的软件,大家按需安装即可。
(56条消息) 安装好Ubuntu18.04之后要做的事!!大全、详细教程!_haeasringnar的博客-CSDN博客_安装ubuntu18.04后要做的事情
还有一个问题:就是安装了ubuntu之后我的电脑没有办法连接副显示器,以我的坠机堡垒7为例,在外接显示器的条件下,副显示屏的信号是由独显GTX1650发出来的,ubuntu安装好之后估计是没有安装英伟达的显卡驱动程序,副显示屏还没能正常工作。看了好多教程好像也没有一个比较靠谱的说法。
(56条消息) ubuntu18.04 无法外接显示屏_小张小张快来学习的博客-CSDN博客_ubuntu18.04外接显示器
好像在安装过程中不小心修改了这个设置。
对于我来说,一个小白,我安装这个操作系统的本质是,ESP-IDF需要在Linux环境下进行编译操作,windows如果要编译ESP32的工程将会非常慢,但是如果在linux下编译就非常快。后来多查一下资料,发现Linux其实就是一个多用户多进程的操作系统。与Linux相挂钩的还有一个词:shell
这里摘抄一个博主的回答:
由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,这样用户就能间接地使用操作系统内核了。你看,在用户和内核之间增加一层“代理”,既能简化用户的操作,又能保障内核的安全,何乐不为呢?用户界面和命令行就是这个另外开发的程序,就是这层“代理”。在Linux下,这个命令行程序叫做Shell。Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、迅雷、Firefox 等其它软件没有什么区别。
对于Windows来说,shell就是他的图形化操作系统。
简单来说,shell的本质是一个面向过程的程序,介于Linux内核与用户之间,是Linux命令的集合;不太严谨地说:
shell其实就是我们在操作系统中的命令行。
环境变量( Environment Variable )
何为变量:
在储存空间中能够被赋值并占据内存的。
这里直接按照B站上迷糊老师的说明:
环境变量的意义就在于:**告诉操作系统哪些重要文件运行时存放的目录在哪。**例如windows操作系统目录,操作系统如果挨个盘去寻找的话,也许大概率要把每个盘都搜索一编然后才能找到,那么这样开机的过程就会很漫长。因为大部分的时间都被消耗在遍历各个文件夹上了。假设有这样一个变量,它能够被赋值,而赋的值正好是window操作系统的存放目录,那么就能直接访问到文件。不过,环境变量在window系统下是被图形化界面所加工过的,不同于Linux。
在Linux下如何配置环境变量:
变量名='值'
export 变量名
或者
export 变量名='值'
如果环境变量的值中没有空格等特殊的字符,单引号可以不写
注意!!!通过export配置的环境变量当我们重启一次ubuntu系统的时候就不会生效了,就好像之前C中学的变量的生存周期。
这也是为何下面IDF的使用的时候要重新运行这句: . ./export.sh 程序。
还有一种就是在搭建ESP-IDF环境过程中用到的:
原理是修改这个/etc/bashrc文件
vim是一个文本编辑器软件,没有安装可以通过sudo apt-get install vim安装。
export:
export // 直接列出当前shell下使用的环境变量
变量名='值'
export 变量名
或者
export 变量名='值'
env :
env // 显示当前用户的环境变量
这个我参考的博客是:
(56条消息) Linux下搭建 ESP-IDF 开发环境,适合ESP32/ESP32S2/ESP32C3/ESP32S3系列模组二次开发_安信可科技的博客-CSDN博客_esp32 linux
每次在进入工程文件夹的时候都要先用一句命令调用IDF,不然无法使用idf的指令。
这个语句要在ESP-IDF的esp-idf文件夹里面运行才可以。
cd ESP12 // 这个是我存放ESP-IDF的路径,里面还有esp-gitee-tools
cd esp-idf // 在esp-idf文件夹下才有export.sh文件可以运行。
. ./export.sh // 在当前终端中声明这个环境变量
运行无报错的话,有:
上面的代码运行过一次之后,才能进入我们拉取得工程文件夹目录下进行运行。
然后进入工程文件夹目录下,运行:
idf.py set-target esp32c3 // 设置编译的目标芯片
idf.py build monitor // 编译工程并且在控制台里面显示
如果编译没有报错的话就能直接烧录了:
idf.py -p /dev/ttyUSB0 flash // 将程序下载到芯片中
idf.py flash monitor // 将程序下载到flash闪存里面。
sudo apt-get install python 3
对于这一句代码,apt-get本质上是一个程序。
“以超级用户的方式执行apt-get这个程序,动作是install, 对象是python3”
mv指令用于移动文件:
mv 文件1 文件2 文件3 /home/xxx/xxx/xxx
// mv这个指令可以将当前目录下的文件
// 不同文件名之间可以用空格隔开
// 可以进入目标文件用pwd命令输出绝对路径
eg:
mv test1.txt /home/user/opencv/src
// 这个指令写完之后这个txt文件就会被移动到src文件夹内
cd // 直接返回最外层的目录
cd .. // 返回上一级的目录
cd ../.. // 返回上两级的目录
cp指令是用于复制文件的,即copy。可以复制文件可以复制文件夹。
基本语法:
cp [-参数] 源路径(source) 目标路径(target)
参数的选择有:
-r : r的意思是recursive递归,如果添加了这个参数的话能实现将含有多个文件的文件夹复制到目标路径当中去。
-p : 这条参数是让 复制到目标路径的文件保留原有的属性,如创建时间等等。
-f : f是force强制的意思,这个参数输入后,就算目标路径中有相同名字的文件,也会直接覆盖掉!!
target : 我自己每次用这条指令的时候都会先用pwd这个命令先输出绝对路径,亲测可行。
这个地方我亲测了一个将文件夹复制到文件夹中并且一定能够实现复制的方法:
// 先进入要复制的路径
cp -r features2d /home/pi/opencv4.3/release
// 由于我的features这个是一个文件夹,所以要在参数面配上-r
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。