| | 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]] |
| | 10 | EEPROMはつけておくことにする。 |
| | 11 | |
| | 12 | === HDMI OFF === |
| | 13 | |
| | 14 | |
| | 15 | 今回のHWでは、UART5とHDMI出力が被ってしまう。今回は画面が必要ないので、HDMI出力を停止させることにした。[[br]] |
| | 16 | HDMI出力の確認は、 |
| | 17 | {{{ |
| | 18 | root@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]] |
| | 28 | 5にHDMIのモジュールが読み込まれているのがわかる。"P-O-L"の"L"が"Load"ということらしく、これが消えればいいらしい。[[br]] |
| | 29 | 設定は、ブートローダーで行うので、boot領域をmountして、uEnv.txtを書き換える。 |
| | 30 | |
| | 31 | {{{ |
| | 32 | root@beaglebone:~/cape/UARTx4# df |
| | 33 | Filesystem 1K-blocks Used Available Use% Mounted on |
| | 34 | rootfs 3369444 1641652 1553304 52% / |
| | 35 | /dev/root 3369444 1641652 1553304 52% / |
| | 36 | devtmpfs 255228 0 255228 0% /dev |
| | 37 | tmpfs 255356 0 255356 0% /dev/shm |
| | 38 | tmpfs 255356 232 255124 1% /run |
| | 39 | tmpfs 255356 0 255356 0% /sys/fs/cgroup |
| | 40 | tmpfs 255356 232 255124 1% /etc/machine-id |
| | 41 | tmpfs 255356 0 255356 0% /tmp |
| | 42 | /dev/mmcblk0p1 72102 59252 12850 83% /media/card |
| | 43 | root@beaglebone:~/cape/UARTx4# cd /media/card/ |
| | 44 | root@beaglebone:/media/card# ls |
| | 45 | App Drivers LICENSE.txt README.md autorun.inf uEnv.txt |
| | 46 | Docs ID.txt MLO START.htm u-boot.img |
| | 47 | root@beaglebone:/media/card# vi uEnv.txt |
| | 48 | optargs=quiet |
| | 49 | ↓ |
| | 50 | optargs=quiet capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN |
| | 51 | }}} |
| | 52 | |
| | 53 | 設定を書き換えたらreboot。[[br]] |
| | 54 | reboot後は、画面に何もでなくなるので注意すること。[[br]] |
| | 55 | sshで他のマシンからログインして、状態を確認。 |
| | 56 | |
| | 57 | {{{ |
| | 58 | root@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 | |
| | 79 | firmwareのひな形は/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 | {{{ |
| | 185 | root@beaglebone:~/cape/UARTx4# dtc -O dtb -o cape-bone-uartx4-00A0.dtbo -b 0 -@ cape-bone-uartx4-00A0.dts |
| | 186 | root@beaglebone:~/cape/UARTx4# cp cape-bone-uartx4-00A0.dtbo /lib/firmware |
| | 187 | root@beaglebone:~/cape/UARTx4# cd /lib/firmware |
| | 188 | root@beaglebone:/lib/firmware# echo cape-bone-uartx4 > /sys/devices/bone_capemgr.8/slots |
| | 189 | }}} |
| | 190 | |
| | 191 | ここで何もでなければOKだけど、ロードできないとエラーが出る。エラーの内容はdmesgで出力されるので、それを確認してエラーを修正後、再度実行。 |
| | 192 | |
| | 193 | |
| | 194 | {{{ |
| | 195 | root@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 | |
| | 207 | Capeに載せる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 | {{{ |
| | 219 | root@beaglebone:~# i2cdetect -r 1 |
| | 220 | WARNING! This program can confuse your I2C bus, cause data loss and worse! |
| | 221 | I will probe file /dev/i2c-1 using read byte commands. |
| | 222 | I will probe address range 0x03-0x77. |
| | 223 | Continue? [Y/n] y |
| | 224 | 0 1 2 3 4 5 6 7 8 9 a b c d e f |
| | 225 | 00: -- -- -- -- -- -- -- -- -- -- -- -- -- |
| | 226 | 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
| | 227 | 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
| | 228 | 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
| | 229 | 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
| | 230 | 50: 50 -- -- -- UU UU UU UU -- -- -- -- -- -- -- -- |
| | 231 | 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- |
| | 232 | 70: -- -- -- -- -- -- -- -- |
| | 233 | }}} |
| | 234 | |
| | 235 | 回路が正しければ、上記のような表示になるはず。ならなければ、どこか回路が間違っているので修正する。[[br]] |
| | 236 | 次にEEPROMへの読み書きができるかを実験。[[br]] |
| | 237 | |
| | 238 | まず、EEPROMにアクセスするためのデバイスインターフェイス(?といえばいいのかな)を作成。 |
| | 239 | |
| | 240 | {{{ |
| | 241 | root@beaglebone:~# echo 24c256 0x50 > /sys/bus/i2c/devices/i2c-1/new_device |
| | 242 | root@beaglebone:~# ls /sys/bus/i2c/devices |
| | 243 | 0-0024 0-0050 1-0050 1-0054 1-0055 1-0056 1-0057 i2c-0 i2c-1 |
| | 244 | root@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 | |
| | 250 | 1-0050がEEPROMにアクセスするためのインターフェイスになる。[[br]] |
| | 251 | |
| | 252 | {{{ |
| | 253 | root@beaglebone:~ # cd /sys/bus/i2c/devices/1-0050 |
| | 254 | root@beaglebone:/sys/bus/i2c/devices/1-0050# ls -la |
| | 255 | total 0 |
| | 256 | drwxr-xr-x 3 root root 0 Oct 22 02:19 . |
| | 257 | drwxr-xr-x 9 root root 0 Jan 1 2000 .. |
| | 258 | lrwxrwxrwx 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 |
| | 262 | drwxr-xr-x 2 root root 0 Oct 22 02:22 power |
| | 263 | lrwxrwxrwx 1 root root 0 Oct 22 02:19 subsystem -> ../../../../../bus/i2c |
| | 264 | -rw-r--r-- 1 root root 4096 Oct 22 02:19 uevent |
| | 265 | root@beaglebone:/sys/bus/i2c/devices/1-0050# |
| | 266 | }}} |
| | 267 | |
| | 268 | EEPROMへのデータの書き込み、読み込みはeepromファイルにアクセスすることで行われる。 |
| | 269 | {{{ |
| | 270 | root@beaglebone:/sys/bus/i2c/devices/1-0050# echo "hoge" > eeprom |
| | 271 | root@beaglebone:/sys/bus/i2c/devices/1-0050# cat eeprom | hexdump -C |
| | 272 | 00000000 68 6F 67 65 ff ff ff ff ff ff ff ff ff ff ff ff |hoge | |
| | 273 | * |
| | 274 | }}} |
| | 275 | |
| | 276 | === EEPROMの作成 === |
| | 277 | |
| | 278 | EEPROMのイメージデータは、firmwareファイルから生成することはできないので、別の定義ファイルから作成するしかないみたい。[[br]] |
| | 279 | EEPROMのフォーマットは規定されているが、それを作る方法が確立しているわけではないみたい。[[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 | {{{ |
| | 284 | root@beaglebone:~/cape/UARTx4/eeprom# node ./eeprom.js -w cape-bone-uartx4-00A0.json |
| | 285 | }}} |
| | 286 | |
| | 287 | JSON形式の設定ファイルの内容は以下の通り。[[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 | {{{ |
| | 388 | root@beaglebone:~/cape/UARTx4/eeprom# hexdump -C uartx4.eeprom |
| | 389 | 00000000 aa 55 33 ee 41 30 52 53 32 33 32 43 20 78 34 20 |.U3.A0RS232C x4 | |
| | 390 | 00000010 43 61 70 65 00 00 00 00 00 00 00 00 00 00 00 00 |Cape............| |
| | 391 | 00000020 00 00 00 00 00 00 30 30 41 30 4b 45 4b 20 63 45 |......00A0KEK cE| |
| | 392 | 00000030 52 4c 20 43 54 52 4c 00 00 00 63 61 70 65 2d 62 |RL CTRL...cape-b| |
| | 393 | 00000040 6f 6e 65 2d 75 61 72 74 78 34 00 08 30 30 30 30 |one-uartx4..0000| |
| | 394 | 00000050 2d 30 30 30 30 2d 30 30 a0 29 c0 09 00 00 00 00 |-0000-00.)......| |
| | 395 | 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0 28 |...............(| |
| | 396 | 00000070 c0 08 00 00 00 00 00 00 00 00 00 00 a0 2e c0 0e |................| |
| | 397 | 00000080 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |
| | 398 | * |
| | 399 | 000000c0 00 00 c0 0c a0 2c 00 00 00 00 00 00 00 00 00 00 |.....,..........| |
| | 400 | 000000d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| |
| | 401 | 000000e0 00 00 00 00 00 00 00 00 00 00 00 00 00 fa 00 fa |................| |
| | 402 | 000000f0 03 e8 03 e8 |....| |
| | 403 | 000000f4 |
| | 404 | }}} |
| | 405 | |
| | 406 | |
| | 407 | これをEEPROMに書き込んで、Capeを起動すれば、自動的にfirmwareが読み込まれる。[[br]] |
| | 408 | EEPROMがI2C2の0x54に接続されている場合には、以下のコマンドで書き込みができる。 |
| | 409 | |
| | 410 | {{{ |
| | 411 | root@beaglebone:~/cape/UARTx4/eeprom# cat uartx4.eeprom > /sys/bus/i2c/devices/1-0054/eeprom |
| | 412 | }}} |
| | 413 | |
| | 414 | == 実機テスト == |
| | 415 | |
| | 416 | 実際にCapeを試作して実装してみる。 |
| | 417 | |
| | 418 | {{{ |
| | 419 | root@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 | |
| | 429 | I2Cアドレスの設定によって、表示されるスロットは変わるが、0x57の位置に今回作成したcapeがロードされたことがわかる。[[br]] |
| | 430 | dmesgで詳細を確認。 |
| | 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 | |
| | 483 | UART1,2,4,5がそれぞれttyO1,ttyO2,ttyO4,ttyO5になっていることが確認できた。[[br]] |
| | 484 | |
| | 485 | |
| | 486 | 実際に通信して確かめてみる。[[br]] |
| | 487 | RS232Cクロスケーブルをポート1と2につなぎ、シリアル通信プログラム minicom で実験。タミーナルを2つ立ち上げて、それぞれでminicomを実行する。 |
| | 488 | |
| | 489 | {{{ |
| | 490 | root@beaglebone:~# minicom -D /dev/ttyO1 -b 115200 |
| | 491 | }}} |
| | 492 | |
| | 493 | {{{ |
| | 494 | root@beaglebone:~# minicom -D /dev/ttyO2 -b 115200 |
| | 495 | }}} |
| | 496 | |
| | 497 | minicomが起動したら、片方のターミナル画面から適当な文字を入力すると、もう片方のターミナルに入力した文字が表示されれば成功。表示されないようなら、配線をチェックするか、違う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]] |