Changes between Version 6 and Version 7 of epics/bbb/debian/thermometer/attiny


Ignore:
Timestamp:
12/13/17 16:10:27 (7 years ago)
Author:
Tetsuya Michikawa
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • epics/bbb/debian/thermometer/attiny

    v6 v7  
    159159
    160160となる。
     161
     162== BBBとの接続 ==
     163
     164このボードを実際に使用(運用)する場合には、BBB(又はRaspberryPI)とはUSBで接続するが、最大5個程度の複数接続をする予定なので、udevでデバイス名を固定する必要がある。[[br]]
     165USB HUBを経由して、BBBと接続した時のdmesgは、
     166
     167{{{
     168[ 4503.229147] usb 1-1.4: new full-speed USB device number 3 using musb-hdrc
     169[ 4503.330429] usb 1-1.4: New USB device found, idVendor=0403, idProduct=6015
     170[ 4503.330493] usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
     171[ 4503.330526] usb 1-1.4: Product: FT231X USB UART
     172[ 4503.330556] usb 1-1.4: Manufacturer: FTDI
     173[ 4503.330584] usb 1-1.4: SerialNumber: DC00xxxx
     174[ 4503.552556] usbcore: registered new interface driver usbserial
     175[ 4503.552905] usbcore: registered new interface driver usbserial_generic
     176[ 4503.557348] usbserial: USB Serial support registered for generic
     177[ 4503.586971] usbcore: registered new interface driver ftdi_sio
     178[ 4503.587143] usbserial: USB Serial support registered for FTDI USB Serial Device
     179[ 4503.587503] ftdi_sio 1-1.4:1.0: FTDI USB Serial Device converter detected
     180[ 4503.587845] usb 1-1.4: Detected FT-X
     181[ 4503.617619] usb 1-1.4: FTDI USB Serial Device converter now attached to ttyUSB0
     182}}}
     183
     184となっていて、ttyUSB0としてアクセスできるようになっていることがわかる。[[br]]
     185更に詳細な情報を見てみる。[[br]]
     186
     187{{{
     188debian@beaglebone:~$ udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0)
     189    :
     190  looking at parent device '/devices/platform/ocp/47400000.usb/47401c00.usb/musb-hdrc.1.auto/usb1/1-1/1-1.4':
     191    KERNELS=="1-1.4"
     192    SUBSYSTEMS=="usb"
     193    DRIVERS=="usb"
     194    ATTRS{authorized}=="1"
     195    ATTRS{avoid_reset_quirk}=="0"
     196    ATTRS{bConfigurationValue}=="1"
     197    ATTRS{bDeviceClass}=="00"
     198    ATTRS{bDeviceProtocol}=="00"
     199    ATTRS{bDeviceSubClass}=="00"
     200    ATTRS{bMaxPacketSize0}=="8"
     201    ATTRS{bMaxPower}=="90mA"
     202    ATTRS{bNumConfigurations}=="1"
     203    ATTRS{bNumInterfaces}==" 1"
     204    ATTRS{bcdDevice}=="1000"
     205    ATTRS{bmAttributes}=="a0"
     206    ATTRS{busnum}=="1"
     207    ATTRS{configuration}==""
     208    ATTRS{devnum}=="3"
     209    ATTRS{devpath}=="1.4"
     210    ATTRS{idProduct}=="6015"
     211    ATTRS{idVendor}=="0403"
     212    ATTRS{ltm_capable}=="no"
     213    ATTRS{manufacturer}=="FTDI"
     214    ATTRS{maxchild}=="0"
     215    ATTRS{product}=="FT231X USB UART"
     216    ATTRS{quirks}=="0x0"
     217    ATTRS{removable}=="unknown"
     218    ATTRS{serial}=="DC00xxxx"
     219    ATTRS{speed}=="12"
     220    ATTRS{urbnum}=="16"
     221    ATTRS{version}==" 2.00"
     222     :
     223}}}
     224
     225他にも色々出てくるが、重要なのはここ。[[br]]
     226そして、udevの定義に必要は情報は、以下の3つの情報。[[br]]
     227
     228{{{
     229    ATTRS{idProduct}=="6015"
     230    ATTRS{idVendor}=="0403"
     231    ATTRS{serial}=="DC00xxxx"
     232}}}
     233
     234この情報を基にudevのルールを設定する。
     235
     236=== udev ===
     237
     238udevの設定ファイルは{{{/etc/udev/rules.d/99-ftdi.rules}}}としておく。
     239
     240{{{
     241root@beaglebone:/etc/udev/rules.d# emacs -nw 99-ftdi.rules
     242
     243SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6015", ATTRS{serial}=="DC00xxxx", SYMLINK+="ttyUSBSens0", MODE="0666"
     244}}}
     245
     246ファイルを作成したら、設定を反映させる。
     247
     248{{{
     249root@beaglebone:/etc/udev/rules.d# /etc/init.d/udev reload
     250}}}
     251
     252USBを挿抜すると、
     253
     254{{{
     255root@beaglebone:/etc/udev/rules.d# ls -la /dev/ttyUSB*
     256crw-rw-rw- 1 root dialout 188, 0 May 22 02:37 /dev/ttyUSB0
     257lrwxrwxrwx 1 root root         7 May 22 02:37 /dev/ttyUSBSens0 -> ttyUSB0
     258}}}
     259
     260デバイスファイルに対してシンボリックリンクが作成され、デバイスファイルのパーミッションが0666に設定される。[[br]]
     261デバイスを増やす時には、同様の設定をファイルに追加してやればいい。[[br]]
     262追加したデバイスには、後で混乱しないように、デバイスのシリアル番号とデバイス番号のシールを張っておいたほうがいい。
     263
     264== EPICS IOC ==
     265
     266EPICS IOCは、asyn + streamdeviceで作成。但し、複数デバイスになることを考慮する必要がある。
     267
     268=== configure/RELEASE ===
     269
     270{{{
     271EPICS_BASE = /opt/epics/R315.5/base
     272
     273ASYN=$(EPICS_BASE)/../modules/soft/asyn/4-31
     274STREAM=$(EPICS_BASE)/../modules/soft/stream/2.7.7
     275}}}
     276
     277
     278=== DB ===
     279
     280{{{
     281debian@beaglebone:~/epics/usbTemp/usbTempApp/Db$ more usbtemp.db
     282record(ai, "$(user):temp")
     283{
     284    field(DESC, "Get temperature")
     285    field(DTYP, "stream")
     286    field(INP,  "@usbtemp.proto getTemp $(dev)")
     287    field(SCAN, "$(scan)")
     288    field(EGU,  "degC")
     289    field(PREC, "3")
     290}
     291debian@beaglebone:~/epics/usbTemp/usbTempApp/Db$ more usbtemp.proto
     292TERMINATOR = CR LF;
     293
     294getTemp {
     295    in "T:%f";
     296}
     297}}}
     298
     299=== src/Makefile ===
     300
     301{{{
     302debian@beaglebone:~/epics/usbTemp/usbTempApp/src$ more Makefile
     303TOP=../..
     304
     305include $(TOP)/configure/CONFIG
     306#----------------------------------------
     307#  ADD MACRO DEFINITIONS AFTER THIS LINE
     308#=============================
     309
     310#=============================
     311# Build the IOC application
     312
     313PROD_IOC = usbTemp
     314# usbTemp.dbd will be created and installed
     315DBD += usbTemp.dbd
     316
     317# usbTemp.dbd will be made up from these files:
     318usbTemp_DBD += base.dbd
     319
     320# Include dbd files from all support applications:
     321usbTemp_DBD += asyn.dbd
     322usbTemp_DBD += stream.dbd
     323usbTemp_DBD += drvAsynSerialPort.dbd
     324
     325# Add all the support libraries needed by this IOC
     326usbTemp_LIBS += asyn
     327usbTemp_LIBS += stream
     328
     329# usbTemp_registerRecordDeviceDriver.cpp derives from usbTemp.dbd
     330usbTemp_SRCS += usbTemp_registerRecordDeviceDriver.cpp
     331
     332# Build the main IOC entry point on workstation OSs.
     333usbTemp_SRCS_DEFAULT += usbTempMain.cpp
     334usbTemp_SRCS_vxWorks += -nil-
     335
     336# Add support from base/src/vxWorks if needed
     337#usbTemp_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
     338
     339# Finally link to the EPICS Base libraries
     340usbTemp_LIBS += $(EPICS_BASE_IOC_LIBS)
     341
     342#===========================
     343
     344include $(TOP)/configure/RULES
     345#----------------------------------------
     346#  ADD RULES AFTER THIS LINE
     347}}}
     348
     349
     350
     351
     352== 参照HP ==
     353
     354[http://d.hatena.ne.jp/pyopyopyo/20160223/p1 usb-serial のデバイスファイル名を固定する方法][[br]]
     355[https://qiita.com/caad1229/items/309be550441515e185c0 udevでデバイス名を固定する][[br]]