micro:bit 软件生态系统介绍
microbit 软件分成在microbit (Target Computer 如下图右边)上执行的及主计算机(Host Computer 如下图左边)上两类 :
一般程序写好后透过USB 转到micro:bit , 整个流程由两个芯片完成,一是 KL26Z负责程序刷新(code flashing) ,另一nRF51822则执行完成用户完成的程序。
高阶程序语言
Microbit 的高阶程序语言分成编译及直译两类(但译者若以实际的程序执行环境目前都是"编译”── 将用户程序编译后结合底层已有bytebode ,成为完整执行程序),原文便保留
The ‘highlevel’ programming languages for the micro:bit breakdown into two broad categories
· Compiled languages: your program is compiled to ARM assembler or some otherkind of bytecode before being copied onto the micro:bit.
· Interpreted Languages: both your script and an interpreter for it are copiedonto the micro:bit. Because the interpreter is on the micro:bit itself, theselangauges typically also allow you to program the micro:bit ‘live’ over USB by typing commands.
编译语言
C/C++, while certainly compiled, is not considered a high-levellanguage in this context
为了可以确定在线的编译环境可支持一百万片microbit 的板子,微软用TypeScript 写了浏览器版编译程序(https://makecode.com),在这编译程序上微软使用了以下的技术 :
· Blocks (at microbit.co.uk)
· TouchDevelop
· CodeKingdoms Javascript (at microbit.co.uk)
· Blocks and Javascript as part of pxt (at pxt.microbit.org)
浏览编译程序不会编译整个程序,只有用户编写的部分,其他底层执行的部分已经预先用mbed 编译好,并整合进在线编译程序。当用户编写完他的程序,编译程序便会编译并结合底层软件,让用户下载!
PS: MakeCode的底层编程语言是TypeScript(github.com/Microsoft/TypeScript-Node-Starter)的一个子集,省略了JavaScript动态特征。
MakeCode的主要功能有:
一个基于Google Blockly的代码编辑器以及转换器到JavaScript
一个基于摩纳哥的文本编辑器,具有增强的强大的自动完成和自动更正功能,由TypeScript提供支持。
通过TypeScript或C ++定义块的可扩展性支持
基于markdown的文文件系统,具有内置宏以呈现块片段
一个ARM Thumb机器码发射器
一个命令行包管理器
MakeCode目前在微软Redmond开发。
直译语言
在microbit.co.uk 正式的编译程序中,只有 Python 是直译的。这是用MicroPython 直译器项目所完成,细部数据可以 MicroPython的链接中找到。
另外还有Javascript 直译器项目 port of the Javascript interpreter Espruino 支持 microbit!
程序环境及整合接口
这里有许多程序环境可让用户对microbit做不同层面的程序设计.
较普遍的编译环境都列在https://microbit.org/code,脱机的编译环境有Mu offline Python editor
这里已经尽可能将micro bit 相关的编译环境列出来,若你有知道,但不在这上面的,请让我们知道(Here’s a non-exhaustive list of possiblecode editors for use with the micro:bit. please add any you know about that arenot here,原文中并未指出如何通知,所以在这将原文列出)
· microbit.co.uk editors based onTouchDevelop backend:
Code Kingdoms Javascript
Microsoft Blocks
Microsoft TouchDevelop
Python
· mbed Online Compiler
· Mu offline Python editor
· PXT for micro:bit (successor to theTouchDevelop-based editors above)
从程序环境到 micro:bit
每一个编译环境都会产生一个.hex 的档案,这是microbit 可以认得的格式。由于主计算机会将Microbit认为是USB随身碟(是由DAPLink 模拟出来),当编译出来Hex 檔拖拉至microbit。当闪灯结束,程序便开始执行。
另一"刷程序"(flash’ code) 是用手机AP透过蓝芽传输至micro:bit ,更多的信息请参考 here,有关蓝芽手机程序更多信息请参考 here。
micro:bit底层软件架构
当你为microbit 写完你的应用程序,刷你的程序进microbit 。这hex 档除了包含你写的部分也包含了许多底成软件模块,这些软件模块在底下一、一做介绍:
· the micro:bit Runtime (有时称这部分为装置抽象层),是由Lancaster University 用C++ 写成。装置抽象层形成不同语言共同使用的部分,但在不同语言下使用的频繁度及包装的紧密度不同。(有兴趣的读者可以用以下列处的链接下载语言编译程序的程序代码研究,或初步去看各语言的reference 作了解)
· ARM mbed 这部分提供了mbed对不同ARM based MCU 的周边有标准的SDK ,这也包含了BLE 的抽象层及API ,这也代表的microbit的软件可以执行在其他的mbed 支持的硬件上
· Nordic nRF51-SDK mbed 是建构在Nordic nRF51-SDK的上层, 由 Nordic 发展的组件可以帮助程序人员使用它们的硬件。
· MicroPythoninterpreter 若你是使用python的程序人员 ,它是用micro python 及mbed 开发出来的,所以microPython 是可以使用在许多不同硬件平台
*原文参考
https://mp.weixin.qq.com/s?__biz=MzU0MTg0ODIzNA==&mid=2247483654&idx=1&sn=d12be17453212cb5852ee1104c461ce3&chksm=fb22e6c3cc556fd59d3e102d198ebda9126a5622100c4d851623ef66763b10586bbcb1aee304#rd
micro:bit 软件生态系统介绍的更多相关文章
- Hadoop生态系统介绍
Hadoop生态系统Hadoop1.x 的各项目介绍1. HDFS2. MapReduce3. Hive4. Pig5. Mahout6. ZooKeeper7. HBase8. Sqoop9. Fl ...
- 谈谈在 .Net 平台上的 软件生态 和 软件生产力
我们可以先看看这篇文章 : <看 StackOverflow 如何用 25 台服务器撑起 5.6 亿的月 PV> http://www.nowamagic.net/librarys/ ...
- 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术
业务.架构.技术,我们应该关注什么 一个企业存在的必然和前提就是获取企业生成的利润,怎么样合法合理取得利润呢,企业怎么样生存下去呢,很简单,为客户提供等值的产品与服务,客户支付你相应的报酬. 我们是从 ...
- IoT生态不完善、与智能电视区别不大,荣耀智慧屏概念大于实际
编辑 | 于斌 出品 | 于见(mpyujian) 前两天,华为荣耀略显"低调"地在北京召开了一场小型的媒体沟通会.在这场沟通会上,荣耀却颇为"重磅"地推出了坊 ...
- 漫谈国内外Android生态:华为发布的 HMS 服务,对 Mate30 系列无法搭载 Google GMS 的补偿有多大(原创)
如果既用过iPhone,也用过国际版Android,还用过国内的安卓,(并且这三种都用了半年以上),就能体会到GMS多重要.可以说,iOS的体验大幅度领先于国内的安卓,一多半的原因是国内安卓没有GMS ...
- 最全 IT 相关网站,软件开发网站收集
前端比较流行的 UI 框架 目前前端用的比较多的框架有如下几个 Ant Design:Ant Design - 一套企业级 UI 设计语言和 React 组件库 Mint UI:https://mi ...
- 龙芯3a4000办公机安装软件及美化记录
1.硬件平台: CPU:龙芯3a4000 Linux内核版本:4.19.90-1.lns7.2.mips64el 操作系统:Debian 10(buster) 使用过龙芯3a3000和3a4000两款 ...
- Java 生态碎片化 和 .NET生态的一致性
.NET Core是以MIT协议开源, Java是GPL协议开源.Java 8 SDK升级Oracle要收费这件事对于很多小公司是有着重大的影响的,Java生态越发碎片化,有众多的OpenJDK发行版 ...
- hadoop生态圈介绍
原文地址:大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍 1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...
随机推荐
- 秒杀多线程第一篇 多线程笔试面试题汇总 ZZ 【多线程】
http://blog.csdn.net/morewindows/article/details/7392749 系列前言 本系列是本人参加微软亚洲研究院,腾讯研究院,迅雷面试时整理的,另外也加入一些 ...
- phpmyadmin文件上传限制
修改php.ini文件中的四个属性upload_max_filesize,post_max_size,max_execution_time,memory_limit,如图所示: 保存重启系统;打开ph ...
- 细嚼慢咽C++primer(4)——类(1):构造函数,类型别名
1 最简单地说,类即使定义了一个新的类型和一个新的作用域. 2 基础 1 构造函数 构造函数一般应使用一个构造函数初始化列表,来初始化对象的数据成员. Sales_item(): units_s ...
- Excel操作之级联菜单
设置级联菜单主要用的是excel的数据验证功能.下面以简单的设置城市选择框为例: 1.准备好数据 2.给所有省份起个名称(例如:省份),然后同样方法给每个省份所对应的城市以其省份命名,(例如:南京.苏 ...
- Django路由系统---Django重点之url别名
django重点之url别名[参数名必须是name,格式是name="XXX] 不论后台路径如何进行修改路径,前台访问的路径不变,永远是alias, 这样方便开发 前台根据 {{ url & ...
- HTML IMG标签SRC为null
今天做项目遇到一个错 研究了半天才发现 其实就是一个小错 稍微注意一下 就能规避 HTML标签<img src="null">这种情况下在chrom的debug下就会报 ...
- 沉淀,再出发:Java基础知识汇总
沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...
- java简单的工厂模式
定义:专门定义一个类来创建其他类的实例,被创建的实例通常都具有共同的父类和接口.意图:提供一个类由它负责根据一定的条件创建某一及具体类的实例 //简单工厂,存在不符合开闭原则的地方,可以在参考抽象工厂 ...
- DQL、DML、DDL、DCL概念与区别
SQL(Structure Query Language)语言是数据库的核心语言. SQL的发展是从1974年开始的,其发展过程如下:1974年-----由Boyce和Chamberlin提出,当时称 ...
- [TJOI2018]智力竞赛
题目 发现我们需要最大化最小值,基本是二分了 那么我们二分出来一个值我们将小于等于这个值的都删去,现在的问题变成了如何用\(n+1\)条路径覆盖这张图 这不最小路径覆盖吗 于是我就忘了最小路径覆盖怎么 ...