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 软件生态系统介绍的更多相关文章

  1. Hadoop生态系统介绍

    Hadoop生态系统Hadoop1.x 的各项目介绍1. HDFS2. MapReduce3. Hive4. Pig5. Mahout6. ZooKeeper7. HBase8. Sqoop9. Fl ...

  2. 谈谈在 .Net 平台上的 软件生态 和 软件生产力

    我们可以先看看这篇文章 : <看 StackOverflow 如何用 25 台服务器撑起 5.6 亿的月 PV>    http://www.nowamagic.net/librarys/ ...

  3. 业务、架构、技术,我们应该关注什么 Java和.Net的优势劣势简单看法 市场经济决定,商业之道即是软件之道,市场的需求决定着软件技术的发展 利益决定着选择应用新技术

    业务.架构.技术,我们应该关注什么 一个企业存在的必然和前提就是获取企业生成的利润,怎么样合法合理取得利润呢,企业怎么样生存下去呢,很简单,为客户提供等值的产品与服务,客户支付你相应的报酬. 我们是从 ...

  4. IoT生态不完善、与智能电视区别不大,荣耀智慧屏概念大于实际

    编辑 | 于斌 出品 | 于见(mpyujian) 前两天,华为荣耀略显"低调"地在北京召开了一场小型的媒体沟通会.在这场沟通会上,荣耀却颇为"重磅"地推出了坊 ...

  5. 漫谈国内外Android生态:华为发布的 HMS 服务,对 Mate30 系列无法搭载 Google GMS 的补偿有多大(原创)

    如果既用过iPhone,也用过国际版Android,还用过国内的安卓,(并且这三种都用了半年以上),就能体会到GMS多重要.可以说,iOS的体验大幅度领先于国内的安卓,一多半的原因是国内安卓没有GMS ...

  6. 最全 IT 相关网站,软件开发网站收集

    前端比较流行的 UI 框架 目前前端用的比较多的框架有如下几个 Ant Design:Ant Design - 一套企业级 UI 设计语言和 React 组件库  Mint UI:https://mi ...

  7. 龙芯3a4000办公机安装软件及美化记录

    1.硬件平台: CPU:龙芯3a4000 Linux内核版本:4.19.90-1.lns7.2.mips64el 操作系统:Debian 10(buster) 使用过龙芯3a3000和3a4000两款 ...

  8. Java 生态碎片化 和 .NET生态的一致性

    .NET Core是以MIT协议开源, Java是GPL协议开源.Java 8 SDK升级Oracle要收费这件事对于很多小公司是有着重大的影响的,Java生态越发碎片化,有众多的OpenJDK发行版 ...

  9. hadoop生态圈介绍

    原文地址:大数据技术Hadoop入门理论系列之一----hadoop生态圈介绍   1. hadoop 生态概况 Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分 ...

随机推荐

  1. java笔记--String类格式化当天日期转换符文档

    String类格式化当天日期 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3877389.html "谢谢-- 转换符:% ...

  2. rabbitmq集群配置

    原文地址:http://www.360doc.com/content/14/0911/17/15077656_408713893.shtml 按照文章中的方式成功建立了两台机器的集群. 但文章中加入集 ...

  3. python基础——Linux系统下的文件目录结构

    单用户操作系统和多用户操作系统 单用户操作系统:指一台计算机在同一时间只能由一个用户使用,一个用户独自享用系统的全部硬件和软件资源. 多用户操作系统:指一台计算机在同一时间可以由多个用户使用,多个用户 ...

  4. The associated COM server does not support ActiveX Document embedding

    winfrom 通过dsoframer实现读取excel文件报错: System.Reflection.TargetInvocationException: Exception has been th ...

  5. 10 套华丽的 CSS3 按钮推荐

    在过去的Web开发中,通常使用Photoshop来设计按钮的样式.不过随着CSS3技术的发展,你完全可以通过几行代码来定制一个漂亮的按钮,并且还可以呈现渐变.框阴影.文字阴影等效果.此类按钮最大的优势 ...

  6. VSTO 开发

    http://www.cnblogs.com/yangecnu/category/499866.html http://www.cnblogs.com/brooks-dotnet/category/2 ...

  7. Linux who命令详解

    who 命令显示关于当前在本地系统上的所有用户的信息.显示以下内容:登录名.tty.登录日期和时间.输入whoami 显示您的登录名.tty.您登录的日期和时间.如果用户是从一个远程机器登录的,那么该 ...

  8. 有用的JS函数

    1. QueryString function queryString(key) { var re = new RegExp("[?&]" + key + "=( ...

  9. iOS绘图事务的运行验证

    结合WWDC,以我们的call stack为例,来说明这四个过程分别大概都做了什么. layout过程 从上面layout的过程可以看出,其所做的主要任务就是将图层调用代理(也就是视图)实现整个视图层 ...

  10. iOS--性能优化--保持界面流畅

    卡顿产生的原因和解决方案 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建.布局计算.图片解 ...