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


Ignore:
Timestamp:
11/29/13 11:42:44 (11 years ago)
Author:
michkawa
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]]