Based on your demo, I would like to try adding gpio peripherals for the freertos guest. Firstly, I added the gpio register resources to demos/linux+freertos/configs/rpi4.c.
This is log >>>>>>>>>>>>>>>
U-Boot> fatload mmc 0 0x200000 bao.bin; go 0x200000
ERROR: reserving fdt memory region failed (addr=0 size=80000)
41529344 bytes read in 1752 ms (22.6 MiB/s)
We can see GPIO Function Select register is successfully set. However, according to the value read from GPIO Pin Level register, GPIO Pin Output Clear register setting failed. I can't understand why this is. So asking for your help.
export PLATFORM=rpi4 export DEMO=linux+freertos
Based on your demo, I would like to try adding gpio peripherals for the freertos guest. Firstly, I added the gpio register resources to demos/linux+freertos/configs/rpi4.c.
Then, I ported the gpio driver from arm-trusted-firmware.
Finally, I tested the gpio driver and found that setting the GPIO output level failed.
This is log >>>>>>>>>>>>>>> U-Boot> fatload mmc 0 0x200000 bao.bin; go 0x200000 ERROR: reserving fdt memory region failed (addr=0 size=80000) 41529344 bytes read in 1752 ms (22.6 MiB/s)
Starting application at 0x00200000 ...
Bao Hypervisor Bao FreeRTOS guest rpi4: gpio0: select = 0x7 rpi4: gpio0: level = 0x1 rpi4: gpio1: select = 0x7 rpi4: gpio1: level = 0x1 rpi4: gpio2: select = 0x7 rpi4: gpio2: level = 0x1 rpi4: gpio3: select = 0x7 rpi4: gpio3: level = 0x1 rpi4: gpio4: select = 0x7 rpi4: gpio4: level = 0x1 rpi4: gpio5: select = 0x7 rpi4: gpio5: level = 0x1 rpi4: gpio6: select = 0x7 rpi4: gpio6: level = 0x1 rpi4: gpio7: select = 0x7 rpi4: gpio7: level = 0x1 rpi4: gpio8: select = 0x7 rpi4: gpio8: level = 0x1 rpi4: gpio9: select = 0x7 rpi4: gpio9: level = 0x1 rpi4: gpio10: select = 0x7 rpi4: gpio10: level = 0x1 rpi4: gpio11: select = 0x7 rpi4: gpio11: level = 0x1 rpi4: gpio12: select = 0x7 rpi4: gpio12: level = 0x1 rpi4: gpio13: select = 0x7 rpi4: gpio13: level = 0x1 rpi4: gpio14: select = 0x7 rpi4: gpio14: level = 0x1 rpi4: gpio15: select = 0x7 rpi4: gpio15: level = 0x1 rpi4: gpio16: select = 0x7 rpi4: gpio16: level = 0x1 rpi4: gpio17: select = 0x7 rpi4: gpio17: level = 0x1 rpi4: gpio18: select = 0x7 rpi4: gpio18: level = 0x1 rpi4: gpio19: select = 0x7 rpi4: gpio19: level = 0x1 rpi4: gpio20: select = 0x7 rpi4: gpio20: level = 0x1 rpi4: gpio21: select = 0x7 rpi4: gpio21: level = 0x1 rpi4: gpio22: select = 0x7 rpi4: gpio22: level = 0x1 rpi4: gpio23: select = 0x7 rpi4: gpio23: level = 0x1 rpi4: gpio24: select = 0x7 rpi4: gpio24: level = 0x1 rpi4: gpio25: select = 0x7 rpi4: gpio25: level = 0x1 rpi4: gpio26: select = 0x7 rpi4: gpio26: level = 0x1 rpi4: gpio27: select = 0x7 rpi4: gpio27: level = 0x1 rpi4: gpio28: select = 0x7 rpi4: gpio28: level = 0x1 rpi4: gpio29: select = 0x7 rpi4: gpio29: level = 0x1 rpi4: gpio30: select = 0x7 rpi4: gpio30: level = 0x1 rpi4: gpio6: select = 0x1 rpi4: gpio6: level = 0x1 Task1: 0 Task2: 0 Task1: 1 Task2: 1 Task1: 2 ...
We can see GPIO Function Select register is successfully set. However, according to the value read from GPIO Pin Level register, GPIO Pin Output Clear register setting failed. I can't understand why this is. So asking for your help.