seL4 / util_libs

Other
53 stars 83 forks source link

[FIX] Fix bcm pl011 UART #168

Open FelixSchladt opened 10 months ago

FelixSchladt commented 10 months ago

I tried using the existing driver for data transmissions (with a hardware rng) and had the issue that without enabled FIFO, no interrupts are received.

As the note states, enabling the FIFO seems to cause some other trouble with the SerialServer. I think this should be discussed, what makes the most sense and maybe a solution which fits all can be found.

axel-h commented 10 months ago

Just to clarify, it seem to me that when you enable the receive timeout interrupt and the FIFO, then the serial server should work again. You get an interrupt either when the FIFO has a certain level or - due to the receive timeout - when there is data in the FIFO, but no additional data is received for "a 32-bit period". So we should be able to merge this without breaking thins. I wonder if should still make the interrupt behavior configurable via the flags field of ps_chardevice_t, so we can keep the old behavior by default and enable the new behavior only if explicitly selected.

Indanz commented 4 months ago

The Gitlint and License Checks are stuck, but I can't re-trigger them. I also don't have an option to bring the branch up-to-date, so I guess a manual merge needs to be done.

FelixSchladt commented 4 months ago

I will try to rebase it on monday

Indanz commented 4 months ago

So I looked at the Broadcom UART documentation, but it doesn't explain what the receive time-out does. Does it trigger all the time or does it only trigger after receiving a character and nothing else arrives?

FelixSchladt commented 4 months ago

So I looked at the Broadcom UART documentation, but it doesn't explain what the receive time-out does. Does it trigger all the time or does it only trigger after receiving a character and nothing else arrives?

As far as I understand, the receive timeout only triggers after a certain period of no incoming data

Indanz commented 4 months ago

As far as I understand, the receive timeout only triggers after a certain period of no incoming data

Does that mean you get an interrupt all the time? Because that would make it "work", but not in the right way.