組み込みlinuxの毎日

毎日が勉強です。

TS7553 DebianのIPアドレスを固定する

2013-11-04 22:36:30 | TS7553
前回書いた記事で、IPアドレスはDHCPからの取得としていましたが、
会社の環境に持っていくために、IPアドレスを固定する必要があります。

IPアドレス 192.168.1.50
DNSサーバ 8.8.8.8 (google社のDNSサーバー)

設定は以下の通り。

・/etc/network/interfaces
-------------------------
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.50
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1
-------------------------

・/etc/resolv.conf
-------------------------
nameserver 8.8.8.8
-------------------------



TS7553 (2) Debianの設定~開発環境作るところまで

2013-11-04 08:16:02 | インポート
Debianの設定から開発環境を作るまでです。
一般的には、クロス開発環境をつくったほうが良いです。
メーカーホームページにも、TSシリーズ用のWindows版
カスタマイズ済みのeclipseが準備されています。
また、マニュアルにも、母艦にクロスツール入れろと書いてある。
でも、でも、ソースのビルドは、クロス環境ではなく、セルフ環境がいいな、
というのはワタシの趣味です。

環境構築として、の目標値は次のとおりです。
・Debianでやる
・ネットワークの設定 (面倒なので、DHCPの環境につなげます)
・もろもろ細かな設定
・samba (ビルドはセルフ環境だが、エディタはWindowsがいいな、と)
・いらないサービスを停止
・面倒なのでDebianを直接起動させる

(1)ネットワーク設定
 initrdのプロンプトでexitを入力してDebianを起動します。
 初期のrootパスワードがないので、rootでそのままログインします。

 DHCPからIP取得するように、設定ファイルを書き換えます。普通のDebianの設定をするだけ。
 /etc/network/interfaces
Interfaces
 会社に持って行く時はIP固定しないといかんな.....

 eth0を再起動する。なんのひねりもありません。
 Eth0


(2)細かい設定をいくつか
 ・パッケージをアップデートする前に、日付をあわせる(要否は不明だけど)
   date -s "2013/MM/DD hh/mm/ss"
 ・パッケージを更新
   apt-get update
   apt-get upgrade
   Debianって便利ですよね.... なれると楽ちんです。
 ・タイムゾーンを設定する
   dpkg-reconfigure tzdata
   asia -> Tokyo など。
 ・時計合わせをしたいので、NTPクライアントを入れる
   apt-get install nptdate
   こんな感じの設定をする。

/etc/default/ntpdate
     NTPDATE_USE_NTP_CONF=no
     NTPSERVERS="ntp.nict.jp"
     NTPOPTIONS=""

自動実行の設定
    # cd /etc/cron.daily/
    # vi ntpdate
    --------------------
    #!/bin/sh
    /usr/sbin/ntpdate-debian > /dev/null 2>&1
    --------------------
    # chmod 755 ntpdate

(3)使わないサービスを停止。メモリの節約
  (insservをインストール)

  apache2    insserv -r apache2
  avahi     insserv -r avahi-daemon
  bluetooth   insserv -r bluetooth

  ※復活の時は、-dオプション

(4)Debianを自動起動するように変更
 initrdではビルドできないし、LAN経由でリモートログインしたいので、
 Debianを直接起動できるように変更する。

 # reboot    再起動。

 initrdのコマンドプロンプトで、
 # nano /linuxrc-faseboot    linuxrcを編集
 ファイルのおしりの方を少し書き換える:
   (
    export ENV=/shinit
    setsid sh -c 'exec sh <$CONSOLE >$CONSOLE 2>&1'
   ) <$CONSOLE >$CONSOLE 2>&1
   wait

   ↓↓↓

   (
    export ENV=/shinit
   # setsid sh -c 'exec sh <$CONSOLE >$CONSOLE 2>&1'
   ) <$CONSOLE >$CONSOLE 2>&1
   wait

(5)sambaを入れる
 ファイル編集は、Windowsからやりたいので、sambaを入れます。
 /var/sambaを共有フォルダー(アクセスフリー)にする。
 Windowsからは、\\ts7500\share にて、共有フォルダーへアクセウする。

 sambaのインストール
   # apt-get install samba samba-common

 共有フォルダーを作成
共有フォルダの作成
   # mkdir /var/samba
   # chown nobody:nogroup /var/samba
   # chmod 777 /var/samba

 設定ファイルを編集します。
   # nano /etc/samba/smb.conf

   workgroup = WORKGROUP
   の下あたりに、以下の文言を追加する。

   ---------
   # Windows 側の文字コード
   dos charset = CP932
   # Linux 側の文字コード
   unix charset = UTF-8
   # swat で表示される文字コード
   display charset = UTF-8
   # Linux に存在しないユーザーでのアクセスはゲストとして扱う
   map to guest = Bad User
   ---------

 sambaのリスタート
   # /etc/init.d/samba restart


(6)セルフビルド環境
 Debianなので、もともとgccが入っています。
 最新版のOSイメージでは、gcc 4.3.2 となっていました。
 Windowsマシンから、\\ts7500\share にて、もろもろファイルを作って、
 TeraTermでリモートログインして、/var/sambaでmakeすればOK。


こんな感じでした。



TS-7553 (1) OSのインストール

2013-11-04 07:36:23 | インポート
まずは、TS-7553のOSをインストールします。
TS-7553にオンボードFlash(512M)があるのですが、
どうもオンボード使うのはちょっとアレ(?)なので、
こわれてもいいmicroSDからのブートにて開発環境を作ります。

(1)準備するもの
 ・TS-7553 (本体) 当たり前だけど
 ・AC/DCアダプタ
 ・SDKに付属している TS-9448 コンソールボード
 ・RS232C - USB変換
 ・microSD (2G以上) Raspberry Piのマスター用に買った奴がちょうど余っていた。
 ・USB-microSDアダプタ

(2)OSのイメージをダウンロード
 メーカーさんの FTPサイト から、2gbsd-noeclipse-latest.dd.bz2 をダウンロード
 カーネル2.6.24の最新版イメージファイル。

 ついでに、ここのサイトから、ソースファイルももらっておきます。

(3)OSイメージをmicroSDに焼く
 2gbsd-noeclipse-latest.dd.bz2を解凍すると、2gbsd-noeclipse-latest.dd ファイルとなる。
 ちなみに、作業マシンは母艦ではなく、作業用のメインマシン。
 Win8.1 に lhaz が入れてある環境で、lhazはbz2を解凍できるので便利です。

 microSDに焼くのに、USB Image Tool を使いました。
 このツール、あまりトラブルにあったことがない、気がします。
 (.ddはイメージファイルなので、USB Image Toolで直接扱うことが出来ました)

 ここまで、母艦は全く使いません。

(3)microSDカードの内容
 4つのパーティションがあり、いかのとおり。(マニュアルの抜粋)
    /dev/nbd5 - whole disk device of microSD card  (カード全体)
    /dev/nbd6 - 1st partition of SD card (Windows VFAT filesystem on devkit card)
    /dev/nbd7 - 2nd partition of SD card (kernel partition on devkit card)
    /dev/nbd8 - 3rd partition of SD card (EXT2 initrd partition on devkit card)
    /dev/nbd9 - 4th partition of SD card (Debian EXT3 filesystem on devkit card)

 OSイメージは2G用なので、パーティション4は比較的小さめです。
 32Gまで対応しているということなので、必要ならパーティション4をでかくしろ、
 とマニュアルには記述がある。
 そのとおりにしなくてもよいっぽいが、その件は後日。

(4)TS-7553 準備
 TS-7553にTS-9448を取り付け、microSDからのブートできるようにjumper設定する。
Ts9448

 TS-9448とUSB-RS232C変換ケーブルをつなぎ、Win8.1マシンに接続する。
 Win8.1は、一般的なTeraTermなどを使うと良いと思う。

 Teratermを起動して、シリアルポートを選択する。
Tera1

 設定(2)→シリアルポートで、ポートの設定を行う
Tera2

(5)TS-7553電源投入
 うまく動けば、シリアルコンソールで、
Ts7553
 みたいな画面が出ます。initrdでコンソール入力待ちの状態です。

 Type 'tshelp' for help
 # exit <--- を入力するとdebianが起動します。

以上で、OSインストール~起動は完了です。

(6)initrdのメモ
 initrdのパーティションのルートにある、linuxrc-xxxxxxxx が、
 initrdの起動用のスクリプトです。
 これをいじると、initrdのなかで色々と出来ます。
 LANを組み込んで、USBストレージ組み込んで、通信ドライバ組み込んで、
 独自アプリを自動起動すれば高速起動でシステム化が可能のようです。

 initrd (linuxrc)にUSBメモリからのアップデート手順が準備されています。
 USBメモリに、tsinit というスクリプトファイルをおいて、USB挿入した
 状態で電源投入、initrd起動→ tsinit が実行されるという仕組みです。
 USBメモリにアップデートファイルをおいて、tsinit にスクリプトを書けばよいです。

 シリアルコンソールで、linuxrcを編集した時にはちょっと注意が必要で、
 RAMに展開されているため、保存した結果がmicroSDには反映されません。
 (RAMなので、突然電断しても大丈夫なのはちょっと安心ですが)
 反映には、save コマンドを使います。
 RAM→microSDへ 保存してくれます。

 母艦linuxマシンで、microSDをマウントすると、initrdパーティションを
 直接操作することもできます。
 linuxrcを間違えて、ブートできなくなった時などは、これで復旧可能です。



RaspberryPi minecraftをいれてみる (ちょっと横道)

2013-11-03 18:09:43 | Raspberry Pi
TS7553をいじっていて、娘の「あそぼー」攻撃をかわすため、
RaspberryPiに Minecraft Pi を入れました。

以前、パソコンのフリー版でちびちび遊んでいたのですが、低スペックPCではかなり悲惨でした。
実はPiでもたいしたことはないだろうと思っていたのでいままで無視していましたが、
軽い気持ちで入れてみました。
が、動かしてみたらびっくり! とってもスムースです! 娘といっしょにかんどーしました。

Minecraftがさくさくうごく「こーせーのーPCほしぃー」とか言っていた娘に、
Pi+ディスプレイを与えるという手もあるなあと、気づきました。



TS7553 概要(のおさらい)

2013-11-03 17:40:46 | TS7553
きっと日本ではマイナーなARM / linuxボードではないかと思います。
老舗の
アルマジロ

アルファプロジェクト
を選ばず、マイナーな
TS-7553
を選んだのが、いいのか悪いのか..... (機能的に、当時、これが一番よかったので)

○○○概要○○○

TS7553のスペックは、値段なりにそこそこで、I/Fがいっぱいついていて、microSDが使えて、ちょっとRAMが小さいのを我慢すれば、まあまあそれなりのlinuxボードです。
 ARM 250MHz(もちろんシングルコア)
 USBホスト、USBデバイス、CAN,LAN,RS232C,RS485,GPIO,I2C,その他
 Debian lenny カーネルは2.6.24
最近はやりの、PiやBeagleにはとても敵いません。
ハード的な特徴は、CPU/メモリ+外部IOはFPGAでやります。
FPGAなので、GPIOコネクタに山のようなUART回線がつなげられたり、
CAN,I2C,microSD I/F、それらFPGA経由でやります。FPGAのソースも
公開されているので、その気になれば色々カスタマイズできます。
microSDや内臓FlashがFPGA経由のアクセスで、/dev/nbdに割付られて
いるのも特徴かもしれません。


○○○ブート○○○

OSのブート方法はいろいろあって、ジャンパースイッチで切り替えます。
(1)本体内蔵のFlashから
(2)microSDから
(3)USBメモリから
SDKについていたmicroSDを使っているので、開発中は(2)で使います。

○○○initrdの特徴○○○

TS7553は、initrdにちょっとした特徴があります。
"3秒で起動する"とカタログに書いてあるとおり、initrdは3secで
起動して、シェルのプロンプトで止まります。
ここで基本的なことはみんなできるから、それしかしか
使わないヤツはinitrdのまま使いなさい! ということみたいです。
(initrdのシェルを exit すると、debian が起動する)

自分のアプリを自動起動したければ、linuxrcにコマンド追記しますが、
initrdなのでリセットで消えてしまいます。最初、はまりました。
initrdの内容をストレージに反映するコマンドがちゃんと用意されていました。
USBメモリのマウントもできるし、USBメモリ経由で、アプリの書き換え手段も準備されています。
なかなか、よくできています。

○○○Debian○○○
Debian lenny カーネルは、2.6.24
とっても普通です。ちょっと旧い(いまのところ困っていない)。
メーカーさんに問い合わせたら、3.x系は、なんちゃってビルド版はあるけど、
サポートしないとのこと。そういえばftpにyoctoもあったりします。

我が家では、TS7553,RaspberryPi,BeagleBone、それぞれDebian入れています。
母艦もlubuntu (debianの親戚)です。

おさらいは、このへんで。