python嵌入式linux_嵌入式linux python - CSDN
精华内容
参与话题
  • 移植Python2.7到ARM-LINUX嵌入式平台

    千次阅读 2017-07-18 09:37:30
    笔者长期在ARM-LINUX嵌入式平台使用C语言开发。硬件IO操作只能用C确实没办法,但是应用程序用C简直就苦了个逼了,程序复杂一点,各种越界、指针错误、诡异死机、segment fault、内存泄漏、core dump、编译找不到...

    笔者长期在ARM-LINUX嵌入式平台使用C语言开发。硬件IO操作只能用C确实没办法,但是应用程序用C简直就苦了个逼了,程序复杂一点,各种越界、指针错误、诡异死机、segment fault、内存泄漏、core dump、编译找不到头文件、依赖库,解析个字符费老劲,轮子太少纯靠白手起家。自从把Python移植到嵌入式平台,用C写完IO的Python扩展库然后用Python写应用程序完全就是摧枯拉朽般存在。

    • Python版本:2.7.3
    • 交叉编译器:arm-none-linux-gnueabi-
    • 硬件平台:AT91 ARM9、NUC97x、TI AM335x

    源码下载&解压

    wget https://www.python.org/ftp/python/2.7.3/Python-2.7.3.tar.xz
    xz -d Python-2.7.3.tar.xz
    tar xvf Python-2.7.3.tar

    编译HOST版解释器

    编译Python的嵌入式版需要解释器解析setup.py从而编译Python的模块,因此需要先编译出HOST的解释器。

    ./configure
    make python Parser/pgen
    mv  python  hostpython
    mv  Parser/pgen  Parser/hostpgen
    make distclean

    打交叉编译补丁

    点击下载补丁

    patch -p1 < Python-2.7.3-xcompile.patch

    交叉编译配置

    设置交叉编译工具链为arm-none-linux-gnueabi,编译生成的执行文件存放目录为当前目录的_install文件夹。

    ./configure --host=arm-none-linux-gnueabi --prefix=$PWD/_install

    编译&安装

    make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-none-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes
    make install HOSTPYTHON=./hostpython BLDSHARED="arm-none-linux-gnueabi-gcc-shared" CROSS_COMPILE=arm-none-linux-gnueabi- CROSS_COMPILE_TARGET=yes prefix=$PWD/_install

    执行完以上命令之后在_install中产生bin lib include share 4个文件夹,避免麻烦可以将以上命令写成一个脚本。

    目标板文件拷贝

    将_install/bin 中的所有内容拷贝到目标板的任意环境变量能够访问到的目录即可,推荐/bin、/usr/bin。

    将_install/lib 中的所有内容拷贝到目标板/lib中

    将_install /include 中的所有内容拷贝到目标板/include中。因为其中的某些头文件是Python环境所需要的,比如Python解释器启动依赖于pyconfig.h,import time模块时依赖timefuncs.h。

    环境变量设置

    将python2.7路径加入到环境变量 PYTHONHOME、PYTHONPATH中。

    如果是/etc/profile,在文件末尾添加如下信息然后执行 source /etc/profile。

    export PYTHONPATH=/lib/python2.7:$PYTHONPATH
    export PYTHONHOME=/lib/python2.7:$PYTHONHOME

    如果是命令行,执行如下:

    export PYTHONPATH=$PYTHONPATH:/lib/python2.7
    export PYTHONHOME=$PYTHONHOME:/lib/python2.7

    验证目标板Python

    打开解释器,import 一些常用模块,编写程序测试。


    后记

    可能import time、datetime、threading、multiprocessing时提示缺少time、_collections、itertools等模块。

    这些是 builtin 模块,可以通过sys.builtin_module_names查看。其源码在Modules目录中,编译完成以 .so 的形式存放在/lib/python2.7/lib-dynload中。

    首先在setup.py中 disabled_module_list=[] 是否将这些模块disabled掉了。

    如果依然无法解决,则在Modules/config.c中参考其他模块的写法添加代码,手动编译即可在build/lib.xx.2.7目录中产生 .so 文件。


        

    
    展开全文
  • 通过Python控制 使用的Python版本为2.7.9。 克隆Matrix配件Python相关的库之前,需要先确保你的板可正常上网,并且已经安装好git;接着执行以下步骤安装Python相关的库文件 $ apt-get install Python-dev $...

    通过Python控制

    使用的Python版本为2.7.9。
    克隆Matrix配件Python相关的库之前,需要先确保你的板可正常上网,并且已经安装好git;接着执行以下步骤安装Python相关的库文件

    $ apt-get install Python-dev
    $ apt-get install libi2c-dev

    在NanoPi2上直接克隆Matrix配件Python相关的代码仓库

    $ git clone https://github.com/friendlyarm/matrix-python.git

    克隆完成后会得到一个名为matrix-python的目录。

    控制LED:

    $ cd matrix-python/Matrix.GPIO
    $ python setup.py install
    $ python test/matrix_output.py 33

    可以看到红色LED闪烁了一下。

    读按键KEY1:

    $ cd matrix-python/Matrix.GPIO
    $ python setup.py install
    $ python test/matrix_input.py 36

    当KEY1按下时value=0,KEY1弹起时value=1。

    测试AD转换:

    $ cd matrix-python/modules
    $ insmod pcf8591.ko
    $ cd ../Matrix.pcf8591
    $ python setup.py install
    $ python test/matrix_adc.py

    通过旋转可调电阻可以改变AD转换值。

    测试指南针:

    $ cd matrix-python/Matrix.I2C
    $ python setup.py install
    $ python test/matrix_compass.py

    通过改变开发板的朝向可以获得不同的方向值。

    展开全文
  • 首先下载嵌入式python, 然后按照压缩包内的移植方法操作, 然后执行 source /etc/profile, 然后将:/lib/python2.5/site-packages和/lib/python2.5/lib-dynload下的所有文件拷到/lib/python2.5/下, 拷贝时进入...

    首先下载嵌入式python,

    然后按照压缩包内的移植方法操作,

    然后执行 source /etc/profile,

    然后将:/lib/python2.5/site-packages和/lib/python2.5/lib-dynload下的所有文件拷到/lib/python2.5/下,

    拷贝时进入对应文件夹使用

    cp -ri * /lib/python2.5/


    此时python移植完毕,接下来移植json库,

     

    下载json-py

    然后将压缩包里的文件全部拷贝到/lib/python2.5下,

    json-py移植完毕。

    python版本为2.5,使用ctrl+D退出。

    展开全文
  • 基于嵌入式Linux进行Python应用开发

    万次阅读 2018-05-29 17:36:17
     简介Python 编程语言因其极强的可读性、可移植、易于维护,以及丰富的第三方扩展组件,如数据库、数学计算、图形,甚至机器视觉、人工智能、深度学习框架都提供Python支持。随着嵌入式处理的计算性能逐渐增强,...

    ByToradex秦海

    1). 简介

    Python 编程语言因其极强的可读性、可移植、易于维护,以及丰富的第三方扩展组件,如数据库、数学计算、图形,甚至机器视觉、人工智能、深度学习框架都提供Python支持。随着嵌入式处理的计算性能逐渐增强,原来主要用于 PC、服务器端的开发语言,目前也正越来越多地被嵌入式项目所采纳,加速项目的开发,缩短产品上市时间。接下来的内容,我们将介绍如何在嵌入式计算机模块基于 Embedded Linux 使用 Python,并演示基于 Python OpenCV的条形码、二维码扫描功能。


    本文所演示的平台来自于ToradexColibri iMX6ARM嵌入式平台,这是一个基于NXP iMX6 ARM处理器,支持单核/双核Cortex-A9的计算机模块平台。



    2. 准备

    a).Colibri iMX6 ARM核心版配合ColibriEvaBoard载板,连接调试串口UART1到开发主机方便调试。


    b).ColibriiMX6系统默认的 BSP 中并没有包含Python  OpenCV组件用户可以通过在线安装或者使用基于Ycoto/OpenEmbedded框架重新编译生成包含所需功能的 BSP我们推荐采用第二种方法定制化的 BSP 有利于产品进行量产编程。

    ./在线安装 Python 以及扩展组件相关命令

    ------------------------------------

    root@colibri-imx6:~# opkg update

    root@colibri-imx6:~# opkg list | greppython

    root@colibri-imx6:~# opkg install python[optionally list additional packages…]

    ------------------------------------


    ./基于OpenEmbedded框架编译,基本操作请按照这里的说明进行编译,需要修改的文件请参考如下,image更新方法请参考这里

    ./local.conf文件

    添加如下内容,在生成的image中增加qtwebengine组件

    ------------------------------------

    IMAGE_INSTALL_append = " opencvpython3 python3-pip zbar"

    PACKAGECONFIG_append_pn-opencv = "python3gstreamer"

    ------------------------------------



    3. 测试 Python 环境

    在开发板上命令终端执行

    ------------------------------------

    root@colibri-imx6:~# python3

    Python 3.5.3 (default, Apr 11 2018,16:03:29) 

    [GCC 7.3.0] on linux

    Type "help","copyright", "credits" or "license" for moreinformation.

    >>> import cv2

    >>> cv2.__version__

    '3.3.0-dev'

    ------------------------------------


    生成的 BSP 包含了 Python3.5.3 OpenCV 3.3。由于 Python 是一种解释型的语言,不需要预编译,你现在就可以直接在Colibri iMX6 上学习 Python 开发或者运行你现有的  Python 程序。但是这个时候你可能会遇到  Python 模块没有安装的问题,从而无法运行你自己开发的  Python 项目。



    4. Python 模块安装

    ./Python 的一个优势是可以直接在本地下载并安装模块组件,这在嵌入式设备上也同样适用。由于之前在OpenEmbedded/Yocto中我们已经添加了  python3-pip,那么现在可以是 pip 命令来安装,如imutils,这是我们接下来所需的组件。

    ------------------------------------

    root@colibri-imx6:~# pip3 install imutils

    ------------------------------------


    ./除了在线安装,Python 模块也可以通过离线交叉编译后进行编译。Zbar默认只支持 python2,我们需要安装pyzbar来支持我们 BSP 中的  python3


    首先你需要安装Linux SDK,其提供了所需的交叉编译器、头文件、库文件以及一些基本的编译配置文件。另外建议在开发电脑上也安装和 BSP 上版本一致的 Python

    ------------------------------------

    ben@ben-T430u:~$ cd/usr/local/oecore-x86_64

    ben@ben-T430u:~$.environment-setup-armv7at2hf-neon-angstrom-linux-gnueabi

    ben@ben-T430u:~$ exportCFLAGS="$CFLAGS -I$SDKTARGETSYSROOT/usr/bin/python3.5m"

    ben@ben-T430u:~$ exportHOSTPYTHON=/usr/local/bin/python3.5

    ben@ben-T430u:~$ $HOSTPYTHON setup.py build

    ben@ben-T430u:~$ $HOSTPYTHON setup.pybdist_egg

    ------------------------------------


    将编译完成的 pyzbar-0.1.7-py3.5.egg 复制到开发板上,使用  easy_install-3.5 安装

    ------------------------------------

    root@colibri-imx6:~# easy_install-3.5pyzbar-0.1.7-py3.5.egg 

    Processing pyzbar-0.1.7-py3.5.egg

    creating/usr/lib/python3.5/site-packages/pyzbar-0.1.7-py3.5.egg

    Extracting pyzbar-0.1.7-py3.5.egg to /usr/lib/python3.5/site-packages

    Adding pyzbar 0.1.7 to easy-install.pthfile

    Installing read_zbar.py script to /usr/bin

    Installing read_zbar script to /usr/bin


    ------------------------------------


    ./另外OpenEmbedded还提供了大量 Python相关的组件,可以方便地集成到 BSP 中。

    image001.png


    到此,我们已经在开发板上完成  Python 环境搭建,所需的组建也都已经安装。下面我们将通过几个  Python 项目来演示条形码、二维码图片的识别,以及在 USB 摄像头上实时读取二维码。



    5. PyZbar条形码和二维码读取

    ./识别静态图片上的条形码

    ------------------------------------

    root@colibri-imx6:~#./barcode_scanner_image.py -i barcode1.png 

    ------------------------------------

    image003.png


    ./识别静态图片上的二维码

    ------------------------------------

    root@colibri-imx6:~#./barcode_scanner_image.py -i QR-tdx.png 

    ------------------------------------

    image005.png


    ./通过USB 摄像头实时识二维码

    ------------------------------------

    root@colibri-imx6:~#./barcode_scanner_video.py -o rec.csv

    ------------------------------------

    image007.png


    上面相关测试的完整Python代码可以从这里下载。


    6). 总结

    通过上面的介绍,我们发现借助  Python 可以方便、快捷地实现一些复杂功能,如果采用其他语言工具开发,可能需要更多的代码和时间。由于  Python 本身的特性,在嵌入式上,特别是CPU RAM 资源有限的平台,需要充分考虑  Python 运行所带来的开销,确保应用能够可靠运行。


    展开全文
  • 最近在写运行在嵌入式linux系统下的python程序。中间遇到很多坑,接下来我就一一说一下。 从windows编写python脚本,然后将文件复制到嵌入式linux下,运行时报错: 通过vi编辑器查看发现在每一行的后面都有一个^M,每...
  • 更多Python视频、源码、资料加群683380553免费获取 C / C ++编程语言主要是嵌入式系统编程,尽管它们有许多缺点。 另一方面,Python具有许多优点,使其成为嵌入式系统的优秀语言。 我们来看看每个的利弊,为什么你...
  • 交叉编译Python嵌入式arm

    千次阅读 2014-11-13 22:28:56
    这是求毕业哥的处女座博客,希望大家别喷!!! 由于实验室项目的需要,求毕业哥于...之前在Linux机器上装了Python-2.7.3,我没多想,以为Python高级版 是向下兼容的。于是就开始了求毕业哥的踩雷之路...raw_inpu
  • 嵌入式Python的区别是什么?

    千次阅读 2019-06-13 16:56:10
    从概念上来说,嵌入式Python的区别还是比较明显的,嵌入式是一个开发领域,而Python则是一门编程语言。 嵌入式开发是开发领域的一个重要分支,是物联网领域技术的重要组成部分,可以说有物联网的地方就离不开...
  • Easwy的博客迁至http://easwy.com/blog/

    万次阅读 2009-02-16 10:28:00
    我的博客依旧关注嵌入式系统和开源软件,内容主要包括Linux, 嵌入式Linux, Android,以及开源软件,如vim, docbook, python, wordpress ......欢迎订阅,订阅地址:http://feed.easwy.com/博客新建,内容
  • Python在国内逐渐崛起和被追捧的原因? Python之所以近些年在国内也被发掘与追捧,主要也与互联网发展到此阶段有着重要关系。 Python的开放、简洁、黏合正符合了现发展阶段对大数据分析、可视化、各种平台程序协作...
  • 移植python2.7.3到arm linux

    千次阅读 2016-11-26 10:17:52
    1.本文链接地址 2.环境 linux系统版本:Ubuntu 10.04 ...嵌入式linux内核版本:Linux 2.6 3.操作步骤 (1)下载源码包Python-2.7.3.tgz和补丁Python-2.7.3-xcompile.patch https://www.python.org/d
  • Python3版本移植到ARM的通用方法(一键移植)

    万次阅读 热门讨论 2020-08-11 11:29:54
    看了很多资料介绍如何将python移植到嵌入式设备当中,但总感觉杂乱五章,还移植不成功,但是经过我的多方摸索,成功的探索出了一条阳光大道,供各位网友借鉴参考。 我采用的方法可以成功移植python2.7以后的所有...
  • 嵌入式软件工程师的必备知识

    千次阅读 2017-04-17 16:38:55
    嵌入式软件工程师也需要掌握很多知识,并且相对门槛较高,下面我们来说一说 ...2 操作系统相关知识,一般是了解嵌入式操作系统,比如linux, ecos, ucos,一般来说,能的话,尽量熟悉理解linuxlinux内核熟悉了
  • 嵌入式开发要学什么,怎么学,让你从菜鸟变老鸟

    万次阅读 多人点赞 2018-06-12 16:40:56
    对于嵌入式的学习来说,你要掌握好方法最重要,不能漫无目的的学习,那样就会使你学的很迷茫,所以学习嵌入式一、嵌入式开发学习路线(按照当前主流的企业岗位需求,基本都是linux,和android系统)直白点说你学的技术...
  • 关于python安装的几个版本的区别

    万次阅读 2017-06-22 10:35:21
    windows系统下: x86适合32位操作系统。 x86-64适合64位操作系统。 1、 web-based installer 是需要通过联网完成安装的 2、 executable installer 是可...3、embeddable zip file 嵌入式版本,可以集成到其它应用中。
  • 脚本与嵌入式系统

    千次阅读 2014-07-10 23:09:49
    (原创文章,转载请注明出处) 脚本以前限于行业应用,一直给我低效、低能的印象,但凡事总有个例外,我工作中用到了脚本...于是让我思索到底这个脚本在嵌入式系统上,特别是工业系统上,能有多大的作为?到底能走多远。
  • python3.4交叉编译与移植

    千次阅读 2015-08-16 09:32:02
    学习Python已经有些念头,不过一直都是在PC上面编程,现在正好有项目需要在ARM中使用Pyhon,可以将Python发扬光大。以下记录交叉编译与移植的具体步骤。 首先在https://www.python.org下载Pyhon3.4.3的源码 1、此...
  • 嵌入式python2.7.13移植

    千次阅读 2017-07-20 17:15:48
    操作环境:   1、linux主机:Ubuntu14.04  2、嵌入式linux内核版本:3.14.26  3、嵌入式硬件:BeagleBone-Black,Cortex-A8内核  4、交叉编译工具: arm-linux-gnueabihf-gcc 步骤:
  • 职业规划-Python开发工程师

    千次阅读 2017-12-06 08:32:32
    嵌入式工程师主要负责嵌入式系统设计和开发,包括硬件系统的建立和相关软件开发、移植、调试等工作。(客户端开发) 新手入门 初级选手 高级专家 资深达人 一、新手入门任职要求 精通嵌入式编程工具,熟练掌握C语言...
  • 移植WEBRTC到ARM平台

    千次阅读 2018-06-12 22:52:36
    平台UBUNTU16.041、安装ninja mkdir -p ~/ninja &... cd ~/ninja git clone https://github.com/martine/ninja cd ninja python ./bootstrap.py2、安装depot_tools git clone https://chromium.googles...
1 2 3 4 5 ... 20
收藏数 20,936
精华内容 8,374
关键字:

python嵌入式linux