0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

iMX6系列-iMX6Q 开发板 Python 移植

飞凌嵌入式 2021-10-28 18:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文基于飞凌OKMX6Q/DL开发板为基础讲解,主要使用平台是imx6系列,linux3.0.35操作系统,其他平台也可以参考,不同平台之间会存在差异,需自行修改适应自己的使用

iMX6 Python移植

注:所需工具包在Python移植/工具包

已经生成的可移植Python在Python移植/output

过程一:Python编译过程

准备工作

以下文件在下面的编译中需要用到

Python-2.7.13.tgz

sqlite-autoconf-3200100.tar.gz

Python-2.7.13-xcompile.patch.tar.gz

ntp-4.2.8p10.tar

setuptools-0.6c11-py2.7.egg

openssl-OpenSSL_1_0_1b.zip

zlib-1.2.3.tar.g

准备环境

cd /root

mkdir mx6q-python2.7/ && cd mx6q-python2.7

mkdir –p{python2_7_13_for_x86_64,python2_7_13_for_arm,INSTALL,sqlite3,misc,output/sources}

复制上文中准备的软件包到mx6q-python2.7,把zlib-1.2.3.tar.gz和openssl-OpenSSL_1_0_1b.zip移动到misc目录下。或者直接复制提供的软件包中mx6q-python2.7文件到/root目录下。

f_3d504c4b6f793b2ab5ce6af0bc58e6f3&t=jpg&o=&s=&v=1610431778

确定交叉编译工具链

确定当前交叉编译器链,如果交叉编译链不一致, 替换下文中的编译器。当前的交叉编译链为arm-none-linux-gnueabi-.可以通过下面命令确定当前编译链。

find / -name arm-*-gcc

如果交叉编译链不一致,替换下文中的编译器

f_b3ad47ffd2bdd0b19e8d586e9062e2b5&t=jpg&o=&s=&v=1610435793

编译安装

编译安装sqlite3

编译安装sqlite3, python需要sqlite3支持。

cd /root/mx6q-python2.7/
tar xvf sqlite-autoconf-3200100.tar.gz
cd sqlite-autoconf-3200100
./configure --host=arm-none-linux-gnueabi --prefix=$PWD/../sqlite3
make -j8 && make install

编译openssl和zlib

编译zlib

cd /root/mx6q-python2.7/misc/
tar xvf zlib-1.2.3.tar.gz
cd zlib-1.2.3
mkdir arm_install
./configure --prefix=./arm_install/
sed -i 's/gcc/arm-none-linux-gnueabi-gcc/g' Makefile
sed -i 's/AR=ar/AR=arm-none-linux-gnueabi-ar/g' Makefile

make

make install

编译openssl

cd /root/mx6q-python2.7/misc/
unzip openssl-OpenSSL_1_0_1b.zip
cd openssl-OpenSSL_1_0_1b
mkdir arm_install
./Configure --prefix=`pwd`/arm_install/ os/compiler:arm-none-linux-gnueabi-gcc

需要修改Makefile中的CC变量为CC= $(CROSS_COMPILE)gcc

make
make install

打包编译好的安装包,移植到开发板需要用到

cd arm_install
tar jcvf openssl-OpenSSL_1_0_1b.tar.bz2 *
cp openssl-OpenSSL_1_0_1b.tar.bz2 /root/mx6q-python2.7/output/sources

l编译python2.7

编译python2.7 for x86

cd /root/mx6q-python2.7/
tar xvf Python-2.7.13.tgz
cd python2_7_13_for_x86_64/
sed -i 's/self.extensions.remove(ext)/print(ext.name)/g' ../Python-2.7.13/setup.py
../Python-2.7.13/configure --prefix=`pwd`
make -j8 && make install

编译python2.7 for arm

打补丁

cd ..
tar xvf Python-2.7.13-xcompile.patch.tar.gz -C Python-2.7.13
cd Python-2.7.13/
patch -p1 < Python-2.7.13-xcompile.patch

修改模块连接配置

vim Modules/Setup.dist,取消下列配置注释

zlib zlibmodule.c -I$(prefix)/include -L$(prefix)/lib -lz
_ssl _ssl.c \
-DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \
-L$(SSL)/lib -lssl -lcrypto

编译python2.7 for arm

配置

cd ../python2_7_13_for_arm/

拷贝bksh文件到/root/mx6q-pythin2.7/下

cp ../bksh/py2* .可直接运行脚本py2config-for-arm.sh

或者输入下面的指令。

../Python-2.7.13/configure --prefix=`pwd` \
--host=arm-none-linux-gnueabi \
--build=x86_64-linux-gnu \
--enable-ipv6 \
--enable-static \
ac_cv_file__dev_ptmx="yes" \
ac_cv_file__dev_ptc="no" \
LDFLAGS="-L$PWD/../sqlite3/lib -L$PWD/lib" \
CPPFLAGS="-I$PWD/../sqlite3/include -I$PWD/include -I$PWD/include/openssl"

在下一步make执行之前,需要先安装zlib和openssl,并将其各自的include和lib拷贝到python2_7_13_for_arm文件夹下.或者可直接运行py2-cp-libAndssl-arm-toHere.sh脚本会自动把misc下的zlib和openssl库的头文件和库拷贝到当前目录下。

编译

cd /root/mx6q-python2.7/python2_7_13_for_arm/

运行py2make-for-arm.sh或者运行下面的命令。

make HOSTPYTHON=../python2_7_13_for_x86_64/python \ HOSTPGEN=../python2_7_13_for_x86_64/Parser/pgen \ BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \ CROSS_COMPILE=arm-none-linux-gnueabi- \ CROSS_COMPILE_TARGET=yes \ HOSTARCH=arm-none-linux-gnueabi \ BUILDARCH=x86_64-linux-gnu \ SSL=`pwd`

安装

运行py2install.sh或者运行下面的命令。

make install HOSTPYTHON=../python2_7_13_for_x86_64/python \
BLDSHARED="arm-none-linux-gnueabi-gcc -shared" \
CROSS_COMPILE=arm-none-linux-gnueabi- \
CROSS_COMPILE_TARGET=yes \
prefix=$PWD/../INSTALL

打包

cd ../INSTALL/
tar jcvf python2.7-for-arm.tar.bz2 *
cp python2.7-for-arm.tar.bz2 ../output/sources/

lntpdate网络时间同步工具

交叉编译

cd /root/mx6q-python2.7
tar xvf ntp-4.2.8p10.tar.gz
cd ntp-4.2.8p10/
mkdir arm_install
./configure --prefix=$PWD/arm_install --host=arm-none-linux-gnueabi --enable-static --with-yielding-select=yes
make && make install

打包

如果不需要帮助文档可把arm_install目录下的/share目录删掉,减少占用。

cd arm_install
rm share -rf [可选]
tar jcvf ntp-4.2.8.p10.tar.bz2 *
cp ntp-4.2.8.p10.tar.bz2 ../../output/

loutput输出目录

复制setuptools脚本到输出目录

cd /root/mx6q-python2.7/
cp setuptools-0.6c11-py2.7.egg output/sources/

最后的目录格式如下:

├── ntp-4.2.8.p10.tar.bz2
└── sources
├──openssl-OpenSSL_1_0_1b.tar.bz2
├── python2.7-for-arm.tar.bz2
└── setuptools-0.6c11-py2.7.egg

到此,python编译完整, 移植到开发板的步骤请参考"python2.7直接使用手册".

过程二:Python在开发板配置

将以上生成的output文件夹拷贝到iMX6Q开发板

1.解压缩包岛开发版

tar xvf python2.7-arm.tar.bz2 -C/

tar xvfopenssl-OpenSSL_1_0_1b.tar.bz2 -C/

cpsetuptools-0.6c11-py2.7.egg/

cp ntp-4.2.8p10-arm-no-share.tar.gz/

2.修改配置

修改文件/lib/pkgconfig/python2.pc如下.
prefix=/
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

修改文件vi /bin/python2.7-config的第一行如下.

#!/bin/python2.7

在/etc/profile中添加一下配置, 修改成功后source /etc/profile

export PYTHONHOME=/
export PYTHONPATH=$PYTHONHOME:$PYTHONHOME/lib/python2.7:$PYTHONHOME/lib:$PYTHONHOME/lib/python2.7/site-packages
export PATH=$PATH:$PYTHONHOME:$PYTHONPATH

3.进入到easy_install文件夹, 安装easy_install.

输入/bin/bash setuptools-0.6c11-py2.7.egg安装easy_install.

修改文件vi /etc/profile,

添加alias easy_install='easy_install -i http://pypi.douban.com/simple'.

保存退出便于之后安装管理, source /etc/profile使生效配置

4.取消SSL全局验证并验证easy_install,修改文件vi /bin/easy_install增加如下配置.

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

5.配置好网络

参考其他配置应用笔记配置网络的方法。

6.安装ntp网络对时, 进入ntp文件夹.

tar xvf ntp-4.2.8p10-arm-no-share.tar.gz -C /
ntpdate time.buptnet.edu.cn

注:此处可能因为对时网址问题会出现错误,针对报错信息直接搜索即可解决。

7.安装pip

easy_install pip安装成功后, pip -V查看当前安装版本.

8.pip安装模块测试

pip install requests

pip list查看已安装的模块.

9.导入模块测试,输入python2.7进入python2.7 shell.输入import requests,无错误输出。输入exit()退出python shell.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • iMX6
    +关注

    关注

    1

    文章

    33

    浏览量

    14359
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    imx95 中的保险丝写入错误怎么办

    我已经为几个基于 imx6imx8 的 otp 融合了,但从未收到过此错误。有人知道为什么这些保险丝命令在 imx95 中不起作用吗?任何类型的支持/信息都会非常有帮助。谢谢!
    发表于 04-15 10:20

    如何从 eMMC 而不是 USB 启动 i.MX6Q 定制

    我已经建立了一个 Yocto 构建系统,并成功地为我们基于 i.MX6Q SoC 的定制载生成了 Yocto 映像(引导加载程序、rootfs 等)。 目前,该是从 USB 驱动器启动
    发表于 04-13 07:29

    imx6ull 每次都卡住如何解决?

    Ubuntu18在IMX6ULL平台上运行时总是卡在10分钟,尝试关机和休眠都无法解决问题,有人知道如何解决吗?
    发表于 04-13 07:09

    【ESP32-C6系列】WT9932C6开发板上手指南

    指南本小节将简要介绍WT9932C6开发板。1WT9932C6的实物图2详细管脚描述下表列出了开发板管脚描述,如图WT9932C6所示:名称
    的头像 发表于 02-27 18:02 458次阅读
    【ESP32-C<b class='flag-5'>6</b><b class='flag-5'>系列</b>】WT9932C<b class='flag-5'>6</b><b class='flag-5'>开发板</b>上手指南

    【ESP32-C6系列】WT9932C6开发板规格书

    本小节将简要介绍WT9932C6开发板。1WT9932C6的实物图2详细管脚描述下表列出了开发板管脚描述,如图WT9932C6所示:名称P:
    的头像 发表于 02-11 18:04 407次阅读
    【ESP32-C<b class='flag-5'>6</b><b class='flag-5'>系列</b>】WT9932C<b class='flag-5'>6</b><b class='flag-5'>开发板</b>规格书

    迅为驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略

    迅为驱动开发实战:iTOP-RK3568开发板eDP屏幕移植全攻略
    的头像 发表于 12-30 15:42 1246次阅读
    迅为驱动<b class='flag-5'>开发</b>实战:iTOP-RK3568<b class='flag-5'>开发板</b>eDP屏幕<b class='flag-5'>移植</b>全攻略

    探索Renesas FPB - RA6E2:快速原型开发板的深度解析

    探索Renesas FPB - RA6E2:快速原型开发板的深度解析 在嵌入式系统开发的领域中,拥有一款高效且功能丰富的快速原型开发板至关重要。Renesas的FPB - RA
    的头像 发表于 12-29 15:15 686次阅读

    FRDM - IMX93开发板深度解析:从硬件到应用的全方位指南

    FRDM - IMX93开发板深度解析:从硬件到应用的全方位指南 引言 在嵌入式开发领域,一款性能出色且成本合理的开发板对于开发者来说至关重
    的头像 发表于 12-24 11:40 2061次阅读

    探索FRDM - IMX8MPLUS开发板:开启嵌入式开发新旅程

    探索FRDM - IMX8MPLUS开发板:开启嵌入式开发新旅程 作为电子工程师,我们总是在寻找性能卓越、功能丰富且易于上手的开发板,以满足不同项目的需求。NXP的FRDM -
    的头像 发表于 12-24 11:00 511次阅读

    CIE全国RISC-V创新应用大赛 呼吸机人机交互系统

    原有呼吸机人机交互系统基于 imx6Q 芯片进行设计开发,为进一步优化系统性能、降低硬件成本,并拓展硬件的扩展性与兼容性,本次试用选择进迭时空的 MUSE Pi Pro 开发板进行适配改造,目标
    发表于 11-12 15:07

    STM32计算机视觉开发套件:B-CAMS-IMX摄像头模块技术解析

    STMicroelectronics用于 STM32开发板的B-CAMS-IMX摄像头模块提供强大的硬件集,可处理多种计算机视觉场景和用例。该模块具有高分辨率500万像素IMX
    的头像 发表于 10-20 09:46 1607次阅读
    STM32计算机视觉<b class='flag-5'>开发</b>套件:B-CAMS-<b class='flag-5'>IMX</b>摄像头模块技术解析

    如何移植rt-thread到野火imx6ull开发板上?

    求助如何将rt-thread移植到野火imx6ull(coretex-A7)开发板上,官方的bsp中没有imx6ull
    发表于 09-29 06:25

    如何移植EtherCAT Igh--基于米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微RK3576开发板)的移植EtherCATIgh方案的开发测试。摘自优秀
    的头像 发表于 09-26 08:04 1w次阅读
    如何<b class='flag-5'>移植</b>EtherCAT Igh--基于米尔RK3576<b class='flag-5'>开发板</b>

    IMX273LLR技术手册

    电子发烧友网站提供《IMX273LLR技术手册.pdf》资料免费下载
    发表于 08-28 16:05 2次下载

    IMX307LQD-C规格书

    IMX307LQD-C 规格书 
    发表于 08-20 15:55 5次下载