みつきんのメモ

組み込みエンジニアです。Interface誌で「My オリジナルLinuxの作り方」連載中

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的に見…

Zigを試す

はじめに 最近のマイブーム(死語)はマイナー環境へのトライなのか、海外ではじわじわ来てそうなZigを試してみる。 インストール Ubuntuなのでsnapでインストールできる。 $ sudo snap install zig --classic --edge emacsのモード M-x package-installでzig-…

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…

Ubuntu 18.04でllvm-7系パッケージを削除する方法

はじめに 地味にデスクトップ環境が依存しているので引っこ抜くのが大変 削除方法 gvfs-daemonsがlibllvm7に依存しているらしいのでちょっと大変 まずは消せるだけ消す。 $ sudo apt purge -y clang-7 lldb-7 lld-7 $ sudo apt purge -y libllvm-7-ocaml-dev…

Ubuntu 18.04にtinygoをインストールする(2019/04編)(4/7追記)

はじめに Ubuntu18.04でtinygoをインストールしようとしたらハマったのでメモっておく。 基本はここの手順。 Requirement Go 1.11+ LLVM 7 (for example, from apt.llvm.org あとは、ターゲットのツールチェイン。 ARM Cortex-M AVR(Arduino) WebAssembly 詳…

Yocto gdbserverでリモートデバッグ

はじめに gdbserverによるリモートデバッグ環境を今まで真面目に作ったことがなかったので調べてみた。 詳細な手順はここで紹介されている。 ターゲットはラズベリーパイ3。 この方法は、ターゲットにインストールされている既存のアプリケーションのデバッ…

pandoc + reveal.jsの使い方

はじめに 2年ほど前にインターフェースオフ会の発表資料を作成した時にpandoc + reveal.jsを使ったが、使い方をまとめていなかったので思い出しがてらまとめる。 ただ、この時の発表では会場でノートPCが壊れて起動しないという散々な状況だったので、私とし…

GNU Global(gtags)の対応言語を増やしてみる

はじめに 最近、仕事でgoのコードを読む必要が出てきた。 コードを読む時はemacs+gtagsを使用しているが、デフォルトではgoは対応していない。 ここにPygmentsとexuberant-ctagsを使ってgtagsの対応言語を増やす方法が紹介されてたので試してみる。 作業環境…

RISC-Vのベアメタル入門(自分用) 割り込み(CLINT)編 その2

はじめに 追記しました(3/28) 題名がもうなんだかわからなくなってきたが、とりあえずCLINT編の続き。 前回、michaeljclark/riscv-probeの割り込みベクタとハンドラの部分を調査した。 実際にこの部分を動かしているサンプルであるprobe.cを実行してみたとこ…

NuttX ビルトインアプリケーションを作成する

はじめに NuttXにビルトインアプリケーションを追加する方法を調査した。 ここが日本語でよくまとまっていた。 プログラムを作成する場所 プログラムをどこに追加するかと言うのが一つ考えどころだが、apps/README.txtによると、 Use of the name ''apps/ext…

RISC-Vのベアメタル入門(自分用) 割り込み(CLINT)編

はじめに RISC-VというかFE310の割り込み周りについて勉強する。 取っ掛かりとしてはここが分かりやすかった。 割り込みの種類 RISC-V ISAではグローバル割り込み(global interrupt)とローカル割り込み(local interrupt)が定義されている。 HART(HARdware Th…

meta-raspberrypyの環境でlinux5.0のdevice-tree-overlaysがビルドできない問題の調査(3/15追記)

はじめに ただしこっちのカーネルでもoverlaysがビルドエラーを起こすので、それは調査する必要がある。 ので調査した。 ログを観察する タスクごとのログファイルはtmp/work/raspberrypi3-poky-linux-gnueabi/linux-raspberrypi/1_5.0.0+gitAUTOINC+00794df…

raspberrypi3 yoctoでLinuxカーネル5.0を試す(ラズパイカーネル編)

はじめに RPiのカーネルはこっちで管理されているが、まだ5.0-rc8なのでバニラカーネルを試すことにした。 もう-rc8が取れてたので、こっちも動かしてみる。 基本的な方針は前回と変わらずに下記のようにする。 meta-raspberrypiのカーネルとはバージョンが…

yocto SSH越しでbitbake virtual/kernel -c menuconfigが失敗する場合の対処

はじめに ubuntuを使っていて、SSH越しにbitbake virtual/kernel -c menuconfigや-c devshellをすると、次のエラーが出て失敗する事がある。 ERROR: linux-raspberrypi-1_5.0.0+gitAUTOINC+00794df915-r0 do_menuconfig: Unable to spawn terminal auto: Exe…

raspberrypi3 yoctoでLinuxカーネル5.0を試す(バニラカーネル編)

はじめに Linuxカーネル5.0がリリースされたのでmeta-raspberrypiの環境で試そうと思ったら、いろいろと罠があって4日も経ってしまった。 RPiのカーネルはこっちで管理されているが、まだ5.0-rc8なのでバニラカーネルを試すことにした。 meta-raspberrypiの…

RISC-Vのベアメタル入門(自分用) UART編

はじめに 前回動かした環境でUARTを動かしてみる。 具体的には、またdwelch67/sifive_samplesを写経する。 UARTのレジスタ構成 SiFive FE310-G000 Manual v2p3から抜粋する。 UARTレジスタ 必要なレジスタは7つ。 注意する点としては、txdataのところにこん…