AVRの書き込み基板(その1)

今さらAVRの書き込み基板を作ってます。
ワンボードにAVRを2個乗っけて、モニタ用(マスタ)とプログラム実行用(スレーブ)のそれぞれで使用して、
PCからUSB1本でプログラムの書き込みから実行までできるような基板です。
基板の詳細についてはまた別の機会に書くことにして、早速失敗に気づいたので、まずはそちらから…。

UARTからデータの送受信をするプログラムを作成して実行してみるも、何かうまく行かない。
オシロで見てみるとボーレート自体は問題なさそうだし…って、なんでマイナスの電圧が?というので気づきました、レベル変換入れてない…。
そういう設計でも(仕様通りなら)良かったんですが、少なくとも今使っているUSBシリアル変換はRS-232Cのレベルでしか受けてくれません(なので仕様通りじゃない)。

こういうときのため、以前にMAX232を使ったレベル変換基板を作ったので、それを使ってみることに。
が、これもこれでよく調べてみると、この基板は電源をマイコン側から取るようになっている(当然RS-232Cのコネクタにも電源はないので、MAX232を動かすための電源が取れない)。
今回作った基板は添付の画像のようにRX, TX, GNDの3線しか出していません(ここにVCCがあれば解決する問題だった)。うーん…ダメじゃん。

そうなるとCMOSレベルで受けられる、USBシリアル変換を買うか、あるいは作るかになりそうです。

image

Posted at : 2020-06-07 21:36:56 / Category : none

Raspberry Pi 4b (4GB model)を購入

Raspberry Pi 4b (4GB model)を購入しました。
秋月のセットを購入。
いろんなところで売っているのでどこで買ってもよいんだけど、
電子部品を買う必要があり一緒に通販で購入しました。

当面の用途はローカルのDNSリゾルバにすること。
ルータがEDNS0に対応していないためGoogleのDNSを使っているのですが、
いくらレスポンスが早いと言っても、やっぱりローカルでDNSは持ちたい。
あと、ローカルに常時電源入ったデバイスがほしかったというのも理由。

買うときに少し悩んだのが発熱がどうなのかという点。
早速購入直後の状態で確かめてみたところ、以下の通りでした。

1$ vcgencmd measure_temp
2temp=63.0'C

ちょっと高いかな…。
ちなみに、1コアだけCPUに負荷をかけると以下の通り。

1$ dd if=/dev/random of=/dev/null &
2$ uptime
3 02:18:48 up  2:42,  4 users,  load average: 1.26, 0.47, 0.17
4$ vcgencmd measure_temp
5temp=69.0'C

室温が23度の条件で上記なので、夏場は厳しいかも…。

ちなみに、Power Management の状況を確認したところ、idle時は600MHz、

1$ vcgencmd measure_clock arm
2frequency(48)=600117184

一方で高負荷時は1.5GHzで動作している。

1$ vcgencmd measure_clock arm
2frequency(48)=1500398464

気休めにヒートシンクはつけてみたものの、あまり変わらず…。
うん、何となくそんな気はしていた。
運用してみてあまりにも酷ければ、ファンをつけることも考えよう。

image

必要な設定項目を設定。
GUIは停止して、SSHは常時起動に変更。

1$ sudo systemctl enable ssh
2$ sudo systemctl disable lightdm

最後にバージョンを確認。

1$ lsb_release -a
2No LSB modules are available.
3Distributor ID: Raspbian
4Description:    Raspbian GNU/Linux 10 (buster)
5Release:    10
6Codename:   buster
1$ uname -a
2Linux raspberrypi 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux
Posted at : 2020-05-17 17:16:21 / Category : none

kgdbを使ったカーネルのデバッグ

kgdbを使ったLinux Kernelのデバッグ方法をまとめてみました。
この説明は以下の内容を元にして、具体的な手順を説明したものです。

kgdb, kdb の使い方と、カーネルデバッガーの内部
https://sites.google.com/site/kandamotohiro/linux/kgdb

カーネルの設定の確認

まずはカーネルの設定を確認。以下の通りに設定をします。

1# CONFIG_DEBUG_RODATA is not set
2CONFIG_FRAME_POINTER=y
3CONFIG_KGDB=y
4CONFIG_KGDB_SERIAL_CONSOLE=y
5CONFIG_DEBUG_INFO=y
6CONFIG_MAGIC_SYSRQ=y

ビルドして起動できることを確認します。

ホストとターゲットの構成

ホストとターゲットは2本のUARTで接続します。
1本はカーネルログの出力確認、breakコマンドの入力、シェルの操作を行うために使用します(以降の説明ではUART0)。
もう1本はkgdbの通信用に使用します(以降の説明ではUART1)。

image

UARTが1本しかないケースは、SSHで代替することもできます。
ただし、この場合、任意のタイミングでbreakをかけられないことと、カーネルログの出力が確認できないため、あまりおすすめはしないです。

ターゲットのカーネルを起動する

カーネルの引数にkgdbwait, kgdbocを追加します。
kgdbwaitは、カーネル起動時にkgdbの接続を待ちます。
kgdbocはUART経由でgdbに接続することを指定します。kgdbocには使用するttyとボーレートを設定します。
以下はUART1に対して、115.2kbpsのボーレートを設定しています。

1kgdbwait kgdboc=ttyS1,115200

またカーネルログの出力先は以下のとおりUART0に対して設定します。

1console=ttyS0,115200 

カーネルを起動して、以下の表示が出るとkgdbの接続待ちの状態になります。

1KGDB: Registered I/O driver kgdboc
2KGDB: Waiting for connection from remote gdb...

ホストからターゲットに接続する

ホストからターゲットのカーネルに対して、gdbでアタッチします。

ビルドしたvmlinuxをgdbで読み込みます。
ターゲットがロードしたカーネルがzImageの場合でも、シンボル情報が必要になるためvmlinuxをロードします。

1$ arm-linux-gnueabihf-gdb vmlinux

次にkgdbocでUART1に対してアタッチします。
以下はホストの/dev/ttyUSB2とターゲットのUART1が接続されている例です。

12(gdb) set serial baud 115200
3(gdb) target remote /dev/ttyUSB2

接続に成功すると以下のようにbreakpointで停止します。

10x8016fbb8 in arch_kgdb_breakpoint () at kernel/debug/debug_core.c:1070
21070            wmb(); /* Sync point before breakpoint */

kgdbの操作

ほとんどの操作はgdbと同様に行うことができます。
以下によく使う操作を記載します。
ブレークポイントを設定&実行を再開する
手順はgdbと同様です。
以下はuio_readにブレークを設定する例です。

 1(gdb) b uio_read
 2Breakpoint 1 at 0x803d910c: file drivers/uio/uio.c, line 812.
 3(gdb) c
 4Continuing.
 5[New Thread 1172]
 6[New Thread 1135]
 7[New Thread 1143]
 8[New Thread 1146]
 9[New Thread 1152]
10[New Thread 1153]
11[New Thread 1167]
12[Switching to Thread 1172]
13
14Thread 42 hit Breakpoint 1, uio_read (filep=0x839f9240, buf=0x7ef96c20 "", count=4, ppos=0x83bdff80) at drivers/uio/uio.c:812
15812     {
16(gdb)

任意のタイミングでブレークをかける

任意のタイミングでブレークをかける(つまり実行を停止して、gdbで操作できる状態にする)には、ホストからUART0に対してSysRq + gを入力します。

ホストからUART0への接続にscreenを使っている場合には、Ctrl-a -> b -> gでSysRq + gの入力できます。
SysRq +g を受け付けるとUART0には以下のように表示されます。

1# sysrq: SysRq : DEBUG

gdbは以下のようにブレークがかかります。

1Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
2[Switching to Thread 4294967294]
3kgdb_breakpoint () at kernel/debug/debug_core.c:1071
41071            arch_kgdb_breakpoint();
5(gdb)
Posted at : 2020-05-06 15:45:26 / Category : none

Linux Kernelのmenuconfigで検索をする

カーネルのconfigを一部設定変更したいと思って、menuconfigを探してみるもなかなか見つからないことが多い。
.configをテキストでざっと見つつ、メニューの階層を推測して…といままでやってたんですが、
実はmenuconfig上で検索できることを知りました。これはすごく便利。

やり方は、menuconfigのUIで"/"を入力すると検索ができます。
例えば、MAGIC_SYSRQを探した結果は以下の通り。

image

左側に(3)や(4)などの数字が出ているので、それに対応するキーを押すとジャンプできます。
またselected byやdependsが書かれているので、ここからどういう条件でそのメニューが有効になるか、確認ができます。

Posted at : 2020-05-06 11:22:05 / Category : none

あけましておめでとうございます

あけましておめでとうございます。今年もよろしくお願いいたします。

毎年恒例の目標をまとめてみたました。今年の目標は以下の通り。

  • 英語の listening と speaking の能力をあげる
    • 成果を客観的に見られるように、TOEICなどの試験を受けるようにする
    • 勉強は今まで通り、英字新聞や英語のニュースなどから
  • Linuxの最新情報について定期的にまとめる
    • 最近、日本語の最新情報を見ることが少なくなった気がするので、自分の理解向上のためにまとめていきたい
    • できればソースコードを追いながらできると良い

2020年もがんばっていきたいと思います。

Posted at : 2020-01-01 21:47:53 / Category : none

2019年12月31日

気づくと一年間日記を書いていませんでした。。。

年末なので今年の振り返り。
仕事や家庭などいろいろとありました。
トータルで見れば充実した一年だったのかなぁと思います。

さて、新年に立てた目標は…と見返すと、あまり課題の設定方法が良くなかった気がします。
どちらも具体的な成果にはなっていないものの、自分の中では少しづつできてきてるのかな(笑)

  • 世の中に貢献できるアイディアの実現、適切なアウトプットする
  • 世界を相手に活躍できる足がかりを作っていきたい

今年も一年ありがとうございました。来年もよろしくお願いいたします。

Posted at : 2019-12-31 21:28:39 / Category : none

ディープラーニングはじめてみた

とあるデータの予測をしたいため、ディープラーニングをはじめてみた。

経緯としては、今まではルールベースでの予測だったものの、あまり精度が伸びず。
ディープラーニングでうまくいかないか試行錯誤してみることにしてみました。

まずは手元のMacBookProにTensorflow + Kerasの環境を構築。
UbuntuのVM上で構築したので、pipでさくっと入って良い感じです。
Jupyter notebookを使いたかったけど、こちらはPython 2.7上に入れようとしたのが問題なのか、
依存関係が不適切になってしまい断念。まぁなくてもどうにかなるでしょう。

まずは試しにMNISTのデータセットのexampleを動かしてみる。

https://github.com/keras-team/keras/blob/master/examples/mnist_mlp.py

K520 GPUだと2秒かかる学習をi7-6700HQだと10秒ほど。約5倍…。
実際にモデルを組んでみて、どうにもならなければディープラーニング用のマシンを用意したほうが良いかも。

ひとまず動くところまでは確認できたので、モデルの作り方を検討しながら、Kerasの使い方を調べてみよう。

Posted at : 2018-01-14 20:39:34 / Category : none

あけましておめでとうございます

■ 2017年について

今年は家庭状況が大きく変わりました。
大変なことも多いけど、楽しいことも多く、元気にやってます。

このブログの主としている技術的なことに関していえば、
必要な時間を割くことができずアウトプットがほとんど出せませんでした。
本当に自分が楽しいと思えることをじっくりとやっていくことが大切、と
思えるようになってきたので、着実にやっていくことを心がけていこうと思います。

さて、2017年の目標に対しての到達状況を見てみましょう。

  • 世の中に貢献できる成果を2,3は出していきたい
    • アイディアはいくつか出せた。
    • ただ、アイディアを実現するための作業ができていない。時間的なものもあるけど、あれこれ考えていてうまくいっていない部分が多い。
    • 徐々にだけど考えていくうちに見えてきた部分もあるので、実現させる方向にシフトにしていきたい。
  • 英語をきっちりと喋れるようにしたい
    • 自分としては段々と成長していることが感じられている。
    • 単一の言い回しが多かったり、表現の幅が狭いのでもっと増やしていきたい。
  • 他分野の知識を習得したい
    • 経済、料理は本で学んだり実践したりできた。
    • 特に料理は面白い。外食とかすると「こんな味付けがあるんだ」とか食材の活かし方とか、あれこれ考えながら楽しめる点が良い。

トータルで見れば意外と進んでるのかなと。良かった良かった。

■ 2018年について

大きな方向としては、楽しく面白い一年にしていきたいです。
家庭と仕事とやりたいことと大変なことも多いけど、がんばっていきます。

そんな2018年の目標は以下の通りです。

  • 世の中に貢献できるアイディア
    • 昨年のアイディアから、特に実現することに重点を置いてやっていきたい。
    • アイディアから収益を得られることを目標としていきます。
  • 世界を相手に活躍できる足がかりを作っていきたい
    • 昨年の英語をうまく活かして、海外の人と交流したりつながりを持てるようにしていきたい。その上で世界を相手に活躍できるようにしたい。
    • 1年では難しいと思うのでまずは足がかりから検討していきます。
  • 研究の活動をしていきたい
    • 大学を離れてからはあまり仕事ばかりだったけど、形はどうであれ、研究につながるような活動をしていきたい。
    • 特に今朝の夢がそんな感じだったので、実現すると良いと思う。

あと、日記も全然書いていなかったので書いていこうと思います。

Posted at : 2018-01-01 11:11:07 / Category : none

2017年9月18日

  • 2.4GHz帯のwifiがおかしい
    • 以前から調子悪いなと思ってて、5GHz帯を使うことで回避してる
    • この混信の多さ、根本的にどうにかならないのかなぁ。。。
  • 古いノートPCで5GHz帯にしか対応していないものがあり、余っていた子機で対応を検討
    • が、接続先のSSIDにスペース、パスワードに記号が入っていると登録できないって言われる…。そのSSID、Time Capsuleの初期値なんですけど
    • Web上の設定画面はJSでvalidationしてるから、適当にJS書き換えてみたけど、ファーム側でもvalidatiionしてるみたい。無理やり設定は無理だった
    • 結局、Time Capsule側でゲストネットワーク作って、それを上記要件満たすように変更
Posted at : 2017-09-19 06:05:50 / Category : none

2017年9月16日

料理の四面体を読了。
料理を火、水、空気、油の4要素で考えるとこうなるんだね。
各国の料理の共通性はわかりやすい。

https://www.amazon.co.jp/dp/B073DYQNC9/

午前は立川へ。
最近、日光の眩しさが気になってきて、サングラスを探しに行った。
普段も使えて、スポーツ(自転車)でも使えるのが欲しくて、いろいろと見て回る。
一つの候補はアディダスのかなぁ。その場では購入せず。
帰ってきて、オークリーのFlak Jacketというのも気になる。問題は値段。。。

Posted at : 2017-09-17 09:04:57 / Category : none

2017年9月11日

他の人が自分の日記を見てどう評価するか?ってことばかり考え始めると、
変に肩肘張ってしまって何も書けなくなってしまっていた。

ゆるっと、あったことをそのまま書いていくのが良いのかなぁ、と
とある人の日記を見ながら思ったりして、あれこれと書いてみようかなと。

先週一週間、休みを取って実家に帰って過ごしていた。
休日の濃密感に比べると、平日があっさりと過ぎてしまうことが多く、何かもの足りない…。
気づくともうこの時間なので、さっさと寝なければ。。。

Posted at : 2017-09-11 22:38:36 / Category : none

有料ゴミ袋の色

今住んでいる市の有料ゴミ袋の色(袋自体の色のこと)が以下のようになってるんです。

  • 燃えるゴミ : 緑
  • 燃やせないゴミ : オレンジ

これ、色が逆なんじゃないかなぁと思うんですよね…。
黄色 = 燃えるを想起してしまうような気がするんだけど、そんなことないのかなぁ。。。

Posted at : 2017-01-11 22:02:21 / Category : none

elecom WRC-1167GHBK-Sを使ったVPN接続がうまくいかない

WRC-1167GHBK-Sを使って、L2TP over IPsecをすると接続に失敗する。
パケットをキャプチャしてみると、最初の通信の段階でリクエストに対する、応答が返ってきておらず、タイムアウトしているようにみえる。
試しに、L2TP over IPsecに使用している500番ポートをポートフォワーディングすることで、VPN接続できることが確認できた。

同一の環境でルータの違いだけで問題の有無が変わっているので、
L2TP over IPsecのフォワーディングがうまくできていないんじゃないかなぁ…。
elecomに直接問い合わせをしてみようとは思ったけど、
簡単なサポートを目的とした電話サポート窓口しかないみたいなので、諦めることにした。

Posted at : 2017-01-09 21:06:37 / Category : none

おみくじ

初詣でおみくじを引いた結果、今年は吉でした。
自分の芯を持つように、とのことで、何か仕事上で心当たりのありそうな…
苦労はあるけども頑張りましょう、ってところかなー

Posted at : 2017-01-05 22:35:47 / Category : none

雪の関東は倒竹ばかりです

24日の電車の運行状況はこんな感じでした。
倒竹ってそんなに起きるものなの。。。?

image

Posted at : 2016-11-26 12:16:19 / Category : none

USB 3.1 to HDMI 変換コネクタをどう実現するか?

MacBookPro Late 2016を買ったので、USB 3.1 to HDMI変換コネクタを買おうと思い
Amazonを見てたところ、不安定という記載を見かける。。。
そもそもの話、USB 3.1からHDMIってどう実現すれば良いのか?

USB 3.1の規格を調べてみると、Alternate Modeとしてサポートされるものとして以下のものがある。

  • DisplayPort
  • Thunderbolt 3
  • MHL
  • HDMI

HDMIがサポートされるからバンザイ、って思うのは気が早くて、
どうもサポートしている機器が少ないように見える。
(規格の策定が遅れて、サポートしてくれるベンダーが少なかったのかなぁ。。。)
また、MacBookProの仕様を見ると、DPは記載があるもののHDMIは記載がない。

となると、DPからHDMIに変換していると思うんだけど、これもまた話がややこしい。
DP++であれば直接HDMIの信号を出すことができるけれども、
USB 3.1のAlternate Modeを使った場合、DP++が使えない。
そうなると、いわゆるDPのActive Cableを使ってHDMIに変換する方法と同等のことをする必要がある。

以上から想像としては、以下のような接続になっているのかな?

USB 3.1 <- using Alternate mode -> DP <- DP-HDMI transmitter -> HDMI

元の話に戻ると、不安定な状況が起きているのは、DP-HDMI transmitterが問題なのかな…。
あるいは、MacBookProが出しているDPの帯域がおかしいか?
後者だったらファームウェアで直すことはできると思うけど、対応するかどうかだろうなぁ。

Posted at : 2016-11-23 18:09:45 / Category : none

鳥取砂丘

帰省の時に行った鳥取砂丘
ポケモンやってる人がちらほらといた

image

Posted at : 2016-08-28 15:52:43 / Category : none

Vulkan on Mac/iOS using MoltenVK

MoltenVKなるMac/iOSでVulkanを動かすためのフレームワークがあった。

MoltenVK – Molten
https://moltengl.com/moltenvk/

早速使ってみて、特に問題なく動いている。すごい…。
技術的にはMetalの上にVulkanを実装している。
その発想はなかったけど、確かに原理的にも納得が行くね。

Khronosのサンプルプログラムを動かすためには、少し手をいれる必要があるみたい。
diffとって見た感じだと、SPIR-Vのローダの部分が違うぐらい?

Posted at : 2016-08-28 09:24:54 / Category : none

Customizing Wordpress

Today, I customized Wordpress settings and plugins.
There are many kind of types and plugins, so I'm confusing to select its.

In this time, I studied how to protect viewing Activity or Member page for non-login users.
"BP Simple Private" plugin can realize it. It's very simple solution.

Posted at : 2016-05-15 21:43:14 / Category : none

I will go to Bali at the end of year!!

At least, I bought a air plane ticket that go to Bali at the end of year!
You may thought, it is almost half years later....
However, if we reserve it now, we can buy it for half-price. It's very cheap.
And, fortunately, the ticket can cancel for cheap price. It's very lucky.
I will decide sightseeing places and hotels. It's interesting for me.

Posted at : 2016-05-08 14:18:04 / Category : none