[cygwin][shpinx]Cygwin環境で動作する shpinxで pdf を make できるようにする

説明不足ですが、まずは挙げておきます。
順次、説明文を追加していきます。


Cygwinに予めインストールされているLatex関連のアプリケーションと、
LiveTexが競合してしまう。(LiveTexインストール時にメッセージがでる。)

実際、make platexするとエラーがでる。
以下のように、platexとdvipdfmxのシンボリックを作成することで対処できます。

Live-Texをインストールしておく

$ cd cygwin/bin

$ ln -s texlive/../bin/w32/platex.exe platex

オリジナルの dvipdfmx.exe を適当な名前にリネームしておく
$ ln -s texlive/../bin/w32/dvipdfmx.exe dvipdfmx

MPLABX-IDE XC32コンパイラでアセンブルリストを出力

MPLABX-IDE上でxc32-gccを使っている場合のアセンブルの出力方法です。


画面左 プロジェクトファイルを選択して右クリック→Properties を開く
Buildingを選択
”Execute this line before build”にチェックを入れる
その下に下記コマンドを入力
"C:\Program Files (x86)\Microchip\xc32\v1.20\bin\xc32-gcc.exe" -mprocessor=32MX460F512L -S main.s main.c
(-mprocessorはターゲットにしているPICファミリ)

Applyを押してから閉じる


従来通り"Build"を実行すると、main.cと同じフォルダにmain.s(アセンブルリスト)が出力される

参考にしたページ
C30コンパイラのアセンブル出力 - PeripheralPinMapの日記

XC32 コンパイラマニュアル(注:PDFが開きます)

emacs環境整備

参考ホームページ


共通設定(init.el) 共通パッケージ
.emacsに以下を買いておくだけで後は ~/Dropbox/.emacs.d/init.el を参照すればいい

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 共通の設定をDropboxにおいて管理する
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; Dropboxの場所を指定
(setq dropbox-emacs-directory "~/Dropbox/.emacs.d")

;; 共通の設定をDorpboxのinit.elから読む
(load (expand-file-name "init.el" dropbox-emacs-directory))

font
http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html
http://d.hatena.ne.jp/kitokitoki/20110502/p2

color-theme-solarized
http://blog.sanojimaru.com/post/19982182895/emacs-color-theme-solarized

Linux開発マシン用のOS品定め

12月21日からは代休込みで4連休でした。
1台余っているワークステーションマシンをLinux開発マシンに仕立てました。
そう思った理由はこちら
第1回関西fpga・de0勉強会 コマンドラインでfpgaプロジェクト~quartus, sopc builder編~

以下、検討した結果。
いろいろと試してみて、やはり Ubuntu に落ち着く。
Alt+graveが乗っ取られているのが直せないので、日本語切り替えのキーバインドを他のマシンと変えている以外は問題なし。

  • Ubuntu 11.10
    • TOPPERSのコンフィギュレータがビルドできる
    • LPCXpressoのサポートバージョン
    • MPLABXも問題なくインストールできる
    • CodeSourceyも問題なくインストールできる
  • FreeBSD9.0
    • gnomeが構築できなかった。私の力量不足でもある。
    • サーバー用途として別途テストしてみたい
  • debian 6.0.6
    • Toppersコンフィギュレータがビルドができない(cfg-1.5.0 cfg-1.8.0)
    • インストールされているboostライブラリは 1.42.0とサポート範囲だがなぜかビルドできない
  • PC-BSD
    • makeはgmakeになるので、TOPPERSコンフィギュレータのMakefileを修正必要
    • コンフィギュレータ最適化を -O0 に変更必要
    • LPCXpressoの LPC-Linkつながらない usb関連のライブラリのせいか?
    • lsusbがインストールできない
    • portmaster便利

TOPPERS『TOPPERS基礎3実装セミナー』に参加してきた (2日目)

TOPPERS基礎3実装セミナーの2日目に参加してきました。

  • 日時
    • 12月8日(土) 10:00-17:00
  • 2日目のプログラム
    • 10:00〜11:00 ITRON-TCP/IP仕様
    • 11:00〜11:30 TINETデバイスドライバの設計
    • 11:30〜14:00 DHCP+ECHOサーバの実装確認
    • (12:00〜13:00 昼食)
    • 14:00〜14:30 プラットフォーム作成
    • 14:30〜15:00 仮想端末アプリの構築
    • 15:00〜16:30 仮想端末アプリの拡張
    • 16:30〜17:00 まとめ

他は 1日目を参照。

  • セミナー受講中のメモ

セミナー受講中にとったメモを記載します。

ドライバの設計指針やテクニック
TOPPERSのドライバは,デバイスドライバ設計ガイドラインのDICアーキテクチャに沿って設計されることが多い。
URL
OSからドライバを操作する時は、サービスコール、反対にドライバからの応答はコールバックで応答する。コールバックされてない時は、リンクが切れるだけ。
こうする事でアプリ側には特定の関数を必要としない。OSを変えた時も
ドライバとのやりとりを変えずともよくなる。

TOPPERS系ITRON仕様OSでは、デバイスドライバガイドラインで提案されている、SIL(System Interface Layer)によるデバイスアクセスが推奨されている。実際には、デバイスのアドレスを指定してアクセスする部分が関数化されている。アクセス方法を関数化する事で、設計検証時にWindows上でシミュレートしやすくしている。

ARM系は、CMSIS(Cortex Microcontroller software interface standartd)という決まりで設計されている。

ドライバのリネームテクニックはよく使う。ターゲットボードが変わっても、アプリ側の呼び出し関数名を変更しなくて済む。セミナーの題材では #define によるネーム置き換えマクロ。
カーネル内は、_kernel

TOPPERS用TCP/IPネットワークスタック『TINET』
苫小牧高専のxxx氏設計
TINETは呼び出せるドライバが一種類。
そのかわり、ターゲットボードのりソースが少ない。

USBは中位階層あたりまでハードウェア依存。

高級なドライバは、データリンク層/物理層で、パケットフィルタリングをしてくれるの性能が出しやすい。TINETの場合は、受け付けたパケット全てを、上位層へ渡している。

オクテット=バイト数と同意。
CPUによってビット数はわからないので、オクテット表記。

輻輳(ふくそう)制御

TINETは、複数セッションを可能とするマルチタスクサーバーにも一応対応できる。

UNIXのソケットの場合は、2分くらいソケット切断に時間がかかる。(RFC要求)
ソケットインターフェイスは、1Mbyteから4Mbyteくらいリソースが必要。
最近のMCUには、イーサーネット用のディスクリプタが実装されているので、ディスクリプタ制御を知ってないとドライバ書けない。
最近のMCUのEMACディスクリプタには16KByteくらいのRAMを持っているので、必要にメモリ制約を設ける必要がない。

page96 シンボルファイルでは"実装各"の欄の名前でビルドされている。

mon>log mode 1 6

tinetを使う時は、
tinet/cfg で makeを実行し tinet_cfg.exeを生成する事。

プラットフォームのAPI設計は非常に重要。
アプリ開発に9人、プラットフォームに1人というような開発体制であっても、プラットフォームのAPI設計がしっかりしていれば、Linux上で検証しターゲットボードへの移行、標準API(POSIXやソケット)で設計する事でアプリ開発者は特別な知識がなく設計ができるので、開発効率が良くなる。


お昼と要望


愛知開催
PCレンタル無料化
ARMのcortex化

TOPPERS『TOPPERS基礎3実装セミナー』に参加してきた(1日目)

TOPPERS基礎3実装セミナーに参加してきました。

  • 主催

特定非営利活動法人TOPPERSプロジェクト

  • 日時

2012年12月1日(土) 10:00-17:00

  • 場所

株式会社サートプロ 代々木研修センター
〒151-0053 東京都渋谷区代々木1-36-6 代々木駅前ビル7F
TEL 03-6276-1168
http://www.certpro.jp/

  • 対象

基礎1実装セミナー、基礎2実装セミナーの内容を理解できている人
C言語に精通していること(本セミナーでは,RTC、SDカード、ETHERNETデバイスドライバを作成します。)
⇒ごめんなさい、受講対象者じゃないです。。

  • プログラム概要

10:00〜10:40 プラットフォーム構築
10:40〜12:00 開発環境のセットアップ
(12:00〜13:00 昼食)
13:00〜14:00 RTCのデバドラの説明とデバッグ
14:00〜15:00 MCI/FAT/POSIXファイルシステム
15:00〜16:30 SDファイルシステムの確認
16:30〜17:00 まとめ
⇒ 事前に開発環境は整えていたので、基板の動作確認とか。
あと、組込み開発に対する一般的な座学的なこと。

  • 講師
    • 竹内良輔 (株)リコー
    • 森田 浩 (株)アドバンスドデータコントロールズ
    • 岩田和仁 (株)デンソークリエイト
  • 総括

内容は、自分にとっては勉強になるレベル。周りからは「ついていけない...」との声も。最近、TOPPERSについて自習しているおかげ。
ある受講者は、セミナー用の開発環境をインストールした際に、これまでの開発環境が鑑賞して、おかしくなってしまった。この辺りは注意。Cygwinとかは特にそう。重要な開発環境が入っているパソコンに入れる時には、十分に注意する。
こればっかりは自己責任。
運営側は、テーブルタップが無い、ターゲットボードの電源が無い、必要な資料が事前配布されてないと、いくつか準備不足。最初のうちは仕方ないかも知れませんけどね。今後、改善していっていただければよいと思います。

講師は、プレゼン慣れしているとは感じはなかったが、これは、反対に嘘臭い印象がまったくなく、私は好印象でした。変に威張った様子もなかったですし、質問に対しても丁寧に回答いただけたので、良かったです。
特に、竹内氏によるFATファイルシステムの説明は、ディープなところまで突っ込んで説明されるあたり、ハイレベルでした。

本セミナーは、名古屋市工業研究所の小川氏お勧めであったのも参加の理由です。「TOPPERS基礎3実装セミナ」を勧めるN個の理由 - ReaD & Researchmap

  • 受講時のメモ

ここからは、受講した際にとったメモ。まずは、遂行もせずそのまま記載します。”気軽に”アウトプットを出すことが大事です。

ファイルシステムAPIは、C89、C99準拠に対応しておけば、Windows/UNIX上でも動かすことができる。

LinuxのOS改変、メンテナンスができる会社は日本で数すくない。Linuxを採用しても、高コストがかかりうる。

この講座は、中規模システム開発を対象としている。
プラットフォームに特化したスキルを持つエンジニアは必要。

理想的なプラットフォーム設計は、汎用OSの設計に見られる。

組込みAPIの設計は、経験、スキルも必要。
⇒ 機器に特化したものが望ましいが、汎用的に使えるAPIであることも求められ、両者は相反しつつも満たすことが重要である。

専用ミドル(Page15)
各社のKnow-Howが詰まっている。

RTOSに用意されているサービスコールを、全て使う必要はない。
名古屋大学の高田先生も言っている。
⇒ 実際には、適度に簡素化されているサービスコールの使い方が良い。
必要に応じて、使い分ける。

仮想端末。昔はSunワークステーションで利用されていた。

ファイルシステムPOSIX準拠で設計する。無難な線。
⇒ こういう事を考えても、無難と表現するあたり、私はまだまだレベルが低い。

Page30
ARMの割り込み機構。デバイスベンダーによって仕様が異なるケースがあるので、注意が必要。
⇒ NXP、STMicro、TI などで違う可能性があるという事。

Cygwin開発環境でmakeしたコンフィギュレータは、cfg.dllに依存するので、別の環境に持っていっても動かないことがある。
TOPPERSプロジェクトで配布されているものは、依存関係に考慮してある。

tm2構造体 → POSIX準拠

静的APIを生成するため、設計者は.cfgファイルを作成するが、.cfgファイルは、uITRONに特有である。これまで、TOPPERS特有だと思っていた。
コンフィギュレータの仕様は、各社のOSのによって異なる。

FAT
FATファイルシステムにおいて、例えば、Windows上でファイルを削除しても、FAT領域を書き換えているだけで、データ領域には残っている。

PDIC
ITRON仕様検討グループが提唱する、デバイスドライバアーキテクチャの総称。
DICは Device Interface Component の略。
PDICは、Primitive-DIC の略で、デバイス固有の処理を行い、OSに依存しない処理を行う。
参照



短時間、且つ、数行ではあるが、一部だけは自分でデバイスドライバをコーディングしてテストする時間もあった。

SDカードのチェックプログラム→UNIX環境でも流用できる。

BPBボリューム管理。一部はBIOSが管理。

page124
未使用ディレクトリは、0xE5で埋められている。昔の名残り。SDカードでは0xFFで埋められている。

Page157 補足。
このあたりは、かなりディープな内容。でも、非常に面白かった。トラブルシューティングにも役立つ。改めて復讐が必要。
FAT情報は、リトル・エンディアン
FAT領域だけはミラーリングしており、不良のデータ破損にも対応。ただし、最近はミラーリング領域までチェックしている事はしていない。FatFSもしていないらしい。
BPBは135セクター目。どこセクターにあるかは、セクター0を読む。