您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页基于树莓派的嵌入式Linux开发教学探索

基于树莓派的嵌入式Linux开发教学探索

来源:筏尚旅游网
Embedded Technology・嵌入式技术 基于树莓派的嵌入式Linux开发教学探索 键词】树莓派Python Java C嵌入式 树莓派(Raspberry Pi)是基于ARM11的 :板,内置GPU支持1080P高清视频硬解码, }人埃本・厄普顿(Eben Epton)是英国剑桥 :博士,最初的开发动机是用之于教育[1]。 :派分A/B两个版本,价格仅25/35美金, 【与信用卡相差无几。它提供了以太网(B 、USB、HDMI接口,基于Linux的操作 、Python语言开发环境,同时也支持C、 等语言,可用于编程开发或作为网络电视 盒。CPU时钟默认为700MHz,允许超频, I可以稳定工作在1G以上。短短几年间全 僧出几百万片,广泛应用于教育、工控、 :人、物联网、智能家居等领域。 目前我国嵌入式Linux开发的教材与硬件 大量使用¥3C24x0、¥3C6410开发板,开 教学难度较大。而无论体积,集成度,性 ,开发环境与效率,树莓派都有明显优势, 性能足以流畅的支持Windows远程桌面, 要显示屏即可进行开发与学习。因为发现 :派的众多优点,我们在((Linux应用开发 》课程中将之引入教学实践,学生反应良 他们甚至奇怪为什么之前的ARM Linux :课程要用24x0开发板来学习,而不直接 莓派。 种语言控制树莓派GP l 0 树莓派的IO共有26根Pin,排列如图1 .其中包括GPIO 8个Pin,SPI 5个Pin, 文/李文胜 串口2个Pin,I2C 2个Pin,其余为DNC和 bcm2835gpio一—write(LED,HIGH);//设 电源Pin。为比较Python、Java、C在树莓派 LED引脚为高电平,灯亮 上的开发特点,在GP10上连接LED和限流 bcm2835_delay(1000);//亮一秒 电阻,分别使用三种语言让LED点亮一秒然 bcm2835_gpiowfite(LED,LOW);//设置 后熄灭。 低电平,灯灭 1.1 Python控制GP10 } 1.4比较与分析 树莓派自带Python开发环境,它推荐使 用Python语言进行开发工作,控制GPIO需 上述三个程序都运行于树莓派官方提供的 要先安装RPi.GPIO库,安装完成后,点亮与 Linux操作系统Raspbian中,其中树莓派推荐 熄灭LED的Python代码如下[2]。 的Python语言代码最为简洁直观,接近于人 import RPi.GPIO as GPIO 导入GPIO库 的自然语言,而对于大量已经掌握Java语言 import time 导入时钟库 的程序员而言,Java代码一目了然,且不需要 GPIO.setmode(GPIO.BCM)撑使用BCM 学习Python语言。由于有BCM2835 C Library 的I/O命名 库的支持,c代码的实现也不难,不需要自己 GPIO.setup(1 8,GPIO.OUT)撑设BCM I/0 写GPIO的Linux驱动。在这个简单的GPIO 的18端口为输出口 编程中,可以看到树莓派的Linux开发有丰富 GPIO.output(18,GPIO.HIGH)撑设为高电 的语言环境可选择,开发效率高且易于学习, 平,灯亮 相对于传统的¥3C24x0上的“Linux驱动编程 time.sleep(1) 亮1秒 +应用层编程+交叉编译”要容易掌握。我们 GPIO.output(18,GPIO.LOW) 设为低电 在Linux开发实训教学中,通过上述三种语言 平,灯灭 的例子,使学生体验到树莓派开发的高效与语 1.2 Java控@]GP10 言环境的丰富多样。 最新的树莓派Raspbian操作系统已经自 2应用开发分析 带jre运行环境,安装pi4j的类库后,使用 以下用树莓派推荐的Python语言实现串 Java控制LED的代码如下。 行通信和TCP/IP网络通信等更为复杂的应用, ifnal GpiOContro1ler gpio=GpioFactory. 然后分析实现智能家居和物联网的思路,以进 getlnstance0;//GPIO对象 一步分析树莓派的能力和优点 final GpioPinDigitalOutput ledpin=gpio. 2.1串行通信 provisionDigitalOutputPin( RaspiPin.GPIO01,”LED”,PinState. 安装python-serial库后,用Python语言 HIGH);//ledpin对象,设置为输出口、高电平 在树莓派的Raspbian操作系统中实现串行通 ledpin.high();//设ledpin为高电平,灯亮 信的代码如下。 Thread.sleep(1000);//延时1秒 import serial ledpin.1ow();//设置低电平,灯灭 sport=seria1.Serial(”/dev/ttyAMA0”, 1.3 C控制GP10 baudrate=9600)≠f  ̄-open(”send.txt”,’什’)#打开要发送的文件 安装BCM2835 C Library后,使用文本编 whileTrue: 辑器编写以下代码,存为led.C,然后用gcc编译, sbuf=-f.readline0群读一行到sbuf中 控制LED的代码如下 if len(sbu0 ̄0:撑空行表示发送完毕 #include<bcm2835-h> break #defineLEDRPI GPIO P1 12//LED对 sport.write(sbuf) 发送sbuf内容 应bcm2835库中的P1 l2引脚 f.close 群关闭文件 void main(int argo.char argv){ 对于嵌入式Linux系统的串行通信编程, bcm2835 init0;//初始化GPIO端口 与传统的语言开发相比,Python代码显得“简 bcm2835gpio一fsel(LED,BCM2835一 洁优美”,犹如人的自然语言,廖廖数语,即 GPIO FSEL OUTP);//设为输出 可实现串口通信,非常适合快速开发与教学使 Electronic Technology&Software Engineering电子技术与软件工程・219 嵌入式技术・Embedded Technology 5V DNC GND TXD RXD GP 101 3-3V I2C SDA0 I2c SCL0 107 DNC GP IO0 GP1 02 DNC GP 104 GPI O3 GP 105 DNC SPI Sl DNC GP1 06 SPI SO SPI EO SPI CLK SPI E1 DNC 图1:树莓派IO排列 用。树莓派的开发显示,尽管C(c++)可以 3.1软硬件优势 让开发者更深入理解和控制硬件,对于Linux 内核和驱动的开发仍然有不可取代的价值, 化与剧烈竞争的市场环境下,这些都是开发与 教学在平台选型时需要考量的重要因素。 树莓派之所以在全球热销,原因不仅在 于支持Python、Java、C等丰富的语言开发环 由于树莓派的Broadcom和剑桥背景,而 但随着硬件越来越便宜,性能越来越好,c在 Linux应用层开发的使用率正在并将继续被象 境,它提供的Raspbian操作系统是历时5年 Python或Java这类更“高级 的面向对象语 多重新测试与移植超过19000个Linux软件包 言蚕食,就如以前的汇编语言使用率被C蚕 的结晶。创始人Eben博士目前任树莓派的主 食一样。 芯片设计公司Broadcom的IC设计主管,可 以很好的控制CPU及开发板的性价比和质量 2.2 Socket通信、智能家居或物联网 (Broadcom是全球领先的通信领域的半导体 Python同样能以很少的语句实现TCPflP 公司)。因此,树莓派同时拥有CPU、操作 通信。它实现Socket客户端的关键代码如下。 系统、应用开发环境三个方面的背景优势。此 import socket 外,由于内置GPU支持1080P视频硬解码, address=(’192.168.1.102’,2800)撑服务器 树莓派官方又提供了界面友好的OpenELEC IP地址和端口号 和RASPBMC操作系统,它可以打造成家庭 媒体中心,成为网络电视机顶盒。 s=socket.socket(socket.AF—INET,socket. SOCKSTREAM)≠}IPv4,TCP 3.2资源优势 s.connect(address)撑向服务器发起Socket 连接 全球有数以百万计的开发者在为树莓派 s.send(’Hello’)≠f向服务器发送Hello 进行开发,有丰富的软硬件开发资源可供参考 s.close(1 关闭Socket 与借鉴。软件巨头Oracle推出了基于树莓派和 与C(C++)或者Java相比,Python的 Java Fx的DukePad方案,并开设了互联网免 Linux网络编程仍然出人意料的简洁。由于 费课程“Develop Java Embedded Applications 树莓派的性能足以支持专业的LAMP(Linux Using a Raspberry Pi”(使用树莓派开发Java Apache Mysql PHP)Web服务器,因而,只要 嵌入式应用)。RaspiRobotBoard是一个典型 综合上述的GPIO和串口编程,控制外围的 的树莓派扩展板,可将树莓派扩展为机器人控 8bit单片机及传感器,安装LAMP Web服务器, 制器,它有专门的Python库支持,支持对机 通过Python实现网络通信及管理界面,即可 器人的控制。利用它的Python库实现一个简 构成智能家居或物联网的控制中心。 易的“漫步者机器人”只需三十几行代码[3]。 若按传统的基于¥3C24x0的嵌入式Linux 可以再添加超声波测距仪和显示器,WiFi、摄 开发教学方式,要实现智能家居或物联网控制 像头等,做成机器人竞赛常用的“探月车”。 系统,需要设计ARM开发板,对Linux进行 我们在嵌入式专业毕业班的教学上,使用树莓 移植裁剪,用C语言开发硬件驱动与应用层, 派作为主控制器,结合外围的5l单片机、传 然后交叉编译到开发板中,开发链很长,难度 感器、电机等实现智能小车,借助Intemet上 相当大,软硬件的可靠性与稳定性也需要长时 丰富的树莓派资源进行开发,取得了较好的教 间的测试。此外,Linux内核及驱动程序的C 学效果。 代码使用了大量的指针和双指针,如何深入理 3.3平台选型 解这些指针变量,是嵌入式开发与教育的一大 难点。而使用树莓派,Python语言“明白如话”, 国内有不少仿造树莓派的开发板,由山 不需要模拟器和交叉编译,即写即运行,硬件 寨手机或平板的方案改造而成,通常声称有更 小如信用卡大小,可以直接嵌入到应用系统中 高的硬件配置。但由于树莓派全球性软硬件资 使用,无需自行设计生产,在应用开发上有突 源的综合优势,用户比较不用担心它的质量、 出的实用价值。 长期供货、是否停产、以及长远的技术延续和 发展前景,开发者也不必为设计和生产技术要 3软硬件、资源优势与平台选型 求很高而批量又不大的开发板困扰,在快速变 220・电子技术与软件工程Electornic Technology&Software Engineering ARM也同样源自剑桥,树莓派所构造的软硬 件平台并不是一个简单的玩具,它有深远的优 势所在,战略上看,相似的开发平台要与树莓 派竞争,需要有重量级的资源支持。树莓派的 成功对于我国高校与企业的合作具有启发意 义,期待将来自主芯片与操作系统的“中国派” 出现。 4结语 树莓派对于全球嵌入式Linux开发及教育 己经并将继续带来广泛的影响,及早将之引入 我国主流的嵌入式开发与教学环境中或将是有 益的。尽管传统的“ARM开发板硬件设计+ Linux移植裁剪+虚拟机环境+交叉编译+驱 动编程+应用层编程”开发链可以深入理解和 控制嵌入式Linux系统,但因其复杂性而更适 合需要定制Linux内核与驱动的精英开发、精 英教育或研究者。树莓派的应用开发模式远为 易学易用,适合快速推出产品的市场需求和普 及性的教育,全球丰富的应用事例以及我们的 实践探索均显示,树莓派可使嵌入式Linux开 发及教育取得显著进展。 参考文献 [1]Eben Upton,Gateth Halfacree.王伟,许 金超,郭栋,梁黎颖译.Ra spberry Pi用 户指南[M].北京:人民邮电出版社,201 3. [2】Mat t Richardson,Shawn Wa llace著.李 凡希译.爱上Ra Spberry Pi[M].北京: 科学出版社,201 3. [3]simon Monk著.姜斐祚译.Ra spberry Pi:Python编程入门[M].北京:科学出 版社,2 014. 作者简介 李文胜(1969-),男,福建省泉州市人。硕 士学位。现为广州松田职业学院讲师。研究方 向为嵌入式系统开发,Ic设计等。 作者单位 广州松田职业学院广东省广州市511 370 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务