2
内存映射的I / O寻址如何工作?
内存映射的I / O寻址如何工作? 我试图了解提供的I2S示例:有人让它运行吗?。 配置时钟: #define BCM2708_PERI_BASE 0x20000000 #define CLOCK_BASE (BCM2708_PERI_BASE + 0x101000) /* Clocks */ 它首先像这样映射代码... clk_map = (unsigned char *)mmap( (caddr_t)clk_mem, MAP_BLOCK_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_FIXED, mem_fd, CLOCK_BASE ); 然后它会做某事... // Always use volatile pointer! clk = (volatile unsigned *)clk_map; 当引用它时,会有0x26和0x27的这些奇怪的加法,那是什么意思? printf("Disabling I2S clock\n"); *(clk+0x26) = 0x5A000000; *(clk+0x27) = 0x5A000000; …