ここでは、2 つの独立したトピックを混在させています。リンクしている質問は、マイクロ コントローラーのメモリ マップド IO に関するものです。Atmel の Microcontroller であるATM128を指しています。その質問のOPは、そのレジスタの1つに書き込もうとしています。これらのレジスタには特定のアドレスが与えられています。
レジスタのアドレスに書き込もうとしている場合は、メモリ マップド IO がどのように機能するかを理解する必要があります。作業中のチップセット/IC の仕様を読む必要があります。「Ubuntu固有の回答」についてこれを尋ねることは無意味です。
Ubuntu OS で実行されているプログラムは、独自の仮想アドレス空間で実行されています。したがって、アドレスが使用可能かどうかを尋ねるx
のy
は無意味です...ハードウェアにアクセスしていない限り、特定のアドレスを探す意味はありません.OSが提供するものを使用するだけで、あなたが良いことがわかります.
編集に基づいて、メモリ マップド IO のシミュレーションを実行しようとしているという事実に基づいて、次のようなことができます。
#ifdef SIMULATION
unsigned int TX_BUF_REG; // The "simulated" 32-bit register
#else
#define TX_BUF_REG 0x123456 // The actual address of the reg you're simulating
#endif
次に、アクセサ マクロを使用して、マスクを介して特定のビットを読み書きします (通常は行われます)。
#define WRITE_REG_BITS(reg, bits) {reg |= bits;}
...
WRITE_REG_BITS(TX_BUF_REG, SOME_MASK);
静的変数はこのようにシミュレーションで使用できるため、どのアドレスに書き込むのが「安全」であるかを心配する必要はありません。