According to "BCM2835 ARM Peripherals" page 90, the GPIO registers start from 0x 7E20 0000. While according to kernel file: arch/arm/mach-bcm2708/include/mach/platform.h, as below.

#define BCM2708_PERI_BASE        0x20000000
#define GPIO_BASE                (BCM2708_PERI_BASE + 0x200000) /* GPIO */

So GPIO_BASE = 0x 2020 0000.

Which one is right? Could anyone help? Thanks!

I find below part from "BCM2835 ARM Peripherals", page 6. I think it can answer my question. enter image description here


They are both correct.

Depends on context.

Given that your context is not GPU use 0x20000000.

  • Thank you! I update my post of more info from the spec, and it could answer my question in details. – Tom Xue Dec 30 '14 at 16:19

Address Mapping Done in two context 1.VC CPU BUS Address 2.ARM PHysical Address 3.ARM Virtual Address

Case 0 : VC CPU BUS Address----------->ARM PHysical Address 0x7Ennnnnn ------------------->0x20nnnnnn

Case 1 : ARM PHysical Address ------------>ARM Virtual Address 0x20000000 ----------------------->0xF2000000.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.