树莓派的产品定位,以及探讨与ARM开发板的区别

树莓派的产品定位,以及探讨与ARM开发板的区别目录一、树莓派的几点认识二、树莓派的定位,与ARM开发板有不同的目标用户三、树莓派与嵌入式开发的区别1、树莓派能不能做为嵌入式的ARM开发板?2、树莓派能不能进行嵌入式开发与学习?四、树莓派上的实践一、树莓派的几点认识1、树莓派是一款基于Linux系统的单板机电脑。它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件刺激在学校的基本的计算机科学教育。树莓…

大家好,又见面了,我是你们的朋友全栈君。

一、认识树莓派

1、树莓派是一款基于Linux系统的单板机电脑。它由英国的树莓派基金会所开发,目的是以低价硬件及自由软件刺激在学校的基本的计算机科学教育。树莓派被赋予的希望是,能够帮助全世界的孩子学习编程,并能够了解计算机是如何工作的;
2、树莓派只要加上USB键盘、鼠标、HDMI屏幕就立马变成一个小型电脑,用于学习编程(Linux系统),系统中预装多种编程软件和环境,方便使用;并且利用树莓派,可以搭建多种应用:路由器、智能小车、智能家居、服务器等,这些都有成熟的开源代码;
3、树莓派跟windows虚拟机跑linux操作系统有什么区别?
  1)对于系统使用,本质上没啥区别,都是Linux操作系统罢了,主要有以下三点区别;
  2)软件上,树莓派预装很多开发软件,方便使用者直接用,不用经过繁琐的软件安装;
  3)硬件系统不同,树莓派拥有丰富的硬件外接接口,用来对接其它硬件做试验;比如树莓派(作为主机)与Aduino(AVR内核的卡片机,作为从机)配合工作;
  4)基于树莓派设备基础的社区生态比较完善,有很多开发者在树莓派软硬件基础上设计很多有用的工具和项目;
4、Raspberry的几种操作系统:
  1)NOOBS
  2)Raspbian
  3)Ubuntu Mate
  4)Snappy Ubuntu Core;
注意:采用不同的操作系统,本身的软硬件资源是不同的,视乎应用而选定;
5、常见的Linux系统:
  1)商业版:red hat 、CentOs、suse;
  2)开源版:debian ubuntu ;
  3)系统的选择取决于你拥有的硬件,和商业应用。
6、树莓派上常用的脚本语言:Shell(Linux系统管理,运行软件:Bash/Dash/Tsch/LXTerminal)、Python(跨平台管理:服务器、网站管理);
7、树莓派自2012年推出以来全球销量已达1250万块,世界第三大计算平台。

二、树莓派的定位,与ARM开发板有不同的目标用户

1、树莓派的定位并不是一块用来做嵌入式开发的开发板,而是一个廉价并且高性价比的可以在一定程度取代 PC 并且硬件接口更丰富的软件开发和使用平台。有人可能会问,树莓派有 GPIO 接口,可以接很多硬件,怎么会是一个软件开发平台呢?那么我要问你 PC 有 USB 接口,可以接很多硬件,它是一个硬件开发平台吗?树莓派的 GPIO 接口,和 PC 的 USB 接口,没有本质的区别,都是用来连接硬件的,只是接口更底层一些。

2、我们可以把目标用户简单分为三类:硬件开发者、软件开发者和使用者。硬件开发者主要是设计、改良硬件和为新老硬件编写驱动程序等等,软件开发者主要是在现有的硬件下开发软件(通常不包括驱动程序),使用者使用现有硬件和软件而不进行开发。
arm 开发板,主要的目标用户是硬件开发者和软件开发者(可以不严谨地统称为嵌入式开发者),几乎没有使用者,因为对于没有开发经验的人,用户体验是很差的。而树莓派的主要目标用户是软件开发者(和嵌入式开发者有重叠但并不多)和使用者,用户体验很好,但几乎没有硬件开发者,因为树莓派的硬件相对比较封闭,不销售单独的 SoC 和其他芯片,硬件资料也并不是很完善,在硬件层面很难 DIY(对很底层的软件开发者也存在类似的问题)。
那么目标用户的不同,就导致树莓派虽然看起来很像其他的 arm 开发板,基本也能用和其他的 arm 开发板一样的方式使用,性质却有很大的不同。

3、arm开发板在软件方面的配套环境不完善。最重要的是 Linux 内核版本支持。官方只提供低版本的 Linux 内核(2.6 系列),如果用这个内核来配合最新的发行版使用,几乎是不可能的,会遇到许多问题,一方面是这个内核缺少很多最新发行版使用的特性,另一方面是很多硬件方面的支持不只是替换内核文件和内核模块的事情(比如有些工具也需要移植),替换起来也麻烦。如果想使用更新版本的内核,需要打各种补丁以及自行修改代码,虽然硬件的资料比较齐全,理论上可以实现,但即使是经验丰富的嵌入式开发者也很难搞定,也没有人做好了提供给别人使用。这就导致几乎只能使用官方提高的老旧 Linux 镜像(或者其他古老版本的发行版)。而这个 Linux 环境几乎毫无用户体验可言,最新版本的软件很难安装上(几乎都需要自己编译,而且容易出现编译错误),常见的 USB 外设(比如摄像头、无线网卡、蓝牙)也很难驱动起来(运气好的话,可以从其他地方找来驱动代码,修复很可能出现的编译错误)。

4、相对arm开发板,树莓派的软件环境是很好的,基本可以使用最新的 Linux 内核和发行版(比如 Archlinux),并且有很多人为这个平台开发软件,用户体验有质的提升。即使是对嵌入式开发一窍不通的开发者或者使用者,也可以用树莓派做他们想做的事情。
另外我发现一个有趣的事情,折腾树莓派的人群(至少在国内),和(曾经的) Linux 桌面用户群体很相似(我曾经混迹于 Linux 桌面用户社区,很多人折腾桌面美化、系统配置、工具优化、写小脚本等等,玩 Linux 而不是用 Linux),他们主要是使用者,可能稍微会一些脚本或者其他编程语言,但并没有独立开发完整应用程序的能力和意向。这和嵌入式开发者人群是很不同的。

综上,树莓派和其他 arm 开发板的本质区别在于目标用户不同。树莓派的目标用户主要是软件开发者和使用者,而其他 arm 开发板的主要用户是硬件开发者和软件开发者。

三、树莓派与嵌入式开发的区别

1、树莓派能不能做为嵌入式的ARM开发板?
**树莓派的特点是:**具有强大的运算性能,全面的软件支持,以及开源硬件的易用性。
虽然树莓派是开源硬件,但是实际上它的底层Bootloader和核心数据手册是闭源的。这对于应用开发没有影响,但如果是想要借助此学习ARM Linux底层开发这些的话,就不适合了。
硬件资源对比
下面就以一块常见的友善电子的ARM开发板NanoPi S2同树莓派3B进行比较,其中核心硬件资源差不多,因为NanoPi S2板载8GB eMMC价格上要贵几十块,体积大小上树莓派要大3/1。
NanoPi S2
在这里插入图片描述

Raspberry Pi 3B

img

2、树莓派能不能进行嵌入式开发与学习?
下面从91创客学堂的嵌入式职业培训课程进行分析比较。

img

那么从上面比较看树莓派不适合最底层的裸机程序、bootloader内核移植的开发,驱动程序开发树莓派可以使用标准的Linux驱动程序架构也可以使用第三库快速开发,三个阶段的项目都可以在树莓派上进行开发。

结论:
1、树莓派是属于嵌入式开发板的比较特殊的一种,底层Bootloader和核心数据手册是闭源。拿其做原型,修改硬件进行开发不可行。

2、树莓派非常适合嵌入式开发学习入门,软件资源丰富,开发快速。现在裸机开发,Bootloader移植的机会很少,如果只做嵌入式应用开发,树莓派就足够。

四、树莓派上的实践

1、文件系统组成

img

2、系统配置文件:config.txt

img

3、对外部GPIO的控制操作: 在树莓派上GPIO当做一种设备,通过调用文件驱动来控制

img

4、利用python库控制GPIO

img

五、网盘资料分享

百度网盘链接:https://pan.baidu.com/s/1ZkAFyPBkDPqcoeaKTcKnGQ 提取码:ktdo

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133274.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 差分数组技巧

    差分数组技巧一、差分数组适用题型,和技巧前缀和数组:适用于原始数组不会被修改的情况下,频繁查询某个区间的累加和差分数组:主要适⽤场景是频繁对原始数组的某个区间的元素进⾏增减(比如:给你和数组arr,然后再下标0-4之间各元素加一,2-5之间各个元素减2,求最终的原数组)差分数组技巧1.构建差分数组(diff),diff[0]=nums[0],之后diff[i]=nums[i]-nums[i-1]int[]diff=newint[nums.length];//构造差分数组diff[0]=n

  • [机器学习] 实验笔记 – 表情识别(emotion recognition)

    本文主要整理自笔者在表情识别(emotionrecognition)研究上的实验笔记资料,给出了表情识别常用的数据库,论文资料,识别方法,评价指标,以及笔者的实验笔记和实验结果。与读者分享,欢迎讨论。

  • document.documentElement.clientWidth

    document.documentElement.clientWidth关于获取各种浏览器可见窗口大小的一点点研究functiongetInfo(){vars=””;s=”网页可见区域宽:”document.body.clientWidth;s=”网页可见区域高:”document.body.clientHeight;s=”网页可见区域宽:”document.body.offsetWidth”(包括边线和滚动

  • CTR预估算法之FM, FFM, DeepFM及实践

    CTR预估算法之FM, FFM, DeepFM及实践目录目录CTR预估综述FactorizationMachines(FM)算法原理代码实现Field-awareFactorizationMachines(FFM)算法原理代码实现DeepFM算法原理代码实现参考文献CTR预估综述点击率(Clickthroughrate)是点击特定链接的用户与查看页面,电子邮…

  • hashlib

    hashlib使用Python中的hashlib来进行hash加密是非学简单的,下面是一段简单代码:[python] viewplaincopyimport hashlib  md5 = hashlib.md5() #创建一个MD5加密对象  md5.update(“JGood is a handsome boy”)  #更新要加密的数据  prin

  • Python下载小说 -XXOO[通俗易懂]

    Python下载小说 -XXOO[通俗易懂]前言作为一个十年老书虫,对于小说来源深有体会,从买实体书到电子书下载。各种不爽,在这里也是满足下自己迫切的心情,来,撸一发代码,找几本小说看看。一、搜索入口这里也是找了一个良心的网站来操作的。其他的下载不是充钱就是会员或者空白。http://www.bookshuku.com/是不是很直白,上代码#name小说名称defsearchTxt(name):url=’http://www.bookshuku.com/search.html’hea…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号