2016/08/01

[bbg]BeagleBone GreenのUbuntuでUART1を有効にしたい

8月なので心機一転、というか、案件が(不具合がなければ)変わるので、少し違う方面の調べごとをしている。

BeagleBone Green来たる
[bbg]BegleBone Green用のLinuxを作ろう

UARTで制御したいデバイスがあるので、UART1を使うことにした。

image

P9の24ピンと26ピンがUART1だ。


さて、UART0は/dev/ttyS0として見ていて、それをコンソールで使っているようだ。

$ tty
/dev/ttyS0

じゃあ、ttyS1がUART1だろう。

$ ls -l /dev/ttyS*
crw------- 1 ubuntu tty     4, 64 Aug  1 02:42 /dev/ttyS0
crw-rw---- 1 root   dialout 4, 65 Aug  1 02:22 /dev/ttyS1
crw-rw---- 1 root   dialout 4, 66 Aug  1 02:22 /dev/ttyS2
crw-rw---- 1 root   dialout 4, 67 Aug  1 02:22 /dev/ttyS3
crw-rw---- 1 root   dialout 4, 68 Aug  1 02:22 /dev/ttyS4
crw-rw---- 1 root   dialout 4, 69 Aug  1 02:22 /dev/ttyS5

ノードはあるから、使えるんじゃなかろうか。

$ cat hello.txt > /dev/ttyS1
cat: write error: Input/output error

エラーだ。。。
rootになっているからかも、とsudoでやってみたが同じだった。


ネットで検索すると、BeagleBone Blackのことがよく出てくる。
/dev/ttyO系らしいが、uEnv.txtに

cape_enable=capemgr.enable_partno=BB-UART1

などと追加すると良いらしい。

BBGには、/uEnv.txtと/boot/uEnv.txtがあるので、/boot/uEnv.txtに追加した。
dmesgには、カーネルのコマンドラインに追加されるようだ。

Kernel command line: console=tty0 console=ttyO0,115200n8 capemgr.enable_partno=BB-UART1 root=/dev/mmcblk0p1 rootfstype=ext4 rootwait fixrtc

が、変わらず。。。
dmesgを見ると、ttyO0はttyS0に置き換えました、と出てるので、/dev/ttyO1があるのを期待してみたが、無い。

$ sudo cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:8250 mmio:0x44E09000 irq:155 tx:21075 rx:461 RTS|CTS|DTR|DSR
1: uart:unknown port:00000000 irq:0
....

あら、unknown扱いになっているので、ドライバが見えていない?

https://eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-LinuxKernel
ここに「see: BeagleBone Black#capemgr.v4.1.x+」というリンクがあるな。
capemgrというのが何だか知らないけど、当時のブログに何も書いていないから、やっていないのだと思う。


capemgr: v4.1.x+のところを順番にやっているのだが、installのところで64bit OSはサポートしていないというエラーが出てしまう。

はっ、もしかして、これはBeagleBone上で行う作業なのか??
PC上でスクリプトを動かして、/usr/local/binにdtcとかいうコマンドがコピーされてしまったよ。。。

 

/boot/uEnv.txtに追加するやつで

dtb=am335x-boneblack-overlay.dtb

があるけど、am335x-bonegreen-overlay.dtbもあったので、そちらにしておこう。
最終的にはこうなった(uname_rは最初から入っていた)。

uname_r=4.4.10-bone10
dtb=am335x-bonegreen-overlay.dtb
cape_enable=bone_capemgr.enable_partno=BB-UART1

では、再起動して確認。

$ sudo cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:8250 mmio:0x44E09000 irq:155 tx:8210 rx:74 RTS|CTS|DTR|DSR
1: uart:8250 mmio:0x48022000 irq:187 tx:0 rx:0 CTS|DSR|CD|RI
2: uart:unknown port:00000000 irq:0
....

出てきた出てきた。

$ cat hello.txt > /dev/ttyS1
$

エラー出なくなった。
やれやれですわ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。