ywt20131214_USBパターン発生器 開発ログ#1
●C++整数型
C++にはu_intX_tとuintX_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上に表示]