タグ付けされた質問 「compiler」

コンパイラは、ソース言語で記述されたコードを(バイナリ)ターゲット言語に変換します。

3
Microchip XC16の関数の絶対アドレス
デバイス:dsPIC33FJ128GP802 次のようにいくつかの* .sファイルがあります .global _D1 .section .speex, code _D1: .pword 0x66C821, 0x1B0090, 0xD96C36, 0x9B60B0, 0xDD4E36, 0xBF4E53 .pword 0xD1098B, 0x719BD9, 0x873989, 0x003B69, 0x279035, 0xED4244 .pword 0xE1403C, 0x54D439, 0x826550, 0xC59627, 0xDD0432, 0x88FA29 同じことを* .hで宣言しました extern void D1(void); 今、私はD1をテーブル読み取り関数に渡します nowPlaying.file1 = (unsigned long) D1; function(nowPlaying.file1); 私の問題は、D1のアドレスが0X8000より大きい場合、ルーチンが正しくないことです。大小のコードモデルを試しましたが、結果は同じです。これはポインタの16ビット制限によるものだと思います。コードからD1の絶対アドレスに直接アクセスする方法はありますか。組み込み関数やマクロのようなものかもしれません。

3
#if 0の機能
今日、私はPICのプログラミングにMPLAB Xを使用し始め、コードを入力するための複数のファイルとスポットを含むコードテンプレートを見つけました。私のコードが含まれている単一のファイルがある前に。このテンプレートでは、構成ビットを配置することになっていますが、次のテキストがあります。 /* TODO Fill in your config bits here. Remove #if 0 to embed config words. */ #if 0 /* General syntax for configuration word 1 - Check your device .h file for an up to date listing of available macros.*/ __CONFIG(FOSC_INTOSC & WDTE_OFF & PWRTE_OFF & MCLRE_OFF & …

5
HEXファイルの編集可能なPICシリアル番号
現在、使用しているデザインのシリアル番号がファームウェアにハードコードされています。ファームウェアはシリアル番号を読み取って報告できます。それは私が必要とするもののためにうまく働きます。問題は、新しいシリアル番号ごとにコードを変更して再コンパイルする必要があることです。これは、構築するユニットが多数ある場合に扱いにくく、エラーが発生する可能性があり、万能の悪い習慣です。シリアル番号が私に与えられ、ハードウェア設計がしっかりと決められているので、ハードウェアに機能を追加してユニットをシリアル化することはできません(EEPROM /シリコンIDチップ/プルアップ)。私がやりたいことは、シリアル番号を固定アドレスに配置し、コードを1回コンパイルしてから、コンパイルされたHEXファイルで新しいシリアル番号ごとにそのアドレスを編集することです。番号はいくつかの場所で参照されているので、理想的には、一度定義して特定したいのですが、次に、コード内の他の場所でその「変数」を参照します。C18コンパイラを使用して、選択した特定のアドレス指定可能なメモリ位置に定数データを配置する方法を知っている人はいますか?誰もが提案できるより良い方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.