-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ISP freezes with new firmware #1915
Comments
Hello every body, |
Might be worth adding "over_voltage=2" to config.txt, rebooting and testing again. |
Thx popcornmix! but it doesn't the problem. |
Recent is relative. bcm2835-isp last had a very minor update in April 2024, and the firmware side was last changed in April 2023. Memory says that buffers submitted to the ISP input queue (video13) will be sent to the outputs that are enabled at the point of submission. Submitting to video13 with none of video14-16 enabled should therefore just result in a discard and return of the input buffer. I will see if I can find a few moments to run your app (assuming it will build with a simple |
Hello, |
I've finally found time to try your app. The image is very blue, and torn (it looks like a buffer start address is wrong so we get a wrap about 1/3rd of the way down the buffer), but I can't reproduce a crash or firmware lockup. This is on the latest firmware and kernel.
Tried on a Pi3, and get similar results. I get weird images on the display if the The firmware side is stalling processing as there are no output ports enabled, so it views it as unnecessary to process input buffers - all it could do is return them to the application. They should be returned cleanly if the application quits. TBH having looked at it, it is not expected for a V4L2 M2M device to be opened by 2 totally different processes and effectively be treated as a Linux pipe between processes. There are discussions being had at the moment which will bind a context to these devices so that you can run multiple instances of the ISP, and not by replicating /dev/video nodes as we do at present. The weird images do make me wonder if there is a path where the ISP isn't correctly configured. That would have the potential to write to random parts of memory and do bad things, however I'm not convinced it's worth chasing down. |
There is something different in the ISP configuration depending on whether input or output is started first. I think I've identified the issue, so will throw up a test firmware when CI has done the business. |
Is this the right place for my bug report?
My bug occurs depending on the version of start.elf and fixup.dat and it is available with my application.
The application runs on old raspberry firmwares and on PC. The linux kernel version has not effect on the trouble.
Then I try here to find help.
Describe the bug
My application fastvideo uses an ov5647 camera and the ISP directly with V4L2 API (not the libcamera).
A first process reads video0 and push the data to the ISP video13 with DMA_buf protocol.
A second process configure video14 to read the ISP with DMA_buf and push then to the gpu.
But after the STREAM_ON the first process treats one buffer to push on the ISP and the both process doesn't receive any event from the kernel other than a timer. If we kill the second process, this one is blocking inside the STREAM_OFF.
To reproduce
Expected behaviour
The camera image should appear on the screen.
Actual behaviour
A frame is opened on the screen but it is empty. CTRL+C inside the second process is blocking inside STREAM_OFF
System
Copy and paste the results of the raspinfo command in to this section. Alternatively, copy and paste a pastebin link, or add answers to the following questions:
Which model of Raspberry Pi? e.g. Pi3B+, PiZeroW
PiZeroW2 + CAM OV5647
Which OS and version (
cat /etc/rpi-issue
)?vcgencmd version
)?and run on
uname -a
)?Logs
After 1 second I have a kernel oops:
and after the CTRL+C the following kernel message appears
Additional context
Please help
The text was updated successfully, but these errors were encountered: