用の組込みLinux(OpenSTLinux)をコンパイルした件2021/07/17に公開AWSstm32mp1openstlinuxtechこの記事はSTマイクロエレクトロニクス社のプロセッサ・STM32MP1の組込みLinux(OpenSTLinux)をAWSのEC2でコンパイル環境構築した際の記録です。AWSで組込みLinuxをコンパイルしたときにどの程度費用がかかるかざっくり知りたい方は参考になるかもしれません。従来からシングルコアマイコンを使っていましたが、今後は機能要求・通信データ量の増加もあり、マルチコアプロセッサを検討することになりました。シングルコアの従来システムは画像処理しながらリアルタイムな通信処理をおこなっています。現状システムから処理負荷分散を考えるとそれほど厳密なリアルタイム性が求められない画像処理を担当するコアリアルタイム性が求められる通信処理を担当するコアのようにしたいと考えました。そこで前述の要求を満たすことが可能なプロセッサとしてSTマイクロエレクトロニクス社のSTM32MP1を見つけました。STM32MP1のCortex-Aコアで画像処理、Cortex-Mコアでリアルタイム処理を担当させることができれば良さそうと思いました。STM32MP1は組込みLinux(OpenSTLinux)のうえで動くということでした。そこでSTM32MP1の評価基板(STM32MP157C-DK2)を購入し、色々試してみることにしました。情報収集STM32MP1の情報収集していき、次のセミナーに参加しました。https://www.stmcu.jp/event/event-history/78332/セミナーの資料はこちらのリンクにあります。https://www.stmcu.jp/design/thirdparty/sw_hw_dev/78787/OpenSTLinuxコンパイル環境にはいくつか選択肢がありますが今回はAWSでコンパイルすることにしました。わかりやすい・丁寧な資料で文中で紹介されている動画通りの手順で環境構築することが可能です。PCにVirtualBoxをインストールし、ゲストOSにUbuntuの構成でコンパイルを試しました(OpenSTLinuxはUbuntuでコンパイルする必要があります)。2台でOpenSTLinuxのコンパイルを試しましたが2台ともに失敗しました。推測ですが、1台目はPCスペック不足に起因する原因2台目はネットワーク環境に起因する原因(あるパッケージだけがダウンロードできなかった)でした。EC2でコンパイル環境構築を試すことにしました。※OpenSTLinuxのコンパイルPCのスペックはこちらに記載されています。configurations次がコンパイルPCのスペックの抜粋です。Gbytes私の技術バックボーンOpenSTLinuxをAWSでコンパイルすることを決めましたが、本件を試す前の私の技術バックボーンを紹介しておきます。Linuxに関して組込みLinuxの開発経験はありません。Linuxをコンパイルした経験もありません。Linuxのコマンドはなんとなく理解しているレベルです。AWSに関してこれまでAWSで開発環境を構築した経験はありません。2019年11月にとあるセミナーでAWSアカウントを作成する必要がありAWSアカウントはつくっていました。2021年6月に色々試したのですが、無料利用枠期間(1年間)も既に終了していました。このような背景のため、本件の記事は最適な運用ができていない(無駄にお金を使っている)と思います。後述する費用はあくまで参考、ということにご注意ください。「OpenSTLinuxをコンパイルするとどれくらいの費用がかかるのか」がわからないことでした。調査・学習してからAWSで開発環境構築すれば良いかも思いましたが、知識・経験がほとんどない状態でとりあえず試してみることにしました。合計で32.60ドルの費用がかかりました。次の資料が費用の内訳です。Cloudの部分に費用が集中しています。結果としてOpenSTLinuxがコンパイル環境ができました。OpenSTLinuxの起動イメージをコンパイルし、STM32MP1の評価基板(STM32MP157C-DK2)でOpenSTLinuxがブートできました。OpenSTLinuxの作業内容OpenSTLinuxの環境構築は具体的に次の作業を行いました。OpenSTLinuxのコンパイルに必要なツールの準備OpenSTLinuxのコンパイルに必要なツールをインストールします。packagesを実行します。OpenSTLinuxのコンパイルOpenSTLinuxをコンパイルします。distributionを実行します。9:49頃に確認したら正常終了していました。コンパイル開始後10時間くらいには終了していました。SDKのコンパイルSDKのコンパイルは次の手順を実行しました。https://wiki.st.com/stm32mpu/wiki/How_to_create_an_SDK_for_OpenSTLinux_distribution#SDK_generationSDKのコンパイルは4時間ほどかかりました。SDカード書き込みイメージの作成OpenSTLinuxのSDカード書き込みイメージを作成します。次の手順を実行しました。https://wiki.st.com/stm32mpu/wiki/How_to_populate_the_SD_card_with_dd_command感想AWS費用管理AWS費用管理がザルでした。EC2インスタンスを使わないときも実行してしまっていました。EC2を一切使わないのにインスタンス実行中のまま2日間くらい放置してしまいました。EC2を使わないときはインスタンスを停止することで費用を抑えることができると思います。その辺のコストの感覚というか費用をおさえるために何をしなくてはいけないのかがわかっていませんでした。物理デバイスの取り扱いAWSでコンパイル環境をつくった場合、物理デバイスの取り扱いが少し面倒と感じました。EC2でOpenSTLinux起動イメージができましたがそれをSDカードに書き込むのに少し面倒でした。SDカードへの書き込みは次の手順で実施しました。1EC2上にあるOpenSTLinux起動イメージをscpコマンドでローカルPCにダウンロード↓2ローカルPCのOpenSTLinux起動イメージをSDカードに書き込みローカルPCにVirtualBox+Ubuntuで環境構築できていれば1の手順は必要ありません。SDカードなどの物理的なストレージにOS起動イメージを書き込む際はひと手間必要なことがAWSを使ううえで少し面倒と感じました。上記の点を差し引いてもAWSを使うメリットがあると思いますが知識がないためその辺が理解できていません。最後にLinuxのコンパイルもはじめて、AWSでサーバを立てるのもはじめてで、できるかどうか不安でしたがなんとかできました。これから組込み開発環境をAWSで構築しようと考えていた方のなにか参考になると嬉しいです。最後まで読んでいただいてありがとうございました。組込みソフトウェアエンジニア。技術バックボーンはC言語・ベアメタル。EVカートのオーナーで、ハード・ソフトウェアの改造を通じて自身のスキルアップを日々考え中。バッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。組込みソフトウェアエンジニア。技術バックボーンはC言語・ベアメタル。EVカートのオーナーで、ハード・ソフトウェアの改造を通じて自身のスキルアップを日々考え中。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。