PeterLemon / RaspberryPi

Raspberry Pi Bare Metal Assembly Programming
447 stars 67 forks source link

Issues with Demos #6

Closed TuxesCreations closed 8 years ago

TuxesCreations commented 8 years ago

I have tried to leverage multiple kernel.img and kernel7.img, but I always get a black screen. I read the forum post between you and rst hoping to see if I was missing anything, but I am stuck. Any help you can provide would be great. I am using the RP2 B. I leveraged your links to grab the latest firmware and my SD card is laid out as such...

start.elf bootcode.bin config.txt kernel7.img

If I replace the kernel with one I did earlier by valvers for the LED Blink, it works just fine. I noticed someone else posted the same issue in the Forum, but I haven't seemed to fine a resolve.

PeterLemon commented 8 years ago

Hi averybunker, I just gave the newest bootcode.bin & start.elf a go & indeed you are right many of my NEON / SMP demos are now showing a black screen, I did manage to run a kernel7.img of a V3D GPU demo here:

https://github.com/PeterLemon/RaspberryPi/tree/master/V3D/ControlList/NV/Vertex_Array/Triangle/VertexColor

So I will have to explore why some of my demos are going to a black screen now... If you could try the demo I linked above to see if you see "a yellow background, with a triangle drawn on the screen", then at least we'll know you do not have any other problems. Thankyou for your help on this.

TuxesCreations commented 8 years ago

Thanks Peter for the sanity check! I did try the above and it came right up with your description.

PeterLemon commented 8 years ago

Hi averybunker, I just did some investigation & I found out the answer here:

https://www.raspberrypi.org/forums/viewtopic.php?f=72&t=121993

(Currently my demos only work with firmware "bootcode.bin & start.elf" before June 22nd 2015)

That Link Above Explains:

  1. That I need to convert the mailbox framebuffer bus address to a physical address (& 0x3FFFFFFF) (This will fix my demos to work with firmwares before October 2nd)
  2. That newest firmwares set the ARM into "Hypervisor Mode", so I need to set it back to "SVC Mode" somehow (This will fix my demos to work with the newest firmwares)

I'll try to get all my github demos converted ASAP, sorry about all the confusion, it's my fault for not keeping up-to-date, & I thank you again for notifying me about this problem.

PeterLemon commented 8 years ago

Hi averybunker, I just did the 1st pass of the cleanup... I need converted the mailbox framebuffer bus address to a physical address (& 0x3FFFFFFF) Now all my demos show stuff on the screen for the RPi2, with the latest firmware.

The next step is for me to fix that Hypervisor (HYP) mode problem & get it back into SVC mode. This mode is more restrictive and lots of my demos are much slower now because I can not set up the CPU system to use L1 Cache Branch Prediction / Instruction Caches

I'll try to get this sorted ASAP =D

PeterLemon commented 8 years ago

Hi averybunker, I have done the 2nd pass, fixing the HYP mode problem.

The fix was to use the config.txt options: kernel_old=1 (To avoid prepending the boot code.) disable_commandline_tags=1 (To avoid populating the ATAGs.)

I found out the info for this from this post: https://www.raspberrypi.org/forums/viewtopic.php?f=72&t=102261

All my demos start at ORG $0000 now instead of ORG $8000 And as all Rpi2 SMP CPU cores start at ORG $0000, I check for their CPU ID, and do whatever work is needed for them.

When using this boot method the CPU never gets put into HYP mode, so all my demos run full speed now.

I am now closing this issue, good luck with your RPi development.