0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

iMX6系列-iMX6Q 開發(fā)板 Python 移植

飛凌嵌入式 ? 2021-10-28 18:24 ? 次閱讀

本文基于飛凌OKMX6Q/DL開發(fā)板為基礎(chǔ)講解,主要使用平臺是imx6系列,linux3.0.35操作系統(tǒng),其他平臺也可以參考,不同平臺之間會存在差異,需自行修改適應(yīng)自己的使用

iMX6 Python移植

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

已經(jīng)生成的可移植Python在Python移植/output

過程一:Python編譯過程

準(zhǔn)備工作

以下文件在下面的編譯中需要用到

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

準(zhǔn)備環(huán)境

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}

復(fù)制上文中準(zhǔn)備的軟件包到mx6q-python2.7,把zlib-1.2.3.tar.gz和openssl-OpenSSL_1_0_1b.zip移動到misc目錄下?;蛘咧苯訌?fù)制提供的軟件包中mx6q-python2.7文件到/root目錄下。

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

確定交叉編譯工具鏈

確定當(dāng)前交叉編譯器鏈,如果交叉編譯鏈不一致, 替換下文中的編譯器。當(dāng)前的交叉編譯鏈為arm-none-linux-gnueabi-.可以通過下面命令確定當(dāng)前編譯鏈。

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

打包編譯好的安裝包,移植到開發(fā)板需要用到

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

打補(bǔ)丁

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* .可直接運(yùn)行腳本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執(zhí)行之前,需要先安裝zlib和openssl,并將其各自的include和lib拷貝到python2_7_13_for_arm文件夾下.或者可直接運(yùn)行py2-cp-libAndssl-arm-toHere.sh腳本會自動把misc下的zlib和openssl庫的頭文件和庫拷貝到當(dāng)前目錄下。

編譯

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

運(yùn)行py2make-for-arm.sh或者運(yùn)行下面的命令。

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`

安裝

運(yùn)行py2install.sh或者運(yùn)行下面的命令。

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網(wǎng)絡(luò)時間同步工具

交叉編譯

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

打包

如果不需要幫助文檔可把a(bǔ)rm_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輸出目錄

復(fù)制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編譯完整, 移植到開發(fā)板的步驟請參考"python2.7直接使用手冊".

過程二:Python在開發(fā)板配置

將以上生成的output文件夾拷貝到iMX6Q開發(fā)板

1.解壓縮包島開發(fā)版

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.進(jìn)入到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全局驗(yàn)證并驗(yàn)證easy_install,修改文件vi /bin/easy_install增加如下配置.

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

5.配置好網(wǎng)絡(luò)

參考其他配置應(yīng)用筆記配置網(wǎng)絡(luò)的方法。

6.安裝ntp網(wǎng)絡(luò)對時, 進(jìn)入ntp文件夾.

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

注:此處可能因?yàn)閷r網(wǎng)址問題會出現(xiàn)錯誤,針對報錯信息直接搜索即可解決。

7.安裝pip

easy_install pip安裝成功后, pip -V查看當(dāng)前安裝版本.

8.pip安裝模塊測試

pip install requests

pip list查看已安裝的模塊.

9.導(dǎo)入模塊測試,輸入python2.7進(jìn)入python2.7 shell.輸入import requests,無錯誤輸出。輸入exit()退出python shell.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • iMX6
    +關(guān)注

    關(guān)注

    1

    文章

    33

    瀏覽量

    13781
收藏 人收藏

    評論

    相關(guān)推薦

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之藍(lán)牙

    /configs/imx6ull_elf1_defconfig編譯測試編譯內(nèi)核、設(shè)備樹和模塊并拷貝到開發(fā)板:elf@ubuntu:~/work/linux-imx-imx
    發(fā)表于 03-04 16:52

    飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之藍(lán)牙

    /configs/imx6ull_elf1_defconfig編譯測試編譯內(nèi)核、設(shè)備樹和模塊并拷貝到開發(fā)板:elf@ubuntu:~/work/linux-imx-imx
    發(fā)表于 03-03 09:56

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之FLEXCAN

    /linux-imx-imx_4.1.15_2.0.0_ga$ cp .config arch/arm/configs/imx6ul\\l_elf1_defconfig編譯測試編譯內(nèi)核和設(shè)備樹并拷貝到開發(fā)板
    發(fā)表于 02-27 09:19

    飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之FLEXCAN

    /linux-imx-imx_4.1.15_2.0.0_ga$ cp .config arch/arm/configs/imx6ul\\l_elf1_defconfig編譯測試編譯內(nèi)核和設(shè)備樹并拷貝到開發(fā)板
    發(fā)表于 02-26 14:03

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之移植前的準(zhǔn)備

    我們這一章節(jié),開始進(jìn)行Linux內(nèi)核源碼的移植,主要的工作是在NXP i.MX6ULL EVK評估對應(yīng)的Linux內(nèi)核源碼(linux-imx_4.1.15版本)基礎(chǔ)上進(jìn)行功能接口引
    發(fā)表于 01-22 10:43

    飛凌嵌入式ElfBoard ELF 1板卡-開發(fā)板適配之移植前的準(zhǔn)備

    我們這一章節(jié),開始進(jìn)行Linux內(nèi)核源碼的移植,主要的工作是在NXP i.MX6ULL EVK評估對應(yīng)的Linux內(nèi)核源碼(linux-imx_4.1.15版本)基礎(chǔ)上進(jìn)行功能接口引
    發(fā)表于 01-21 14:30

    Imx6輸出雙路LVDS信號到DS90ub947,如何配置寄存器使得947雙路輸出?

    Imx6輸出雙路LVDS信號到DS90ub947,現(xiàn)在不知道如何配置寄存器,使得947雙路輸出。設(shè)置完947 0x5B的雙路輸出寄存器位后,讀取狀態(tài)寄存器0x5a,顯示狀態(tài)的還是單路輸出。
    發(fā)表于 12-17 07:05

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對比

    【迅為電子】i.MX6UL和i.MX6ULL芯片區(qū)別與開發(fā)板對比
    的頭像 發(fā)表于 11-28 14:31 ?809次閱讀
    【迅為電子】i.MX<b class='flag-5'>6</b>UL和i.MX<b class='flag-5'>6</b>ULL芯片區(qū)別與<b class='flag-5'>開發(fā)板</b>對比

    IMX6q通過I2C控制tlv320aic3254芯片,如何通過PPS軟件進(jìn)行miniDSP編程實(shí)現(xiàn)均衡器功能?

    我是用IMX6q通過I2C控制tlv320aic3254芯片,通過PPS軟件進(jìn)行miniDSP編程實(shí)現(xiàn)均衡器功能,生成相關(guān)頭文件后,我想知道如何這些頭文件或者操作才能夠?qū)崿F(xiàn)均衡效果;
    發(fā)表于 10-17 06:11

    PICO-IMX8PL和SRG-IMX8PL:共創(chuàng)您的物聯(lián)網(wǎng)集成網(wǎng)關(guān)

    憑借為工業(yè)物聯(lián)網(wǎng)構(gòu)建的平臺,全新PICO-IMX8PL和SRG-IMX8PL將強(qiáng)大的物理硬件與精英開發(fā)工具相結(jié)合,使解決方案更易于推向市場。SRG-IMX8PL系統(tǒng)賦予用戶制造高品質(zhì)、
    的頭像 發(fā)表于 10-12 08:01 ?607次閱讀
    PICO-<b class='flag-5'>IMX</b>8PL和SRG-<b class='flag-5'>IMX</b>8PL:共創(chuàng)您的物聯(lián)網(wǎng)集成網(wǎng)關(guān)

    【米爾NXP i.MX 93開發(fā)板試用評測】04.OpenWRT的構(gòu)建-開始編譯

    Community。 然后在里面發(fā)現(xiàn)了iMX93竟然也支持了Openwrt,雖然他支持的是NXP的iMX93 EVK開發(fā)板,但是這就相同芯片再加上開源的我們完全有可能在米爾的板子上也成功運(yùn)行! 這就意味著米爾NXP
    發(fā)表于 09-19 14:36

    【正點(diǎn)原子i.MX93開發(fā)板試用連載體驗(yàn)】+開箱與硬件介紹

    ,應(yīng)用領(lǐng)域更加廣泛。而iMX 95性能太強(qiáng),通常用來跑安卓,很多場合用不到。本次評測的這款開發(fā)板來自正點(diǎn)原子,名為ATK-DLIMX93。其正反面如下圖所示 正點(diǎn)原子之前就推出過NXP IMX6
    發(fā)表于 07-23 00:27

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的按鍵功能

    本次源碼適配工作是在NXP i.MX6ULL EVK評估的Linux內(nèi)核源碼(特定版本:Linux-imx_4.1.15)基礎(chǔ)上進(jìn)行的。主要目標(biāo)是調(diào)整功能接口引腳配置,以適應(yīng)ELF 1開發(fā)板
    發(fā)表于 07-04 09:11

    飛凌嵌入式ElfBoard ELF 1板卡-在NXP源碼基礎(chǔ)上適配ELF 1開發(fā)板的按鍵功能

    本次源碼適配工作是在NXP i.MX6ULL EVK評估的Linux內(nèi)核源碼(特定版本:Linux-imx_4.1.15)基礎(chǔ)上進(jìn)行的。主要目標(biāo)是調(diào)整功能接口引腳配置,以適應(yīng)ELF 1開發(fā)板
    發(fā)表于 07-03 09:07

    米爾基于NXP iMX.93開發(fā)板的M33處理器應(yīng)用開發(fā)筆記

    資源MYD-LMX9X開發(fā)板(米爾基于NXPiMX.93開發(fā)板)3.軟件資源Windows7及以上版本軟件:IAREmbeddedWorkbench4.板載固件調(diào)試
    的頭像 發(fā)表于 06-29 08:01 ?1670次閱讀
    米爾基于NXP <b class='flag-5'>iMX</b>.93<b class='flag-5'>開發(fā)板</b>的M33處理器應(yīng)用<b class='flag-5'>開發(fā)</b>筆記