[原创] 深入浅出解读BBC Micro:bit——软件生态
1794 查看
5 回复
 楼主 | 发布于 2019-06-17 | 只看楼主
分享到:


Micro:bit的软件主要是两个门类 


  1. 安装在作为“主机”的电脑/手机/pad上的软件,下图的左半部分 

  2. 运行在”目标“设备micro:bit应用处理器和接口设备上的软件,下图的右半部分


运行在主机侧的高级编程语言分为两类 

一类是编译类的语言:你写的代码在下载到micro:bit之前会经过编译器编译以便和ARM汇编器或其他的类型的代码融合后才能被micro:bit接收使用,这里的代表是Makecode,Scratch等。为了令上百万的青少年能够快速使用,Microsoft基于TypeScript编写了在浏览器中的编译器Makecode支持模块编程和并Javascript脚本对应,而Scratch则是诞生在乔治吉尔德先生(就是今天刚刚和任总喝咖啡谈人生的那位大佬哈)领衔的MIT媒体实验室,自从2007年发布以来已经成为青少年编程教育的必备工具; 



左图为scratch通过蓝牙搜索Microbit的界面,右图为makecode的模块图编程界面 



另一类是解释类语言:你的脚本和解释器会同时被复制到micro:bit上。由于解释器是在micro:bit本体上的,这类语言通常允许你通过USB输入指令在线的给micro:bit编程,这里的代表是MicroPython。 





需要指出C/C++当然属于编译类的语言,但相对于micro:bit的其他高级编程语言来说,C/C++被我们归在低级语言中 



继续往下之前,给大家看看我5分钟前在scratch做的小demo。demo实现在microbit的按钮A按下后,让小猫走50步,转90度,然后叫一声Meow: 



接着我在上面的积木下又增加了一行,小猫叫完后在microbit显示hello!,就是下面这张图(由于是滚动显示,只截到了惊叹号❗) 



当然,这里在只是给大家演示一下这些高级编程语言是如何成为了青少年的学习伙伴的:一切操作都是以青少年为目标,简单直接而富有设计感和创造性。 

言归正传,microbit的高级语言编程环境类型很多,除开这里展示的Scratch编程外,也可以通过Makecode编写Javascript积木,可以通过Python进行解释类编程,或者mbed在线编译编程,也可以通过Python的离线编程工具Mu做编程等等。 

每一个编程环境都会产生一个针对Microbit的.hex文件,这个文件包含的是将要写入microbit闪存空间中的相应数据。如上一篇硬件汇总中说明的,通过USB接口芯片,我们可以直接在操作系统下看到microbit盘符,从而将hex直接拖放发送到microbit的应用处理器nRF51822上。同时microbit也支持通过蓝牙访问DFU从而OTA下载代码。 

最后要提一下microbit的C/C++低级软件堆栈 

当你针对microbit开发一个应用时,除开可视化环境提供的解释编译外,还有其他软件会参与到最终形成的hex文件中来。这些包含有不同组件的低级软件模块来自于: 


  1. Microbit runtime(也叫DAL器件虚拟抽象层),由兰卡斯特大学基于C++写出。DAL器件虚拟抽象层将microbit的基本模块抽象一系列函数从而方便所有高级语言调用,但也有一些语言,比如Python,相较于Makecode的高阶基本函数大多与runtime中的C/C++函数对应不同,Python极少采用DAL虚拟抽象层定义的函数,而是直接与nRF51-SDK对接。 

  2. ARM mbed,runtime是在ARM mbed SDK上组建的,mbed SDK提供了不同MCU的标准接口驱动并抽象了大多数低级硬件资源,这意味着micro:bit的软件可以很容易的移植到其他硬件上这包括了对BLE的抽象,mbed BLE应用程序接口 

  3. Nordic nRF51-SDK,mbed自身也是基于Nordic nRF51-SDK组建,由Nordic提供的模块来辅助程序员使用Nordic的硬件。 

  4. MicroPython解释器,如果你在使用Python语言,那么整个MicroPython语言解释器就和你的应用程序一起被放入hex文件。尽管MicroPython也同时支持在广泛的其他硬件平台运行,在microbit上运行的MicroPython是采用mbed下层的(无需依赖mbed) 


软件的依赖关系架构如下图 



嗯,今天就到这里,下回见咯。

(0 ) (0 )
回复 举报

回复于 2019-06-17 沙发

感谢分享
(0 )
评论 (0) 举报

回复于 2019-06-26 2#

谢谢分享!!!
(0 )
评论 (0) 举报

回复于 2019-06-30 3#

支持下,谢谢分享!
(0 )
评论 (0) 举报

回复于 2019-07-03 4#

感谢分享
(0 )
评论 (0) 举报

回复于 2019-07-16 5#

感谢分享
(0 )
评论 (0) 举报
  • 发表回复
    0/3000





    举报

    请选择举报类别

    • 广告垃圾
    • 违规内容
    • 恶意灌水
    • 重复发帖

    全部板块

    返回顶部