📄 framebuffer.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head> <title></title> <link rel="stylesheet" media="screen" type="text/css" href="./style.css" /> <link rel="stylesheet" media="screen" type="text/css" href="./design.css" /> <link rel="stylesheet" media="print" type="text/css" href="./print.css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><a href=start.html>start</a></br><div class="toc"><div class="tocheader toctoggle" id="toc__header">Table of Contents</div><div id="toc__inside"><ul class="toc"><li class="level1"><div class="li"><span class="li"><a href="#frame_buffer_drivers" class="toc">Frame Buffer Drivers</a></span></div><ul class="toc"><li class="level2"><div class="li"><span class="li"><a href="#current_implmentations" class="toc">Current Implmentations</a></span></div></li><li class="level2"><div class="li"><span class="li"><a href="#capturing_screenshots" class="toc">Capturing screenshots</a></span></div></li><li class="level2"><div class="li"><span class="li"><a href="#more_information" class="toc">More information</a></span></div></li></ul></li></ul></div></div><h1><a name="frame_buffer_drivers" id="frame_buffer_drivers">Frame Buffer Drivers</a></h1><div class="level1"><p> A <a href="http://en.wikipedia.org/wiki/Frame_buffer" class="interwiki iw_wp" title="http://en.wikipedia.org/wiki/Frame_buffer">Frame Buffer</a> is a graphical output device that drives a display (TFT, LCD, TV, CRT) from memory containing a complete frame of data.</p></div><!-- SECTION [1-193] --><h2><a name="current_implmentations" id="current_implmentations">Current Implmentations</a></h2><div class="level2"><p> Blackfin/Linux currently supports three different frame buffers output devices:</p><ul><li class="level1"><div class="li"> <a href="adv7171.html" class="wikilink2" title="adv7171.html">ADV7171</a> - an Analog Devices Video DAC which accepts data in the YCrCb color space</div></li><li class="level1"><div class="li"> <a href="sharp_lq035q7db03.html" class="wikilink1" title="sharp_lq035q7db03.html">Sharp LQ035Q7DB03</a> - Sharp 3.5 inch QVGA Display</div></li><li class="level1"><div class="li"> <a href="adv7393.html" class="wikilink1" title="adv7393.html">ADV7393</a> - an Analog Devices Video DAC which accepts data in RGB color space</div></li></ul></div><!-- SECTION [194-541] --><h2><a name="capturing_screenshots" id="capturing_screenshots">Capturing screenshots</a></h2><div class="level2"><p> To convert the raw rgb data extracted from /dev/fb0, use this shell script:</p><pre class="code perl"><span class="co1">#!/usr/bin/perl -w</span> <span class="re0">$w</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/shift.html"><span class="kw3">shift</span></a> || <span class="nu0">240</span>;<span class="re0">$h</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/shift.html"><span class="kw3">shift</span></a> || <span class="nu0">320</span>;<span class="re0">$pixels</span> = <span class="re0">$w</span> * <span class="re0">$h</span>; <a href="http://www.perldoc.com/perl5.6/pod/func/open.html"><span class="kw3">open</span></a> OUT, <span class="st0">"|pnmtopng"</span> <span class="kw1">or</span> <a href="http://www.perldoc.com/perl5.6/pod/func/die.html"><span class="kw3">die</span></a> <span class="st0">"Can't pipe pnmtopng: $!<span class="es0">\n</span>"</span>; <a href="http://www.perldoc.com/perl5.6/pod/func/printf.html"><span class="kw3">printf</span></a> OUT <span class="st0">"P6%d %d<span class="es0">\n</span>255<span class="es0">\n</span>"</span>, <span class="re0">$w</span>, <span class="re0">$h</span>; <span class="kw1">while</span> <span class="br0">(</span><span class="br0">(</span><a href="http://www.perldoc.com/perl5.6/pod/func/read.html"><span class="kw3">read</span></a> <span class="kw2">STDIN</span>, <span class="re0">$raw</span>, <span class="nu0">2</span><span class="br0">)</span> <span class="kw1">and</span> <span class="re0">$pixels</span>--<span class="br0">)</span> <span class="br0">{</span> <span class="re0">$short</span> = <a href="http://www.perldoc.com/perl5.6/pod/func/unpack.html"><span class="kw3">unpack</span></a><span class="br0">(</span><span class="st0">'S'</span>, <span class="re0">$raw</span><span class="br0">)</span>; <a href="http://www.perldoc.com/perl5.6/pod/func/print.html"><span class="kw3">print</span></a> OUT <a href="http://www.perldoc.com/perl5.6/pod/func/pack.html"><span class="kw3">pack</span></a><span class="br0">(</span><span class="st0">"C3"</span>, <span class="br0">(</span><span class="re0">$short</span> & 0xf800<span class="br0">)</span> >> <span class="nu0">8</span>, <span class="br0">(</span><span class="re0">$short</span> & 0x7e0<span class="br0">)</span> >> <span class="nu0">3</span>, <span class="br0">(</span><span class="re0">$short</span> & 0x1f<span class="br0">)</span> << <span class="nu0">3</span><span class="br0">)</span>;<span class="br0">}</span> <a href="http://www.perldoc.com/perl5.6/pod/func/close.html"><span class="kw3">close</span></a> OUT;</pre><p>It’s a good idea to save this code in a file say iraw2png. Using it is pretty simple. First capture the data on the board. </p><pre class="code">root:/var> cat /dev/fb0 > screen.raw</pre><p> Move the data over to the host machine from the board. </p><pre class="code">host:~> rcp root@board.ip.number:/var/screen.raw .</pre><p> Then just convert it. </p><pre class="code">host:~> ./iraw2png < screen.raw > screen.png</pre><p>The default script assumes a resolution of 240×320 so if your framebuffer is something else, you will need to tell iraw2png the details. Here we tell the script to use a 640×480 resolution. </p><pre class="code">host:~> ./iraw2png 640 480 < screen.raw > screen.png</pre></div><!-- SECTION [542-1683] --><h2><a name="more_information" id="more_information">More information</a></h2><div class="level2"><ul><li class="level1"><div class="li"> <a href="http://www.faqs.org/docs/Linux-HOWTO/Framebuffer-HOWTO.html" class="urlextern" title="http://www.faqs.org/docs/Linux-HOWTO/Framebuffer-HOWTO.html" rel="nofollow">Linux Frame Buffer How To</a></div></li><li class="level1"><div class="li"> <a href="http://linux-fbdev.sourceforge.net/" class="urlextern" title="http://linux-fbdev.sourceforge.net/" rel="nofollow">Main site for the development of Linux framebuffer drivers</a></div></li></ul></div><!-- SECTION [1684-] --></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -