hira のすべての投稿

gcc 標準ライブラリー libc.a の改造

SH-2A には USB が内臓なのだが、こいつと通信する為には、色々なスタックを実装する必要がある、ソースコードも公開されているのだが、色々ハマりそうと考えて、とりあえず、シリアルインターフェースを繋げる事にした。

最近のPCには、シリアルポートはまず無いので、USB-シリアルのブリッジを使う。
秋月電子で、FT232を使った格安なモジュールを売っている。
FT232 モジュール

とりあえず、これを繋いで、シリアルコンソールに文字を出す事が出来た。
でも、サンプルのコードはポーリングなので、割り込み処理にしないと実用性が無いな・・・

FT-232 USB シリアル

とりあえず、本格的なシリアルドライバーは後回しで、gcc の標準ライブラリーに細工する時が来た~

まず、重要なのは、記憶割り当てを行う「malloc」関数群、色々調べると、syscallsモジュールに、「_sbrk」という関数があり、「malloc」は、この低レベルメモリー割り当てを呼ぶ、通常は、シンボル「end」から、スタックの間のメモリー空間を使って、そこに記憶割り当て空間を作り、そこで記憶割り当てを行うのだが、それは、多少まずい、そこで、以下のように改修した。

caddr_t _sbrk (int incr)
{
extern char alloc_top;
extern char alloc_end;
static char *heap_end;
char *prev_heap_end;

if(heap_end == 0) {
heap_end = &alloc_top;
}

prev_heap_end = heap_end;
if((heap_end + incr) >= &alloc_end) {

CPU_UartPuts(“Heap and Stack Collision occured…\n”);
// abort();
return (caddr_t)NULL;
}
heap_end += incr;
return (caddr_t)prev_heap_end;
}

「alloc_top」、「alloc_end」は、独自のセクションで領域を割り当てていて、この空間内で、メモリーのアロケーションを行う。

※startup.s
.section .MEMALLOC, “w”
.align
.global _alloc_top
_alloc_top:
.space 65536
.global _alloc_end
_alloc_end:

現在は仮に65536バイト確保してある。

※リンク情報
.bss (NOLOAD) :
{
__bss_start__ = . ;
*(.bss)
*(.bss.*)
*(COMMON)
*(.got.*)
. = ALIGN(4);
__bss_end__ = . ;
_end = . ;
} > TRAM

.memalloc (NOLOAD) :
{
. = ALIGN(4);
__alloc_start__ = . ;
*(.MEMALLOC)
__alloc_end__ = . ;
} > TRAM

.stack (NOLOAD) :
{
__stack_start__ = . ;
*(.STACK)
*(.stack)
. = ALIGN(4);
__stack_end__ = . ;
} > TRAM

syscalls のモジュールは、通常、libc.a にアーカイブされているので、sh-elf-arコマンドを使い、オリジナルのlibc.aから、syscallsモジュールを削除しておいた。

リンクする場合、元のsyscalls内の関数全てを実装する必要があるので、とりあえず、ダミー関数を入れておいた。

次は、stdout、stdin、stderrなどファイル関係のサポートだな。

LCD 接続

SD カードからのブートが出来るようになると、早速 LCD を繋いでみたい!
組み込み機器用の小型の液晶を、個人で買うのは、実は、意外とハードルが高い!
正規ルートだと、もう、値段が尋常ではない。

そんな時に見つけたのが、「ストロベリーリナックス」で売ってる PSP の液晶ユニット、
ストロベリー・リナックス – PSP 液晶
まぁ、8800円は多少高いけど・・・

でもでも、さらに見つけたのが、「aitendo」
※最近は売り切れている。
※自分はココで買いました確か5000円くらいだったと思う。

PSP の液晶は、480 X 272 ピクセルでフルカラー、発色も凄く良い。
また、aitendo ではキャリーボードも売っていた(300円だった)これは、液晶のバックライト用 DC-DC も載っていて、フレキケーブルコネクターを普通の40Pコネクターに変換できる、自作にはピッタシの基板。

次はソフトなのだが、ネットを探すと、既に、繋げている人がいるようで、LCD デバイスの初期化コードがアップされているとこを発見!
早速、ソースコードを利用させてもらい、多少苦労したものの画面を出す事ができた。
※「SE組込人」さんありがとう御座います~

PSP 液晶 キャリーボード裏面

LCD にサンプル画像を表示

手始めに、SDカード・インターフェース

まず、考えなければならないのは開発環境。

雑誌の記事等では、ルネサス純正のHEWを使ったものが主流なようで、USBでPCと接続して、トレース、なども行える本格的なものなのだが、自分は、そこまでの環境は必要無いと考えている。
※GUIの統合環境は、裏で勝手に色々やられて好きではない。

むしろ、枯れた環境で開発出来て、全体が見通せる環境の方が良い。
まぁ、バグに悩まされて、トレースが必要な場合もあるだろうが、それはそれとして・・

そこで、昔からの「慣れ」と、emacs と make の CUI 環境の方が好きなので、cygwin 上で gcc を使う事としたのだが・・・
自分でソースコードからコンパイルする事もできるけど、既にコンパイル済みな「KPIT Cummins」のGNU Tools を使う事にした、登録が必要だけど、バグ修正なども比較的良く行われており、シンプルな構成で、インストーラー付き、この新しいSH-2Aにも対応している。
KPIT GNU TOOLS

開発環境に目処がついたとこで、開発スパンをどうするか・・・
この SH-2A には大容量RAMが内臓の為か、フラッシュ ROM を内蔵していない、代りに、外部にシリアル EEPROM があり、そこから BOOT できるようになっており、ローダーに、HEW とデバッグ通信する為のモニターも内臓している。

gcc で生成したバイナリーをどうやって送るか・・・
そんな事を考えているうちに、SDカードを接続して、SD カードに置いた実行バイナリーを読み込んで起動するローダーが発表された。

SD カードのインターフェースは、簡単なので、さっくり作った、SH-2A 基板の 3.3V ラインの容量が微妙なので、5V->3.3Vのレギュレーターを別途載せておいた。

SD カード・インタフェース

それで、自分起動用ソースコードを準備して、簡単なテストが動くようになった。

はじめに

バイクに積むコンピューター(と言っても、速度や、エンジン回転などの情報を表示したり、ウインカーやライトの制御などを行うもの)の構想は前からあり、実験用に何回か組んだ事もあった・・

いつもネックになるのは表示装置、以前は128×64の白黒液晶を使う方向で作業していたが、チープだし、カラーフォトフレームが3000円も出すと買える時代にそぐわないと感じていた・・

それで、カラー液晶なんだけど、制御回路や、フレームバッファのメモリーなど回路の規模が大きくなる事が問題だった。
液晶が接続できる、ARM ベースの Linux 基板なども買って、色々やったが、これはこれで良いし、パフォーマンスも申し分無いのだが、コストが高いのが問題となっていた、自分で使う分にはあまり問題では無いけど、複数台作って、欲しい人に提供する事を考えると、あまり高価になる事は避けるべきと感じてた。

そんな時、インターフェース2010年、6月号にSH-2A基板付録とゆーのを見つけた、まぁいつもの事で、あんまし期待していなかったのだが、内容を観て、興味が沸いた~
・144MHz駆動
・1MB RAM 内臓(ワンチップでこの容量は珍しい)
・64KB高速RAM内臓
・LCDインターフェース(RGB565の16ビットカラー)
・FPU 内臓
・USB インターフェース
などなど

そこで、コレをベースに使って、もう一度作り直してみる事にした。

SH-2A ベース基板

インターフェース6月号付録SH-2A基板

雑誌付録のCPU基板、何枚買った事か・・

ARMやSH2、他色々、いつも、おお!、これは~と思い買うのだがー
遊びでちょこっと使う分にはまぁ良いが、実用性が乏しかったりす
るのがいつもの事。
※RTC使いたいけどバックアップの事が考えられていない、配線も
出来ない。
※明らかな間違いがある。
※表面実装部品の下に目的のトラックがあり、改修不可能。
などなど・・・

しかし、今回は、いつもと少し違うかも。

SH-2Aの仕様が素晴らしい!
・144MHz
・FPU
・1MB-RAM
・64KB高速RAM
・LCDインターフェース
これなら、ボード単体で、相当色々な物が作れそう~

以前からレース用のデータロガーを作成趣味としてて(笑)
今回、ようやく、適したベースが作れそう!

一番の問題は、「液晶表示」なんですよ・・
データロガーと言うより、バイクのデジタルメーターを自作したい
事が始まりで、ついでにデータのロギングもして、ラップタイム
や、エンジンや車両の状態などを記録したいと考えてました。

そこで問題となるのが液晶の表示で、カラー液晶で、それなりの
解像度となると、フレームバッファやインターフェースなど、
色々追加部品を組まなければならない・・、しかし、このSH-2Aに
は全て揃っている!

とゆー訳で、この人を使って、プロトタイプを作り直してみます。

—–
以前に、AVRと白黒液晶を使ったものや、ARMを使った物など、途中
まで作って「ボツ」にした経緯があるので、今回は、最後まで作っ
てみようと思います。

naviが欲しい!

今まで、SONY の NAV-U (二世代目)を使ってきましたがー、やはり初期の頃の NAVI です、色々不満もあります・・・

まぁ、この機種買った時には、そんなに選択枠は無かったし、ブランドで決めた感じもあるのですがー、SANYO の「ゴリラ」はなんか名前が幼稚な感じで機能も駄目な印象で良く調べないで、パスしたのです・・

SONY は、メモリースティックだし、音楽を聴く気になれない程の操作性(起動、切り替えの遅さ)の悪さで、無理だったし、地図や、住所検索などなど、相当、ムカツク事多々あった訳です。(CPUパワーが無いので仕方無い点を差し引いても)

まぁ、それはそれとして、車とバイクに付けて、かなり便利に使ってますが、やはり、最近の新しい機種が欲しくなってる事も事実!

↑やっぱこの辺りですかねー、やっぱ「ゴリラ」なのかな!?
NAV-U の最新機種が、

NAV-U 最新

が出るみたいですがー、↑のゴリラと比べると相当見劣りします。
※はっきり言って駄目そうです・・・

実家の液晶テレビを選ぶ

実家の改装で、リビングに TV が欲しいとの事で、色々考えた末、SONY のブラビアとなると思われる~

要点はー
・LEDバックライト(消費電力が少ない)
・40型
・自分の家も SONY なので、操作が同じ方が良さそう
・デザイン
※シャープや、パナソニックなど、同系列並みの他メーカーも観たが、やはり、ソリッドでシンプルなデザインが良いと思う。
・画質、量販店で確認したが、最近出た機種はどれも、「悪い」というようなものは少ない、横一列か・・・
それより、リモコンの操作性や、他の機能がポイントなのかも・・

KDL-40EX700

無線 LAN 設置

昨日、実家の部屋リホームが終わったとかで、無線 LAN を設置してきた。
実家は古い木造で、柱とかは、白アリでボロボロだったらしい。
湿気が抜けない構造で、それが原因らしいが・・・

そんで、バッファローの無線 LAN だけど、とりあえず、USB アダプターも付けて、通信できるようになったけど、付属アプリはインストしない方が良い事が判った、いつもの事だけどーー

倍速設定アプリは必要なので、それだけ残して、後は必要ないのでアンインストール。
って、なんで、あんな余分なアプリ開発するのか?
ドライバーだけ入れて、Windows の無線 LAN 設定の方が判り易く無い?、不思議です・・
iPhone、ノートPCも接続してみたけど、問題無し、速度もそれなりに出てます。
※倍速設定で135Mbps とかだった。

—–
実家のマウスは、未だに、有線式光学マウスだった、PC が離れていて、ケーブルがパッツパツなので、自分の持っていたマウスを置いてきたので買いなおさないと・・

とりあえず、外出時に手頃な大きさ軽さなどなど、なかなか気にいってます、bluetoothである点も大きい。

このマウス、電池は単4が二本なので、エネループもゲット!

ノート用メモリーその後

先日の日記で、ノート用SO-DIMM、8チップ仕様で、消費電力削減
を書いたが・・
アマゾンに注文したものの、入荷予定無しとかで、キャンセルに
なったー
非常に残念である・・・

不思議な事に、現在でも在庫ステータスは、「在庫あり」となって
いるのだがー

それで、メモリーモジュールを買えない反動で、QUER 製のカバン
を購入、こちらは、直ぐに到着、22000円と高価な物だが、
見た目、使いかって、手頃なサイズ、などなど、狂喜乱舞である!

QUER Q10

先日到着したA4サイズのノートPCを入れたら、ビッタシで、持ち
運びが楽しみとなった!

ノートPCを入れる

今まで、打ち合わせや、仕事で出かける時には、バックパックを愛用してきたのですがー、長年使って、かなりヨレヨレです。

そんな訳で、他に候補を探していた訳ですが、ふと、ショルダーバックも気になりました。
ショルダーだと、自転車で駅まで移動とかで、ブラブラして、イマイチなのですがー、逆に電車の中とか、オフィス内で使うには良い感じです。

このブランドは、スイスでデザイン、ドイツで製造で、見た目と造りで、なんだか凄く良さそうな感じがします。

そんなこんなで、「ポチ」です(笑)