ywt20131214_USBパターン発生器 開発ログ#1

C++整数型

 C++にはu_intX_tuintX_tの2種類の型定義がある。

 全者はLinux標準, 後者がC++標準??( std名前空間にある。)
 クロスプラットフォーム重視のため、後者を使用する
※追記
 QtではqintX, quintXという型が存在する
 Qtアプリケーションでは、こちらに合わせる方が良い。

●自作クラスのヘッダファイル定義
 自作クラスのヘッダファイル内で他のクラスを利用する場合、前方宣言する 事でヘッダファイルの依存関係を減らせる。



●USB serialのアクセス権限

 デフォルトでは/dev/ttyUSB0のアクセス権はrootのみ。
 一般ユーザが使用可能な様に下記のコマンドを実行

 chmod a=rx /dev/ttyUSB0

Ubuntu にUSB Serialを接続する方法

FTDI USB-Serialケーブル(TTL-232r)を接続して/dev/ttyUSB0が出現する事を確認
/dev/ttyUSB0のアクセス権を得るためにdialoutに自分のユーザをgpasswdコマンドで登録(参考URL)
下記コマンドでシリアル通信ソフトscreenをインストール
apt-get install screen
(使い方) screen /dev/ttyUSB0 9600
●文字列リテラルのサイズの算出方法

C++における文字列のサイズを算出する方法として、sizeof演算子がある。当初、挙動を深く理解していなかったため、予期せぬ結果に戸惑った。

MinGWを使用する時の注意点

マルチカードリーダを外して利用する事。
環境:Windows 8

[2ch すれ抜粋]
MinGW,msys-minttyを先日インストールしました。
下記のコマンドを打つと、
$ gcc --version
ポップアップ・ウィンドウが発生し、

gcc.exe ディスクがありません。
ドライブにディスクがありません。ディスクドライブI:に挿入して下さい。
[キャンセル] [再実行]

$ gcc --version
gcc.exe (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.

と出力されます。同様に簡単なhelloworldプログラムを作成し、
コンパイルしましたが、不明なポップアップウィンドウが出る
事を除いては、問題なく実行ファイルが作成されました。

ポップアップ・ウィンドウが出る原因が分かりますでしょうか?

板違いだとしたら、申し訳ありません。
お手数ですが、アドバイスを頂けると助かります。

[補足]
OS: Windows 8
MinGW:  mingw-getで最新版をインストール(mingw32-base Installed Version 201307220)
PATH設定: C:\MinGW\bin;C:\MinGW\msys\1.0\bin; (追加済み)

VMPlayer(host-os:Windows8/guest-os:ubuntu13.04)の共有フォルダ設定

■VMPlayer(host-os:Windows8/guest-os:ubuntu13.04)の共有フォルダ設定

◇問題
ここの記事で紹介されている手順ではguest-os側から共有フォルダが参照できなかった。

◇解決策
Ubuntu forumsの投稿記事が参考になった。

手順1:VMPlayer起動ツールでhost-os側に共有フォルダを作成する。
手順2:guest-os側で下記のコマンドで共有フォルダが認識されているか
確認する
vmware-hgfsclient
手順3: guest-os側で下記のコマンドを実施する
sudo apt-get install open-vm-tools
sudo mount -t vmhgfs .host:/ /mnt/hgfs

上記のコマンドで共有フォルダがマウントされる

(マウント自動化)
手順4:/etc/rc.localに下記のコマンドを追加すると、マウントを自動化できる 
mount -t vmhgfs .host:/ /mnt/hgfs

Linux環境(VMPlayer)でnuttx rtosビルド

■nuttx rtosビルド(stm32f4discovery/nsh)
◇概要
仮想マシン上のLinux上に、nuttx rtosビルド環境を構築し、
一例としてSTM32f4discovery用のnsh(nttx shell)をビルドする事に成功した。

◇nuttxとは??
NuttX is a real-time operating system (RTOS) with an emphasis on standards compliance and small footprint.
http://en.wikipedia.org/wiki/NuttX

◇手順
[前準備]
①VMPlyaerにUbuntu13.04をインストールした。
gcc-arm-embeddedのtoolchainインストールする。
③nuttxをgitコマンドでダウンロードする
 ②,③についてはここの記事が参考になった。
[nuttxビルド]
①./configureを実行する
(例)
{nuttxインストール・ディレクトリに移動}
cd nuttx/tools
./configure.sh stm32f4discovery/nsh
cd ../
②.configファイルの編集
vim .config

                                                                                                                      • -

CONFIG_HOST_LINUX=y #enableに変更
CONFIG_WINDOWS_CYGWIN=n #disableに変更
CONFIG_WINDOWS_CYGWIN=n #disableに変更

# ARMV7M Configuration Options
CONFIG_ARMV7M_TOOLCHAIN_CODESOURCERYW=n #disableに変更
CONFIG_ARMV7M_TOOLCHAIN_GNU_EABIL=y #enableに変更

                                                                                                                      • -

③. ./setenv.sh
④make

eclipse/LPCXpressoエディタ設定方法

■背景・目的
下記URLを参考に、eclipse(LPCXpresso)の外観をクールに変更した
は良いものの、ハイライト機能やソースホバー機能との相性が悪く、
初期設定のままでは視認性が悪かった。

○黒背景 Eclipse Dark Juno でクールにキメる
http://d.hatena.ne.jp/cypher256/20120926/p1

そこで、各設定方法を調べたのでメモしておく。


■対象
eclipse version: 4.2 (Juno) SR2
(※LPCXpresso v5.1.2も同様)

■フォント
◇設定方法
[Window]→[Preference]→[General]→[Appearance]→[Colors and Fonts]
◇お勧めフォント
1位. Osaka-等幅
2位. Source Code Pro (※日本語非対応のため、Windows環境ではFont Linkして使用する)

■色設定

◇設定方法(共通部)
[Window]→[Preference]

その後の設定方法は複雑なので場合分けして説明する。

eclipse appearance (eclipse 外観)
[General]→[Appearance]
表示されたウィンドウのTheme:欄で設定する
例えば、[Eclipse Juno Dark]とする

※Themeが表示されない場合はWebから別途ダウンロードする
https://github.com/Prototik/Eclipse-Juno-Dark/downloads

テキストエディタの色設定
[General]→[Appearance]→[Color Theme]
表示されたウィンドウで設定する
例えば、[Patel]とする。

※Color Themeが表示されない場合はWebから別途ダウンロードする
http://eclipsecolorthemes.org/

◇コンソールの色設定 ※任意
[C/C++]→[Build]→[Console]
表示されたウィンドウの[Output text color],[Background color]
を変更する


◇Annotation背景色変更
[General]→[Editors]→[Text Editors]→[Annotations]
表示されたウィンドウの[C/C++ Occurrences],[C/C++ Write Occurrences]
などの色を変更すると見やすくなる

◇Source Hover背景色の変更
[C/C++]→[Editor]
表示されたウィンドウのAppearance color options:欄の
[Source hover background]で色を設定する

LPCXpresso-LPC1769 組込みプログラミング [標準ライブラリ編2]

■semihosting機能の注意事項

 printf/scanf等の標準ライブラリをARMコア上で利用する時、デバッガのsemihosting機能を利用するが、その時の注意事項を記す。

スタンドアロン性の欠如
 当然ながら、ホストPCを接続した状態でないと正しく動作しない。(仮に、ホストPCの接続を断ってしまうと、printf関数を利用している予期せぬ挙動を示すのだろうか?)

②リアルタイム性の欠如
割込みルーチンが意図したタイミングで実行されない。これはsemihosting機能を利用してホストPCとターゲットMCUが通信している時には、MCUが"Debug state"に入ってしまうため。

■参考URL
詳細は下記のページを参考して頂きたい。ページの末尾に上記の内容が記載されている。

Using printf in your applications (Semihosting)
http://support.code-red-tech.com/CodeRedWiki/UsingPrintf

LPCXpresso-LPC1769 組込みプログラミング [USB Virtual COM実装編7]

LPCXpressoインストール時に付属していたVirtual COM(VCOM)デモプログラムを動作させる事にやっと成功した。 今までの手順をざっと復習すると…

■デモプロジェクト実験の過程

①LPCXpresso IDEのインストール →秋月購入時に付属する資料読むべし

IDE上で下記のプロジェクト・アーカイブをインポートする
【フォルダ名】
C:\nxp\LPCXpresso_4.1.0_190\lpcxpresso\Examples\NXP\LPC1000\LPC17xx
【プロジェクト(zipアーカイブ)】
(1) CMSISv2p00_LPC17xx.zip
(2) NXP_LPCXpresso1769_MCB1700_2011-02-11.zip

③ 展開されたプロジェクトのうち、USBCDCがVCOMデモプログラムが入っているプロジェクトである。

④下記の写真を参考に配線する。
※USBコネクタ-ブレッドボード変換基板は下記URLから購入した。
http://www.switch-science.com/products/detail.php?product_id=432
他には、秋月電子からも同様の変換基板が販売されている
http://akizukidenshi.com/catalog/g/gK-05258/

⑤LPC-Link側のUSBケーブルを接続し、コンパイル後に生成される実行ファイルをLPCXpressoに転送する (IDE画面の左上にあるDebugボタンを押す事で実行)

⑥この状態で増設したUSBケーブルを接続すると、新しいデバイスとして認識され、デバイス・ドライバのインストールを要求される

デバイスドライバ用INFファイルは同一プロジェクト内のsrcフォルダにある
 lpc17xx-vcom.infを指定する

⑧デバイス・ドライバが無事にインストールされると、デバイスマネージャのポート(COMとLPT)の下に、LPC17xx USB VCom Port(COM ??)というデバイスとして認識される。

⑨Tera Termを起動し、キーボードから文字を入力する。打込んだ文字列がエコーバックされて表示されれば、ループバックが正常動作している。




図1. 実験風景

■接続関係
 左側がLPC-Link用のUSBケーブルで
 右側がVirtual COMデモ用のUSBケーブル

接続ピン
  J6-36 → USB_D-(灰色の被覆線)
  J6-37 → USB_D+(赤色の被覆線)
  J6-54 → GND (黒色の被覆線)
  J6-42(UART TxD1)とU6-43(UART RxD1)をジャンパで短絡

※UART TxD1端子と RxD1端子を短絡しループバックさせて、
 Tera Term上で動作確認をするため


図2. Tera term表示例

■動作の補足説明
[キーボード入力]→[USB as VCOM Port OUT]→[UART TxD1]→[UART RxD1]→[USB as VCOM Port IN] → [Tera Term上に表示]