最近在研究ESP8266,发觉这真是一个好玩的东西,感觉自己来迟了,错过了几百万!
windows的编译环境我根据手册搭建完成,但是感觉好慢啊。网上有人说Linux下编译快的一批。
我特意来尝试了一下,我是个linux小白,根据网上的资料一步一步来,走了很多弯路,花了几天时间终于可以编译了。给大家分享下过程,自己也做个记录。
1. 我用的是虚拟机VMware,大家自行下载安装。
2. 下载ubuntu20.10
http://mirrors.aliyun.com/ubuntu-releases/
阿里云镜像,再用迅雷下载,快的很。网上很多百度云的,那速度...
3. 创建新的虚拟机,安装ubuntu20.10
选择好安装路径
根据自己的CPU选择相应数量
网络先用这个方式(安装的时候系统需要更新下载),安装好以后再切换为桥接。
点击“编辑虚拟机设置”,加载下载好的ubuntu光盘镜像
点击 “开启此虚拟机”
根据提示,移动鼠标到虚拟机内选择安装
选择“install ubuntu”
选择语言,我选的是英文,虽然我英文水平并不好,但是必须要有个态度不是吗?
我把安装中的更新去掉了,因为点了会很慢。虽然它还是会自己下载一些更新。但明显快多了,而且安装完以后更新也是一样的。
选择"install now" =>“continue”
选择地区,鼠标点击到中国的位置 => "continue"
填写用户名和密码,那必须“123456”,好记啊。
好了,它开始安装了,漫长的过程。
终于完成
重启进入桌面
好了,接下来开始见证奇迹的时候了...
好吧,也没什么奇迹。一切都是度娘查来的。
4 设置网络相关
在桌面上鼠标右键“open in termial”或者“Ctrl+Alt+T”
接下来的操作基本都是在终端下完成的。
5. 设置一下网络,更改为桥接模式、
为啥要更改呢?
现在是NET模式,装虚拟机的这台电脑是可以和虚拟机通讯的。但是局域网内的其他电脑是没办 法和 虚拟机通讯的。
在屏幕右上角有一个小三角形,点击后选择"wired connect"进行网络设置
“Identity”选项页直接下来选择
“IPv4”选项页,选择手动"Manual",IP地址写一个局域网里别人没使用的,网关要写实际网关,可以在windows下的命令行模式通过命令“ipconfig”得到。DNS填入电信的IP。完成后点击“Apply”
然后在“虚拟机”-> “设置选项”
设置一下网络选项,改为桥接模式
虚拟机屏幕右下角有一个网络标志,点击“断开连接”,然后再来一次“连接”
重新开关一下“开关”,这时网络已经通了。可以在windows命令行下ping一下。
网络符号表示已连接
6. 先更新下软件库
sudo apt-get update
7. 安装一下网络工具
sudo apt install net-tools
8. 修改root 密码
sudo passwd root
9. 安装openssh-server,用于远程操作(选做)。
sudo apt-get install openssh-server
安装完成后会自动运行。以后就可以用secureCRT等软件远程操作ubuntu
10. 安装ftp-server,用于文件传输(选做)
sudo apt-get install vsftpd
安装好以后,需要这个文件里面的配置,这个时候就需要用到root用户了。
输入命令 su 后输出密码就切换到root了。
编辑文件可以用gedit和vim。但是vim目前没装,可以用sudo apt-get install vim安装
编辑文件,输入命令
gedit /etc/vsftpd.conf
把“#”号去掉,就使能了某些响应功能操作。
就修改如下
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
allow_writeable_chroot=YES
修改完,保存退出。
重启下ftp服务器
sudo service vsftpd restart
完成后可以用FileZilla软件和虚拟机通过ftp协议传输文件了。
11. 安装python环境
默认是安装了python3.8的。
注意:千万不要手欠去删除它,不然你会知道后果的。(下次运行的时候界面都没了,只有命令行) 把python3链接到/usr/bin/python目录。别问我为什么,我只知道你不照着做后面有你看的。
这个时候我们再查下
安装python-setuptools
sudo apt-get install python-setuptools
安装python-pip这个很关键,我在这里花了特多时间,走了很多弯路。结果回头看时本来很简单的一 件事被我整复杂了,原谅我的无知和年轻(虽然并不是)。所以说前面那步为啥要那么做。是很关键的。
sudo apt-get install python3-pip
有人会问为啥不批量安装......那不是为了加深印象吗?
接下来批量安装
sudo apt-get install python3-serial python3-click python3-cryptography python3-future python3-pyparsing python3-pyelftools
接下来在安装一些需要依靠的工具
sudo apt-get install git wget flex bison gperf cmake ninja-build ccache libffi-dev libssl-dev libncurses5-dev
12. 下载并配置编译工具链
xtensa-lx106
https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-linux-amd64.tar.gz
下载此文件到Downloads文件夹里(在虚拟机里用浏览器下载就会报错在此目录下)
也可以在windows下载完通过ftp传输到downloads文件夹里。
创建工作目录,并把工具链解压到工作目录下
mkdir -p ~/esp8266
cd ~/esp8266
tar -xzf ~/Downloads/xtensa-lx106-elf-linux64-1.22.0-100-ge567ec7-5.2.0.tar.gz
完成此操作后,工具链已经解压到esp8266文件下了。
接下来要设置环境变量,方法有几种
修改/etc/profile 文件
切换到root用户
cd /etc
gedit profile
在末尾添加,保存并退出。乐鑫的SDK库,环境变量先添加,后面再下载。
export PATH="$PATH:$HOME/esp8266/xtensa-lx106-elf/bin"
export IDF_PATH="$HOME/esp8266/ESP8266_RTOS_SDK"
上面截图是普通用户下查看的,所以是只读。
修改完以后,需要重新登录才能生效。
查询环境变量
printenv PATH
或者修改系统文件bashrc
也是root用户下操作
gedit .bashrc
在文件首部添加上面的内存。完成后输入命令。
source ~/.bashrc
这里不演示了,功能一样。
13. 下载ESP8266_RTOS_SDK
在这个步骤,由于我之前是在windows下有下载过这个文件。我就用ftp传输到虚拟机。导致后面出来太多问题,编译不通过,一度奔溃。这些后面再说。
https://github.com/espressif/ESP8266_RTOS_SDK.git
这里下载我们用到git工具从github网站下克隆SDK库。这里是克隆是重点。直接打包下载是不行的。
输入命令
cd
cd esp8266/
git clone --recursion https://github.com/espressif/ESP8266_RTOS_SDK.git
这里用的是递归克隆。github是国外网站,经常连不上,且会下载不完全。所以下载完后
到ESP8266_RTOS_SDK目录上输入命令,进行更新和补全。要不然编译会出错。
git submodule update --init --recursive
多运行几次。直到返回为空。一定要这样做!!!确保完整。
到这里,环境就基本搭建完成了。
输入下面这个命令,用于检查工具链是否安装和版本是否满足
python -m pip install --user -r $IDF_PATH/requirements.txt
如果版本不足,会自行下载安装。
接下来就可以用make 命令了。到ESP8266_RTOS_SDK/examples/get-started/目录下,把
hello_world文件拷贝到ESP8266_RTOS_SDK/目录下,进行编译等测试。
进入ESP8266_RTOS_SDK/hello_world目录下
输入命令进行参数设置
make menuconfig
如果屏幕太小是不会显示界面的。
make clean
make all
真的是快的一批。
开始你们的飞翔吧!
下面说一些问题的解决办法。
之前说的,我通过ftp把ESP8266_RTOS_SDK直接传输到虚拟机里。导致后面编译的时候会出现一些错误。
例如某个.sh文件提示permission denied 错误(没有权限)。
解决办法:进入这个文件的目录。(“文件”替换成错误的文件名)
sudo chmod 777 文件
vim 文件
在尾部命令行输入
:set ff=unix
:wq
例如提示syntax error错误
是dash和bash的问题,ubuntu下 shell 默认安装的是 dash,改为bash即可。
(不过默认的是dash,我没改一样没问题。所以还是文件拷贝的问题。拷贝过来后,有些文件格式会变成dos,改为unix应该就没问题。关键就是要找出哪个文件引起的错误)
查看shell 对应的程序,输入下面命令查询
ls -al /bin/sh
如果是dash输入下面的命令,选择No,改为bash,再次编译,OK
sudo dpkg-reconfigure dash
source ~/.bashrc
有可能执行完此命令后,环境变量会被清除,重新设置即可。
特别感谢CSDN和广大网友。我就不一一列举在哪抄的了。见谅!