📄 00-index、framebuffer_txt、internals_txt译文 - ~ 悠悠风信子 ~ - csdnblog.htm
字号:
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN><SPAN> </SPAN>640*35.242E-9 s = 22.555E-6 s</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>然而水平折回也是需要时间的,通常<SPAN>272</SPAN>个打点时间,因此一行总共需要:<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN><SPAN> </SPAN>(640+272)*35.242E-9 s = 32.141E-6 s</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>我们就认为水平扫描的频率是<SPAN>31KHz</SPAN>:<SPAN><SPAN> </SPAN><SPAN> </SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN><SPAN> </SPAN>1/(32.141E-6 s) = 31.113E3 Hz</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN></SPAN> </P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>一屏幕含有<SPAN>480</SPAN>行,加上垂直折回时间<SPAN>49</SPAN>,一屏所需的时间:<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN><SPAN> </SPAN>(480+49)*32.141E-6 s = 17.002E-3 s</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>我们就认为垂直扫描的频率是<SPAN>59Hz</SPAN>:<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN><SPAN> </SPAN>1/(17.002E-3 s) = 58.815 Hz</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>这也意味着屏幕数据每秒钟刷新<SPAN>59</SPAN>次。为了得到稳定的图像显示效果,<SPAN>VESA</SPAN>垂直扫描<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>频率不低于<SPAN>72Hz</SPAN>。但是也因人而异,有些人<SPAN>50Hz</SPAN>感觉不到任何问题,有些至少在<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>80Hz</SPAN><SPAN>以上才可以。<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN></SPAN> </P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>由于显示器不知道什么时候新行开始扫描,显卡为每一行扫描提供水平同步信号。<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>类似的,他也为每一帧显示提供垂直同步信号。图像在屏幕上点的位置取决于这些<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>同步信号的发生时刻。<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN></SPAN> </P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>下图给出了所有时序的概要。水平折回的时间就是左边空白+右边空白+水平同步长度。<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>垂直折回的时间就是上空白+下空白+垂直同步长。<SPAN><SPAN> </SPAN><SPAN> </SPAN><BR><SPAN> </SPAN>+----------+---------------------------------------------+----------+-------+<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>^<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|upper_margin<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>?<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>+----------###############################################----------+-------+<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>^<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN><SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>left<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>right<SPAN> </SPAN>| hsync |<BR><SPAN> </SPAN>|<SPAN> </SPAN>margin<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>xres<SPAN> </SPAN>#<SPAN> </SPAN>margin<SPAN> </SPAN>|<SPAN> </SPAN>len<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<-------->#<---------------+--------------------------->#<-------->|<----->|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|yres<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>| <SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN><SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>#<SPAN> </SPAN>?<SPAN> </SPAN>#<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>+----------###############################################----------+-------+<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>^<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|lower_margin<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>?<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>+----------+---------------------------------------------+----------+-------+<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>^<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|vsync_len<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN><SPAN> </SPAN>?<SPAN> </SPAN>|<SPAN> </SPAN>|<SPAN> </SPAN>|<BR><SPAN> </SPAN>+----------+---------------------------------------------+----------+-------+</SPAN></SPAN></P><SPAN><SPAN>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><STRONG><SPAN>6.</SPAN></STRONG><STRONG><SPAN>把<SPAN>XFree86</SPAN>时序变成<SPAN>frame buffer device</SPAN>时序<SPAN></SPAN></SPAN></STRONG></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>典型的显示模式:<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN>"800x600"<SPAN> </SPAN>50<SPAN> </SPAN>800<SPAN> </SPAN>856<SPAN> </SPAN>976 1040<SPAN> </SPAN>600<SPAN> </SPAN>637<SPAN> </SPAN>643<SPAN> </SPAN>666<BR><SPAN> </SPAN>< name ><SPAN> </SPAN>DCF<SPAN> </SPAN>HR<SPAN> </SPAN>SH1<SPAN> </SPAN>SH2<SPAN> </SPAN>HFL<SPAN> </SPAN>VR<SPAN> </SPAN>SV1<SPAN> </SPAN>SV2<SPAN> </SPAN>VFL<SPAN> </SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN></SPAN></SPAN> </P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN></SPAN><SPAN>而帧缓冲设备使用下面的参数:<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN>- pixclock: </SPAN><SPAN>点时钟<SPAN> in ps (pico seconds)<BR><SPAN> </SPAN>- left_margin: time from sync to picture<BR><SPAN> </SPAN>- right_margin: time from picture to sync<BR><SPAN> </SPAN>- upper_margin: time from sync to picture<BR><SPAN> </SPAN>- lower_margin: time from picture to sync<BR><SPAN> </SPAN>- hsync_len: length of horizontal sync<BR><SPAN> </SPAN>- vsync_len: length of vertical sync </SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><STRONG><SPAN>1) Pixelclock:<BR></SPAN></STRONG><SPAN><SPAN> </SPAN>xfree: in MHz<BR><SPAN> </SPAN>fb: in picoseconds (ps)<BR><BR><SPAN> </SPAN>pixclock = 1000000 / DCF<BR><BR><STRONG>2) horizontal timings:<BR></STRONG><SPAN> </SPAN>left_margin = HFL - SH2<BR><SPAN> </SPAN>right_margin = SH1 - HR<BR><SPAN> </SPAN>hsync_len = SH2 - SH1<BR><BR><STRONG>3) vertical timings:<BR></STRONG><SPAN> </SPAN>upper_margin = VFL - SV2<BR><SPAN> </SPAN>lower_margin = SV1 - VR<BR><SPAN> </SPAN>vsync_len = SV2 - SV1</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN></SPAN> </P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>更好的<SPAN>VESA</SPAN>的例子可以在<SPAN>XFree86</SPAN>的源码中找到,<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>"xc/programs/Xserver/hw/xfree86/doc/modeDB.txt".</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN></SPAN> </P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><STRONG><SPAN>7. </SPAN></STRONG><STRONG><SPAN>引用<SPAN></SPAN></SPAN></STRONG></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>获取更多关于帧缓冲设备以及应用的参考,请访问:<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN>http://linux-fbdev.sourceforge.net/</SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>或者查阅下面的文档:<SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN>- The manual pages for fbset: fbset(8), fb.modes(5)<BR><SPAN> </SPAN>- The manual pages for XFree86: XF68_FBDev(1), XF86Config(4/5)<BR><SPAN> </SPAN>- The mighty kernel sources:<BR><SPAN> </SPAN>o linux/drivers/video/<BR><SPAN> </SPAN>o linux/include/linux/fb.h<BR><SPAN> </SPAN>o linux/include/video/<SPAN> </SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=right><SPAN><SPAN></SPAN></SPAN><SPAN><FONT color=#ff0000
size=5>
<STRONG>internals.txt译文</STRONG></FONT></SPAN></P><SPAN>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN>以下数据结构在帧缓冲设备使用,定义<SPAN><linux/fb.h></SPAN>。<SPAN><SPAN> </SPAN></SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN></SPAN> </P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><STRONG><SPAN>1. Outside the kernel (user space)</SPAN></STRONG></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><EM><SPAN
style="COLOR: red"><SPAN> </SPAN>- struct fb_fix_screeninfo<BR></SPAN></EM><SPAN><BR></SPAN><SPAN><SPAN> </SPAN></SPAN><SPAN>帧缓冲设备中设备无关的常值数据信息。可以通过<SPAN>Ioctl</SPAN>的<SPAN>FBIOGET_FSCREENINFO</SPAN>获取。<SPAN><BR><BR><EM><SPAN
style="COLOR: red"><SPAN> </SPAN>- struct fb_var_screeninfo<BR></SPAN></EM><BR><SPAN> </SPAN></SPAN>帧缓冲设备中设备无关的变量数据信息和特定的显示模式。可以通过<SPAN>iotcl</SPAN>的<SPAN>FBIOGET_VSCREENINFO</SPAN></SPAN></P>
<P
style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan"
align=left><SPAN><SPAN> </SPAN></SPAN><SPAN>获取,并通过<SPAN>ioctl</SPAN>的<SPAN>FBIOPUT_VSCREENINFO</SPAN>设定。还有<SPAN>FBIOPAN_DISPLAY</SPAN>可以用。<SPAN><BR><BR><EM><SPAN
style="COLOR: red"><SPAN> </SPAN>- struct fb_cmap<BR></SPAN></EM><BR><SPAN> </SPAN></SPAN>设备无关的颜色
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -