Hi, Most probably we need to trace when network init is done. Usually in the early stages the "# define showprogress(c) arm_lowputc(c)" and "arm_lowputs" is used to trace the init process, so maybe you can instrument the code to find out what is going on.
Best regards, Petro чт, 19 трав. 2022 р. о 22:15 Nathan Hartman <hartman.nat...@gmail.com> пише: > On Thu, May 19, 2022 at 12:40 PM Sebastien Lorquet <sebast...@lorquet.fr> > wrote: > > > > Hi, > > > > I have a nucleo-h743zi, in which I have enabled network. > > > > It seems to work so far. > > > > When I enable Network Info Debug, I get a crash. > > > > The crash does not happen with Network info disabled (Enabling network > > warnings and errors is ok) > > > > I am writing on the mailing list to get feedback and discussion. > > > > Here is the crash, pretty obvious cause: > > > > A▒DE > > stm32_ethinitialize: intf: 0 > > stm32_ifdown: Taking the network down > > netdev_register: Registered MAC: 2e:7e:27:a2:69:88 as dev: eth0 > > up_assert: Assertion failed at file:init/nx_start.c line: 703 task: Idle > > Task > > > > First of all I dont know where this MAC is obtained but whatever, thats > > not my problem. I will put the real mac later. > > > > > > Note that nx_start is a pretty general file for nuttx, not related to > > board or chip. > > > > (gdb) break nx_start.c:703 > > Breakpoint 1 at 0x8002b9a: file init/nx_start.c, line 703. > > Note: automatically using hardware breakpoints for read-only addresses. > > (gdb) mon reset init > > SWD DPIDR 0x6ba02477 > > target halted due to debug-request, current mode: Thread > > xPSR: 0x01000000 pc: 0x080002e0 msp: 0x240059fc > > (gdb) c > > Continuing. > > > > Breakpoint 1, nx_start () at init/nx_start.c:703 > > 703 DEBUGVERIFY(group_setupidlefiles(&g_idletcb[i])); > > (gdb) s > > group_setupidlefiles (tcb=0x24001114 <g_idletcb>) at > > group/group_setupidlefiles.c:61 > > 61 FAR struct task_group_s *group = tcb->cmn.group; > > (gdb) n > > 66 DEBUGASSERT(group != NULL); > > (gdb) n > > 74 fd = nx_open("/dev/console", O_RDWR); > > (gdb) n > > 75 if (fd == 0) > > (gdb) n > > 88 if (fd > 0) > > (gdb) n > > 98 return -ENFILE; > > > > =>assert > > > > This function group_setupidlefiles fails to open /dev/console and > > triggers an assert. > > > > Now please dont tell me that this code will work when I remove debug, I > > dont care. This is not the root cause. > > > > > > Does this code fails to open the console because some network debug has > > been emitted first? > > > > What to do, then? > > > > It is pretty common to have boards emit debug messages before the OS is > > started. I cant believe I'm the only one that will see this. > > > > It seems to happen before I have CONFIG_DEV_CONSOLE, which is the > > default, and is ok, since i'm just using a serial port with this board. > > > > If I disable CONFIG_DEV_CONSOLE, then nsh does not start, so I believe > > this setting is required. > > > > USB console is not enabled nor planned to be used. > > > > > > Can you please help me understand and fix this? > > > > It does not look to be recent code. > > > Unfortunately I don't know the cause, but I have actually run into a > rather similar problem just a few days ago. In my case it's on Tiva > platform (armv7m-based) and there is an assertion failure related in > some way to the console device. In my case, the board is a custom > board that does not have a serial console (though it does have a UART > which controls an another chip). For everything else, this board has > only network connectivity. For the time being I have worked around the > crash by disabling a bunch of Kconfigs. I didn't know it was the > network debugging but I do remember that being one of the Kconfigs I > turned off. I will try to look at the specific areas you mentioned and > I'll post back if I figure out what's going on with that. It might > take me a few days though. Inundated with other work at the moment... > > Nathan >