micro:bit 軟體生態系統介紹

来源:https://www.cnblogs.com/Astar-STEAM/archive/2018/09/28/9718381.html
-Advertisement-
Play Games

microbit 軟體分成在microbit (Target Computer 如下圖右邊)上執行的及主電腦(Host Computer 如下圖左邊)上兩類 : 一般程式寫好後透過USB 轉到micro:bit , 整個流程由兩個晶元完成,一是 KL26Z負責程式刷新(code flashing) ...


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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • /// /// 創建緩存項的文件 /// /// 緩存Key /// object對象 public static void Insert(string key, object obj) { //創建緩存 HttpContext.C... ...
  • public static void SetCookie(string cname, string value, int effective) { HttpCookie cookie = new HttpCookie(cname); cookie.Value = value; cookie.Expi... ...
  • 網上有很多操作案例都失效的。 上面方法適用於centos6,如果是centos7則rpm文件替換為https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm 2、修改grub的主配置文件/etc/grub.conf,設置defa ...
  • 1 Linux系統命令操作語法的格式 命令_[參數選項]_[文件或路徑] 其中 _ 至少一個空格 如:rm -f /etc/hosts 其中/etc/hosts完整路徑不帶空格 中括弧表示可選的,即命令的參數和路徑文件都是可選的,參數選項表示使用一個命令的不同功能,比如,可以刪除一個文件和創建一個文 ...
  • Nginx("engine x")是一款是由俄羅斯的程式設計師Igor Sysoev所開發高性能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 在高連接併發的情況下,Nginx是Apache伺服器不錯的替代品。 Nginx 安裝 系統平臺:CentOS rele ...
  • 一.概述 這篇介紹shell的變數使用,跟其實語言一樣,都有聲明變數,使用變數,在shell中變數允許你臨時地將信息存儲中shell腳本中,以便和腳本的其他命令一起使用。 1.1 環境變數 在前面章節到了linux系統的環境變數,也可以在腳本中訪問這些值。下麵使用set 命令來查看當前系統的環境變數 ...
  • 4.Linux文件查找工具。 Linux經常使用locate與find作為文件查找命令。find可以認為是系統自帶的命令,功能也挺多但是使用方法相對有點繁瑣。find查找的是實時文件數據,一般用於查詢明確知道文件目錄及文件名的時候,可以按照參數將查詢出來的文件做進一步操作如:列印、刪除、執行命令等。 ...
  • 三台伺服器 192.168.1.40/41/42 安裝包 mongodb-linux-x86_64-amazon2-4.0.1.tgz 埠分配: mongos:28000 config:28001 shard1:28011 shard2:28012 shard3:28013 主要模塊以及配置文件 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...