私はいくつかのコードを持っています
// Locals to hold pointers to the hardware
static volatile uint32_t *gpio ;
static volatile uint32_t *pwm ;
static volatile uint32_t *clk ;
static volatile uint32_t *pads ;
void setPadDrive (int group, int value)
{
uint32_t wrVal ;
if ((wiringPiMode == WPI_MODE_PINS) || (wiringPiMode == WPI_MODE_PHYS) || (wiringPiMode == WPI_MODE_GPIO))
{
if ((group < 0) || (group > 2))
return ;
wrVal = BCM_PASSWORD | 0x18 | (value & 7) ;
*(pads + group + 11) = wrVal ;
if (wiringPiDebug)
{
printf ("setPadDrive: Group: %d, value: %d (%08X)\n", group, value, wrVal) ;
printf ("Read : %08X\n", *(pads + group + 11)) ;
}
}
}
そのため、CPUレジスタはメモリマップされ、ポインターによってポイントされます。そのため、これらのメモリ ロケーションにアクセスすると、CPU は揮発性を認識し、レジスタへのアクセスを再ルーティングします。
また、CPU は特定のメモリ位置がどのレジスタにルーティングされるかをどのように認識しますか? それを示す表がありませんか?