忍者ブログ
グラビアアイドルについて語るブログ。
[1] [2] [3] [4] [5] [6] [7] [8]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

gcc で CQ_V850 アプリ開発をするためにまとめたメモです。インターフェース2007年6月号「TOPPERS OS の移植とライン・トレース・カーの製作事例」のサンプルソースを参考にしています。

今回は gcc に特化した内容ではありませんが、クロック関係のレジスタの設定についてまとめました。詳細はユーザーズ・マニュアル「V850ES/JG2 ハードウエア編」の「第6章 クロック発生機能」を参照。


■プロセッサ・クロック・コントロール・レジスタ (PCC)

・特定レジスタ。
・初期値は0x03(メインクロック動作、8分周)。

○ビット0〜ビット3 (CK0, CK1, CK2, CK3)

クロックの選択。

○ビット4 (CLS)

CPU クロックの状態(メインクロック動作/サブクロック動作)。リードオンリー。

○ビット5 (MFRC)

メイン・クロックの内蔵帰還抵抗の選択。

○ビット6 (MCK)

メイン・クロック発振回路の制御。

○ビット7 (FRC)

サブクロックの内蔵帰還抵抗の選択。


■内蔵発振モード・レジスタ (RCM)

・初期値は0x00(内蔵発振器発振)。

○ビット0 (RSTOP)

内蔵発振器の発振/停止。


■CPU 動作クロック・ステータス・レジスタ (CCLS)

・リードオンリー。

○ビット0 (CCLSF)

CPU動作クロックの状態。


■PLL コントロール・レジスタ (PLLCTL)

・初期値は0x01(PLL 動作、クロック・スルー・モード)。

○ビット0 (PLLON)

PLL 動作停止レジスタ。

○ビット1 (SELPLL)

CPU 動作クロック選択レジスタ。


■クロック・コントロール・レジスタ (CKC)

・特定レジスタ。
・初期値は0x0a(4てい倍)。

○ビット0 (CKDIV0)

PLL モード時の内部システム・クロック。


■ロック・レジスタ (LOCKR)

・PLL 周波数の安定状態を確認するのに使用する。
・リードオンリー。

○ビット0 (LOCK)

PLL のロック状態の確認。


■PLL ロックアップ時間指定レジスタ (PLLS)

・初期値は0x03(213/fx)。

○ビット0〜ビット2 (PLLS0, PLLS1)

PLL ロックアップ時間の選択。


●関連エントリ

CQ_V850 gccメモ(共通編)
PR
gcc で CQ_V850 アプリ開発をするためにまとめたメモです。インターフェース2007年6月号「TOPPERS OS の移植とライン・トレース・カーの製作事例」のサンプルソースを参考にしています。

今回はスタートアップ・ルーチンでのレジスタの設定についてまとめました。


■最初に設定するレジスタ

最初に設定しなければならないレジスタは次の3つです。(ユーザーズ・マニュアル「V850ES/JG2 ハードウエア編」85ページ)

(1) システム・ウエイト・コントロール・レジスタ (VSWC)

動作周波数が16.6MHz未満では0(ノー・ウエイト)を、16.6MHz以上では1(ウエイト)を設定します。

動作周波数は、PLLCTL の設定がクロック・スルー・モード(デフォルト)であれば5MHzに、PLL モードでは20MHzになります。

(2) オンチップ・デバッグ・モード・レジスタ (OCDM)

通常動作モードにするには0を設定します。特定レジスタですので、特定の手順で設定します。

(3) ウォッチドッグ・タイマ・モード・レジスタ2 (WDTM2)

ユーザーズ・マニュアル「V850ES/JG2 ハードウエア編」422ページによると、ウォッチドッグ・タイマ2を停止するには、通常は RCM.RSTOP ビットに1を設定(内蔵発振器の停止)した上で WDTM2 レジスタに0を設定すればいいようですが、WDTM2.WDCS23 ビットに1を設定しても停止できるようです。サンプルでは後者の方法で停止しているということになります。


■特定レジスタ

次の8個のレジスタは、書き込み保護されている特定レジスタです。(ユーザーズ・マニュアル「V850ES/JG2 ハードウエア編」81ページ)

(1) パワー・セーブ・コントロール・レジスタ (PSC)
(2) クロック・コントロール・レジスタ (CKC)
(3) プロセッサ・クロック・コントロール・レジスタ (PCC)
(4) クロック・モニタ・モード・レジスタ (CLM)
(5) リセット要因フラグ・レジスタ (RESF)
(6) 低電圧検出レジスタ (LVIM)
(7) 内蔵 RAM データ・ステータス・レジスタ (RAMS)
(8) オンチップ・デバッグ・モード・レジスタ (OCDM)

特定レジスタへの書き込みは、次の手順で行います。

・DMA 動作を許可していた場合は禁止する。
・特定レジスタへの設定データを汎用レジスタに用意する。
・PRCMD レジスタに設定データを書き込む。
・特定レジスタに設定データを書き込む。
・NOP 命令を5回挿入する。
・DMA 動作が必要であれば許可する。

(例) PCC レジスタに2(メインクロック動作、4分周)を設定
movhi  hi(PRCMD), r0, r1
movea lo(PRCMD), r1, r1
movhi hi(PCC), r0, r3
movea lo(PCC), r3, r3
mov 0x02, r2
st.b r2, 0[r1]
st.b r2, 0[r3]
nop
nop
nop
nop
nop

今日は Firefox Developers Conference Summer 2007 に行ってました。会場は TEPIA という所だったのですが、隣の神宮球場がえらく賑わっていて、はじめて「佑ちゃんフィーバー」とやらを目の当たりにしました。

肝心のカンファレンスの方ですが、ここ1,2か月はまったく違う方向に関心が向いていたためか、これといって興味深いトピックがなかったというか、Software Design の特集を読んでれば十分って感じでした。でも、普段ウォッチしていない Mozilla Labs 最新情報や FUEL の話は聞けてよかったですし、拡張機能作者の開発環境紹介とライトニングトークは面白かったです。1000円でそれだけ楽しんだら、お得だったと考えるべきですね。

僕が XUL に関心を持っているのは、90年代に Emacs が面白いと思っていたのと同じ理由なんだと思います。ここ数年は興味も薄れ、エディタとしてのみ使い続けている Emacs ですが、当時はエディタ2.0とでもいうべきインパクトを感じたものでした。ただ、ウェブ技術と較べると、あまりに壁が高すぎたのが惜しまれます。そういう動機ですから、僕にとっての XUL は、それがブラウザ開発の成果物であれ、拡張機能よりも、ブラウザに特化しない用途への拡がりを感じさせる技術です。

当面は XULRunner の開発にあまり注力しないようですが、PCなど、すでにブラウザ(Firefox)が動作している環境では必ずしも必要ではないと思いますし、XULRunner ビミョーと感じることもあるでしょう。が、フルブラウザが不要な環境でも XUL が使えたら素敵ですし、XPCOM はかなり機能豊富なライブラリです。Firefox が XULRunner ベースにならずに並立する場合は特に、XULRunner の存在価値はそこにあるのではないかと思っているのですがね・・・

たまには Mozilla 系の話題も書いていこうと思います。
少し前のエントリで「Linux から V850 のフラッシュ ROM に書き込む手段がない」と書いたところ、arms22 さんという方から、sp850es を移植したというコメントをいただきました。

その頃オリジナルの sp850esh8write のソースを読み始めたところだったのですが、移植されたとあっては、使わせていただくしかありません。
大変ありがたいご連絡をいただき、感謝しております。

ただし、INI ファイルを使うのも面倒だし、かといって毎回オプションを指定するのは更に面倒ですので、alias して使っています。
/usr/local/bin/sp850es -dev=3716 -port=/dev/ttyUSB0 -freq=5000 -bps=38400

ところで、ROM に書き込めなかったのが最大の難関だと思っていたのですが、それは開発環境の話で、実際にはそれ以上の難関がありまして・・・

ええっと、僕は電子回路の設計とか、まったくできないんです(泣)

ということですので、しばらくは LED や UART で遊ぶことになりそうです。
先日ビルドしたV850クロス開発環境では、Interface 6月号の TOPPERS の記事(第6章)のサンプルで下記のコンパイルエラーが出ることが発覚したので、作り直しました。
$ make
/usr/local/v850/bin/v850-nec-elf-gcc -g -Wa,--gstabs -O2 -mv850e -mdisable-callt -I. -c led_c.c
cc1: invalid option `v850e'
cc1: invalid option `disable-callt'
make: *** [led_c.o] エラー 1

TOPPERS 的にはターゲットは v850-nec-elf よりも v850-elf の方が都合が良さそうなので、今回は --target=v850-elf でビルドしました。

■binutils のビルド
$ tar jxf binutils-2.17.tar.bz2
$ cd binutils-2.17
$ mkdir objs
$ cd objs
$ ../configure --target=v850-elf --prefix=/usr/local/v850
$ make
$ su
# make install

以下のビルドで必要ですので、/usr/local/v850/bin にパスを通しておきます。
$ export PATH=/usr/local/v850/bin:$PATH


■gcc, newlib のビルド
$ tar jxf gcc-4.1.2.tar.bz2 
$ tar zxf newlib-1.15.0.tar.gz
$ cp -r newlib-1.15.0/newlib newlib-1.15.0/libgloss gcc-4.1.2
$ cd gcc-4.1.2
$ mkdir objs
$ cd objs
$ ../configure --target=v850-elf --prefix=/usr/local/v850 --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-newlib --with-gxx-include-dir=/usr/local/v850/v850-elf/include
$ make
$ su
# make install


■gdb のビルド
$ tar jxf gdb-6.6.tar.bz2 
$ cd gdb-6.6
$ mkdir objs
$ cd objs
$ ../configure --target=v850-elf --prefix=/usr/local/v850
$ make
$ su
# make install




忍者ブログ [PR]
ブログ内検索
カレンダー
03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
最新コメント
[07/07 tiffany jewelry uk]
[09/17 車載モニター・阿蘇テック]
[08/30 愛]
[06/12 シモネッタ]
[06/11 arms22]
最新トラックバック
フリーエリア
あわせて読みたい
    Firefox 2 無料ダウンロード
    バーコード
    プロフィール
    名前:
    シモネッタ
    性別:
    非公開
    カウンター
    アクセス解析