3rdステップでつまった

3rdステップのプログラム実行でよくわからんことが発生。

プログラムを実行すると、静的変数の初期値が本来

global_data = 10

と表示されるべき場所が

global_data = ffffff00

と表示される。
プログラムがおかしいのかと思い、著者様のHPからソースコードを入手して書き込んでみるも結果は変わらず。

修正後のプログラム解析の結果も本に書いてある内容と違う。
セクションのサイズが違うのはそもそもおかしいような気はする。

んー、何がいけないんだろう。
あと、変数の値がffffff00になるのは、0以外の値で一番最初に初期化する変数だけみたい。

global_data = ffffff00
...
static_data = 20

と表示されるのだが、global_dataを0で初期化すると、

global_data = 0
...
static_data = ffffff00

となる。

組込みOSの勉強

前回の記事から間がかなりあいてしまった

「12ステップで作る 組込みOS自作入門」をやり始めました。

12ステップで作る組込みOS自作入門

12ステップで作る組込みOS自作入門

組込み技術に興味があったので買ってみました。
カットシステムさんのWebサイトから「組込みOSセット」を購入。
9,110円也。ちょっと大きな出費。
それに加えて、自分のPCにはシリアルケーブルをつなぐコネクタが無いので、amazonでシリアル-USB変換ケーブルも購入2,000円ちょい。

ネットで検索すると、同じ書籍で学習していらっしゃる方々のサイトがヒットするので、それらを参考にさせていただきつつ開発環境の構築をしました。

この環境設定がなかなか曲者で、思ったより時間がかかってしまいました。
H8用にbinutilsgccをインストールしようとしたのですが、./configureやmakeの際にエラー続出。
ネットで検索すると、同じようなことが起きている方が問題解決していらっしゃったので、そちらを参考にさせていただきました。感謝です。

http://okdkzms.wordpress.com/2012/09/26/12%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%81%A7%E4%BD%9C%E3%82%8B%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BFos%E8%87%AA%E4%BD%9C%E5%85%A5%E9%96%80%E3%80%904%E3%80%91/
the-sourceのメモ帳 gcc-4.3.2 その7
GCC4.3.3によるARMのクロスコンパイル « chibiegg日誌
Blogger

なんとか開発環境の構築は終わり、ガリガリサンプルプログラムを書き、H8にファームウェアを書き込み、端末エミュレータ上で実行。
画面に表示されるのは定番の「Hello World」だけですが、これだけを出すためにいろいろと必要なことがあるのだと関心。

結局1ステップ終わるのに4時間ぐらいかかったのかな。
まだまだ導入段階なので、わからないことだらけですが、これからちょくちょく読み進めていこうと思います。

VC++でのパス取得の際の問題対処

MFCのアプリケーション上で入力するファイルのパスを取得した際のちょっとした問題。

そのままファイルパスを取得するとディレクトリの区切りが"\"だけであり、
パスを文字列で扱う際には"\"から"\\"に変換してやらないといけない。
(表現が正しいのだろうか…)

調べたところ、CStringT::Replaceを使ってやると簡単に文字列置換が可能となるらしい。

msdnから引用

// typedef CStringT<TCHAR, StrTraitATL<TCHAR, ChTraitsCRT<TCHAR>>> CAtlString;

CAtlString strBang(_T("Everybody likes epee fencing"));
int n = strBang.Replace(_T("epee"), _T("foil"));
ASSERT(n == 1);   

CStringT Class | Microsoft Docs

今回の場合は、Replace()の引数を

str.Replace(_T("\\"), _T("\\\\"))

としてやったらうまく変換できたみたい。便利ですね。

Eclipseのインストール

Windows XPeclipseをインストールしました。

普段のプログラミングは、
仮想マシン上のUbuntuemacsを用いて
VC++
行なっていますが、ちょっとpythonを触ろうってときに適した開発環境がなかったので、eclipseをインストールしました。

元々eclipseJava用のIDEのようですが、プラグインを入れれば他言語も扱えるようです。
Linuxでも使えるようなのでちょうどいいかなーなんて。

導入は以下のHPを見ながら行いました。
kkaneko.com - 
[Python] eclipseでPython開発を行ってみる - 開発の覚書
eclipseのキーバインド変更: エンジニアリングのある風景

ロベールのC++入門講座でC++入門

現在C++の勉強をしてます。
勉強に使用している本は、「ロベールのC++入門講座」です。

ロベールのC++入門講座

ロベールのC++入門講座

C++については全くの初心者ですが、Cはある程度触っていたのでCと共通しているような文法事項やポインタの話は大体理解しているつもりです。
この本では、Cを触ったことない人でも文法事項を理解できるように、本当に基礎から書いてあります。
Cの未経験者は馴染みやすく、C経験者は復習にもなるので良いですね。
実際私も、ポインタあたりで理解が怪しいところがあったので、調度良かったです。

現在5章まで読了しました。
6章からがC++の本番のようなので、よく理解しながら読み進めていきたいと思います。

はてなダイアリー始めました

sdjimaと申します。

ここでは、プログラミングの勉強や自分の趣味などについて書いていこうと思います。
文章を書いて話をまとめるということが苦手なため、まとまった文章を書く練習も兼ねています。