Created
June 9, 2021 15:17
-
-
Save notro/bddbb1c39fc1c1bc519d20c2bf373cd4 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
I used ftrace to try and find where the problem is, and have tracked it to spi-bcm2835. | |
Pi4 spends 19.907 ms sending the pixel data and Pi zero spends 29.990 ms. | |
trace-cmd is available on the 'pi' image. | |
Pi4 | |
--- | |
# trace-cmd record -o /tmp/trace.dat -p function_graph -l mipi_dbi_fb_dirty -l spi_transfer_one_message | |
# trace-cmd report -i /tmp/trace.dat | |
kworker/0:2-348 [000] 577.767036: funcgraph_entry: | mipi_dbi_fb_dirty() { | |
kworker/0:2-348 [000] 577.770096: funcgraph_entry: + 27.518 us | spi_transfer_one_message(); | |
kworker/0:2-348 [000] 577.770145: funcgraph_entry: + 28.889 us | spi_transfer_one_message(); | |
kworker/0:2-348 [000] 577.770198: funcgraph_entry: + 26.500 us | spi_transfer_one_message(); | |
kworker/0:2-348 [000] 577.770247: funcgraph_entry: + 28.944 us | spi_transfer_one_message(); | |
kworker/0:2-348 [000] 577.770299: funcgraph_entry: + 26.055 us | spi_transfer_one_message(); | |
kworker/0:2-348 [000] 577.770378: funcgraph_entry: # 19907.074 us | spi_transfer_one_message(); | |
kworker/0:2-348 [000] 577.790293: funcgraph_exit: # 23258.000 us | } | |
The SPI hw can only handle buffers which length fits in a 16-bit register DLEN. | |
The driver works around this by splitting up the transfer. | |
# trace-cmd record -o /tmp/trace.dat -p function_graph -l mipi_dbi_fb_dirty -l spi_transfer_one_message -l bcm2835_spi_transfer_one | |
kworker/0:2-348 [000] 674.462743: funcgraph_entry: | mipi_dbi_fb_dirty() { | |
... | |
kworker/0:2-348 [000] 674.466270: funcgraph_entry: | spi_transfer_one_message() { | |
kworker/0:2-348 [000] 674.466283: funcgraph_entry: + 21.352 us | bcm2835_spi_transfer_one(); | |
kworker/0:2-348 [000] 674.474748: funcgraph_entry: + 22.500 us | bcm2835_spi_transfer_one(); | |
kworker/0:2-348 [000] 674.483216: funcgraph_entry: + 21.963 us | bcm2835_spi_transfer_one(); | |
kworker/0:2-348 [000] 674.486192: funcgraph_exit: # 19922.037 us | } | |
kworker/0:2-348 [000] 674.486220: funcgraph_exit: # 23477.908 us | } | |
Pi Zero | |
------- | |
# trace-cmd record -o /tmp/trace.dat -p function_graph -l mipi_dbi_fb_dirty -l spi_transfer_one_message | |
# trace-cmd report -i /tmp/trace.dat | |
kworker/0:3-59 [000] 261.795885: funcgraph_entry: | mipi_dbi_fb_dirty() { | |
kworker/0:3-59 [000] 261.804197: funcgraph_entry: ! 112.000 us | spi_transfer_one_message(); | |
kworker/0:3-59 [000] 261.804387: funcgraph_entry: + 54.000 us | spi_transfer_one_message(); | |
kworker/0:3-59 [000] 261.804508: funcgraph_entry: + 47.000 us | spi_transfer_one_message(); | |
kworker/0:3-59 [000] 261.804615: funcgraph_entry: + 49.000 us | spi_transfer_one_message(); | |
kworker/0:3-59 [000] 261.804723: funcgraph_entry: + 42.000 us | spi_transfer_one_message(); | |
kworker/0:3-59 [000] 261.804918: funcgraph_entry: # 29990.000 us | spi_transfer_one_message(); | |
kworker/0:3-59 [000] 261.834974: funcgraph_exit: # 39099.000 us | } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment