みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

2019-01-01から1年間の記事一覧

NuttXをnRF52840-DKで動かす

はじめに NuttXがnRF52840-DKに対応したっぽいので動かしてみる。 ARMのツールチェインの設定方法についてはここを参照。 J-Linkツールの設定方法についてはここを参照。 NuttXの作成 ソースの取得 $ git clone https://bitbucket.org/nuttx/nuttx.git $ git…

Longan nanoをUbuntu 18.04のPlatformIOでハロワ

はじめに Lチカが動いたのでシリアルでHello worldしてみる。 このハロワは失業と関係ない 今時の人たちはHello worldを「ハロワ」と略すらしい。 当時在籍した会社が潰れてハローワークにお世話になった経験がある筆者は、このワードからは悲壮感しか無い。…

Longan nanoをUbuntu 18.04のPlatformIOでLチカ

はじめに 安価なRISC-Vボードとして国内でも比較的入手が簡単なLongan nanoを入手した。 開発環境としては当ブログでもおなじみのPlatformIOに対応している。 国内で入手が容易なせいか日本語の情報も多いが、Windows環境での動作報告記事が多いので、ここで…

Yocto Project 3.0(Zeus)でラズベリーパイ4を動かす

はじめに 技適が通り、やっと国内で流通し始めたラズベリーパイ4が手に入ったので、Yocto Projectで動かしてみる。 発熱がすごいらしいのでファン付きのケースも同時に購入した。 構築手順 ソース取得 依存関係がいつの間にか改善されている。最小限の構成で…

ベアメタルのHiFIve1 Rev.BでHello world

はじめに 前回ベアメタルでLチカは動いたので、今度はシリアルを動かす。 ホストPCの環境はUbuntu 18.04 UARTのポート HiFive1 Rev.BをPCに接続すると/dev/ttyACM0と/dev/ttyACM1が見えるようになる。 この内/dev/ttyACM0はデバッグコンソールとして使える。…

ラズベリーパイ3でYocto Project 3.0(Zeus)を試す

はじめに Yocto Project 3.0(Zeus)がリリースされていたのでラズベリーパイ3で動かす。 構築手順 ソース取得 $ mkdir -p rpi-zeus/layers $ cd rpi-zeus/layers $ git clone git://git.yoctoproject.org/poky.git -b zeus $ git clone git://git.yoctoproje…

ベアメタルでHiFIve1 Rev.Bを動かす

はじめに PlatformIOでHiFive1 Rev.Bを動かすで下記のように書いたので ベアメタルで動かしてみる。 標準のライブラリやヘッダは使っていないので、リンカスクリプトとスタートアップを書けば、 ベアメタルでもこのまま動くはず。 リンカスクリプト リンカス…

PlatformIOでHiFive1 Rev.Bをデバッグする

はじめに 前回はPlatformIOでLチカの実行までしたので、デバッグ方法調べる。 pio debug 特にplatform.iniを書き換えたりする必要もなく次のコマンドでデバッグを開始できる。 $ pio debug --interface=gdb Warning! Please install `99-platformio-udev.rul…

PlatformIOでHiFive1 Rev.Bを動かす

はじめに HiFive Rev.Bを入手したのでまずはPlatformIOでLチカする。 プロジェクトの作成 次のコマンドを実行し、PlatformIOのプロジェクトを作成する。 $ platformio init --board hifive1-revb 無印とはブートアドレスが異なるので、ボードもhifive1-revb…

ラズベリーパイ3の(ソフトウェア)PWMで回転サーボを動かす

はじめに 秋月電子でも入手可能な回転サーボ FS90R を入手したので動かしてみる。 環境はwarrior(Yocto 2.7)でmeta-raspberrypiを使用する。 環境構築 ここの「環境構築」を参照。 local.confに下記の内容を追加する。 IMAGE_INSTALL_append = " rpi-gpio" c…

ざっくりとALSAとPulseAudioの関係(の続きのようなもの)

はじめに 以前に書いた2015-04-04 ざっくりとALSAとPulseAudioの関係が未だにアクセスがあるようなのでちょっと振り返ってみる。 基本的な理解としては、 最終的に音を鳴らすのはデバイス デバイスを叩くためにデバイスドライバ(カーネルランド) サウンド関…

Yocto環境 callgrindでコールグラフを作成する

はじめに Linuxのユーザー空間のアプリをデバッグする際に、関数が実際にどのように呼び出されているのかを見たいことがある。 valgrindにはcallgrindというツールがあり、これを使うとコールグラフを生成することができる。 ターゲットにRPi3 Model Bを使用…

ラズベリーパイ3 warriorのglimagesinkがエラー

2019/10/09 追記 はじめに warrior(2.7)でcore-image-baseを作ってgstreamerで遊ぼうとしたら、次のコマンドでエラーが発生した。 $ export GST_GL_WINDOW=dispmanx ; export GST_GL_API=gles2 ; export GST_GL_PLATFORM=egl $ gst-launch-1.0 v4l2src devic…

Emacs shell-script-modeのフック

はじめに (を入力すると対応する)を自動で入力してくれるsmartparens-mode。 シェルスクリプトを書く時にも便利なので、init.elでshell-script-modeにadd-hookしたいと思ったが、 少しハマった。 shell-script-modeのフック 最初は次のようにhookを追加しよ…

DE0-Nano-SoCをyocto(warrior)で動かす

はじめに Cyclone-Vのカスタムボードを動かす必要に迫られたが、Cyclone-Vでの環境構築が明るくない上に、 ボードがうまく動かなかったため勢いに任せて既製品のボードを買ってしまった。 カスタムボードが動かなかったのは結局のところハードウェア不良が原…

gitbook-templateを試す(その3)

はじめに 前回のつづき。 Dockerベースのgitbook-templateを使用していて、book.jsonでtitleに日本語を使用するとPDFに変換した時に文字化けするので調べた。 コンテナのロケール おそらくコンテナのロケールがデフォルトのままであるため日本語が使用できな…

gitbook-templateを試す(その2)

はじめに 前回のつづき。 PDF出力時の日本語フォントなど、細かいところは調整が難しい感じ。 と書いたが、Dockerfileをおいてどうにかできないか試してみた。 作業環境は前回のものをそのまま引き継ぐ。 Dockerfileのリポジトリ オリジナルのDockerfileはHe…

gitbook-templateを試す

はじめに HeRoMo/gitbook-template: A gitbook project templateがよさそう。 Gitbook 環境 マイ・ベストを参考に作業する。 が。docker関連が一切入っていないのでそこから。 dockerのインストール Ubuntuではsnapで入れる方法が簡単。ここが参考になる。 …

NuttXアプリケーションの作成を補助するスクリプトを作った

はじめに NuttXで小さい書捨てのアプリケーションをたくさん作る必要が出てきたので、 アプリケーションの雛形を出力するスクリプトを自分用に作成した。 せっかくなので(?)、githubに置いといた。 スクリプトがやっていることの詳細はここを参照。 使い方 n…

Zephyrにアプリケーションを追加する

はじめに 環境変数の読み込み 作成するファイル CMakeLists.txt prj.conf src/main.c ビルド 実行 まとめ はじめに Zephyrに自作のアプリケーションを追加したい。 ここの手順を参考にする。 環境変数の読み込み とりあえず一番始めにsource zephyr-env.shを…

Zephyrでデバッグ

はじめに コンフィグレーション menuconfig デバッグ用設定 デバッグ開始 gdbgui まとめ はじめに Zephyrのアプリケーションをデバッグする。ターゲットはSTM32F4Discoveryを使用する。 コンフィグレーション menuconfig westでmenuconfigを開くには次のよう…

ZephyrをSTM32F4Discoveryで試す

はじめに 準備 west ninja CMakeの更新 Zephyr SDK Zephyrのソースを取得 依存パッケージのインストール westでビルドする 対応ボードを調べる Hello worldをビルドする westで書き込む まとめ (おまけ)qemuで実行 はじめに Zephyrの勉強のためにとりあえず…

yoctoでもRust

はじめに 最近流行りのRust。meta-rustを使えばyocto環境でもRustアプリケーションを使えるようにできる。 meta-rustネタとしてはこちらに先を越されたが、試したブランチがsumo、rockoと古めなのと観点がRust開発者よりなので、本記事ではすこしyocto的に見…

tinygoでnRF52840-DK(PCA10056)を動かす

はじめに nRF52840 Development Kitを入手したのでtinygoで動かしてみる。 tinygoのインストール Ubuntu 18.04にtinygo-0.5.0をインストールするの手順でインストール済みであることを想定。 ツールのダウンロード nrfjprogコマンドが必要なので、下記からコ…

Ubuntu 18.04にtinygo-0.5.0をインストールする

はじめに つい先日、Ubuntu 18.04でtinygoをインストールする手順を書いたが、 この短期間でLLVMが8になったようで、前回の記事の内容はほぼ使えなくなったので書き直す。 ここの手順が更新されており、 Ubuntuではビルド済みのdebパッケージが提供されてい…

NuttXでmbedTLSを動かす

はじめに NuttXでmbed TLSを動かす。 3年ほど前にMarceloさんが一度移植したらしいので、ここを参考にする。 ただし情報が古くその間にNuttXも新しくなっているのでこのままではうまく行かない。 今回使用するターゲットはSTM32F4Discovery。 NuttX まずはNu…

npm install -g mermaid-filterでエラー

はじめに pandocの環境を再構築するために、mermaid-filterをインストールしようとしたら次のエラーが出てハマった。 $ sudo npm install -g mermaid-filter /usr/local/bin/mermaid-filter -> /usr/local/lib/node_modules/mermaid-filter/index.js > puppe…

yoctoでjetson nanoを動かす

はじめに meta-tegraがjetson nanoに対応したので、yoctoで動かしてみる。 いくつか注意点 readmeに重要な注意点がいくつか書いてある。 jetpackは必要 cuda10を使用する関係でgccは7系固定 Jetson-TX1についても書いてあるけど関係ないので無視。 そして最…

TinyGoをSTM32F4Dicoveryで動かす

はじめに TinyGoの勉強を兼ねてSTM32F4Dicoveryへ移植してみる。 LチカとHelloWorldを動かせれば良いので、次のペリフェラルのみ動かす。 GPIO UART(USART2) 実際に動かしたサンプル。 examples/brinky1(Lチカ) examples/brinky2(gofuncの並列Lチカ) example…

tinygoでBluePill

はじめに tinygoを作ったので、BluePillで動かしてみる。 ここの手順を参考にする。 テストを実行 このコマンドはどこのディレクトリでも実行可能。 $ tinygo run examples/test デバイスターゲットの生成 これは最初にやっておく必要があるらしい。 $ cd $G…