Re: L4Re: Boot module copying and the MIPS Creator CI20

Adam Lackorzynski <[email protected]> Sun, 21 May 2023 21:28:40 +0200
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hi Paul,

On Sat May 20, 2023 at 00:35:37 +0200, Paul Boddie wrote:
> On Friday, 19 May 2023 19:03:36 CEST Paul Boddie wrote:
> > 
> > I suppose, then, the conclusion is that the CI20 UART code got inadvertently
> > broken when that functionality was reworked. Whether the UART
> > initialisation should be suppressed or whether the UART can be cleanly
> > reinitialised is something to investigate further, I imagine.

Thanks for digging through this.

> Of course I have to follow up to this! The fixes required here involve 
> adjusting the src/kern/mips/bsp/ci20/Modules file to use the following 
> definitions:
> 
> OBJECTS_LIBUART       += uart_16550.o
> CXXFLAGS_uart-libuart += $(call LIBUART_UART, 16550) \
>                          -DUART_16550_INIT_FCR=0x10
> 
> If the INIT_FCR setting is not used, the initialisation code clears the 
> trigger level field (defined in the 16550 data sheet) and also the UART enable 
> field (defined in the JZ4780 programming manual, reserved in the 16550 data 
> sheet), disabling the UART.
> 
> For the above value, I merely reproduced the UART enable bit (0x10) set by the 
> Uart_16550 initialisation in the bootstrap code. The trigger level field can 
> be read, yielding a value of 0xc0 which corresponds to (3 << 6) or a level of 
> 60 according to the JZ4780 manual, but the field is documented as being write-
> only, so maybe reading it doesn't make sense. Allowing that field to be 
> cleared does not appear to be harmful.

Thanks, we've changed this.
 
> (I see that the drivers-frst code strongly resembles the library code in the 
> kernel but is slightly older, and I wonder about whether these things could 
> eventually be integrated in a sensible way.)

Frank did work in this area recently to move this closer together.
 
> Alongside these changes, the CI20 still needs instruction emulation for rdhwr, 
> since this instruction is still used by various libraries, even though the 
> bootstrap code avoids it. Meanwhile, I still find that the bootstrap crt0.S 
> file needs patching to fix the memory mapping and to not run with the ERL flag 
> set. Fixing the UART handling in the kernel does not make that issue 
> disappear.

I've also queued a change to disable ERL. Not sure on the other issue
yet.



Adam