Azure RTOSのGetting StartedをmacOSで実行してみました
この無線設備は、電波法に定める技術基準への適合が確認されておらず、法に定める特別な条件の下でのみ使用が認められています。この条件に違反して無線設備を使用することは、法に定める罰則その他の措置の対象となります。
手順(差分)
ツールのインストール
% brew tap ArmMbed/homebrew-formulae % brew install arm-none-eabi-gcc ninja cmake
イメージのビルド
% bash getting-started/STMicroelectronics/STM32L4/tools/rebuild.sh
下記のようなエラーメッセージが出て止まります。
readlink: illegal option -- f usage: readlink [-n] [file ...] CMake Error: The source directory "/Users/ytakeuch/azure-rtos" does not appear to contain CMakeLists.txt. Specify --help for usage, or press the help button on the CMake GUI. Error: could not load cache
CMakeLists.txtが見つからないということなので、有る場所まで降りて行ってビルドを実行します。
% cd getting-started/STMicroelectronics/STM32L4/ % bash tools/rebuild.sh
build/app/以下に.binファイルが出来上がります。
イメージの書き込み
基板をMacに接続して、USB Mass Strage Deviceとしてマウントされたら.binファイルをコピーします。
% cp build/app/stm32l475_azure_iot.bin /Volumes/DIS_L4IOT
Azure RTOSのGetting StartedをLinuxで実行してみました
この無線設備は、電波法に定める技術基準への適合が確認されておらず、法に定める特別な条件の下でのみ使用が認められています。この条件に違反して無線設備を使用することは、法に定める罰則その他の措置の対象となります。
はじめに
readme.mdにはWindows PCが必要と書かれていましたが、バッチファイルのある場所にシェルスクリプトもあるのでビルドまではできると思っていました。
今週頭ごろのreadme.mdにはSTM32 ST-LINK Utilityで書き込む手順になっていたのですが、現在はMBED方式で書き込むようになっているので、Linuxでも環境を構築できるか試してみました。
必要なもの
- Ubuntu 20.04がインストールされているPC
手順(差分)
ツールのインストール
% bash getting-started/tools/get-toolchain.sh
下記のようなエラーメッセージが出て止まります。
Some packages could not be installed. This may mean that you have requested an impossible situation or if you are using the unstable distribution that some required packages have not yet been created or been moved out of Incoming. The following information may help to resolve the situation: The following packages have unmet dependencies: cmake : Depends: libssl1.0.0 (>= 1.0.2~beta3) but it is not installable E: Unable to correct problems, you have held broken packages.
getting-started/tools/get-toolchain.shを見てみると...
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main'
という行にbionic(18.04 LTS)という文字列があるのでfocal(20.04 LTS)に置き換えます。
sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ focal main'
再度シェルスクリプトを実行します。
% bash getting-started/tools/get-toolchain.sh
今度はうまくツールをインストールできました。
イメージのビルド
% sh getting-started/STMicroelectronics/STM32L4/tools/rebuild.sh
getting-started/STMicroelectronics/STM32L4/build/app/以下に.binファイルが出来上がります。
イメージの書き込み
基板をPCに接続して、USB Mass Strage Deviceとしてマウントされたら.binファイルをコピーします。
% cp getting-started/STMicroelectronics/STM32L4/build/app/stm32l475_azure_iot.bin /media/ytakeuch/DIS_L4IOT
Azure RTOSのGetting Startedを実行してみました
この無線設備は、電波法に定める技術基準への適合が確認されておらず、法に定める特別な条件の下でのみ使用が認められています。この条件に違反して無線設備を使用することは、法に定める罰則その他の措置の対象となります。
基板の選定
サポートされている基板は次の通りです。
- Microchip ATSAME54-XPRO
- NXP MIMXRT1060-EVK
- Renesas Synergy Platform
- STMicroelectronics BL-475E-IOT01
ルネサスのSynergy Platformというのは良く分からなかったので他の3つから選びました。
Wi-Fiで値段が一番安いということでSTMicroelectronicsのB-L475E-IOT01Aにしました。
B-L475E-IOT01A1とB-L475E-IOT01A2の2種類がありますが、違いはSub-GHzのモジュールだけです。前者が米国向けで後者が欧州向けです。
技適未取得機器を用いた実験等の特例制度の届け出
B-L475E-IOT01に搭載されているWi-FiモジュールはInventek Systemsの43362-M3G-L44というもので技適マークは付いていません。
そのため技適未取得機器を用いた実験等の特例制度の届け出が必要です。
2020年5月27日からWeb届け出ができるようになっています。
本人確認の方法は電子署名を用いたオンラインでの本人確認(個人の場合はマイナンバーカードの署名用電子証明書を用いた電子署名)または、各総合通信局での対面での本人確認です。
メーカー・型番・シリアル番号・FCC ID等を記載して届け出ます。
Webで届け出ると【開設届出を受け付けました】というメールが届きます。
必要なもの
開発環境の準備
チュートリアルのレポジトリのクローン
> git clone https://github.com/azure-rtos/getting-started
Azureのリソースの準備をする
Azure CLIを使用するための準備を行います。
ローカルでAzure CLIを使用する場合は下記のURLからインストールします。
ブラウザ上でAzure CLIを使用する場合はAzure Cloud shellから実行します。
IoT hubを作成します。
パラメータは一部を除いてreadme.mdのままで実行しました。
> az extension add --name azure-iot
> az group create --name MyResourceGroup --location eastus
> az iot hub create --resource-group MyResourceGroup --name {IoTHubの名前}
{IoTHubの名前}はAzure全体でユニークである必要があるので、ユニークなものに置き換えます。
IoT hubを作成するとコンソールにJSONが出力されるので、hostNameの値を書き留めておきます。
デバイスの登録
> az iot hub device-identity create --device-id MySTMDevice --hub-name {IoTHubの名前}
{IoTHubの名前}はaz iot hub create --resource-grouupで決めた名前に置き換えます。
デバイスを登録するとコンソールにJSONが出力されるので、deviceIdとprimaryKeyの値を書き留めておきます。
デバイスの準備
テキストエディタでgetting-started\STMicroelectronics\STM32L4\app\azure_config.hを編集します。
APのSSIDは必ず2.4GHz側にしてください。
// ---------------------------------------------------------------------------- // WiFi connection information // ---------------------------------------------------------------------------- #define WIFI_SSID "APのSSID" #define WIFI_PASSWORD "APのパスワード" #define WIFI_MODE Wi-Fiの暗号化モード // ---------------------------------------------------------------------------- // Azure IoT Device information // ---------------------------------------------------------------------------- #define IOT_HUB_HOSTNAME "hostNameの値" #define IOT_DEVICE_ID "deviceIdの値" #define IOT_PRIMARY_KEY "primaryKeyの値"
イメージのビルド
> getting-started\STMicroelectronics\STM32L4\tools\rebuild.bat
実行すると、getting-started\STMicroelectronics\STM32L4\build\app\stm32l475_azure_iot.binというイメージが出来上がります。
Elixir事始め(その3)
Getting StartedでElixirを学習しています。
基本型
7つの基本型の例です
- 整数型(integer) → 10
- 浮動小数点型(float) → 10.0
- 論理型(boolean) → true
- アトム型(atom) → :atom
- 文字列型(binary) → "hello"
- リスト型(list) → [1, 2, 3, 4]
- タプル型(tuple) → {1, 2, 3, 4}
基本算術
iex> 1 + 1 2 iex> 2 - 1 1 iex> 3 * 3 9 iex> 4 / 2 2.0
/による除算は常に浮動小数点型を返します。
整数で除算の結果や剰余を得たい場合はdiv/2やrem/2関数を用います。
iex> div(5, 2) 2 iex> rem(5, 2) 1
Elixirの浮動小数点型は64ビットの倍精度です。
round/1関数は与えられた浮動小数点数に対して最も近い整数を返します。
trunc/1関数は与えられた浮動小数点数の整数部分を返します。
iex> round(1.45) 1 iex> round(1.55) 2 iex> trunc(1.99) 1
関数の識別と説明文書の取得
関数は関数の名前とアリティの両方で識別されます。アリティは関数が受け取る引数の数です。
四則演算で例示した、div/2、rem/2、round/1、trunc/1のように記載します。
Elixirシェルのh/1関数は与えられた関数の説明文書を返します。
iex> h trunc def trunc(number) @spec trunc(value) :: value when value: integer() @spec trunc(float()) :: integer() guard: true Returns the integer part of number. Allowed in guard tests. Inlined by the compiler. ## Examples iex> trunc(5.4) 5 iex> trunc(-5.99) -5 iex> trunc(-5) -5
論理値型
真はtrueで、偽はfalseです。頭文字は小文字です。
Elixirには値の型をチェックする関数があります。
論理値型であるかをチェックする関数はis_boolean/1です。
iex> is_boolean(true) true iex> is_boolean(True) false
アトム型
アトムは名前に対応した値が対応する定数です。他のいくつかの言語ではシンボルと呼ばれています。
次のような個別の値を列挙するのに役立ちます。
iex> :apple :apple iex> :orange :orange iex> :rasberry :rasberry iex>
文字列型
無名関数
(連結)リスト
タプル
リスト or タプル
Elixir事始め(その2)
Getting StartedでElixirを学習しています。
はじめに
インタラクティブ・モード
iexコマンドを実行します。
$ iex Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe] Interactive Elixir (1.9.1) - press Ctrl+C to exit (type h() ENTER for help) iex(1)>
式を入力すると評価値が返されます。
iex(1)> 256 + 64 320 iex(2)>
iexを終了するためには「Control-C」を二度押します。
iex(1)> BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution $
スクリプトファイルの実行
elixirコマンドでスクリプトファイルを実行します。
elixirの拡張子は .exs です。
Hello world!を出力するスクリプトを作成します。
hello_world.exs
IO.puts "Hello world!"
elixirを実行します。
$ elixir hello_world.exs Hello world!
Elixir事始め(その1)
発端
SWEST21の基調講演でNervesプロジェクトに興味を持ちました。Nervesプロジェクトは組込みソフトウェア開発にElixirを使用するためのフレームワークです。
そこでNervesを使うためにElixirを学ぶことにしました。
ちなみに、10年ほど前にElixirと同じくErlang VMで動作するErlangを学ぼうとして、挫折した経験がありますorz...。
インストール
Getting Startedの前にElixirをインストールします。
インストール先のOSはUbuntu 18.04です。
入力したコマンドは次の通りです
$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb $ sudo apt-get update $ sudo apt-get install esl-erlang $ sudo apt-get install elixir
インストールの確認
インストールしたElixirのバージョンは次のコマンドで確認できます。
$ elixir --version Erlang/OTP 22 [erts-10.4.4] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe] Elixir 1.9.1 (compiled with Erlang/OTP 21)
Redox OSをVirtualBox上で動かしました(道半ば)
今度はVirtualBox上でRedox OSを動かそうとしてみました。
まずは、
qiita.com
を参考にして、ストレージをSATA→AHCIとしてredox_0.5.0_livedisk.isoをマウントしてブートしてみましたが、
同上のページを参考にしてRAWイメージからVDIイメージを作成しました。
$ VBoxManage convertfromraw redox_0.5.0_harddrive.bin redox.vdi
redox.dviをハードディスクイメージとしてマウントしたらブートできました。
キーボードは効くのでブートできましたが、マウスが効きません。
Input→Mouse Integrationをいじったらマウスが効くようになりました。
しかし、ネットに繋がりません。
Intel PRO/1000 MT Desktop (82540EM)を選択しているのですが...