目次: Zephyr
ZephyrのWatchdogのCollaboratorになりました。先日(2020年11月17日の日記参照)CollaboratorになったRISC-VもWatchdogも、元々メンテナーが不在の領域です。
発端はSiFive HiFive1を買った記念にWatchdogドライバを書いたら、割とあっさり動いたので、PRを送ったことです。送ったまでは良かったのですが、メンテナーが不在でした。またこのパターン……。
Zephyrは周辺ドライバが充実しているのが売りですが、メンテナーは不足気味です。今ならサブシステムのCollaboratorくらいなら、何の実績もなくても気前良く追加してくれます。
RTOS興味ある人はいかがですか?
この記事にコメントする
目次: Windows
最近ノートPCというかWindows 10の調子が良くなくて、いきなりハングアップしてCtrl+Alt+Delすら受け付けなくなったり、タスクバーの文字が全部消えて操作できなくなったり、謎の動きをしています。
おかしくなると大抵操作不能で、そのまま電源を切るしかありませんが、今日のヘンテコ現象はちょっと違っていてスクリーンショットを取れました。
Wi-Fiの有効、無効を切り替えても直らず、PCを再起動したら直りました。いったい何だったんでしょうね?
この記事にコメントする
たまに必要になって、いつも調べなおしている気がするので、早く探せるようにメモしておきます。
OpenSSLはAESなどいくつかの処理でハードウェアアクセラレータを使うように実装されています。基本的には /proc/cpuinfoのフラグを見て自動的に設定しますが、たまにアクセラレータを強制的に有効or無効にしたくなるときがあります。
void OPENSSL_cpuid_setup(void)
{
const char *e;
struct sigaction ill_oact, ill_act;
sigset_t oset;
static int trigger = 0;
if (trigger)
return;
trigger = 1;
if ((e = getenv("OPENSSL_armcap"))) {
OPENSSL_armcap_P = (unsigned int)strtoul(e, NULL, 0); //★これ
return;
}
ソースコード(OpenSSLのGitHubへのリンク)をみると、OPENSSL_armcapという環境変数でCPUの持つ機能フラグを好きな値で上書きできることがわかります。
ROCKPro64(Rockchip RK3399, Cortex-A72 + Cortex-A53)で測ってみます。
# AESアクセラレータON $ openssl speed -evp aes-128-gcm type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-gcm 168921.74k 499845.48k 837985.11k 1005767.68k 1070077.27k 1046943.06k # AESアクセラレータOFF $ OPENSSL_armcap=0 openssl speed -evp aes-128-gcm type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes 16384 bytes aes-128-gcm 46764.84k 51727.58k 53175.72k 53730.99k 54086.31k 54220.12k
OFFにするとどのサイズでもほぼ同じ速度になり、いかにもソフトウェア処理っぽい結果になります。アクセラレータのON/OFFが効いていそうですね。
この記事にコメントする
目次: Zephyr
Zephyrは本体(GitHubへのリンク)と、モジュールに分かれています。
モジュールを1つも使わなくてもZephyrは動きますが、sanitycheckを実行するときモジュールに依存したテストでビルドエラーが出て、ノイズになってしまいます。
Zephyrはwestという独自のモジュール管理ツールを持っています。インストール方法は公式ドキュメント(Installing west - Zephyr Project Documentation)にあるとおりです。
$ pip3 install --user -U west
Zephyrとモジュールのダウンロード方法も公式ドキュメント(Getting Started Guide - Zephyr Project Documentation)にあるとおりの手順です。
$ mkdir work $ cd work $ west init $ west update
非常に楽ですね。
あまり推奨されるやり方ではないですが、今まで使っていた「素の」Zephyrのツリーを再利用して、モジュールだけ追加したい場合はどうしたら良いでしょうか?
ポイントはwest initで生成される .west/configというファイルを手動で作ることです。workというディレクトリに今まで使っていたZephyrのコードがあるとします。
$ cd work $ west topdir FATAL ERROR: no west workspace found from "/home/username/work"; "west topdir" requires one. Things to try: - Change directory to somewhere inside a west workspace and retry. - Set ZEPHYR_BASE to a zephyr repository path in a west workspace. - Run "west init" to set up a workspace here. - Run "west init -h" for additional information. $ mkdir .west $ cat > .west/config [manifest] path = zephyr file = west.yml $ west topdir /home/username/work
コンフィグを作ってwest topdirが動作したら、west updateも実行できるようになっているはずです。モジュールは数が多く手動でダウンロードすると大変ですが、westに持ってきてもらえば楽ですね。
この記事にコメントする
| < | 2020 | > | ||||
| << | < | 12 | > | >> | ||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| - | - | 1 | 2 | 3 | 4 | 5 |
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | 31 | - | - |
25年10月6日
25年10月6日
25年9月29日
25年9月29日
20年8月24日
20年8月24日
16年2月14日
16年2月14日
25年7月20日
25年7月20日
25年7月20日
25年7月20日
25年7月20日
25年7月20日
20年8月16日
20年8月16日
20年8月16日
20年8月16日
24年6月17日
24年6月17日
wiki
Linux JM
Java API
2002年
2003年
2004年
2005年
2006年
2007年
2008年
2009年
2010年
2011年
2012年
2013年
2014年
2015年
2016年
2017年
2018年
2019年
2020年
2021年
2022年
2023年
2024年
2025年
過去日記について
アクセス統計
サーバ一覧
サイトの情報合計:
本日: