MicroPythonは、プロジェクトの全体的な構造を見て

私はあなたの参考のために記事のソースコード解析の一部を行います必要であれば、今日では、アーキテクチャMicroPythonの状況を語りました。

MicroPythonは最初の全体的な状況を理解するためには、まず私たちは、メインの倉庫MicroPythonを取得し、ソフトウェアの観点から調べることができます。

直接git clone https://github.com/micropython/micropython、Windowsの下での動作を見てください。

クロスコンパイルされたコードを必要な時間の後、確かにLinuxでは、Windowsの10に戻ります、Linuxカーネルの開発には時間がかかりますが、より高速である必要があり、その後、巨大なハード君主は来るバックデベロッパーへのクロスプラットフォームシステムとクラウド開発サービスを運ぶでしょうキャンプ、成り行きを見守ります。

カタログケース

一般的に、我々は、ほとんどの時間が格納されているか、アイテムのケース全体を構築しますreadme.mdここを見てください。

これは、実装に置くことを目指しMicroPythonプロジェクトであり、
マイクロコントローラ、小型組み込みシステム上のPython 3.xののを。
あなたはで公式サイトを見つけることができますmicropython.org

Micropythonを参照して、その後、より多くのPython3.x Pythonの構文インタプリタを達成するために見られています。

MicroPythonは(例外を含む全体のPython 3.4構文を実装する
withyield fromなど、さらにasync/ awaitからキーワード
のPython 3.5)。次のコアデータ型が提供される:str(を含む
基本的なUnicodeサポート)、 、bytesbytearraytuplelistdictset
frozensetarray.arraycollections.namedtupleクラスおよびインスタンス。
組み込みモジュールとしてsystimeおよびstructポートを有する選択、等
のためのサポート_threadモジュール(マルチスレッド)を。サブセットだけのことに注意してください
Pythonの3機能は、データタイプとモジュールのために実装されます。

これは、最大の変化は、注意のpython3とバイトstrの完全な分離が、MicroPythonも期待に沿って、多くの変更を行っていることで、キーワード(キーワード)をたくさん見られます。

その後、関連するシンタックスシュガー(収量、非同期、待つ)をコルーチンは、再び基本的な標準ライブラリのsysなど、時間、構造体、数学として、そこには、サポートされています。

最も重要なことは、既製のベースコンテナの数が多い(文字列、バイト、ByteArrayの、タプル、リスト、辞書、設定、BTREE)、福祉アヒルのためのソフトウェアを書くことということです!

マルチスレッドの設計およびX86は、いくつかの違いであるため、最後のケースは、RTOSチップに基づいています_threadマルチスレッドライブラリは、機能のわずかな損失を与えました。

しかし、すべてではないこれらの機能のは時々、異なるチップケースに基づいてするサポートチップ、ある、Linuxカーネルの生産に似て、このトリミングプロセスを、行う、などの選択いくつかのハードウェア関連のキーCのドライバコードを置きます。

今、私たちは、リポジトリディレクトリは、重要な命令がやや古くなっている可能性があり見に行きましたが、これはそれの我々の理解に影響を与えません。

Major components in this repository:
- py/ -- the core Python implementation, including compiler, runtime, and core library.
- mpy-cross/ -- the MicroPython cross-compiler which is used to turn scripts into precompiled bytecode.
- ports/unix/ -- a version of MicroPython that runs on Unix.
- ports/stm32/ -- a version of MicroPython that runs on the PyBoard and similar STM32 boards (using ST's Cube HAL drivers).
- ports/minimal/ -- a minimal MicroPython port. Start with this if you want to port MicroPython to another microcontroller.
- tests/ -- test framework and test scripts.
- docs/ -- user documentation in Sphinx reStructuredText format. Rendered HTML documentation is available at http://docs.micropython.org.

Additional components:
- ports/bare-arm/ -- a bare minimum version of MicroPython for ARM MCUs. Used mostly to control code size.
- ports/teensy/ -- a version of MicroPython that runs on the Teensy 3.1 (preliminary but functional).
- ports/pic16bit/ -- a version of MicroPython for 16-bit PIC microcontrollers.
- ports/cc3200/ -- a version of MicroPython that runs on the CC3200 from TI.
- ports/esp8266/ -- a version of MicroPython that runs on Espressif's ESP8266 SoC.
- ports/esp32/ -- a version of MicroPython that runs on Espressif's ESP32 SoC.
- ports/nrf/ -- a version of MicroPython that runs on Nordic's nRF51 and nRF52 MCUs.
- extmod/ -- additional (non-core) modules implemented in C.
- tools/ -- various tools, including the pyboard.py module.
- examples/ -- a few example Python scripts.

我々は、これらは、公式にはアーキテクチャ上のいくつかの命令をしたものの、少し混沌としている見ることができますが、それはまた、12の可能スパイです。

ただ、直接公式の移植に対応するハードウェアコンパイラのファームウェア構成の一部を保管したポートフォルダを、見ることができますMicroPythonの学生を使用してコンパイルするには、コンパイル先となるプラットフォームを選択し、あなたがMicroPythonインタプリタを得ることができ、始まりましたあなたのPythonプログラミング。

あなたが詳細をお知りになりたい場合は、私がダウンして話を続けます。

詳細をお知りになりたいですか?

フォルダ一覧はおおよそ以下の

  • PY Pythonのインタープリタ・コードは次のように実行して含む、抽象実装に関連します。
  • MPYクロスMicroPythonコンパイラ、Pythonコードバックバイトコード処理マシンコード。
  • ポートに対応する移植プロファイル
  • テストテストスクリプトフレームワーク
  • スフィンクスコンフィギュレーションマニュアルサイトへのドキュメント
  • コア中extmod不要な抽象インタフェースコードC。
  • このようPyboard.pyなどのスクリプト助剤の様々なタイプのツールは、制御MicroPythonを通信することができます。
  • 例Pythonのサンプルコード。
  • または外側に、それは問題ではないかもしれSDKのlib依存関係を持つポートへの各プラットフォーム。
  • Pythonモジュールの駆動ハードウェアドライバによって実現するソフトウェア(C + Pythonは)標準C PY・アーキテクチャに基づいて実装され、わずかに異なった独自のチップSDKを提供し、より高い互換性。

移植のためか、我々はそれが公式のアーキテクチャの基礎を破壊しない、今、自分の手のハードウェアやソフトウェアを組み合わせる方法を想定し、二つの方向での綿密な開発を行うのですか。

基本的な知識MicroPythonインタプリタのコア

我々は、実行(VM、(パイソン)キーファイルをコンパイルし、PYの構造について読むには少し早い必要とする、MicroPythonインタプリタの一般的な理解を持っている必要があり、OBJ(ALLOC)、NLR(非局所的なリターン) )など、要するに、それは非常に重要でした。

したがって、多くの場合、インタプリタコード実行環境(スタック)、コードインタラクティブインタフェース(REPL)、可変アクセスインタフェース(アロケータ)は、インタフェース・コードがコンパイルされる(コンパイル)等がある場合を構成します。

我々は通常、それを説明するためにそれを使用します。

Pythonコードセクションは、REPLキャッシュインタプリタを通って入り、スタックインタプリタに解釈関数の後に実行されるコードが続く(バイトコードにコンパイルされた)コードを解釈するプログラムのインタプリタは、実行されると、実行の実装に、新聞は異常な異常を報告しました。

この効果を達成するために、我々は中に深く具体的な詳細を知るために下に見ている、単独でもいくつかは、その組成およびデバッグに専念し、PYのソースを説明する説明した後、PYの一部に私は、当分の間、ここで停止されますかこれは、ソースコード(バグ)を修正することです。

試験例&MicroPython

我々はMicroPythonを変更する機能を持っていない場合、彼らはそれぞれ、例やテストで、表示するための多くのテスト・アプリケーションとサンプルコードがあり、その周辺のコードを理解し、テストする必要があります。

このようなrun-tests-exp.shとrun-tests-exp.pyファイルを見て、テストインタフェーススクリプトを自動化され、実行テスト、どちらかとして、このようmicropythonインタプリタインタフェースのテストカバレッジを可能にします。

自動化の例としては):(は、WindowsまたはUnixああ下で実行することができ、以下のように生成されました

図から分かるように、Pythonコードの実行結果は、照合をテストするためのREPLの.EXP(例)への復帰に格納されています。

そのテストフレームワークを知って、それがMicroPythonそれでいくつかの自信を持っていることがほとんどではないでしょうか?そして、私たちは本当にいくつかの使用を確認するために開始する必要があります。

MicroPython各標準ポータブルインタフェースチップ

ここMicroPythonは、使用するのに十分な、平均的な開発者のために、クラウンのポータブルインタフェースのデモを専用されているアプリケーションコードの最も貴重なエリアを保ったが、専門家のために、それを使用しているだけでなく、を含みますどのように、それを変換し、それを移植それを修正し、そう理解しているします。

リトル簡単な例移植バーの窓を見て、UNIXは、最小限のフォルダがあります。

例えば、私は今のWindows上で、直接micropython.exeインタプリタと、次の図を生成するためにコンパイルすることができmicropython.vcxprojファイルのウィンドウを開くVS2019を使用します。

そして、直接実行するLinux、UNIXやMacOS環境に対応して、私はここに証明したくない、と違いはありません。

最小限のが、非常に重要な、これはチップの起動プロセスのSTM32F405は、機能をデモンストレーション移植ハードウェアを作った、というようにして、MicroPython移植があったようご案内します主な機能から、PYリソースを初期化する方法のNLR例をリンクしています。

実際には、TIおよびSTMまたはNRF家庭またはチップの両方が、移植のための主要な基礎を続けることができ、その後、インターフェースの周囲の状況に応じて標準ライブラリ関数を提供し、それがC型埋め込まれている場合、あなたは、MicroPython移植を完了することができチップ、十分な抽象的なデザインのMicroPythonの始まりは、それから見て、mpconfigport.h、mphalport.h、qstrdefsport.hの3つの主要文書裸の腕を見て信じていないので、うまく代替ドッキング機能を注意してください参照するにはJavaScriptインターフェース、あなたは私が何を意味するか知っている、あなたは、あまりにも、そのようなLUAとJerryScriptとしてだけでなく、ご使用の環境をインポートするインタプリタインタフェースモジュールとして他の動的言語をmicroPythonを置くだけでmicropythonすぎて安定性を提供することができます利用できるモジュールコード、選択の余地(本当に香りとさせて頂いておりません。

エピローグ

それから私は、チップesp8266の私のLexin ESPシリーズに行いますとesp32は、移植を行うとの説明を解析するソースコードを変更、結局、関係者は最も主流のチップ構成項目の上に移植されているので、私はいくつかのアップグレードやソースコードを行うことができます直接移植されたコピーされたものの説明を変更することは、問題の多くではありません。

私は、あなたによく見るのmicropythonを書いて、私は同じアーキテクチャZwLibアヒルをしていたが、私は料理を維持し続ける、あまりにもあきらめ、首長だけでなく、強力な、コードを書くことが非常に高速であり、それは本当に大きな頭です。

  • 書き込み時間:2019年9月2日
  • 著者:junhuanchen
  • 連絡先:
  • 微信&Githubの:著者名
  • QQ&Eメール:作者@ qq.com

おすすめ

転載: www.cnblogs.com/juwan/p/11447455.html