gnrc_border_router example on a pba-d-01-kw2x board

Hi,

I used the hack #4725 from Kaspar to run the gnrc_border_router example on a pba-d-01-kw2x board. It worked fine. Now the branch with the hack from Kaspar was deleted [1].

Hence I've tested the gnrc_border_router exampleofthe latest RIOT version from GitHub.

I tried to ping an interface of the border router and got a kernel panic:

> ping6 fe80::202:f8ff:fe70:f121%6

ping6 fe80::202:f8ff:fe70:f121%6 0x31a5 *** RIOT kernel panic: FAILED ASSERTION.

pid | name | state Q | pri | stack ( used) | location    1 | idle | pending Q | 15 | 256 ( 128) | 0x1fffd66c    2 | main | pending Q | 7 | 1536 ( 916) | 0x1fffd76c    3 | 6lo | bl rx _ | 3 | 1024 ( 404) | 0x200011f0    4 | ipv6 | running Q | 4 | 1024 ( 784) | 0x1ffffce8    5 | udp | bl rx _ | 5 | 1024 ( 300) | 0x20001a08    6 | gnrc_ethos | bl rx _ | 3 | 1024 ( 304) | 0x1fffca5c    7 | kw2xrf | bl rx _ | 3 | 1024 ( 272) | 0x1ffff8b0    8 | uhcp | bl mutex _ | 6 | 1536 ( 988) | 0x20001e0c

     > SUM | | | 8448 ( 4096)

*** halted.

I thinkit should be possible to run thegnrc_border_router example ofthe latest RIOT version from GitHub on a pba‑d‑01‑kw2xboard successfully.

Am I right or should I use a differentboard for the border router example?

Axl

[1] https://github.com/RIOT-OS/RIOT/pull/4725

Hey Axl,

0x31a5 *** RIOT kernel panic: FAILED ASSERTION.

Did you check where it chrashed (0x31a5)? Try to find the address in objdump out ("BOARD=<board> make info-objdump").

I thinkit should be possible to run thegnrc_border_router example ofthe latest RIOT version from GitHub on a pba‑d‑01‑kw2xboard successfully.

Definitely. If you reproducably crash your board, it would actually be nice to find out which change is responsible.

Kaspar

Hey Kaspar,

I did "arm-none-eabi-objdump -S bin/pba-d-01-kw2x/gnrc_border_router.elf".

I think this is the relevant part of the output:

                         ... static void _receive(gnrc_pktsnip_t *pkt) {      3194: e92d 47f0 stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, lr}      kernel_pid_t iface = KERNEL_PID_UNDEF;      gnrc_pktsnip_t *ipv6, *netif, *first_ext;      ipv6_hdr_t *hdr;

     assert(pkt != NULL);      3198: 4604 mov r4, r0      319a: b918 cbnz r0, 31a4 <_receive+0x10>      319c: 2003 movs r0, #3      319e: 494e ldr r1, [pc, #312] ; (32d8 <_receive+0x144>)      31a0: f7fd f97a bl 498 <core_panic>

     netif = gnrc_pktsnip_search_type(pkt, GNRC_NETTYPE_NETIF);      31a4: f04f 31ff mov.w r1, #4294967295      31a8: f002 fce0 bl 5b6c <gnrc_pktsnip_search_type>

     assert(netif);      31ac: 2800 cmp r0, #0      31ae: d0f5 beq.n 319c <_receive+0x8>      iface = ((gnrc_netif_hdr_t *)netif->data)->if_pid;      31b0: 6883 ldr r3, [r0, #8]      31b2: 885e ldrh r6, [r3, #2]      31b4: 46a0 mov r8, r4      31b6: 4625 mov r5, r4

     first_ext = pkt;                          ...

Can I do something else?

Axl

Hi Axl,

if I see this correctly, you run into a problem that should be fixed by now. Can you update your version to current master and try again?

Cheers, Oleg

Hey Oleg,

I updated my version to the current master and tried it again. Now it works perfect!

Cheers, Axl