Changes between Initial Version and Version 1 of epics/bbb/seralx4_cape


Ignore:
Timestamp:
11/29/13 11:42:44 (11 years ago)
Author:
Tetsuya Michikawa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • epics/bbb/seralx4_cape

    v1 v1  
     1= RS232C x4 Capeの作成 =
     2
     3[http://beagleboard.org/Products/BeagleBone%20Black BeagleBone Black]上のCPUには6個のUARTが載っていて、そのうちの1つはシリアルコンソール用、それ以外の5本が拡張IOで使用可能になっている。
     4(厳密には、3番ポートがTxのみなので4.5本だが、、、)[[br]]
     5これを使って、[http://japan.moxa.com/product/NPort_5410.htm MOXAの4ポートシリアルコンバータ]の代わりにならないかということで作り始めた。+αとして単体でEPICS動作が可能なので、IOCの分散にもつながる。
     6
     7== Hardware ==
     8
     9[http://beagleboard.org/Products/BeagleBone%20Black BeagleBone Black]側はUART1,2,4,5を使うことにし、CTS/RTSはつながない。[[br]]
     10EEPROMはつけておくことにする。
     11
     12=== HDMI OFF ===
     13
     14
     15今回のHWでは、UART5とHDMI出力が被ってしまう。今回は画面が必要ないので、HDMI出力を停止させることにした。[[br]]
     16HDMI出力の確認は、
     17{{{
     18root@beaglebone:/media/card# cat /sys/devices/bone_capemgr.8/slots
     19 0: 54:PF---
     20 1: 55:PF---
     21 2: 56:PF---
     22 3: 57:PF---
     23 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
     24 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
     25}}}
     26
     27で行う。[[br]]
     285にHDMIのモジュールが読み込まれているのがわかる。"P-O-L"の"L"が"Load"ということらしく、これが消えればいいらしい。[[br]]
     29設定は、ブートローダーで行うので、boot領域をmountして、uEnv.txtを書き換える。
     30
     31{{{
     32root@beaglebone:~/cape/UARTx4# df
     33Filesystem     1K-blocks    Used Available Use% Mounted on
     34rootfs           3369444 1641652   1553304  52% /
     35/dev/root        3369444 1641652   1553304  52% /
     36devtmpfs          255228       0    255228   0% /dev
     37tmpfs             255356       0    255356   0% /dev/shm
     38tmpfs             255356     232    255124   1% /run
     39tmpfs             255356       0    255356   0% /sys/fs/cgroup
     40tmpfs             255356     232    255124   1% /etc/machine-id
     41tmpfs             255356       0    255356   0% /tmp
     42/dev/mmcblk0p1     72102   59252     12850  83% /media/card
     43root@beaglebone:~/cape/UARTx4# cd /media/card/
     44root@beaglebone:/media/card# ls
     45App   Drivers  LICENSE.txt  README.md  autorun.inf  uEnv.txt
     46Docs  ID.txt   MLO          START.htm  u-boot.img
     47root@beaglebone:/media/card# vi uEnv.txt
     48optargs=quiet
     49          ↓
     50optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN
     51}}}
     52
     53設定を書き換えたらreboot。[[br]]
     54reboot後は、画面に何もでなくなるので注意すること。[[br]]
     55sshで他のマシンからログインして、状態を確認。
     56
     57{{{
     58root@beaglebone:/media/card# cat /sys/devices/bone_capemgr.8/slots
     59 0: 54:PF---
     60 1: 55:PF---
     61 2: 56:PF---
     62 3: 57:PF---
     63 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
     64 5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
     65 6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
     66}}}
     67
     68この状態になっていればOK。
     69
     70=== Cape回路図 ===
     71
     72今回の回路は、各uartにRS232CのレベルコンバータとEEPROMを載せるだけの簡単なものにする。
     73
     74[[Image(BBBSerialCape.png,300px)]] [[Image(BBBSerialCape_board.png,300px)]]
     75
     76
     77== firmware ==
     78
     79firmwareのひな形は/lib/firmwareにあったので、それを編集して作成。
     80
     81{{{
     82/*
     83* Copyright (C) 2013 Tetsuya Michikawa <hig-mchi@post.kek.jp>
     84*
     85*  BeagleBone Black UART 1,2,4,5 used RS232c cape
     86*/
     87/dts-v1/;
     88/plugin/;
     89
     90/ {
     91        compatible = "ti,beaglebone", "ti,beaglebone-black";
     92
     93        /* identification */
     94        part-number = "cape-bone-uartx4";
     95        version = "00A0";
     96
     97        /* state the resources this cape uses */
     98        exclusive-use =
     99                /* the pin header uses */
     100                "P9.24",        /* uart1_txd */
     101                "P9.26",        /* uart1_rxd */
     102                "P9.21",        /* uart2_txd */
     103                "P9.22",        /* uart2_rxd */
     104                "P9.13",        /* uart4_txd */
     105                "P9.11",        /* uart4_rxd */
     106                "P8.37",        /* uart5_txd */
     107                "P8.38",        /* uart5_rxd */
     108                /* the hardware ip uses */
     109                "uart1",
     110                "uart2",
     111                "uart4",
     112                "uart5";
     113
     114        fragment@0 {
     115                target = <&am33xx_pinmux>;
     116                __overlay__ {
     117                        bb_uart1_pins: pinmux_bb_uart1_pins {
     118                                pinctrl-single,pins = <
     119                                        0x180 0x20 /* P9.26 uart1_rxd.uart1_rxd  INPUT  */
     120                                        0x184 0x20 /* P9.24 uart1_txd.uart1_txd  OUTPUT  */
     121                                >;
     122                        };
     123                        bb_uart2_pins: pinmux_bb_uart2_pins {
     124                                pinctrl-single,pins = <
     125                                        0x150 0x21 /* P9.22 spi0_sclk.uart2_rxd | MODE1 */
     126                                        0x154 0x01 /* P9.21 spi0_d0.uart2_txd | MODE1 */
     127                                >;
     128                        };
     129                        bb_uart4_pins: pinmux_bb_uart4_pins {
     130                                pinctrl-single,pins = <
     131                                        0x070 0x26 /* P9.11 gpmc_wait0.uart4_rxd | MODE6 */
     132                                        0x074 0x06 /* P9.13 gpmc_wpn.uart4_txd | MODE6 */
     133                                >;
     134                        };
     135                        bb_uart5_pins: pinmux_bb_uart5_pins {
     136                                pinctrl-single,pins = <
     137                                        /* the uart pins */
     138                                        0x0C4 0x24 /* P8.38 lcd_data9.uart5_rxd | MODE4 */
     139                                        0x0C0 0x04 /* P8.37 lcd_data8.uart5_txd | MODE4 */
     140                                >;
     141                        };
     142                };
     143        };
     144
     145        fragment@1 {
     146                target = <&uart2>;      /* really uart1 */
     147                __overlay__ {
     148                        status = "okay";
     149                        pinctrl-names = "default";
     150                        pinctrl-0 = <&bb_uart1_pins>;
     151                };
     152        };
     153        fragment@2 {
     154                target = <&uart3>;      /* really uart2 */
     155                __overlay__ {
     156                        status = "okay";
     157                        pinctrl-names = "default";
     158                        pinctrl-0 = <&bb_uart2_pins>;
     159                };
     160        };
     161        fragment@3 {
     162                target = <&uart5>;      /* really uart4 */
     163                __overlay__ {
     164                        status = "okay";
     165                        pinctrl-names = "default";
     166                        pinctrl-0 = <&bb_uart4_pins>;
     167                };
     168        };
     169        fragment@4 {
     170                target = <&uart6>;      /* really uart5 */
     171                __overlay__ {
     172                        status = "okay";
     173                        pinctrl-names = "default";
     174                        pinctrl-0 = <&bb_uart5_pins>;
     175                };
     176        };
     177};
     178
     179}}}
     180
     181このファイルをコンパイルして、firmwareを作成。[[br]]
     182これを/lib/firmwareにコピーして、ロードさせてみる。
     183
     184{{{
     185root@beaglebone:~/cape/UARTx4# dtc -O dtb -o cape-bone-uartx4-00A0.dtbo -b 0 -@ cape-bone-uartx4-00A0.dts
     186root@beaglebone:~/cape/UARTx4# cp cape-bone-uartx4-00A0.dtbo /lib/firmware
     187root@beaglebone:~/cape/UARTx4# cd /lib/firmware
     188root@beaglebone:/lib/firmware# echo cape-bone-uartx4 > /sys/devices/bone_capemgr.8/slots
     189}}}
     190
     191ここで何もでなければOKだけど、ロードできないとエラーが出る。エラーの内容はdmesgで出力されるので、それを確認してエラーを修正後、再度実行。
     192
     193
     194{{{
     195root@beaglebone:/lib/firmware# cat /sys/devices/bone_capemgr.8/slots
     196 0: 54:PF---
     197 1: 55:PF---
     198 2: 56:PF---
     199 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
     200 5: ff:P-O-L Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
     201 6: ff:P-O-L Override Board Name,00A0,Override Manuf,cape-bone-uartx4
     202}}}
     203
     204
     205== EEPROM ==
     206
     207Capeに載せるEEPROMを作成する。
     208
     209=== EEPROMへのアクセス ===
     210
     211その前に、I2C2でEEPROMが認識されるかをチェックする。今回はEEPROMにATMEL AT24C256Bを使った。BBBはIO電圧が3.3Vなので、そこにつなぐICも3.3V対応のものを使う必要があるので注意。
     212
     213[[Image(http://papermint-designs.com/community/files/images/eeprom-circuit.preview.png)]]
     214
     215画像の実験回路をブレッドボード等で作成して、初めはSW A0,A1,A2のプルアップ抵抗を接続せずにGNDに接続してみる。[[br]]
     216回路を作成後、BBBのI2C2 SCL,SDAに接続し、i2cdetectでバススキャンしてみる。
     217
     218{{{
     219root@beaglebone:~# i2cdetect -r 1
     220WARNING! This program can confuse your I2C bus, cause data loss and worse!
     221I will probe file /dev/i2c-1 using read byte commands.
     222I will probe address range 0x03-0x77.
     223Continue? [Y/n] y
     224     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
     22500:          -- -- -- -- -- -- -- -- -- -- -- -- --
     22610: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     22720: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     22830: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     22940: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     23050: 50 -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
     23160: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
     23270: -- -- -- -- -- -- -- --
     233}}}
     234
     235回路が正しければ、上記のような表示になるはず。ならなければ、どこか回路が間違っているので修正する。[[br]]
     236次にEEPROMへの読み書きができるかを実験。[[br]]
     237
     238まず、EEPROMにアクセスするためのデバイスインターフェイス(?といえばいいのかな)を作成。
     239
     240{{{
     241root@beaglebone:~# echo 24c256 0x50 > /sys/bus/i2c/devices/i2c-1/new_device
     242root@beaglebone:~# ls /sys/bus/i2c/devices
     2430-0024  0-0050  1-0050  1-0054  1-0055  1-0056  1-0057  i2c-0  i2c-1
     244root@beaglebone:~# dmesg
     245                 :
     246[ 5404.713106] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
     247[ 5404.713545] i2c i2c-1: new_device: Instantiated device 24c256 at 0x50
     248}}}
     249
     2501-0050がEEPROMにアクセスするためのインターフェイスになる。[[br]]
     251
     252{{{
     253root@beaglebone:~ # cd /sys/bus/i2c/devices/1-0050
     254root@beaglebone:/sys/bus/i2c/devices/1-0050# ls -la
     255total 0
     256drwxr-xr-x 3 root root     0 Oct 22 02:19 .
     257drwxr-xr-x 9 root root     0 Jan  1  2000 ..
     258lrwxrwxrwx 1 root root     0 Oct 22 02:19 driver -> ../../../../../bus/i2c/drivers/at24
     259-rw------- 1 root root 32768 Oct 22 02:22 eeprom
     260-r--r--r-- 1 root root  4096 Oct 22 02:22 modalias
     261-r--r--r-- 1 root root  4096 Oct 22 02:22 name
     262drwxr-xr-x 2 root root     0 Oct 22 02:22 power
     263lrwxrwxrwx 1 root root     0 Oct 22 02:19 subsystem -> ../../../../../bus/i2c
     264-rw-r--r-- 1 root root  4096 Oct 22 02:19 uevent
     265root@beaglebone:/sys/bus/i2c/devices/1-0050#
     266}}}
     267
     268EEPROMへのデータの書き込み、読み込みはeepromファイルにアクセスすることで行われる。
     269{{{
     270root@beaglebone:/sys/bus/i2c/devices/1-0050# echo "hoge" > eeprom
     271root@beaglebone:/sys/bus/i2c/devices/1-0050# cat eeprom | hexdump -C
     27200000000  68 6F 67 65 ff ff ff ff  ff ff ff ff ff ff ff ff  |hoge            |
     273*
     274}}}
     275
     276=== EEPROMの作成 ===
     277
     278EEPROMのイメージデータは、firmwareファイルから生成することはできないので、別の定義ファイルから作成するしかないみたい。[[br]]
     279EEPROMのフォーマットは規定されているが、それを作る方法が確立しているわけではないみたい。[[br]]色々なページでも、自作のプログラムでひな形を作ったりしている。一応、正式な方法としてはJSON形式のファイルを作成して、それをコンバートして作る方法が紹介されている。[[br]]
     280変換プログラム自体はjavascriptで書かれているが、OSにはインストールされていないのでどこかから持ってくる必要がある。今回は[https://bitbucket.org/intelligentagent/replicape/src/28dfc97a7230/eeprom?at=master ここ]から、eeprom.jsとbone.jsをとってきた。[[br]]
     281このスクリプトを使って変換する。ちなみに、EEPROMの定義ファイルは、cape-bone-uartx4-00A0.jsonとした。
     282
     283{{{
     284root@beaglebone:~/cape/UARTx4/eeprom# node ./eeprom.js -w cape-bone-uartx4-00A0.json
     285}}}
     286
     287JSON形式の設定ファイルの内容は以下の通り。[[br]]
     288注意点として、partNumberとversionはfirmwareの設定内容(ファイル名?)と同じにしておかないといけない。これをキーにして対応するfirmwareを検索するらしい。
     289
     290{{{
     291{
     292 "uartx4.eeprom": {
     293    "type": "cape",
     294    "header": "aa5533ee",
     295    "formatRev": "A0",
     296    "boardName": "RS232C x4 Cape",
     297    "version": "00A0",
     298    "manufacturer": "KEK cERL CTRL",
     299    "partNumber": "cape-bone-uartx4",
     300    "numPins": 8,
     301    "serialNumber": "0000-0000-0001",
     302    "currentVDD_3V3EXP": 250,
     303    "currentVDD_5V": 250,
     304    "currentSYS_5V": 1000,
     305    "DCSupplied": 1000,
     306    "mux": {
     307      "P9_26": {
     308        "used": "used",
     309        "direction": "in",
     310        "pullup": "disabled",
     311        "slew": "fast",
     312        "rx": "enabled",
     313        "mode": 0,
     314        "function": "uart1_rxd"
     315      },
     316      "P9_24": {
     317        "used": "used",
     318        "direction": "out",
     319        "pullup": "disabled",
     320        "slew": "fast",
     321        "rx": "disabled",
     322        "mode": 0,
     323        "function": "uart1_txd"
     324      },
     325      "P9_22": {
     326        "used": "used",
     327        "direction": "in",
     328        "pullup": "disabled",
     329        "slew": "fast",
     330        "rx": "enabled",
     331        "mode": 1,
     332        "function": "uart2_rxd"
     333      },
     334      "P9_21": {
     335        "used": "used",
     336        "direction": "out",
     337        "pullup": "disabled",
     338        "slew": "fast",
     339        "rx": "disabled",
     340        "mode": 1,
     341        "function": "uart2_txd"
     342      },
     343      "P9_11": {
     344        "used": "used",
     345        "direction": "in",
     346        "pullup": "disabled",
     347        "slew": "fast",
     348        "rx": "enabled",
     349        "mode": 6,
     350        "function": "uart4_rxd"
     351      },
     352      "P9_13": {
     353        "used": "used",
     354        "direction": "out",
     355        "pullup": "disabled",
     356        "slew": "fast",
     357        "rx": "disabled",
     358        "mode": 6,
     359        "function": "uart4_txd"
     360      },
     361      "P8_38": {
     362        "used": "used",
     363        "direction": "in",
     364        "pullup": "disabled",
     365        "slew": "fast",
     366        "rx": "enabled",
     367        "mode": 4,
     368        "function": "uart5_rxd"
     369      },
     370      "P8_37": {
     371        "used": "used",
     372        "direction": "out",
     373        "pullup": "disabled",
     374        "slew": "fast",
     375        "rx": "disabled",
     376        "mode": 4,
     377        "function": "uart5_txd"
     378      }
     379    }
     380  }
     381}
     382
     383}}}
     384
     385変換したEEPROMイメージをダンプするとこんな感じ。
     386
     387{{{
     388root@beaglebone:~/cape/UARTx4/eeprom# hexdump -C uartx4.eeprom
     38900000000  aa 55 33 ee 41 30 52 53  32 33 32 43 20 78 34 20  |.U3.A0RS232C x4 |
     39000000010  43 61 70 65 00 00 00 00  00 00 00 00 00 00 00 00  |Cape............|
     39100000020  00 00 00 00 00 00 30 30  41 30 4b 45 4b 20 63 45  |......00A0KEK cE|
     39200000030  52 4c 20 43 54 52 4c 00  00 00 63 61 70 65 2d 62  |RL CTRL...cape-b|
     39300000040  6f 6e 65 2d 75 61 72 74  78 34 00 08 30 30 30 30  |one-uartx4..0000|
     39400000050  2d 30 30 30 30 2d 30 30  a0 29 c0 09 00 00 00 00  |-0000-00.)......|
     39500000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 a0 28  |...............(|
     39600000070  c0 08 00 00 00 00 00 00  00 00 00 00 a0 2e c0 0e  |................|
     39700000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
     398*
     399000000c0  00 00 c0 0c a0 2c 00 00  00 00 00 00 00 00 00 00  |.....,..........|
     400000000d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
     401000000e0  00 00 00 00 00 00 00 00  00 00 00 00 00 fa 00 fa  |................|
     402000000f0  03 e8 03 e8                                       |....|
     403000000f4
     404}}}
     405
     406
     407これをEEPROMに書き込んで、Capeを起動すれば、自動的にfirmwareが読み込まれる。[[br]]
     408EEPROMがI2C2の0x54に接続されている場合には、以下のコマンドで書き込みができる。
     409
     410{{{
     411root@beaglebone:~/cape/UARTx4/eeprom# cat uartx4.eeprom > /sys/bus/i2c/devices/1-0054/eeprom
     412}}}
     413
     414== 実機テスト ==
     415
     416実際にCapeを試作して実装してみる。
     417
     418{{{
     419root@beaglebone:~# cat /sys/devices/bone_capemgr.8/slots
     420 0: 54:PF---
     421 1: 55:PF---
     422 2: 56:PF---
     423 3: 57:P---L RS232C x4 Cape,00A0,KEK cERL CTRL,cape-bone-uartx4
     424 4: ff:P-O-L Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G
     425 5: ff:P-O-- Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI
     426 6: ff:P-O-- Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN
     427}}}
     428
     429I2Cアドレスの設定によって、表示されるスロットは変わるが、0x57の位置に今回作成したcapeがロードされたことがわかる。[[br]]
     430dmesgで詳細を確認。
     431
     432{{{
     433[    0.000000] Booting Linux on physical CPU 0x0
     434[    0.000000] Initializing cgroup subsys cpu
     435[    0.000000] Linux version 3.8.13 (koen@rrMBP) (gcc version 4.7.3 20130205 (prerelease) (Linaro GCC 4.7-2013.02-01) ) #1 SMP Wed Aug 14 16:25:00 CEST 2013
     436[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=50c5387d
     437[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
     438
     439                        :
     440
     441[    0.244885] loop: module loaded
     442[    0.245009] at24 0-0050: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
     443[    0.245089] at24 1-0054: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
     444[    0.245159] at24 1-0055: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
     445[    0.245228] at24 1-0056: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
     446[    0.245298] at24 1-0057: 32768 byte 24c256 EEPROM, writable, 1 bytes/write
     447[    0.252493] bone-capemgr bone_capemgr.8: Baseboard: 'A335BNLT,0A5C,2713BBBK6962'
     448[    0.252534] bone-capemgr bone_capemgr.8: compatible-baseboard=ti,beaglebone-black
     449[    0.252607] bone-capemgr bone_capemgr.8: Skipping disabled cape with part# BB-BONELT-HDMI
     450[    0.252690] bone-capemgr bone_capemgr.8: Skipping disabled cape with part# BB-BONELT-HDMIN
     451[    0.282744] bone-capemgr bone_capemgr.8: slot #0: No cape found
     452[    0.319851] bone-capemgr bone_capemgr.8: slot #1: No cape found
     453[    0.356959] bone-capemgr bone_capemgr.8: slot #2: No cape found
     454[    0.387222] bone-capemgr bone_capemgr.8: slot #3: 'RS232C x4 Cape,00A0,KEK cERL CTRL,cape-bone-uartx4'
     455[    0.387406] bone-capemgr bone_capemgr.8: slot #4: specific override
     456[    0.387447] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 4
     457[    0.387475] bone-capemgr bone_capemgr.8: slot #4: 'Bone-LT-eMMC-2G,00A0,Texas Instrument,BB-BONE-EMMC-2G'
     458[    0.387608] bone-capemgr bone_capemgr.8: slot #5: specific override
     459[    0.387644] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 5
     460[    0.387672] bone-capemgr bone_capemgr.8: slot #5: 'Bone-Black-HDMI,00A0,Texas Instrument,BB-BONELT-HDMI'
     461[    0.387809] bone-capemgr bone_capemgr.8: slot #6: specific override
     462[    0.387845] bone-capemgr bone_capemgr.8: bone: Using override eeprom data at slot 6
     463[    0.387873] bone-capemgr bone_capemgr.8: slot #6: 'Bone-Black-HDMIN,00A0,Texas Instrument,BB-BONELT-HDMIN'
     464[    0.388152] bone-capemgr bone_capemgr.8: Skipping loading of disabled cape with part# BB-BONELT-HDMI
     465[    0.388222] bone-capemgr bone_capemgr.8: Skipping loading of disabled cape with part# BB-BONELT-HDMIN
     466[    0.388534] bone-capemgr bone_capemgr.8: initialized OK.
     467
     468                         :
     469
     470[    4.800832] bone-capemgr bone_capemgr.8: slot #3: dtbo 'cape-bone-uartx4-00A0.dtbo' loaded; converting to live tree
     471[    4.801128] bone-capemgr bone_capemgr.8: slot #3: #5 overlays
     472[    4.804422] 48022000.serial: ttyO1 at MMIO 0x48022000 (irq = 89) is a OMAP UART1
     473[    4.806330] 48024000.serial: ttyO2 at MMIO 0x48024000 (irq = 90) is a OMAP UART2
     474[    4.809856] 481a8000.serial: ttyO4 at MMIO 0x481a8000 (irq = 61) is a OMAP UART4
     475[    4.811270] 481aa000.serial: ttyO5 at MMIO 0x481aa000 (irq = 62) is a OMAP UART5
     476[    4.811678] bone-capemgr bone_capemgr.8: slot #3: Applied #5 overlays.
     477[    4.811731] bone-capemgr bone_capemgr.8: slot #4: Requesting firmware 'cape-bone-2g-emmc1.dtbo' for board-name 'Bone-LT-eMMC-2G', version '00A0'
     478[    4.811751] bone-capemgr bone_capemgr.8: slot #4: dtbo 'cape-bone-2g-emmc1.dtbo' loaded; converting to live tree
     479[    4.812171] bone-capemgr bone_capemgr.8: slot #4: #2 overlays
     480
     481}}}
     482
     483UART1,2,4,5がそれぞれttyO1,ttyO2,ttyO4,ttyO5になっていることが確認できた。[[br]]
     484
     485
     486実際に通信して確かめてみる。[[br]]
     487RS232Cクロスケーブルをポート1と2につなぎ、シリアル通信プログラム minicom で実験。タミーナルを2つ立ち上げて、それぞれでminicomを実行する。
     488
     489{{{
     490root@beaglebone:~# minicom -D /dev/ttyO1 -b 115200
     491}}}
     492
     493{{{
     494root@beaglebone:~# minicom -D /dev/ttyO2 -b 115200
     495}}}
     496
     497minicomが起動したら、片方のターミナル画面から適当な文字を入力すると、もう片方のターミナルに入力した文字が表示されれば成功。表示されないようなら、配線をチェックするか、違うRS232Cポートにケーブルをつないでいないかをチェックする。
     498
     499== 参照HP ==
     500
     501[http://papermint-designs.com/community/node/338 NULLCape. How to Roll your own BeagleBone Capes (Part II) | Community Papermint Designs][[br]]
     502[https://groups.google.com/forum/#!topic/beagleboard/pf1MNKptqS0 Where are the serial ttyO1,2,3,4? - Google グループ][[br]]
     503[http://circuitco.com/support/index.php?title=Cape_Expansion_Headers Cape Expansion Headers - Circuitco Wiki Support][[br]]
     504[http://www.logicsupply.com/blog/2013/07/18/disabling-the-beaglebone-black-hdmi-cape/ Disabling the BeagleBone Black HDMI Cape Logic Supply Blog][[br]]
     505[http://azkeller.com/blog/?p=62 Adventures in BeagleBone Cape EEPROMs | K.Keller's Blog][[br]]