16ビット

S1C17 Family

FAQ

アセンブラ

コンパイラGCC

統合開発環境(GNU17 IDE)

リンカ

デバッガ(GDB)

その他のツール

Multi Programmer

Gang Programmer

アセンブラ

  • as-01ソフトウェア割り込み時に割り込みレベルを指定する方法
対象 GNU17 version Ver.3.x.x
質問 ソフトウェア割り込み時(int 命令)に、割り込みレベルを指定するにはどうすればよいか?
回答

S1C17 のアセンブラ命令には int 命令以外に、割り込みレベル指定付ソフトウェア割り込みintl が用意されています。書式は以下のとおりで、imm5 にベクタ番号、imm3 に割り込みレベルを指定します。
intl imm5, imm3
例えば、割り込み 0x3 を発生させ、ILを 0x2 に設定する場合は、以下のように記述します。
intl 0x3, 0x2 
詳しくは S1C17コアマニュアル の「7.命令の詳細説明」をご参照ください。

  • as-02アセンブラソースコードにおけるコメントの取り扱い
対象 GNU17 version Ver3.x.x
質問 アセンブリソースコード中のコメントについて、";"と"/*"を組み合わせるとエラーになる。
回答 アセンブリソースコードの中では、コメントの優先度が";" < "/*"となっており、"/*"の表記に対して"*/"がないとエラーになります。
  • as-03アセンブラ言語を使った割り込み設定方法
対象 GNU17 version Ver3.x.x
質問 アセンブラ言語を使った割り込み設定の記述方法について知りたい。
回答 弊社Web公開中の、スタートアップマニュアル(アセンブラ版)と、GNU17V3同梱のサンプルプログラム(C:\EPSON\GNU17V3\sample)を参考にしてください。

コンパイラGCC

  • gcc-01コードサイズをできるだけ小さくしたい
対象 GNU17 version Ver.3.x.x
質問 ROMサイズが厳しいため少しでもコードを小さくしたい。
回答 出来るだけ多次元配列を使用せず、代わりに複数の1次元配列を使用するようにしてください。多次元配列へのアクセスは、コード効率を低下させます。また、関数へ構造体を渡す場合や、関数から構造体を返す場合に、ポインタで渡すようにしてください。ポインタ渡しにしない場合、構造体全体をコピーする処理が入るためコードが大きくなります。
  • gcc-02PSR へのアクセス方法
対象 GNU17 version Ver.3.x.x
質問

現在の割り込みの状態を知りたいが、PSRを読み出すにはどうしたら良いか?また、PSRを直接変更する事は出来るか?

回答 S1C17 には、PSR にアクセスする命令は用意されておりません。PSR を参照、変更するには、int命令して使用し転送スタックにPSRを保存し、保存されたPSRを参照、変更したものをreti 命令を使用して元に戻すことで実現可能です。
なお、機種により PSR を参照するためのレジスタを搭載しているものもあります。詳しくは各機種のテクニカルマニュアルをご参照ください。
PSRサンプル
  • gcc-03コンパイラ起動オプションに"-S"を指定するとエラー発生
対象 GNU17 version Ver3.x.x
質問 コンパイラに対し、コマンドラインオプション"-S"を指定するとsyntax errorが発生する。
回答 コマンドラインオプション"-S"を指定すると、syntax errorが発生しますが、".o"ファイルとしてアセンブリソースファイルが出力されています。このオプションを指定した場合は、GNU17の仕様としてオブジェクトファイルが生成出来ないため、リンカのパスで失敗します。
GNU17としては、コマンドラインオプション"-S"を指定せず、コンパイル結果である".elf"ファイルを用いて、objdumpコマンドによりアセンブリ結果を参照する方法を標準としています。
  • gcc-04Shft-JISへの対応方法
対象 GNU17 version Ver3.x.x
質問 GNU17でShift-JISの対応するにはどうしたら良いか。
回答 GCCの基本的な文字コードは、UTF-8です。そのため、Shift-JISに対応するために、以下の設定を行ってください。
対象プロジェクトから[Properties]ダイアログ>C/C++ Build>Settings>[Tool Settings]>[Cross GCC Compiler]>[Dialect]>[Other dialect flags]
に -finput-charset=CP932 を追加して下さい。
“-finput-charset”は、文字コードを指定するオプションになり、Shift-JIS(CP932)を指定します。
  • gcc-05ROMエリアに固定値データを配置する方法
対象 GNU17 version Ver3.x.x
質問 Cソースコード上から、固定データを特定のアドレスに配置したい。
回答

例えば、以下のようにソースコードとリンカスクリプトを記述することにより、アドレス0xB000~0xB00Fにデータ0x00~0x0Fを配置します。

ソースコード
const unsigned char __attribute__ ((section (".updatable"))) checkerLineBit[16] = {
0x00, 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F
};

リンカスクリプト
.updatable (0xB000) :
{
*(.updatable);
. = ALIGN(0x800);
} > irom = 0xffff

  • gcc-06最適化オプションの変更方法
対象 GNU17 version Ver3.x.x
質問 Cコンパイラ 最適化オプションの変更方法は。
回答

S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。

  • gcc-07プログラムサイズの確認方法
対象 GNU17 version Ver3.x.x
質問 プログラムサイズの確認方法は。
回答

S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。

  • gcc-08スタック使用量の確認方法
対象 GNU17 version Ver3.x.x
質問 スタック使用量を知りたい。
回答

S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。

  • gcc-09プログラム、データ、変数の配置情報の確認
対象 GNU17 version Ver3.x.x
質問 プログラム、データ、変数の配置情報を知りたい。
回答

S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。

  • gcc-10ビルド後に生成されるファイルと用途
対象 GNU17 version Ver3.x.x
質問 ビルド後に生成されるファイルと用途は。
回答

S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。

統合開発環境(GNU17 IDE)

  • ide-01IDEのプロジェクトにおいて、管理すべきファイル
対象 GNU17 version Ver.3.x.x
Ver.2.x.x
質問 IDEで作成したプロジェクトを構成管理ソフトで管理したいが、どのファイルを管理すればよいか?
回答 管理する必要があるのは、以下のファイルです。
・ソースファイル
・ヘッダファイル
・IDEがプロジェクト内に生成するファイルのうち、下記表が示す「要管理ファイル」
GNU17v3の場合
GNU17v2の場合
  • ide-02ターゲットCPUの選択リストにある「S1C17」は何に使用するのか?
対象 GNU17 version Ver3.x.x
質問 プロジェクト設定の properties「GNU17 General」にある「Target CPU Device」で選択出来る項目に CPU名以外に「S1C17」というのがあるが、何に使用するのか?
回答 S1C17 は機種に依存しない汎用的な設定で、CPUコアをシミュレートするために用意されています。
メモリマップは特に区分けされていません。ブートアドレスは、デフォルトで0x8000となっています。(変更可)
  • ide-03Eclipse経由でプラグインインストール時にリストアップされない
対象 GNU17 version Ver3.x.x
質問 Eclipse経由でプラグインをインストールしようとした場合、プラグインがリストアップされない。
回答 GNU17 IDEのHelp>Install New Softwareからプラグインをインストールする場合、必要事項入力後、プラグインがリストアップされるまで3~4分かかる場合があります。これは、Elipseの公式サイトにも記載がありますのでご確認ください。
  • ide-04意味不明なエラーが発生
対象 GNU17 version Ver3.x.x
質問 ビルド時に以下のエラーが発生する。
"Couldn't reserve space for cygwin's heap, Win32 error 0."
回答 GNU17で採用しておりますGCCをWindowsアプリケーションで使用するためのライブラリ(msys-1.0.dll)の問題です。お客様の環境によっては、OSの再起動で解消される場合があります。また、一般的にはrebaseすることで解決するようです。GNU17V3は対策用にrebase済みのmsys-1.0.dllを"C:\EPSON\GNU17V3\utility\msys"に用意しています。本ファイルをGNU17V3のフォルダ(GCC4の場合は、"C:\EPSON\GNU17V3\gcc4")に上書きしてください。
前記の方法で解決しない場合は、以下のような対応をお試しください。
- OSを起動し直して、GNU17V3を(なるべく)最初に起動してください。
- 他のツールがインストールしたmsys-1.0.dllが存在するようなら、他のツールがインストールしたmsys-1.0.dllをGNU17v3のフォルダ(C:\EPSON\GNU17V3\gcc4)に上書きしてください。
  • ide-05プロジェクト名中にドットを含めたい
対象 GNU17 version Ver3.x.x
質問 プロジェクト名に"."を使用し、プロジェクト名を"文字列1.文字列2"のように設定した場合、ビルドで時にエラーが発生する。
回答 プロジェクト名に、半角英数字とアンダーバー以外の文字は使用しないでください。
  • ide-06プロジェクト中で拡張子.cと.Cを混在させたい。
対象 GNU17 version Ver3.x.x
質問 プロジェクト中で拡張子.cと.Cを混在させたい。
回答 Eclipse CDTの仕様により混在させることは出来ません。どちらかに統一してください。
  • ide-07便利なショートカットキー
対象 GNU17 version Ver3.x.x
質問 覚えておくと便利なショートカットキーは。
回答
操作内容 ショートカットキー
コメントアウト Ctrl + /
ファイル内文字列検索・置換 Ctrl + F
ファイル横断文字列検索・置換 Ctrl + H
指定行にジャンプ Ctrl + L
ブレークポイントを設定 Ctrl + Shift + B
書式整形 Ctrl + Shift + F
ステップイン(Step Into) F5(デバッガ)
ステップ オーバー(Step Over) F6(デバッガ)
ステップ リターン(Step Return) F7(デバッガ)
再開(Resume) F8(デバッガ)

※本情報は参考情報です。

リンカ

  • lnk-01マップファイルにおけるスタックポインタの表記について
対象 GNU17 version Ver3.x.x
質問 配置情報が記載されているマップファイルについて、スタックポインタ開始位置("__START_stack")は0x7c0になっているが、実際の設定と異なっている。
回答 デフォルトのリンカスクリプトにおいて、スタックポインタの設定は、0x7C0に設定されています。リンカスクリプトファイルを指定しない場合は、デフォルトのリンカスクリプトが採用されますので、常にスタックポインタが0x7C0に設定されます。これはマップファイル表示のみの問題あり、実際の動作には影響ありません。

デバッガ(GDB)

  • gdb-01step実行で関数内に入れない
対象 GNU17 version Ver.3.x.x
質問 ソースウィンドウでstep実行を行っているとき、関数内に入れないことがある。
回答 コンパイラによりコードが最適化されているために起こります。"C" プログラム上は存在するコードが、コンパイラの最適化処理によりアセンブラプログラム上では"C"プログラムを同じ場所に存在していません。このためあたかもプログラム自体がそこに存在しないように見えます。"C"プログラムに沿ったstep実行を行いたい場合は、ビルド時に最適化を行わない設定としてください。
最適化の設定につきましてはS5U1C17001Cマニュアル「 Cコンパイラ」の章をご参照ください。
  • gdb-02周辺回路レジスタのwatch表示をさせたい
対象 GNU17 version Ver.3.x.x
質問 周辺回路レジスタのwatch表示をさせたい。
回答 例えば、”MSCPROT”といいう名称のレジスタでしたら、expressionsのウィンドウに{MSCPROT_REG}0x4000と記述する必要があります。
  • gdb-03[resume]ボタンが表示されない
対象 GNU17 version Ver.3.x.x
質問 Buildを実行した時、エラー、ワーニングは発生していないが、[run]→[Debug Configurations]を選択し、デバッガを起動した場合、[resume]ボタンが表示されないことがある。
回答 プルダウンメニューの[run]→[Debug configuration]→[Debugger]タブ上に"Stop on startup"という項目があります。このチェックボックスのチェックが外れているか、欄内に記入されている関数が、"main"でない可能性があります。
  • gdb-04デバッガが暴走または操作できなくなる
対象 GNU17 version Ver.3.x.x
質問 ダウンロードしたソフトを走行、ステップ実行すると暴走する。また、デバッガから操作ができなくなる。
回答 以下の事項について、ご確認ください。
・スタックポインタの設定は正しくできていますか。
・デバッグ端子をGPIOに切り替えていませんか。
・RAMの最後尾64バイトはデバッガが使用します。この領域を使用していませんか。
・プログラム走行中にウォッチドッグタイマ割り込みは入っていませんか。また、DEBUGモード時にウォッチドッグタイマの動作クロックを供給するか否か設定するビット(=DBRUN)が、"1"になっていませんか。
・スタートアップルーチンを自作されているようであれば、内容に問題はございませんか。
・S1C17コア予約I/Oエリア(0xfffc00~0xffffff番地)をアクセスしていませんか。
  • gdb-05デバッガ起動オプションは
対象 GNU17 version Ver.3.x.x
質問 デバッガ起動オプションは。
回答 S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。
  • gdb-06デバッガの簡易操作方法
対象 GNU17 version Ver.3.x.x
質問 デバッガ クイックリファレンスありますか。
回答 S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。
  • gdb-07表示されていないビューの表示方法
対象 GNU17 version Ver.3.x.x
質問 表示されていないビューの表示方法は。
回答 S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。
  • gdb-08周辺回路レジスタを見やすく表示
対象 GNU17 version Ver.3.x.x
質問 周辺回路レジスタを見やすく表示
回答 S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。
  • gdb-09プログラム実行時間計測方法
対象 GNU17 version Ver.3.x.x
質問 プログラム実行時間計測方法は。
回答 S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。
  • gdb-10メモリ、レジスタ内容参照時の注意事項
対象 GNU17 version Ver.3.x.x
質問 メモリ、レジスタ内容参照時の注意事項は。
回答 S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。
  • gdb-11デバッガが突然起動しなくなった
対象 GNU17 version Ver.3.x.x
質問 デバッガが突然起動しなくなった。
回答 S1C17ソフトウエア統合開発環境(GNU17)をダウンロードするサイトに掲載されている"GNU17V3.1.1チュートリアル補足資料"をご参照ください。

その他のツール

  • oth-01GNU17ver3でICDminiV1/2のFlashライタモードを使用したい
対象 GNU17 version Ver.3.0.0
質問 S5U1C17001H1/2(ICDminiV1/2)のFlashライタモードを使用したい。
回答 GNU17V3では、S5U1C17001H1/2(ICDminiV1/2)のFlashライタモードをサポートしていませんが、Flashライタモードを使用するための専用のツールを個別にご提供しております。弊社営業窓口までお問い合わせください。
  • oth-02psaファイルをディスアセンブルする
対象 GNU17 version Ver.3.x.x
質問 psa(モトローラSフォーマット)ファイルをディスアセンブルして、アセンブラ命令に変換したい。
回答

GNU17に付属されている objdumpコマンドを用いることにより、実現可能です。
コマンドラインから以下のように起動してください。

 objdump -D -m c17 --stop-address=末尾アドレス XXXX.psa > XXXX.s

なお、constなどで定義されたデータ、割り込みベクタなども命令コードに変換されますので、注意が必要です。

Multi Programmer

  • mpg-01Verifyエラーが発生する
対象 GNU17 version Ver.4.0.0
質問 Multi Programmerを使用した量産において、Verifyエラーがする。
回答 ICDmini⇔ターゲット間に使用している配線の長さをご確認ください。
規程より長さを延長している場合、書込みデータにノイズが乗り、Verifyでエラーとなる場合があります。
  • mpg-02MultiProgrammer.dllの使用方法
対象 GNU17 version Ver.4.0.0
質問 MultiProgrammer.dllを使用したいが、マニュアルの記述だけでは使用方法が分からない。
回答

MultiProgrammer.dllを使用した制御サンプルソフトをご提供しております。弊社営業窓口までお問い合わせください。

Gang Programmer

  • gpg-01ログファイルの読み方を知りたい
対象 GNU17 version Ver.2
質問 Gang Programmerで問題が発生した場合、ログファイルの読み方を知りたい。
回答 ログファイル(gplog.txt)の読み方については、マニュアルに記述しております。
Gang Programmerの問題解決のため弊社営業窓口にお問い合わせの際には、以下の情報をお送りください。
・問題が発生している時のLCDパネルの写真
・gplog.txt