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基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...
随机推荐
- 随手记C#资料
1.where T: new()where后的称为泛型约束,这里约束泛型参数T必须具有无参的构造函数 2.判断路径是本地路径还是网址 private static bool IsLocalPath(s ...
- BeautifulSoup使用注意事项
BeautifulSoup使用注意事项 BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beau ...
- 4、集合set的功能介绍
集合是易变(可改变)和无序聚集.集合set支持迭代,很像无值(或仅有键的)字典,用花括号表示{}. 1.集合的创建: 可以通过调用内建函数set()来创建,及向其传递一个迭代,该迭代的项目成为形成 ...
- CNN识别验证码1
之前学习python的时候,想尝试用requests实现自动登陆,但是现在网站登陆都会有验证码保护,主要是为了防止暴力破解,任意用户注册.最近接触深度学习,cnn能够进行图像识别,能够进行验证码识别. ...
- 通过css使文字有渐变的效果
<style> .color{ background-image: -webkit-gradient(linear, left center, right center, from(rgb ...
- 一步步入门编写PHP扩展
1.写在最前 随着互联网飞速发展,lamp架构的流行,php支持的扩展也越来越多,这样直接促进了php的发展. 但是php也有脚本语言不可避免的问题,性能比例如C等编译型语言相差甚多,所以在考虑性能问 ...
- Kali-linux使用Easy-Creds工具攻击无线网络
Easy-Creds是一个菜单式的破解工具.该工具允许用户打开一个无线网卡,并能实现一个无线接入点攻击平台.Easy-Creds可以创建一个欺骗访问点,并作为一个中间人攻击类型运行,进而分析用户的数据 ...
- Kali-linux绘制网络结构图
CaseFile工具用来绘制网络结构图.使用该工具能快速添加和连接,并能以图形界面形式灵活的构建网络结构图.本节将介绍Maltego CaseFile的使用. 在使用CaseFile工具之前,需要修改 ...
- face++
1.链表反转 2.快排 3.m*k n*k两矩阵计算欧几里得距离np.tile 4.链表排序,要求时间复杂度小于O(N^2),空间O(1),不允许改变链表的值 5.2sum及其变体 6.给一个数组 ...
- 人人开源之代码生成器(renren-generator)
本篇文章,主要包含三个部分,介绍.代码生成演示.代码分析(不会很深入)等 三个部分足以让你学会使用,实际生产可能遇到的问题不会在这遇到. 代码生成器的作用在于提高开发效率.但是这个代码生成器仍有其局限 ...