I would like to use the hardware RNG from my samr1-xpro board. It should be available by reading out a certain register, according to the AT86RF233 documentation.
My problem is, that I don't how to do that (I am pretty new to this stuff). Is there some documentation available for this kind of task, or could you point me in the right
direction?
OK, I have managed the first step myself and wrote the code which reads out the
random values from the RNG.
What would be the next step, that would allow me to set the periph_random
feature for the samr21-xpro board?
I think the way to go here is to implement the drivers/include/periph/hwrng.h interface. For this I think it makes sense to add a function that reads the random data from the radio to the at86rf2xx driver and call this function from the hwrng driver.
I am a bit confused, where to put that code. As far as I can tell, all current
implementations of the hwrng functions are implemented on the cpu and not on the
board level. While my rng is on the at86rf2xx chip, which is a driver. Can I put
the feature in the driver?
[1] is the interface that should be implemented by your driver. The driver is CPU specific and should be placed in RIOT/cpu/*/periph/hwrng.c like e.g. here [2].
Does that reduce your confusion or did I get you wrong ?
Hi Mathias,
I think (but I never implemented any device drivers so take this with a grain of salt) the most sensible solution would be to add a function to the at86rf2xx driver that returns a result from the RNG and then wrap it with periph_hwrng on all boards that come with this device.