サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
WWDC25
qiita.com/tetsu_koba
** 2022/05/13 新しい記事を書いたのでこちらを参照してください。 https://zenn.dev/tetsu_koba/articles/d931a843f16a4c ** 以降は古い記事。 以前に書いたラズパイ+momoでWebRTCで送信するときにマイクの代わりに音声ファイルを使用する と同じことをjetson nano でもやってみました。 オーディオループバックのカーネルモジュールのビルド なんと、jetson nano のカーネルではオーディオループバックのカーネルモジュール(snd-aloop.ko)が標準では入っていません。 そこで自分でこれをビルドします。 ビルドの手順は以下のページの手順にそってやって問題なくできました。 https://developer.ridgerun.com/wiki/index.php?title=Jetson_Nano/Devel
** 2021年6月26日の追記 ** ELP社のカメラの売れ筋のものは現在はamazonで購入できるようになっています。 ** 追記ここまで ** 最近いくつかの4K webcamを買って試したのでメモを残します。 2019年11月の情報です。 入手可能な4K webcam webcamといえばとてもたくさんのものが出回っているのですが、4K (3840x2160)の解像度で30fpsをだせるものとなると実はあまりありません。2万円くらいで購入可能なものは以下のものです。 ロジクール BRIO AliExpress で購入可能なELP社のUSBカメラ BRIOとELP社のカメラ3種の合計4機種を試したので、それぞれについてコメントします。 ロジクールBRIO まず最初にみつかる4Kのwebcam はこれだと思います。 価格が2万円超で同社のフルHDクラスのwebcamの倍しますが、画質は
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
先日の記事の続き。 RustでLinuxのinput eventをダンプする (bindgen使用) ビルド時にbindgenするように変更 bindgen users guide のチュートリアルに従って、cargoでビルドするときにbindgenを実行するようにbuild.rsを作りました。 そのソースコードはgithubに置きました。 クロスビルドに対応できるようにbuild.rs を修正 ARM64向けにクロスビルドするとbindgenでエラーが発生するようになりました。 クロスビルドのときには参照するシステムのヘッダファイルもそれに応じて変える必要がありますが、それがbindgenに伝わっていないのが原因です。 環境変数 SYSROOTが設定されている場合には、それを--sysroot=に反映させるようにbuild.rs を書き直しました。 extern crate bindge
use std::env; use std::fs; extern crate chrono; extern crate schedule_recv; use schedule_recv::periodic_ms; fn read_transfer_bytes(f: &str) -> u64 { match fs::read_to_string(f) { Ok(s) => s.trim().parse().unwrap_or(0), Err(err) => { panic!("Failed to read:{} Err={:?}", f, err); } } } fn net_activity(ifname: &str) { let interval = 2000; let txf = &format!("/sys/class/net/{}/statistics/tx_bytes", if
自宅に置いたラズパイ(つまり、NATの内側にあるのでインターネット側からは直接は見えないところにある。)を外からsshでログインできるようにしてみました。いろいろと応用できそうなので、ここに記録を残します。 概要 外からsshでログインできるクラウドの仮想マシンを用意して、それを経由してラズパイにアクセスできるようにします。 ラズパイが起動したら、そのクラウドの仮想マシンにSSHのトンネルを作るようにしておきます。 これで、いつでもクラウドの仮想マシンからラズパイにsshでログインできるようになります。 (気が向いたら図を描く) 準備 今回はクラウドの仮想マシンとしてAWSを使いました。 pemファイルでログインできるようにしておき、そのpemファイルをラズパイに置きます。 また、その仮想マシンのパブリックのIPアドレスは固定になるように設定しました。 ここではその仮想マシンをaws001
前回のffmpeg 4.0 をlibsrtを有効にしてビルドするの続き。 ffmpeg 4.0のlibsrtのサポート。軽い気持ちで試して見ようとしたら、いきなりバグを踏んだらしい。試行錯誤の末、ffmpeg側にパッチをあてることで動いた。本来ならバグレポートするところだけど、現状あまりにSRTのことをわかっていないので、とりあえずブログにメモを残そう。 — 組み込みの人。 (@tetsu_koba) 2018年4月27日 SRTとは "SRT is an open source video transport protocol and technology stack that optimizes streaming performance across unpredictable networks with secure streams and easy firewall traver
Golangではシステムコールのmmapを使用することができるので、/dev/mem かUIOで作成した/dev/uioX をmmapすれば物理メモリを読み書きすることができます。 ここではUIOを使った例を紹介します。 UIOのデバイスを登録する UIOについてはこの記事を参照してください。 LinuxのUIO(User space I/O) その1 この記事に従って、/dev/uio0 が作成できたとして、次にそれをGolangで書かれたプログラムからアクセスする方法を示します。 Golangのサンプルプログラム ソースコードはgistに置きました。ここ func mmapRegs32(addr uint32, n int) []uint32 { file := "/dev/uio0" f, err := os.Open(file) if err != nil { log.Fatal(
マイコン開発でハマったことを書いておく。2度同じミスをしないため。 マイコンが一つ増えると考えるべき状況が格段に増して難易度が高くなる SoC+マイコン1個 からSoC+マイコン2個に増えたときの難易度の増加を甘くみてはいけない。 相手の電源が入っていない時やハングアップしたときのリカバリ、共有すべき情報の同期のことを考えよう。 マイコンの個数は少ないほうがよい。もちろん増やさざるをえない場合もある。その場合は油断しないで覚悟しよう。 ピン数が足りないためにデバッグ用のポートをつぶしてしまうと開発がつらい フルカラーLEDを3つつけるとそれだけでGPIOポートが9つ必要になる。 部品コスト削減のためにピン数の少ないマイコンを使用し、デバッグ用のポートもGPIOに流用せざるをえないこともある。 マイコンのソフトはそれほど複雑なことはやっていないとはいえ、デバッガがつながらないと想定通りに動か
一年近く、組み込みLinuxでのユーザープロセスをgolangで書くことを試していたのですが、これはいける! という感触を持ちました。 仲間を増やしたいと思うので、ここにその情報を紹介します。 #何をしたか 既存の製品をベースにして、新機能の実装をGolangで書いてみました。 既存の部分はCで書いてあります。Golangで書いた新機能部分は別プロセスになっています。 既存部分とのやりとりは場面によって以下を使い分けました。 cgoによる関数呼び出し UNIXドメインソケットの通信 シグナル Golangで書いた部分には以下の要素を含みます。 UARTやi2cで接続されたセンサーからデータを受け取る インターネット上のWebサービスのAPIを使用する 2Dグラフィックスの描画 (cairoを使用) 最大性能を目指すよりも、十分な性能を手早く形にすることを重視しました。 #Golangでよか
#はじめに 組み込みLinuxで開発していると、カーネルでなくてユーザープロセスから物理メモリ空間上のレジスタを読み書きしたい場面が出てきます。 これは /dev/mem を使えば実現できるのですが、制限事項があります。 /dev/memの読み書きにはroot権限が必要。 逆にroot権限で/dev/memをアクセスすると際限なく全てのメモリにアクセスできてしまうので、セキュリティの観点で難あり。 例えば、Androidではアプリケーションのプロセスはroot権限を持っていないので/dev/mem は扱えません。 指定した範囲のメモリだけ、指定した権限でアクセス可能にできればいいのになあ。 それ、UIOでできます。 #UIOとは UIO(User space I/O)は、デバイスドライバの大部分をユーザー空間側で書けるようにするインタフェースです。カーネル側に書かなければならないコードはほ
前回の続き。 #従来のremoteモードではできなくて、extended-remoteモードで可能になったこと それは、gdb側からの操作で新たなデバッグ対象プロセスを起動することです。つまり run コマンドの実行。 また、デバッグ対象プロセスをまだ起動していない状態で、gdbとgdbserverの間でファイルを転送することができます。 この2つを合わせると、「修正された実行ファイルをターゲットに送信して、それを起動してデバッグを開始する」というのがgdb内で完結できます。 #リモートデバッグのサイクル 以下の1-5を繰り返す。 ソースコードを修正する コンパイル、リンクして実行ファイルを作成する 実行ファイルをターゲットに転送する 実行ファイルを起動する ブレークポイントをかけたり、変数を見たりしてデバッグ 従来のremoteモードでは3はscpで転送したりNFSにしたり別の方法での実
gdbからgdbserverに接続してリモートデバッグするときに従来のremoteモードに加えて、extended-remoteモードが使用できます。 #従来のremoteモードとextended-remoteモードの比較 remoteモードではgdbserverを起動する段階でどのプロセスをデバッグ対象とするのかを決める必要がありました。(新たにプロセスを起動するか or 実行中のプロセスにアタッチするか) そして、デバッグが終了してgdbとgdbserverの間の通信が切れた段階でgdbserverのプロセスは終了していました。 extended-remoteモードではデバッグ対象を決めずにgdbserverを起動させておくことができ、gdbと接続した後にデバッグ対象のプロセスを決めてアタッチすることができます。またデタッチした後もgdbserverは生き続けて、再度同じまたは別のプロ
このページを最初にブックマークしてみませんか?
『@tetsu_kobaのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く