Does the EFR32_slwstk6061a port work?


jake.a.baldwin@...
 

The EFR32_SLWSTK6061A board is very similar to the EFR32_SLWSTK6000B. The microcontroller uart0, led, and button pins are exactly the same. Even though the microcontrollers are different they share the same flash and RAM starting location the same peripheral memory addresses. So I figured I would try to build the example project for the 6061A and load it onto the 6000B. But it didn't work.

I followed the device tree source all the way down to zephyr/dts/arm/silabs/efr32fg1p.dtsi and found that the starting register for the gpio block is listed at 0x4000A400 not 0x4000A000 like it's supposed to be. Here's the excerpt:

gpio@4000a400 {
            compatible = "silabs,efr32xg1-gpio";
            reg = <0x4000a400 0xc00>;
            interrupts = <9 2 17 2>;
            interrupt-names = "GPIO_EVEN", "GPIO_ODD";
            label = "GPIO";

            ranges;
            #address-cells = <1>;
            #size-cells = <1>;

            gpioa: gpio@4000a000 {
                compatible = "silabs,efr32xg1-gpio-port";
                reg = <0x4000a000 0x30>;
                label = "GPIO_A";
                gpio-controller;
                #gpio-cells = <2>;
            };
...
...


gpioa is correctly listed at 0x4000a000 but the higher level group starts at 0x4000A400 which is believe is incorrect.

Two questions: Does this look like an error? Has anyone loaded this onto a 6061A and seen the hello world message print in a console?

Thanks,
Jake


Kumar Gala
 

On Oct 29, 2018, at 5:00 PM, Jake Baldwin <jake.a.baldwin@...> wrote:

The EFR32_SLWSTK6061A board is very similar to the EFR32_SLWSTK6000B. The microcontroller uart0, led, and button pins are exactly the same. Even though the microcontrollers are different they share the same flash and RAM starting location the same peripheral memory addresses. So I figured I would try to build the example project for the 6061A and load it onto the 6000B. But it didn't work.

I followed the device tree source all the way down to zephyr/dts/arm/silabs/efr32fg1p.dtsi and found that the starting register for the gpio block is listed at 0x4000A400 not 0x4000A000 like it's supposed to be. Here's the excerpt:

gpio@4000a400 {
compatible = "silabs,efr32xg1-gpio";
reg = <0x4000a400 0xc00>;
interrupts = <9 2 17 2>;
interrupt-names = "GPIO_EVEN", "GPIO_ODD";
label = "GPIO";

ranges;
#address-cells = <1>;
#size-cells = <1>;

gpioa: gpio@4000a000 {
compatible = "silabs,efr32xg1-gpio-port";
reg = <0x4000a000 0x30>;
label = "GPIO_A";
gpio-controller;
#gpio-cells = <2>;
};
...
...


gpioa is correctly listed at 0x4000a000 but the higher level group starts at 0x4000A400 which is believe is incorrect.

Two questions: Does this look like an error? Has anyone loaded this onto a 6061A and seen the hello world message print in a console?

Thanks,
Jake
Let me take look, I convert the EFR32 gpio driver over to device tree so its possible I made an error in an address. I didn’t have the hardware to test on.

- k


Kumar Gala
 

On Oct 29, 2018, at 5:00 PM, Jake Baldwin <jake.a.baldwin@...> wrote:

The EFR32_SLWSTK6061A board is very similar to the EFR32_SLWSTK6000B. The microcontroller uart0, led, and button pins are exactly the same. Even though the microcontrollers are different they share the same flash and RAM starting location the same peripheral memory addresses. So I figured I would try to build the example project for the 6061A and load it onto the 6000B. But it didn't work.

I followed the device tree source all the way down to zephyr/dts/arm/silabs/efr32fg1p.dtsi and found that the starting register for the gpio block is listed at 0x4000A400 not 0x4000A000 like it's supposed to be. Here's the excerpt:

gpio@4000a400 {
compatible = "silabs,efr32xg1-gpio";
reg = <0x4000a400 0xc00>;
interrupts = <9 2 17 2>;
interrupt-names = "GPIO_EVEN", "GPIO_ODD";
label = "GPIO";

ranges;
#address-cells = <1>;
#size-cells = <1>;

gpioa: gpio@4000a000 {
compatible = "silabs,efr32xg1-gpio-port";
reg = <0x4000a000 0x30>;
label = "GPIO_A";
gpio-controller;
#gpio-cells = <2>;
};
...
...


gpioa is correctly listed at 0x4000a000 but the higher level group starts at 0x4000A400 which is believe is incorrect.

Two questions: Does this look like an error? Has anyone loaded this onto a 6061A and seen the hello world message print in a console?
Hopefully Christian can chime in if the latest code is working for him or not.

Thanks,
Jake
So the 0x4000a400 is correct since its the common registers (GPIO_EXTIPSELL..GPIO_LOCK) to all port’s. There isn’t any code today that utilizes any of those registers in Zephyr so it shouldn’t be an issue.

One thing I’d suggest is maybe trying an older version of Zephyr to see if “hello world” works. Maybe we’ve broken something since the initial commit of the EFR32_SLWSTK6061A board code.

- k


Christian Taedcke <hacking@...>
 

Hello Jake,

Am Montag, den 29.10.2018, 18:03 +0000 schrieb Kumar Gala:
On Oct 29, 2018, at 5:00 PM, Jake Baldwin <jake.a.baldwin@...
wrote:
The EFR32_SLWSTK6061A board is very similar to the
EFR32_SLWSTK6000B. The microcontroller uart0, led, and button pins
are exactly the same. Even though the microcontrollers are
different they share the same flash and RAM starting location the
same peripheral memory addresses. So I figured I would try to build
the example project for the 6061A and load it onto the 6000B. But
it didn't work.

...
gpioa is correctly listed at 0x4000a000 but the higher level group
starts at 0x4000A400 which is believe is incorrect.

Two questions: Does this look like an error? Has anyone loaded this
onto a 6061A and seen the hello world message print in a console?
Hopefully Christian can chime in if the latest code is working for
him or not.
I just tried samples/hello_world from the current master on the
efr32_slwstk6061a and it is working fine:

***** Booting Zephyr OS zephyr-v1.13.0-1384-gf2b9cc62bb *****
Hello World! efr32_slwstk6061a

Also samples/basic/button works as expected.

Since your board has a Mighty Gecko, it might be better to start from
https://github.com/zephyrproject-rtos/zephyr/pull/9042 instead of the
Flex Gecko, which is used on the EFR32_SLWSTK6061A.

Regards,
Christian