# 野火IMX6开发板Python环境搭建笔记 **Repository Path**: vere_zhao/imx6_use_record ## Basic Information - **Project Name**: 野火IMX6开发板Python环境搭建笔记 - **Description**: 本项目是基于野火IMX6开发板进行Python环境搭建的应用笔记,主要记录了系统烧写、Python环境搭建以及硬件支持库的安装及使用的方法。 本项目主要参考野火官方教程。 - **Primary Language**: 其他 - **License**: AGPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-20 - **Last Updated**: 2022-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 野火IMX6开发板Python环境搭建笔记 - 平台:野火imx6ull开发板 - 系统:Debian ## 系统烧写 本章节讲解如何把Debian镜像烧录到SD卡以及系统的基本设置与更新。 #### 下载Debian镜像及工具 1. 下载野火最新发布的Debian系统镜像 百度云网盘:https://pan.baidu.com/s/1ANFMMFA9fZQltIQtQafhvw 提取码:r9ot 1. 下载烧写工具 百度云网盘:https://pan.baidu.com/s/1GEBLq4M70mA41q0ZKGENww 提取码:oog1 #### 烧写Debian镜像 1. 解压并打开win32diskimager工具,软件界面如下图所示: ![dsfs](media/install001.png) 1. 选择以下载的镜像及U盘目录,并点击写入开始镜像烧写。 1. 等待烧写完成。 #### 开发板运行 开发板插入烧录好Debian镜像的SD卡,调整拨码开关为SD卡启动方式,上电后开发板就能正常启动。 **注意:开发板第一次从SD卡启动时,系统会自动进行SD卡扩容,以保证充分利用SD卡存储空间。扩容完毕后,系统自动重启生效。** 系统启动以后,输入用户密码登录即可。 普通用户: ``` 账户:debian 密码:temppwd ``` ROOT用户: ``` 账户:root 密码:root ``` #### 系统更新 1. SD卡扩容 打开系统配置工具`sudo fire-config` 选择并执行"P25 Expand Filesystem"项。如下图: ![系统扩容](media/install002.png) 选择"P4 LED"项并关闭LED功能 执行完毕后重启系统。 1. apt更新 顺序执行如下指令: ``` $ sudo apt-get update $ sudo apt-get upgrade $ sudo reboot ``` 1. 安装必要的程序 - 安装wget,用于下载网络资源,执行`sudo apt-get install -y wget`。 - 安装git,用于克隆源码库,执行`sudo apt-get install -y git`。 - 安装xz-utils,用于解压缩xz格式的压缩包,执行`sudo apt-get install -y xz-utils`。 ## 安装python 1. 安装Python 执行如下指令,安装Python ``` $ sudo apt-get install -y python3 ``` 在安装完成后,校验是否安装成功: ``` $ python3 -V Python 3.7.3 ``` 由于使用python3不太习惯,因此对python进行重新链接,执行如下指令 ``` $ cd /usr/bin $ sudo rm python $ sudo ln -s python3.7 python $ cd $ python -V Python 3.7.3 ``` 1. 安装pip 一般情况下可以通过apt进行pip的安装,但是这样安装很容易出现问题,因此我们需要使用get-pip.py脚本进行pip的安装。 - 更改pip镜像源 在用户目录下创建.pip/pip.conf,并输入如下内容 ``` [global] index-url = https://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com ``` - 操作如下 ``` $ cd $ mkdir ~/.pip $ nano ~/.pip/pip.conf 输入镜像源内容,ctrl+s保存,ctrl+x退出 $ su root $ cd $ mkdir ~/.pip $ nano ~/.pip/pip.conf 输入镜像源内容,ctrl+s保存,ctrl+x退出 $ su debian $ cd ``` - 安装pip ``` $ sudo apt-get install -y python3-distutils $ git clone https://gitee.com/zhaobingpo/getpip.git $ sudo python ./getpip/get-pip.py $ pip -V pip 20.0.2 from /usr/local/lib/python3.7/dist-packages/pip (python 3.7) $ sudo rm -rf getpip ``` ## 安装底层硬件支持库 - python3-smbus:主要是是读写i2c总线相关操作的依赖库 - python3-setuptools:Python的setupt工具。 ``` $ sudo apt-get install -y python3-smbus $ sudo apt-get install -y python3-setuptools ``` - ebf-gpiod:野火官方提供的GPIO库 ``` $ sudo apt-get install -y ebf-gpiod ``` 安装这个库时可能会遇到一些问题,如下 ``` The following packages have unmet dependencies: ebf-gpiod : Depends: libgpiod-dev but it is not going to be installed E: Unable to correct problems, you have held broken packages. ``` 经过多次测试,此问题是由于libgpiod-dev的依赖libgpiod2版本不对,因此无法完成安装,所需需要更改libgpiod2的版本。具体操作如下 ``` $ sudo apt-get remove -y libgpiod2 $ sudo apt-get install -y libgpiod2=1.2-3 $ sudo apt-get install -y libgpiod-dev $ sudo apt-get install -y ebf-gpiod ``` 安装GPIO的底层支持 ``` $ git clone https://gitee.com/Embedfire-pythonlib/Adafruit_CircuitPython_SSD1306.git $ git clone https://gitee.com/Embedfire-pythonlib/Adafruit_Blinka.git $ git clone https://gitee.com/Embedfire-pythonlib/Adafruit_Python_PlatformDetect.git $ ls Adafruit_Blinka Adafruit_CircuitPython_SSD1306 Adafruit_Python_PlatformDetect $ cd ~/Adafruit_CircuitPython_SSD1306 $ sudo python setup.py install $ cd ~/Adafruit_Blinka $ sudo python setup.py install $ cd ~/Adafruit_Python_PlatformDetect $ sudo python setup.py install $ cd ``` 简单测试 创建rgb_led.py,执行`nano rgb_led.py` 输入如下代码 ``` import time import digitalio from board import R_LED, G_LED, B_LED rled = digitalio.DigitalInOut(R_LED) gled = digitalio.DigitalInOut(G_LED) bled = digitalio.DigitalInOut(B_LED) rled.switch_to_output() gled.switch_to_output() bled.switch_to_output() while True: rled.value = 0 time.sleep(1) rled.value = 1 gled.value = 0 time.sleep(1) gled.value = 1 bled.value = 0 time.sleep(1) bled.value = 1 time.sleep(1) ``` 保存并退出 执行`python rgb_led.py` - ebf-gpiod:野火官方提供的GPIO库 ## 运行速度比较 将野火IMAX与树莓派和普通PC进行比较,了解其运行处理能力如何。 测试代码如下 ``` import time import random def tt(n=100000): rd = random.Random() zt = time.time() for i in range(n): zi = time.time() d = rd.random() d = d * d zi = time.time()-zi print(zi) zt = time.time() - zt print(zt) tt(1000000) ``` 测试情况如下 | 平台 | 总耗时 | | :---: | :---: | |野火IMAX | 645s | |树莓派4|22s| |普通pc|7s|