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


Ignore:
Timestamp:
12/13/17 16:10:27 (6 years ago)
Author:
michkawa
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]]