備忘録

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

USBデバイスの情報を確認する

udevのルールを作るために、ホストのUSBに繋がっているUSB-Serialの情報を取得する

# udevadm info --attribute-walk --path=/sys/bus/usb-serial/devices/ttyUSB0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

looking at device '/devices/platform/imx27-usb.0/ci_hdrc.0/usb1/1-1/1-1:1.0/ttyUSB0':
KERNEL=="ttyUSB0"
SUBSYSTEM=="usb-serial"
DRIVER=="pl2303"
ATTR{port_number}=="0"

looking at parent device '/devices/platform/imx27-usb.0/ci_hdrc.0/usb1/1-1/1-1:1.0':
KERNELS=="1-1:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="pl2303"
ATTRS{bInterfaceClass}=="ff"
ATTRS{bInterfaceSubClass}=="00"
ATTRS{bInterfaceProtocol}=="00"
ATTRS{bNumEndpoints}=="03"
ATTRS{supports_autosuspend}=="1"
ATTRS{bAlternateSetting}==" 0"
ATTRS{bInterfaceNumber}=="00"

looking at parent device '/devices/platform/imx27-usb.0/ci_hdrc.0/usb1/1-1':
KERNELS=="1-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
ATTRS{bDeviceSubClass}=="00"
ATTRS{bDeviceProtocol}=="00"
ATTRS{devpath}=="1"
ATTRS{idVendor}=="067b"
ATTRS{speed}=="12"
ATTRS{bNumInterfaces}==" 1"
ATTRS{bConfigurationValue}=="1"
ATTRS{bMaxPacketSize0}=="64"
ATTRS{busnum}=="1"
ATTRS{devnum}=="2"
ATTRS{configuration}==""
ATTRS{bMaxPower}=="500mA"


このあとは、*.rulesファイルで
ACTION=="remove", GOTO="tty_end"
SUBSYSTEM!="tty", GOTO="tty_end"
SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", DRIVERS=="pl2303", ACTION=="add", ENV{ID_VENDOR_ID}=="067B", ENV{ID_MODEL_ID}=="2303", ENV{ID_USB_INTERFACE_NUM}=="00", KERNELS=="1-1:1.*", SYMLINK+="ttyUSB2SERIAL"
LABEL="tty_end"

な形で、デバイスをttyUSB2SERIALに固定しました。
スポンサーサイト

テーマ:ハードウェア - ジャンル:コンピュータ

  1. 2016/02/02(火) 13:01:11|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

C言語でシェルを呼ぶ

何か連続するシステムを作るとき
手軽にシェルから処理できるところは、シェルでやっちゃいたいと思い
メモ書き


Cのプログラムからシェルを呼び出して使う

■書式
#include <stdlib.h>

int system(const char *command);

■備考
 "/bin/sh -c"としてコールされ、シェルを利用できます。
 シェルが動作して、動作完了まで次の行には行きません。
 正常に完了したら0が、異常終了の場合は-1が戻って来ます。

■例
#include <stdlib.h>

int ret = system("echo \"hello shell\" > temporary");

- - - - - - - - もう一例 - - - - -

#include <stdio.h>

main(void){
printf("hello world\n");
}

とあれば、

#include <stdio.h>
#include <stdlib.h>

int main(void){
printf("hello world\n");
int ret = system("echo \"hello world\n\");
}

と修正すると Hello worldが2回表示されるます。

  1. 2013/05/03(金) 00:54:46|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

デーモンの登録

プログラムを延々と走らせておきたい場合があるので
デーモンの簡単な作成方法を

参考は、以下
http://7ujm.net/linux/daemon.html

1.テストプログラムの作成
 テストプログラムtest.cを作成 
#include <stdio.h>

main(){
    while(1){
        sleep(10);
    }
}


 $ gcc -o test test.c
 できたら、動作確認として./test をやっても良いですね

2./usr/にtestをコピー
 せっかくだからパーミッションの見方を記載しておきます

 ↓のようなファイルやディレクトリがあったとき
 drwxr-xr-x 3 ----- ----- 4096 May 1 10:50 lib
 0123456789

 0:ディレクトリかファイルかを示す
 123:オーナーの権限,rで読み込み権限、wで書き込み権限、xで実行権限
 456:グループの権限
 789:ユーザーの権限となります

 これを、オーナー権限、グループ権限、ユーザー権限をそれぞれ数値で示したりします
 drwxr-xr-xの場合であれば
 オーナー権限 rwx → 111(2) → 7
 グループ権限 -xr → 011(2) → 3
 ユーザー権限 r-x → 101(2) → 5 
 これらをあわせて"755"などと示します


3.起動用のシェルスクリプトの作成
 /etc/init.d/ へ行き、下のシェルを作ります
 /usr/init.d/test &
 と作成して test.shなどと保存
 実行可能とするために
 chmod 755 test.sh
 としておきます

4.シンボリックリンクの作成
 /etc/rc3.d へ移動し
 ln -s ../init.d/test.sh S10test
などでシェルスクリプトのシンボリックリンクを作成します。
 # -s をつけないと、ハードリンクとなります

5.起動
 ./S10test などで直接実行する

7.終了
 psでpidを確認して
 kill 7811などで終了できます
 
  1. 2013/04/29(月) 23:46:03|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

SSHが動くようにする

訳あってUbuntuに環境を変更したが、
sshが使えなかったので使えるようにする

$ sudo apt-get install aptitude
$ sudo aptitude install ssh

これでおk
設定は、/etc/ssh/sshd_config にて設定できます

一応、/etc/init.d/ におりてsshを確認して
必要があればrestartしておきます
  1. 2013/04/28(日) 17:40:45|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0

Linuxのコマンドなど

Linuxのコマンドの無知っぷりが酷いので、ここにメモ代わりに

・ifconfig
 各種ネットワーク設定の表示を行う
 ネットワークの設定自体は、/etc/network/interface で変更する

・netstat
 開いているポートなど表示します
 netstat -l
 netstat -lnt

・df
 ディスク容量などを確認できる

・sudo
 管理者としてコマンド実行する

・apt-get
 パッケージのダウンロードからインストールまでする
 apt-get update 最新のパッケージリストを取得する
 apt-cache search キーワード キーワードを含むパッケージを検索する 
 apt-get install パッケージ名 指定したパッケージをダウンロードし、インストールする

 ちなみに日本語入力入力は、次を入れます
 $ sudo apt-get install fonts-ipafont ttf-vlgothic xfonts-intl-japanese xfonts-intl-japanese-big
 $ sudo apt-get install ibus-anthy

 プロファイルい追加を忘れないように・・・
  /.profileに、"export LANG=ja_JP.UTF-8"を追記しておきます
 キーボードの変更は /etc/default/keyboad から変更します

・free
 メモリの使用状況などを表示します
 ちなみに、swap領域の管理は /etc/dphys-swapfile にて行います

・ユーザーの追加は adduser 名前

・shutdown
 電源OFFや再起動など、今すぐ電源を切るときはnowをつけます
 shutodown -r now で今すぐ再起動~など

  1. 2013/04/27(土) 22:28:03|
  2. Linux
  3. | トラックバック:0
  4. | コメント:0
次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。