菜鸟学习物联网---辨析基于Andriod 5.1,Linux,Windows10开发Dragon Board 410c板
诸位亲最近怎么样?刚过完年上班是不是很不情愿?自古做事者,不唯有坚韧不拔之志,亦或有超世之才。所以,诸位好好加油。今天小编想给大家系统性总结一下Dragon Board 410c板基于Andriod 5.1,Linux,Windows10三种操作系统开发特点(Dragon Board 410c同时支持三种操作系统开发)。
文章有点长,大家耐心看完。
初识DragonBoard 410c
DragonBoard 410c是一款搭载Qualcomm Snapdragon 410(64位的四核处理器)的开发板,它功能齐全,具有强大的处理能力,内置 8GB eMMC (支持标准microSD卡槽),并且还内置wifi、蓝牙、和GPS模块,具有HDMI 输出及USB 接口 (3个)。
同时兼容96Boards消费版(CE)规范。(96Boards 是 ARM 开放平台规范,是第一个定义 Cortex-A 开发板的开放规范,该规范由Linaro社区委员会组织维护。标准化扩展 Peripheral I/O 总线,显示和相机等。定位移动、嵌入及数字家庭领域。允许硬件生态系统开发一系列兼容组件的产品,在其生命周期可以在任意兼容 96Boards 的平台上使用)。 同时支持win10 IOT操作系统,系统包可以在微软官方网站里下载。
系统环境
下载Android源码
大家可以通过repo命令下载代码:
上面的release版本是今年9月份的,如果大家想下载最新版本应该怎么办呢?下面给大家介绍一下如何查找代码库的位置。
首先打开CodeAurora网站https://www.codeaurora.org/,点击TOP PROJECTS的Android for MSM进入对应的project
进入Android for MSM页面后点击下图中红色圆圈的Wiki按钮,访问此project的wiki页面。
在Wiki页面中查找Branch Release章节,你可以找到代码下载方法(红框处)。我们要下载Release分支的代码,所以点击下图中红圈处的release链接,会进入release列表页面。
在此页面就可以找到自己想要代码的Manifest了,DragonBoard 410c用的是Snapdragon 410芯片,所以我们选择的Chipset是msm8916_64。
Linux
1、交叉编译环境准备
DragonBoard 410c是一个64位的ARMv8平台,所以在PC机上编译ARM架构的代码需要交叉编译环境。首先下载Linaro GCC cross compiler,然后将下载的压缩包解压到你自己指定的目录下:
2、下载Linux Kernel源码
Linux Kernel的代码信息可以通过 Linaro Qualcomm Landing Team git repository来查找
根据tags信息,我们可以看到,DragonBoard 410c的最新Linux源码是15.09版本,下面我们来下载Linux源码。
DragonBoard 410c支持win10 IOT操作系统,系统包可以在微软官方网站里下载。链接:http://ms-iot.github.io/content/en-US/Downloads.htm
打开链接网页,找到 Download Windows 10 lot Core for Dragonboard 410c,点击进入如下图红色方框所标识。
下载完成后的系统包如下:
开发环境总结
以上是三种操作系统的环境,我们可以看出Dragon Board 410c开源性非常好,三种操作系统代码都可以进行支持。确实很值得每一个人都去学习。
编译准备
修改确认kernel的UART配置
下载完代码后,我们需要对kernel的UART进行简单配置,具体配置参数可以参考kernel的devicetree文档(kernel/Documentation/devicetree/bindings/tty/serial/msm_serial.txt)。
首先,确认kernel/arch/arm64/boot/dts/qcom/msm8916.dtsi里的blsp1_uart2设置,具体设置如下:
然后,确认kernel/arch/arm64/boot/dts/qcom/msm8916-pinctrl.dtsi里的uartconsole设置
最后,确认kernel/drivers/clk/qcom/clock-gcc-8916.c中的blsp1_uart2_apps_clk_src ,如下:
确认修改完以上的配置后就可以编译系统了。
总结:只有Andriod需要配置编译系统。
编译源码
通过以下命令编译Android系统。编译完的image可以通过fastboot命令烧写到DragonBoard 410c上。
编译kernel
首先,我们先要设置环境变量:
前面第一步我们已经下载了交叉编译器,所以CROSS_COMPILE设置为如下:
在15.09版本上存在一个build的问题,所以我们需要通过cherry-pick来修复一下:
已经万事俱备了,下面我们开始编译kernel:
编译boot image
boot image是由三部分组成的:设备树表镜像(dt.img)、kernel镜像(Image)和init ramdisk镜像。kernel镜像我们在上面已经编译出来了,下面我们来看看其他两部分从哪里获取。
首先,我们需要下载安装dt工具以及镜像生成工具
然后,编译dt镜像:
init ramdisk镜像可以通过以下命令获取:
已经都准备好了,下面我们就可以生成boot image了。
编译源码总结:我们看到,在Andriod ,Linux是需要编译源码的,Windows10则不需要。
安装界面
安装Windows10 IOT Update Tool for dragonboard。在QDN网站里可以找到相关的工具,如下图所示,根据电脑主机系统选择相应的版本的工具。
在Windows系统环境下直接安装该工具,安装成功会在桌面生成相应的快捷方式:
双击直接打开工具,界面如下图所示:
点击Browse按钮,选择默认路径下:C:\Program Files\Microsoft IoT\FFU\QCDB410C\flash.ffu文件。
连接Dragonboard 410c的Micro USB到电脑主机,把Dragonboard 410c的启动开关设置为"1000",把USB BOOT开关拨到箭头方向,如下图所示。
插上电源适配器Adapter,系统上电后,工具界面连接状态灯变为绿色,可以开始烧录系统。
点击工具界面的Program按钮,几分钟后系统安装完成,并弹出安装成功的对话框。
此时可以拔出电源Adapter,把启动开关设置"0000",即默认状态。用HDMI线连接Dragonboard 410c和外部显示器,连接USB鼠标、键盘。
插入电源Adapter,开始启动Windows10 IOT。
上图是进入Windows10 IOT系统后默认界面,Enjoy
总结
Windows10作为系统是直接与板子相连的,而Andriod和Linux需要在各自系统上进行编译。
菜鸟学习物联网---辨析基于Andriod 5.1,Linux,Windows10开发Dragon Board 410c板的更多相关文章
- Nagios学习笔记四:基于NRPE监控远程Linux主机
1.NRPE简介 Nagios监控远程主机的方法有多种,其方式包括SNMP.NRPE.SSH和NCSA等.这里介绍其通过NRPE监控远程Linux主机的方式. NRPE(Nagios Remote P ...
- WCF学习之旅—基于Fault Contract 的异常处理(十八)
WCF学习之旅—WCF中传统的异常处理(十六) WCF学习之旅—基于ServiceDebug的异常处理(十七) 三.基于Fault Contract 的异常处理 第二个示例是通过定制Servic ...
- 【菜鸟学习jquery源码】数据缓存与data()
前言 最近比较烦,深圳的工作还没着落,论文不想弄,烦.....今天看了下jquery的数据缓存的代码,参考着Aaron的源码分析,自己有点理解了,和大家分享下.以后也打算把自己的jquery的学习心得 ...
- 菜鸟学习Andriod-弹窗
菜鸟学习Andriod-弹窗 return new AlertDialog.Builder(ZyScreenSaver.this).setIcon( R.drawable.ic_launcher).s ...
- 菜鸟学习SSH——目录
菜鸟学习Struts--配置Struts环境 菜鸟学习Struts--简易计算器 菜鸟学习Struts--bean标签库 菜鸟学习Struts--Scope属性 菜鸟学习Struts--国际化 菜鸟学 ...
- 菜鸟学习Spring——60s配置XML方法实现简单AOP
一.概述. 上一篇博客讲述了用注解的形式实现AOP现在讲述另外一种AOP实现的方式利用XML来实现AOP. 二.代码演示. 准备工作参照上一篇博客<菜鸟学习Spring--60s使用annota ...
- Spark菜鸟学习营Day6 分布式代码运行调试
Spark菜鸟学习营Day6 分布式代码运行调试 作为代码调试,一般会分成两个部分 语法调试,也就是确定能够运行 结果调试,也就是确定程序逻辑的正确 其实这个都离不开运行,所以我们说一下如何让开发的S ...
- Spark菜鸟学习营Day5 分布式程序开发
Spark菜鸟学习营Day5 分布式程序开发 这一章会和我们前面进行的需求分析进行呼应,完成程序的开发. 开发步骤 分布式系统开发是一个复杂的过程,对于复杂过程,我们需要分解为简单步骤的组合. 针对每 ...
- Spark菜鸟学习营Day4 单元测试程序的编写
Spark菜鸟学习营Day4 单元测试程序的编写 Spark相比于传统代码是比较难以调试的,单元测试的编写是非常必要的. Step0:需求分析 在测试案例编写前,需完成需求分析工作,明确程序所有的输入 ...
随机推荐
- [ZJOI2006]超级麻将
题目描述 很多人都知道玩麻将,当然也有人不知道,呵呵,不要紧,我在这里简要地介绍一下麻将规则: 普通麻将有砣.索.万三种类型的牌,每种牌有1~9个数字,其中相同的牌每个有四张,例如1砣~9砣,1索~9 ...
- UVALive - 3942:Remember the Word
发现字典里面的单词数目多且长度短,可以用字典树保存 f[i]表示s[i~L]的分割方式,则有f[i]=∑f[i+len(word[j])] 其中word[j]为s[i~L]的前缀 注意字典树又叫前 ...
- Codeforces Round#432 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. Div2A 小判断题 Div2B 小判断题,合法的条件是|AB|=|BC|且三点不共线 Div1A 类比二维.三维空间,可以猜测n太大的时候没 ...
- [BZOJ]3671 随机数生成器(Noi2014)
洛谷上卡不过去的朋友们可以来看看小C的程序(小C才不是标题党呢!) Description Input 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子 ...
- CTSC2017 铁牌记
Day 0: 先到了丽都酒店. 看见北京八十中学生在发胸牌手册和T恤,领完之后开始分房间. 我和ryc一屋,lyd和ysq一屋,yzy和gzz分到了珀利酒店,老师尝试了半天把我们分到一个酒店,失败了. ...
- jQuery Datetable 渲染
渲染器 有些情况下,使用表时,表中的行的数据源不包含您希望在表中直接显示的值.您可能希望将其转换为不同的表示形式(时间戳为人类可读的格式),合并数据点(名字和姓氏)或对该值执行一些计算(计算营业额和费 ...
- Linux学习之CentOS(十九)------linux 下压缩与解压之 tar、gzip、bzip2、zip、rar
将文件存储到归档文件中或者从归档文件中获取原始文件,以及为文件创建归档文件 tar [option] [modifiers] [file-list] 参数 file-list是tar进行归档和提取的文 ...
- jquery form submit提交后无反应 不报错
jquery form onSubmit默认返回false 因为页面添加了validate验证,在刷新页面后重新提交需要加上下一行代码 onSubmit:function() {return true ...
- hadoop hdfs 高可用
单点故障: 如果某一个节点或服务出了问题,导致服务不可用 单点故障解决方式: 1.给容易出故障的地方安排备份 2.一主一备,要求同一时刻只能有一个对外提供服务 3.当active挂掉之后,standb ...
- Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题
Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...