<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2343104350091080580</id><updated>2024-12-13T18:39:05.084+08:00</updated><category term="linux"/><category term="wince power management"/><category term="Windows CE"/><category term="USB"/><category term="ARM"/><category term="Android"/><category term="Gerrit"/><category term="感言"/><category term="DRAM"/><category term="I2C"/><category term="LCD"/><category term="MISC"/><category term="PC"/><category term="ThreadX"/><category term="UART"/><category term="乳胶漆"/><category term="星座"/><title type='text'>cpuwolf&#39;s web blog</title><subtitle type='html'>CPUWOLF成长笔记</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>87</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-3040446275212131349</id><published>2023-01-02T10:35:00.006+08:00</published><updated>2024-04-17T10:44:42.884+08:00</updated><title type='text'>帕罗VQPR跑道15正确的降落方式</title><content type='html'>&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.facebook.com/sharer/sharer.php?u=https://x-plane.vip/pa-luo-pao-dao-15zheng-que-de-jiang-luo-fang-shi/&quot;&gt;&lt;/a&gt;&lt;a href=&quot;https://twitter.com/intent/tweet?text=%E5%B8%95%E7%BD%97VQPR%E8%B7%91%E9%81%9315%E6%AD%A3%E7%A1%AE%E7%9A%84%E9%99%8D%E8%90%BD%E6%96%B9%E5%BC%8F&amp;amp;url=https://x-plane.vip/pa-luo-pao-dao-15zheng-que-de-jiang-luo-fang-shi/&quot;&gt;&lt;/a&gt;&lt;img height=&quot;198&quot; src=&quot;https://x-plane.vip/content/images/2023/01/--2023-01-03-09.03.46.png&quot; width=&quot;320&quot; /&gt;&lt;br /&gt;&lt;br /&gt;从视频，我们可以证明皇家不丹航空用的并不是花哨高级的RNAV进近，而是最传统的VOR进近的破云程序。12500是决断高速，如果突破了这个高度，还没有看见跑道，那么执行复飞程序。&lt;br /&gt;&lt;br /&gt;如果12500看见了跑道，那么继续自动驾驶下降到11500。&lt;br /&gt;&lt;br /&gt;无论你是采用减重，还是换成更小的飞机，请确保你的空速低于140节，理想状态是低于135节。因为越大空速，你需要更大的转弯半径，以及更大的机动，包括更短的时间完成动作。关键的关键。&lt;br /&gt;&lt;br /&gt;这里是高高原环境，你的实际地速已经将近160节，所以140节，不能再快了。再快你会很麻烦。&lt;br /&gt;&lt;br /&gt;起落架，襟翼全放，都是为了更低的空速。&lt;br /&gt;&lt;br /&gt;11500之后，正式的表演开始。&lt;br /&gt;&lt;br /&gt;从平面轨迹图，我们可以看见整个流程并不是一直在转弯，一开始的沿着山脊的直线，接着圆弧右转。沿着山腰直线，到最后的S型对准跑道。中间是有喘息的机会的。&lt;br /&gt;&lt;br /&gt;我研究flying Dragon的视频好几个月了，再结合网络上各大论坛的一些谣传。&lt;br /&gt;&lt;br /&gt;我总结分成5个阶段。&lt;img height=&quot;265&quot; src=&quot;https://x-plane.vip/content/images/2023/01/Little-Navmap----20221227-181759.jpg&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;&lt;br /&gt;第一阶段，沿着山脊，几乎直线飞行，你可以做横滚微调，对准，滑滑梯山脊，目标高度10000～11000。这里并不需要大下降率，稳定心情，做好准备。山脊上有几户人家，你会路过这几户人家。&lt;br /&gt;&lt;br /&gt;第二阶段，在和滑滑梯山脊交汇之后，开始大机动，右横滚20～30度，我实际测试发现20度足够了，同时保持下降，下降率在700～1000FPM，这里的轨迹会是一个右转圆弧，眼睛对准对面的山腰，所以记得调整自己的视角。你该阶段最后越靠近山体，你最后的S型转弯，会越容易。该阶段下降的目标高度在9000～9500英尺左右。你会发现，这个高度，你正好到达山腰的高度。要点是贴近山体。&lt;br /&gt;&lt;br /&gt;另外一个看点是，这个山体有个凹槽。&lt;br /&gt;&lt;br /&gt;这个阶段要多说两句，仪表之王是姿态仪，不是下降率，所以你要追逐的是横滚角度比如20度，和机头仰俯角度比如-5度。千万不要去追下降率，由于下降率的延迟特性，你会飞出波浪形，起伏轨迹。下降率只是作为扫一眼的参考。这些是飞行基础，我再强调一下。&lt;br /&gt;&lt;br /&gt;第三阶段，从左侧是山腰的位置开始，几乎是直线飞行，沿着左侧一路的山腰继续下行。很多人认为是沿着河谷飞行，其实并不是不丹皇家航空的真实情况，他们是沿着山腰飞行。此时你的眼前应该能看见前方偏右的红色大寺庙，这个标志性建筑。但是你的瞄准点并不是寺庙。你的眼睛应该看着山腰的尽头。第三阶段中，你会有一个时刻，发现自己的航行轨迹，和右侧的跑道15平行。此时你有一种冲动想右转了。但是可惜的告诉你，你还需要再憋一会儿，还没到右转的那一刻。直到几乎无山腰可以依靠，就是右转的开始&lt;br /&gt;&lt;br /&gt;第四阶段，一个右横滚20度，然后直线瞄准右侧这个山腰上的房子，你的目标是右侧机翼几乎和这个房子平行的高度，记着尽量靠近这个房子，为下一阶段转弯做准备。你越靠近房子，下阶段的转弯空间越大。右转之后，你其实是飞的直线，对准房子的，这个阶段，你可以定定神，深呼吸，是有机会的。&lt;br /&gt;&lt;br /&gt;第五阶段，是我遇到出问题最多的阶段。一个大坡度左横滚，对准跑道，同时落地到跑道入口。这个阶段落地轻不是最重要的，而是落地的位置最重要，帕罗跑道长度很有限，千万不要飘到跑道中场才落地，你落的再轻盈，也会没时间停下来，而最终冲出跑道。这个阶段，我是飞了四个降落之后，才找到感觉。多练习才会有感觉，没有太多技巧可言。对我个人而言，这个阶段难度最高，而且跑道出现在眼前的冲击感，会让你有点怂。&lt;br /&gt;&lt;br /&gt;【国内我就没见过一个把帕罗跑道15降落飞对的【大叔带你：开飞机】】 &lt;a href=&quot;https://www.bilibili.com/video/BV1q3411U7eU/?share_source=copy_web&amp;amp;%3Bvd_source=0948e3a98c0b89ddc6bb52f6ec0f82b9&amp;amp;ref=x-plane.vip&quot;&gt;https://www.bilibili.com/video/BV1q3411U7eU/?share_source=copy_web&amp;amp;vd_source=0948e3a98c0b89ddc6bb52f6ec0f82b9&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/3040446275212131349/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/3040446275212131349?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3040446275212131349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3040446275212131349'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2023/01/vqpr15.html' title='帕罗VQPR跑道15正确的降落方式'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-1852609483864255900</id><published>2022-07-07T10:31:00.004+08:00</published><updated>2024-04-17T10:55:34.881+08:00</updated><title type='text'>How to get my pitch angle while the aircraft touches the ground</title><content type='html'>&lt;br /&gt;&lt;br /&gt;I am considering whether I would migrate XTouchDownRecorder to MSFS2020. After I studied and watched MSFS2020 flight dynamic when the aircraft touched down. my conclusion is it is meaningless to dig too deep into MSFS2020 landing data.&lt;br /&gt;&lt;br /&gt;it is much more helpful to use X-Plane 11/12 to monitor aircraft landing data.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I made a U-turn take-off and landing, below is my flight track&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img height=&quot;298&quot; src=&quot;https://x-plane.vip/content/images/2022/07/image-1.png&quot; width=&quot;400&quot; /&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3409735151169599&quot;;
/* 468x15文章内容广告 */
google_ad_slot = &quot;9854908204&quot;;
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;&lt;div&gt;&lt;p style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.25rem; letter-spacing: 0.3px; line-height: 1.6; margin: 0px 0px 30px;&quot;&gt;here is the butter landing on the dirt runway of Quatam River.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot; style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 16px; margin: 0px; padding: 20px 0px 50px;&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;kg-image js-zoomable medium-zoom-image&quot; height=&quot;182&quot; loading=&quot;lazy&quot; sizes=&quot;(min-width: 720px) 720px&quot; src=&quot;https://x-plane.vip/content/images/2022/07/pitch.jpg&quot; srcset=&quot;https://x-plane.vip/content/images/size/w600/2022/07/pitch.jpg 600w, https://x-plane.vip/content/images/size/w1000/2022/07/pitch.jpg 1000w, https://x-plane.vip/content/images/2022/07/pitch.jpg 1287w&quot; style=&quot;background-repeat: no-repeat; border-style: none; box-sizing: border-box; cursor: zoom-in; display: block; height: auto; margin: 0px auto; max-width: 100%; transition: transform 0.3s cubic-bezier(0.2, 0, 0.2, 1) 0s; vertical-align: middle; width: auto; z-index: 5;&quot; width=&quot;400&quot; /&gt;&lt;/figure&gt;&lt;p style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.25rem; letter-spacing: 0.3px; line-height: 1.6; margin: 0px 0px 30px;&quot;&gt;my pitch angle is 7.33 degrees.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot; style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 16px; margin: 0px; padding: 20px 0px 50px;&quot;&gt;&lt;img alt=&quot;&quot; class=&quot;kg-image js-zoomable medium-zoom-image&quot; height=&quot;225&quot; loading=&quot;lazy&quot; src=&quot;https://x-plane.vip/content/images/2022/07/Cessna150---2022-07-07-07.05.27.jpg&quot; srcset=&quot;https://x-plane.vip/content/images/size/w600/2022/07/Cessna150---2022-07-07-07.05.27.jpg 600w, https://x-plane.vip/content/images/2022/07/Cessna150---2022-07-07-07.05.27.jpg 700w&quot; style=&quot;background-repeat: no-repeat; border-style: none; box-sizing: border-box; cursor: zoom-in; display: block; height: auto; margin: 0px auto; max-width: 100%; transition: transform 0.3s cubic-bezier(0.2, 0, 0.2, 1) 0s; vertical-align: middle; width: auto; z-index: 5;&quot; width=&quot;400&quot; /&gt;&lt;/figure&gt;&lt;p style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.25rem; letter-spacing: 0.3px; line-height: 1.6; margin: 0px 0px 30px;&quot;&gt;The X-Plane 11 playback screenshot did show a high Angle of attack.&lt;/p&gt;&lt;p style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.25rem; letter-spacing: 0.3px; line-height: 1.6; margin: 0px 0px 30px;&quot;&gt;in case you are interested my background payware scenery&lt;/p&gt;&lt;br /&gt;&lt;p style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 1.25rem; letter-spacing: 0.3px; line-height: 1.6; margin: 0px 0px 30px;&quot;&gt;&lt;a href=&quot;https://propstrikestudio.com/products/quatam-river-airport?ref=x-plane.vip&quot; style=&quot;background-color: transparent; background-repeat: no-repeat; box-sizing: border-box; touch-action: manipulation; transition: color 0.2s linear 0s;&quot;&gt;https://propstrikestudio.com/products/quatam-river-airport&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/1852609483864255900/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/1852609483864255900?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/1852609483864255900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/1852609483864255900'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2022/07/how-to-get-my-pitch-angle-while.html' title='How to get my pitch angle while the aircraft touches the ground'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-9126062285342238167</id><published>2022-07-04T10:38:00.005+08:00</published><updated>2024-04-17T10:45:53.686+08:00</updated><title type='text'>ipad如何连接MSFS2020</title><content type='html'>&lt;br /&gt;&lt;br /&gt;我的塞斯纳172 G1000已经飞到了厚云之上。&lt;img height=&quot;225&quot; src=&quot;https://x-plane.vip/content/images/2022/07/1653347747422.jpg&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;&lt;br /&gt;有用心的朋友注意到我的iPad居然显示了IFR航图，并且我要告诉你ipad上的航图还是实时跟随MSFS2020的GPS位置。&lt;br /&gt;&lt;br /&gt;如果看过我的视频的朋友，应该知道我不止一次推荐ipad上的免费App，现在已经被Garmin收购了，不过目前依然是免费，fltplan go。&lt;img height=&quot;400&quot; src=&quot;https://x-plane.vip/content/images/2022/07/IMG_20220702_102422.jpg&quot; width=&quot;225&quot; /&gt;&lt;br /&gt;&lt;br /&gt;但是问题是fltplan go目前只自带连接X-Plane和FSX的接口，并没有提供MSFS2020的连接方式，很不幸告诉你FSX接口并不兼容MSFS2020。&lt;br /&gt;&lt;br /&gt;上天给了我个提示，让我遇见了一个网站&lt;a href=&quot;https://events.flighttracker.tech/?ref=x-plane.vip&quot;&gt;Flight Events&lt;br /&gt;Follow your aircraft on a real-life map and enhance your experience in Microsoft Flight Simulator. Suitable for individuals, small groups of friends or even large communities.&lt;br /&gt;&lt;img src=&quot;https://events.flighttracker.tech/icons/android-icon-192x192.png&quot; /&gt;&lt;br /&gt;&lt;img src=&quot;https://events-storage.flighttracker.tech/images/Screenshot1-300.png&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;该网站的主要任务是实时跟踪模拟飞行-飞机的轨迹，但是这个网站提供一个小程序。&lt;br /&gt;&lt;br /&gt;在网站的右上角有个Join&lt;img height=&quot;241&quot; src=&quot;https://x-plane.vip/content/images/2022/07/image.png&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;&lt;br /&gt;选择Download FE Client for MSFS&lt;br /&gt;&lt;br /&gt;下载这个很小的程序，就可以解决你的问题了。&lt;img height=&quot;300&quot; src=&quot;https://x-plane.vip/content/images/2022/07/16569727651721-1.jpg&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;&lt;br /&gt;关于设置，broadcast data to local network&lt;img src=&quot;https://x-plane.vip/content/images/2022/07/image-2.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;警告&lt;br /&gt;&lt;br /&gt;Fltplan Go那边你一定要选择X-Plane。&lt;br /&gt;&lt;br /&gt;Fltplan Go那边你一定要选择X-Plane。&lt;br /&gt;&lt;br /&gt;我知道你在玩MSFS2020。&lt;img height=&quot;300&quot; src=&quot;https://x-plane.vip/content/images/2022/07/16569727781952.jpg&quot; width=&quot;400&quot; /&gt;&lt;br /&gt;&lt;br /&gt;ipad的Fltplan Go那边你一定要选择X-Plane。&lt;br /&gt;&lt;br /&gt;这个有个迷惑点，这边的状态有时候不会显示Connected，但是你去看地图，实际已经连接成功&lt;br /&gt;&lt;br /&gt;关于X-Plane 11如何连接ipad&lt;br /&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3409735151169599&quot;;
/* 468x15文章内容广告 */
google_ad_slot = &quot;9854908204&quot;;
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/9126062285342238167/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/9126062285342238167?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/9126062285342238167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/9126062285342238167'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2022/07/ipadmsfs2020.html' title='ipad如何连接MSFS2020'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-1273887979137644272</id><published>2021-10-27T16:49:00.001+08:00</published><updated>2021-10-27T16:49:47.755+08:00</updated><title type='text'>The FAA Called, They Want to Know Why I Busted Airspace</title><content type='html'>&lt;iframe width=&quot;480&quot; height=&quot;270&quot; src=&quot;https://youtube.com/embed/4HzTa-qOPZo&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/1273887979137644272/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/1273887979137644272?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/1273887979137644272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/1273887979137644272'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2021/10/the-faa-called-they-want-to-know-why-i.html' title='The FAA Called, They Want to Know Why I Busted Airspace'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img.youtube.com/vi/4HzTa-qOPZo/default.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-3325687276832329128</id><published>2020-07-11T10:41:00.003+08:00</published><updated>2024-04-17T10:43:42.686+08:00</updated><title type='text'>Linux Kernel joystick max button number limitation is 80</title><content type='html'>&lt;img height=&quot;453&quot; src=&quot;https://x-plane.vip/content/images/2022/07/linux_joystick_maxbutton-2.jpg&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Today latest Linux kernel stable version is 5.7.8.&lt;br /&gt;&lt;br /&gt;we found Linux kernel has max joystick buttons up to 80, no more&lt;br /&gt;&lt;br /&gt;We are selling USB joystick device QMCP737C for flight simulator, which is nothing but common USB HID joystick. it has physical 104 buttons&lt;br /&gt;&lt;br /&gt;Product link&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://x-plane.vip/quickmade/qmcp737c/&quot;&gt;https://x-plane.vip/quickmade/qmcp737c/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;it works good on Windows, Mac, but not on Linux.&lt;br /&gt;&lt;br /&gt;Linux kernel exposes /dev/input/js0 max to 80 button, but we have 104 buttons.&lt;br /&gt;&lt;br /&gt;I did a lots of google search, but nothing I got. then I have to look at Kernel source, to find out where this number max 80 comes from&lt;br /&gt;&lt;br /&gt;Eventually I found the final limitation&lt;br /&gt;&lt;br /&gt;#define BTN_JOYSTICK 0x120&lt;br /&gt;&lt;br /&gt;#define BTN_DEAD 0x12f&lt;br /&gt;&lt;br /&gt;#define BTN_TRIGGER_HAPPY 0x2c0&lt;br /&gt;&lt;br /&gt;#define KEY_MAX 0x2ff&lt;br /&gt;&lt;br /&gt;include/uapi/linux/input-event-codes.h&lt;br /&gt;&lt;br /&gt;according to function hidinput_configure_usage() in file drivers/hid/hid-input.c&lt;br /&gt;&lt;br /&gt;the joystick button mapping is not a continues space, general speak the mapping space is from&lt;br /&gt;&lt;br /&gt;BTN_JOYSTICK~BTN_DEAD&lt;br /&gt;&lt;br /&gt;BTN_TRIGGER_HAPPY~KEY_MAX&lt;br /&gt;&lt;br /&gt;and finally I got the max limitation is 80.&lt;br /&gt;&lt;br /&gt;my question is why KEY_MAX is 0x2ff?&lt;br /&gt;&lt;br /&gt;this number 0x2ff looks like not align with char? integer? the answer is no&lt;br /&gt;&lt;br /&gt;so may I ask to expand KEY_MAX to such as 0x4ff?&lt;br /&gt;&lt;br /&gt;I did a quick test on Ubuntu, all 104 buttons are showing up&lt;img height=&quot;403&quot; src=&quot;https://x-plane.vip/content/images/2022/07/after_linux_joystick_patch-2.jpg&quot; width=&quot;640&quot; /&gt;&lt;br /&gt;&lt;br /&gt;then a patch is submitted to kernel driver input group&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://patchwork.kernel.org/patch/11657985/?ref=x-plane.vip&quot;&gt;https://patchwork.kernel.org/patch/11657985/&lt;/a&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3409735151169599&quot;;
/* 468x15文章内容广告 */
google_ad_slot = &quot;9854908204&quot;;
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/3325687276832329128/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/3325687276832329128?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3325687276832329128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3325687276832329128'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2020/07/linux-kernel-joystick-max-button-number.html' title='Linux Kernel joystick max button number limitation is 80'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-7823311010007035051</id><published>2019-05-25T10:47:00.003+08:00</published><updated>2024-04-17T10:55:06.584+08:00</updated><title type='text'>X-Plane 11新手指南</title><content type='html'>&lt;br /&gt;&lt;br /&gt;我的QQ群运行2年多了，没变成死群，很庆幸。&lt;br /&gt;&lt;br /&gt;有些常常被群里飞友问的X-Plane 11的相关问题，我想趁这个机会总结一下，以便即使不在群里的新飞友也能看见。&lt;br /&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;主播，我想配个新电脑，有什么推荐的么？&lt;/h1&gt;&lt;br /&gt;群里飞友很多叫我主播，今天是2019年5月，我说的话的真理性是依赖这个时间点的。X-Plane 11.34以来，虽然支持多核，但是由于主要的图像运算是依赖于OpenGL，这种单线程图形运算库。也就说别管你有多少CPU物理核，X-Plane 11只看你的单核运算能力。&lt;br /&gt;&lt;br /&gt;多年看飞友装机的经验，cpubenchmark.net这个网站还是相当靠谱的，它给出了一个列表，这个列表基本等价于X-Plane 11最适合CPU列表，并且还包含了CPU价格。&lt;img src=&quot;https://x-plane.vip/content/images/2022/07/singlethread.jpg&quot; /&gt;&lt;br /&gt;&lt;br /&gt;我们一起看看这图能给我们什么信息，最上面9900K当然是最好的，价格也很好基本500美金，你不差钱，就买这个没错。&lt;br /&gt;&lt;br /&gt;我们再看看i5 9600KF，价格在260美金，是目前看起来性价比最高的X-Plane 11 CPU。&lt;br /&gt;&lt;br /&gt;所以懂了么？这图就是这样看，至于哪个CPU适合你，要看你的钱包。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.cpubenchmark.net/singleThread.html?ref=x-plane.vip&quot;&gt;https://www.cpubenchmark.net/singleThread.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;这个CPU列表在不断更新的，所以这里链接贴出来&lt;br /&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;UP主，X-Plane 11在哪里下载？&lt;/h1&gt;&lt;br /&gt;我的回答是：买。 没有正版的支持，就不会有优秀的开发团队。&lt;br /&gt;&lt;br /&gt;X-Plane 11可以不要钱先玩的，你知道不？这个链接可以下载个演示版，但是只有美国西雅图附近地景。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.x-plane.com/desktop/try-it/?ref=x-plane.vip&quot;&gt;https://www.x-plane.com/desktop/try-it/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;你可以用这个演示版本测试一下你的硬件能不能承受这个游戏。如果不能承受，那么也不用继续花钱了。&lt;br /&gt;&lt;br /&gt;最方便的就是直接steam购买，只要牵扯一个下载问题，steam有国内的镜像，所以下载速度相当不错。而且steam经常有优惠，最便宜的时候，我见过的只需100多点人民币。&lt;img src=&quot;https://img1.blogblog.com/img/video_object.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;另外就是官方直接购买，这也是我的方式，价格在400人民币左右。&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.x-plane.com/desktop/buy-it/?ref=x-plane.vip&quot;&gt;https://www.x-plane.com/desktop/buy-it/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;因为本人平时不玩其他游戏，所以steam对我没什么意义，而且作为X-Plane的超级粉丝，算是对官方的贡献一点绵薄之力。&lt;br /&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;群主，我是新手，有什么飞行摇杆推荐？&lt;/h1&gt;&lt;br /&gt;鼠标，键盘飞行，我看是不可取的。那么一套飞行摇杆就是必须的啦。 本人也有6年以上的模拟飞行经验，买过大大小小的摇杆。如果你是新手，而且是第一次购买，没准备花很多钱，但是又想买个性价比高的。那么我的推荐是1000元摇杆套装T16000M，这款摇杆已经被太多飞友验证是一款性价比最高的摇杆。1000元一下套装就不用考虑了，因为人家也要研发成本，你自己换位思考一下。&lt;img src=&quot;https://x-plane.vip/content/images/2022/07/T16.jpg&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1 style=&quot;text-align: left;&quot;&gt;群主，你用的什么摇杆？&lt;/h1&gt;&lt;br /&gt;我用的是大家俗称的“猪肝”，这个杆子是金属的，所以手工是接近真飞机的。更重要的他有双油门。作为国内飞友最喜欢的机型737，320，你没有双油门，那么差异推力滑行道转弯你就感受不了了。而上面的T16000M就只有单油门。&lt;img src=&quot;https://x-plane.vip/content/images/2022/07/A10.jpg&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;图马斯特淘宝官网&lt;img src=&quot;https://x-plane.vip/content/images/2022/07/logo_tm-1.gif&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;因为猪肝没有Z轴，所以购买脚舵是必须的。我的脚舵是CH牌子的，但是国内没有官方销售。同价位的我推荐罗技的，以前叫赛钛克，这款飞行脚蹬。如果同时你还想飞直升机，那么脚舵是一定需要的装备&lt;img src=&quot;https://x-plane.vip/content/images/2022/07/g_rudder.jpg&quot; /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;飞行摇杆高级的上不封顶，如果你是高端飞行用户，我们可以在群里交流，这篇文章主要写给新手，这里就不多说了。&lt;br /&gt;&lt;br /&gt;对于现在还缺点钱的朋友，选择咸鱼二手也是很不错的选择&lt;img src=&quot;https://img1.blogblog.com/img/video_object.png&quot; /&gt;&lt;br /&gt;&lt;section class=&quot;m-tags in-post&quot; style=&quot;background-color: white; background-repeat: no-repeat; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;Source Sans Pro&amp;quot;, Helvetica, Arial, sans-serif; font-size: 16px; padding-top: 25px;&quot;&gt;&lt;ul style=&quot;background-repeat: no-repeat; box-sizing: border-box; display: flex; flex-wrap: wrap; font-size: 1.25rem; letter-spacing: 0.3px; line-height: 1.6; list-style-type: none; margin: 0px 0px 30px; padding: 0px;&quot;&gt;&lt;/ul&gt;&lt;/section&gt;&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3409735151169599&quot;;
/* 468x15文章内容广告 */
google_ad_slot = &quot;9854908204&quot;;
google_ad_width = 468;
google_ad_height = 15;
//--&gt;
&lt;/script&gt;
&lt;script src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/7823311010007035051/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/7823311010007035051?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/7823311010007035051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/7823311010007035051'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2019/05/x-plane-11.html' title='X-Plane 11新手指南'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-5273613878290752708</id><published>2017-02-19T16:13:00.001+08:00</published><updated>2017-02-19T16:13:05.693+08:00</updated><title type='text'>PCIE 大功率显卡的8 Pin接口，要特别小心</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRWPfaP9r-2UjKP4fabahVdOAzzyeE9f8Z2eNDxK6zZbav7OewBoei5D4fpLCJyDPo3l0G0xPjp3O9D5G3Iu3jXwbOrLaiahrmN-9X5vJ7aaOytKc_MiZ3i8wbjpJvS4phF53NXOdLcPM/s1600/pcie-pinout.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRWPfaP9r-2UjKP4fabahVdOAzzyeE9f8Z2eNDxK6zZbav7OewBoei5D4fpLCJyDPo3l0G0xPjp3O9D5G3Iu3jXwbOrLaiahrmN-9X5vJ7aaOytKc_MiZ3i8wbjpJvS4phF53NXOdLcPM/s320/pcie-pinout.png&quot; width=&quot;262&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;pub-3409735151169599&quot;;
/* 468x15文章内容广告 */
google_ad_slot = &quot;9854908204&quot;;
google_ad_width = 468;
google_ad_height = 15;
//&lt;/script&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;script src=&quot;https://pagead2.googlesyndication.com/pagead/show_ads.js&quot; type=&quot;text/javascript&quot;&gt;
&lt;/script&gt;
PCIe高端显卡，功率必然相对大，采用6 Pin和8 Pin同时供电。但是，这里有个坑，EPS-12V接口，可以插到PCIE 8 Pin接口，但是就麻烦了。。。不多说，上面的图，清清楚楚&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/5273613878290752708/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/5273613878290752708?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/5273613878290752708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/5273613878290752708'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2017/02/pcie-8-pin.html' title='PCIE 大功率显卡的8 Pin接口，要特别小心'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRWPfaP9r-2UjKP4fabahVdOAzzyeE9f8Z2eNDxK6zZbav7OewBoei5D4fpLCJyDPo3l0G0xPjp3O9D5G3Iu3jXwbOrLaiahrmN-9X5vJ7aaOytKc_MiZ3i8wbjpJvS4phF53NXOdLcPM/s72-c/pcie-pinout.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-9176575618138543346</id><published>2013-07-19T13:19:00.001+08:00</published><updated>2013-07-23T14:25:06.750+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ARM"/><title type='text'>stmdb r13!, {r0-r3}</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;&lt;span style=&#39;color:windowtext&#39;&gt;闲话少说，直接上图&lt;/span&gt;&lt;span lang=EN-US style=&#39;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:windowtext&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style=&#39;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:windowtext&#39;&gt;stmdb r13!, {r0-r3}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style=&#39;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:windowtext&#39;&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style=&#39;color:windowtext&#39;&gt;我用模拟器运行一下这条汇编&lt;/span&gt;&lt;span lang=EN-US style=&#39;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:windowtext&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US style=&#39;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:windowtext&#39;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKLHhcL9PPVyTAPIxrYXTXcMXlxNrUimarfgjuEGwq_ERrnUgo9sXPLJwRKjFrHYS9kS5rfsNqK_nPGVwK2PKnQN4XWfulQdL3MvLZFIwr_IYkqIiaxtek0lmBwhT2oEdu85aAR6svJ88/s1600/image003-766416.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKLHhcL9PPVyTAPIxrYXTXcMXlxNrUimarfgjuEGwq_ERrnUgo9sXPLJwRKjFrHYS9kS5rfsNqK_nPGVwK2PKnQN4XWfulQdL3MvLZFIwr_IYkqIiaxtek0lmBwhT2oEdu85aAR6svJ88/s400/image003-766416.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5902192019577144434&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=EN-US style=&#39;font-family:&quot;Calibri&quot;,&quot;sans-serif&quot;;color:windowtext&#39;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;看看运行后的结果&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Qco507FphudZL1n8E7l2H8KSDy1Pfz5C0HP0Kz7jParj8sdSFXqNr9OMyjaiUhxCexC5yvTv8byZvVFApZujq_DGsvOoXrM3ooMh-0ryfVRjARzy9y1sHvllgtJn1hqKa1dm626nJF4/s1600/image004-768086.png&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2Qco507FphudZL1n8E7l2H8KSDy1Pfz5C0HP0Kz7jParj8sdSFXqNr9OMyjaiUhxCexC5yvTv8byZvVFApZujq_DGsvOoXrM3ooMh-0ryfVRjARzy9y1sHvllgtJn1hqKa1dm626nJF4/s400/image004-768086.png&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5902192025982712546&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;有没有注意到，&lt;span lang=EN-US&gt;SP&lt;/span&gt;初始时指的&lt;span lang=EN-US&gt;4&lt;/span&gt;个字节是不会更新的，而是从低地址的下一个&lt;span lang=EN-US&gt;4&lt;/span&gt;字节开始。&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;再上一个清晰的抽象图&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span lang=EN-US&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqFSzgCDvzMn2zaI_Wb9ZJ217MGUpXEYD3QNmO4JwLlORf1XVUJkAcQVCAG8hhR0Y5OHpYlSdckd0-5ZbMa5kYoiuVkCMjSI0ncb8icY2xdZNKQNhWYkP7Utqof-lxGkIUN56h5Hfjs80/s1600/image001-770064.jpg&quot;&gt;&lt;img src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqFSzgCDvzMn2zaI_Wb9ZJ217MGUpXEYD3QNmO4JwLlORf1XVUJkAcQVCAG8hhR0Y5OHpYlSdckd0-5ZbMa5kYoiuVkCMjSI0ncb8icY2xdZNKQNhWYkP7Utqof-lxGkIUN56h5Hfjs80/s400/image001-770064.jpg&quot;  border=&quot;0&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5902192035613411954&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/9176575618138543346/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/9176575618138543346?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/9176575618138543346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/9176575618138543346'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2013/07/stmdb-r13-r0-r3.html' title='stmdb r13!, {r0-r3}'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKLHhcL9PPVyTAPIxrYXTXcMXlxNrUimarfgjuEGwq_ERrnUgo9sXPLJwRKjFrHYS9kS5rfsNqK_nPGVwK2PKnQN4XWfulQdL3MvLZFIwr_IYkqIiaxtek0lmBwhT2oEdu85aAR6svJ88/s72-c/image003-766416.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-1008610610413562307</id><published>2010-12-10T14:17:00.000+08:00</published><updated>2010-12-10T14:17:48.775+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="I2C"/><title type='text'>I2C transfer highlight</title><content type='html'>Every byte put on the SDA line must be 8-bits long. The number of bytes that can be transmitted per transfer is unrestricted. Each byte has to be followed by an acknowledge bit &lt;br /&gt;
传输多少字节的数据，I2C没有限制，但是每8位传输需要一个确认位回复。</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/1008610610413562307/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/1008610610413562307?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/1008610610413562307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/1008610610413562307'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/12/i2c-transfer-highlight.html' title='I2C transfer highlight'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-6026587813428366619</id><published>2010-11-11T13:59:00.000+08:00</published><updated>2010-11-11T13:59:50.673+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="LCD"/><title type='text'>display driver must take care of Blanking interval to avoid tearing screen</title><content type='html'>&lt;div class=&quot;mobile-photo&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcDyVEw980FvvLHOGEa0dxLERtCc7RloDJ4hiXz9OuS_XyIyuvEyNEXRj6WgQKNdDq7IpAr_PE5MrwOYADGD-tEqRYht8-qyi7Q78N1mfNnDRjG7gRBRaOLq9p021N77xruuxEqUoAyK4/s1600/Picture+%2528Device+Independent+Bitmap%2529+1-707637.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5538167514756687922&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcDyVEw980FvvLHOGEa0dxLERtCc7RloDJ4hiXz9OuS_XyIyuvEyNEXRj6WgQKNdDq7IpAr_PE5MrwOYADGD-tEqRYht8-qyi7Q78N1mfNnDRjG7gRBRaOLq9p021N77xruuxEqUoAyK4/s400/Picture+%2528Device+Independent+Bitmap%2529+1-707637.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;这里有和timing相关的3个参数 &lt;br /&gt;
1. &lt;br /&gt;
&lt;br /&gt;
Front Porch &lt;br /&gt;
2.      Pulse Width &lt;br /&gt;
3.      Back Porch &lt;br /&gt;
VGA每绘制一整屏幕的pixel时，都会有Vsync信号的de-active的时间是pulse width，从宏观讲，前一屏幕的绘制完毕到后一屏幕的绘制开始，一定是会有个时间间隔的，它就是blanking interval。 &lt;br /&gt;
如图所示blanking interval=front porch + pulsewidth + back porch，具体这些参数是什么依赖于LCD panel datasheet。Front porch和back porch是不容忽视的两个&quot;大&quot;参数。我拿我手头上的LCD panel datasheet举例，front porch，pulse width，back porch的比例是4：1：1，这也是我为什么说是&quot;大&quot;参数的原因。以常用的51us的Hsync周期，blanking interval就是51us x ( 4 + 1 + 1) = 306us 。相对于当代的处理器，这是一个非常长的时间。60Hz一个屏幕的刷新率，每一屏幕绘制花费16ms，其中306us是间歇。 &lt;br /&gt;
在blanking interval期间，LCD controller相当于是休息的。我们就应该在这个间隙时间更新framebuffer，就可以避免裂屏的现象。</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/6026587813428366619/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/6026587813428366619?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/6026587813428366619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/6026587813428366619'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/11/display-driver-must-take-care-of.html' title='display driver must take care of Blanking interval to avoid tearing screen'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcDyVEw980FvvLHOGEa0dxLERtCc7RloDJ4hiXz9OuS_XyIyuvEyNEXRj6WgQKNdDq7IpAr_PE5MrwOYADGD-tEqRYht8-qyi7Q78N1mfNnDRjG7gRBRaOLq9p021N77xruuxEqUoAyK4/s72-c/Picture+%2528Device+Independent+Bitmap%2529+1-707637.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-4520791493389271502</id><published>2010-11-11T13:49:00.000+08:00</published><updated>2010-11-11T13:49:22.164+08:00</updated><title type='text'>님</title><content type='html'>님是敬语sir的意思</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/4520791493389271502/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/4520791493389271502?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/4520791493389271502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/4520791493389271502'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/11/blog-post.html' title='님'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-3163890706525533482</id><published>2010-10-25T12:19:00.002+08:00</published><updated>2010-10-25T12:19:34.891+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PC"/><title type='text'>最大的PC瓶颈</title><content type='html'>当前所有的台式机或者笔记本的配置都已经相当快了，除了一个家伙。即使你花了大量的钞票配了4核，8核的处理器，超牛的显卡，你会发现系统的整体性能还是达不到想象中的样子。这就是&quot;木桶效应&quot;，每片木头都要长短一样，否则花出去的钱都会严重打折。这片最短的木头就是硬盘。目前硬盘多采用SATA接口 &lt;br /&gt;
SATA 1.0   1.5Gbit/s &lt;br /&gt;
SATA 2.0   3Gbit/s &lt;br /&gt;
SATA 3.0   6Gbit/s &lt;br /&gt;
而且最流行的就是SATA2.0，该接口的理论传输速度是3Gbit/s，也就是380MByte/s，这个速度是个什么概念，USB 2.0 high speed是480Mbit/s，即60MByte/s，也就是说SATA2.0的速度是USB 2.0的4倍，总的来说还是比较快的。可是你买个USB的移动硬盘用用，会发现它的速度和内装的硬盘也差不了多少。 &lt;br /&gt;
哎！对了！我前面说的是接口速度，就是说硬盘的最快可以达到的传输速度。实际的硬盘的速度你如果测试一下会让你大跌眼镜。根据主流的硬盘的测试结构，台式机机械硬盘的读速度为110MByte/s，笔记本机械硬盘的读速度为60Mbyte/s，他们都远低于SATA可以提供的传输速度。这就是瓶颈，真正的瓶颈。 &lt;br /&gt;
因此我想说，当你想配置一台PC时，不妨多花些钱在高速度的硬盘配置上，比花在CPU上有效果的多。这话在当前是有效的，可是若干年后就不一定了。 &lt;br /&gt;
这个PC最大的瓶颈，其实已经被一些厂商意识到，只是他们不强调。目前解决硬盘的瓶颈问题有两种方法，一种是使用RAID的条带，一种是新流行的SSD，当然还有更高性能的SSD+RAID。苹果已经在他部分高性能产品中使用SSD硬盘，而intel直接在他的P55 platform controller hub中集成了RAID控制器。SSD没话说必然是未来的趋势，它的优点太多了，可是目前价格不菲，而且软件的技术上也还不成熟。至少我认为机械硬盘+RAID是当下性价比最高的解决办法。 &lt;br /&gt;
P55和H55主板的差价在100元左右，他们的主要差别也就是有无RAID控制器，和你单独买个RAID PCI卡差不多。这样硬盘你就&quot;掰成两半&quot;来买，比如你想买240G硬盘那就买两个120G组成RAID0是个不错的选择。</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/3163890706525533482/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/3163890706525533482?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3163890706525533482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3163890706525533482'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/10/pc.html' title='最大的PC瓶颈'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-7074594931177937861</id><published>2010-10-22T15:13:00.001+08:00</published><updated>2010-10-22T15:13:41.240+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>UBI到nand驱动判断坏块的call path</title><content type='html'>&lt;div class=&quot;mobile-photo&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI4GUIfmF6owLCAPlqtuBie9fdZYvTxRRhfFFB-iWLH-PVw2ZZUqUDKoYdElP9KojNnRW5hR48HZMycdELTSJdmc0o62rxEtGbkBIUegoR_RLQYfaeZTo0tDlKxElQ7zVXmMWEdYylHc8/s1600/Picture+(Device+Independent+Bitmap)+1-750988.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5530764898634266018&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI4GUIfmF6owLCAPlqtuBie9fdZYvTxRRhfFFB-iWLH-PVw2ZZUqUDKoYdElP9KojNnRW5hR48HZMycdELTSJdmc0o62rxEtGbkBIUegoR_RLQYfaeZTo0tDlKxElQ7zVXmMWEdYylHc8/s400/Picture+(Device+Independent+Bitmap)+1-750988.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/7074594931177937861/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/7074594931177937861?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/7074594931177937861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/7074594931177937861'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/10/ubinandcall-path.html' title='UBI到nand驱动判断坏块的call path'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiI4GUIfmF6owLCAPlqtuBie9fdZYvTxRRhfFFB-iWLH-PVw2ZZUqUDKoYdElP9KojNnRW5hR48HZMycdELTSJdmc0o62rxEtGbkBIUegoR_RLQYfaeZTo0tDlKxElQ7zVXmMWEdYylHc8/s72-c/Picture+(Device+Independent+Bitmap)+1-750988.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-7902158649136788303</id><published>2010-10-22T15:13:00.000+08:00</published><updated>2010-10-22T15:13:21.067+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>MTD如何判断NAND flash坏块</title><content type='html'>&lt;div class=&quot;mobile-photo&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5_rBrpB__s4XD5-e3Ja98LtadYW_K2QEuzUbrLOXWTjMaUrUbSqMrEz3Jj3s2KhxUS2hah3EAKELCGDYBJlBMvkXlfC3KLgoJH73wRDlmGtQvOdf7FFfu14RWmAXH5Ehmq0z_kTMwwCM/s1600/Picture+(Device+Independent+Bitmap)+1-794046.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5530757783114783394&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5_rBrpB__s4XD5-e3Ja98LtadYW_K2QEuzUbrLOXWTjMaUrUbSqMrEz3Jj3s2KhxUS2hah3EAKELCGDYBJlBMvkXlfC3KLgoJH73wRDlmGtQvOdf7FFfu14RWmAXH5Ehmq0z_kTMwwCM/s400/Picture+(Device+Independent+Bitmap)+1-794046.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;mobile-photo&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfNCiyEnCzBBdkWwmEc_JXHU8DadNh0JJuqNcv0_Xcxd49qFrQxwTIFzo3fwI2mFHFuAQuAghX4CB_NtpXFQZclrQhJJvJaKwBW5FUJVUKmFOjwIdnbjlrRVggVFZbtzs37c1sYignysc/s1600/Picture+(Device+Independent+Bitmap)+2-795004.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5530757788967234306&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjfNCiyEnCzBBdkWwmEc_JXHU8DadNh0JJuqNcv0_Xcxd49qFrQxwTIFzo3fwI2mFHFuAQuAghX4CB_NtpXFQZclrQhJJvJaKwBW5FUJVUKmFOjwIdnbjlrRVggVFZbtzs37c1sYignysc/s400/Picture+(Device+Independent+Bitmap)+2-795004.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;nand_block_bad()在nand_base.c中定义，它是NAND MTD的通用函数，用于坏块的判断。市面上现有的NAND flash都是在page的spare area开始部分标记是否是坏块。 &lt;br /&gt;
Spare area在MTD中就对应的是OOB，所以猜测一下，nand_block_bad()会读取OOB，然后对标记进行检测。 &lt;br /&gt;
&lt;br /&gt;
代码一看果然如此。 &lt;br /&gt;
先通过cmdfunc来个NAND_CMD_READOOB，再来个read_byte把标记读出来，判断是不是0xFF就知道是不是坏块儿了。 &lt;br /&gt;
&lt;br /&gt;
struct nand_chip结构体的函数指针表中的block_bad默认就是指向这个函数。</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/7902158649136788303/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/7902158649136788303?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/7902158649136788303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/7902158649136788303'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/10/mtdnand-flash.html' title='MTD如何判断NAND flash坏块'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5_rBrpB__s4XD5-e3Ja98LtadYW_K2QEuzUbrLOXWTjMaUrUbSqMrEz3Jj3s2KhxUS2hah3EAKELCGDYBJlBMvkXlfC3KLgoJH73wRDlmGtQvOdf7FFfu14RWmAXH5Ehmq0z_kTMwwCM/s72-c/Picture+(Device+Independent+Bitmap)+1-794046.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-3989705845272267274</id><published>2010-10-22T12:14:00.000+08:00</published><updated>2010-10-22T12:14:35.675+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>UBI内核模块需要参数</title><content type='html'>加载UBI kernel module需要参数来制定底层要使用哪个mtd设备，参数如mtd=/dev/mtd0</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/3989705845272267274/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/3989705845272267274?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3989705845272267274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3989705845272267274'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/10/ubi.html' title='UBI内核模块需要参数'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-3758572755484979392</id><published>2010-10-22T10:43:00.002+08:00</published><updated>2010-10-22T10:43:49.701+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>MTD夹心UBI</title><content type='html'>&quot;This is a small driver which implements fake MTD devices on top of UBI volumes. This sounds strange, but it is in fact quite useful to make MTD-oriented software (including all the legacy software) work on top of UBI.&quot; &lt;br /&gt;
&lt;br /&gt;
作者留下了关于gluebi.c的设计目的，可以看出UBI的下层是MTD，结果上层还是MTD。这种肉夹馍的结构，只是上层的MTD是一个虚拟层，用于兼容以前的驱动</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/3758572755484979392/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/3758572755484979392?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3758572755484979392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3758572755484979392'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/10/mtdubi.html' title='MTD夹心UBI'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-901565983733912887</id><published>2010-10-21T18:12:00.000+08:00</published><updated>2010-10-21T18:12:05.975+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Linux MTD nand read page抽象方法</title><content type='html'>&lt;div class=&quot;mobile-photo&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHrJxciyvKZ7G5Jj6MFvf_wgzOxfqd2Ip1t3ER5MF-Hmls5OpMviNZfeomgJJ7oYIJDcGZrQ_fUX1eejMdEMwrd3ESf5xkTy9s0El0HbfP4bJ6VZNo8Ist96E7H0qjGxTW9cO89uQ6cDA/s1600/Picture+(Device+Independent+Bitmap)+1-744282.jpg&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5530439741188444834&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHrJxciyvKZ7G5Jj6MFvf_wgzOxfqd2Ip1t3ER5MF-Hmls5OpMviNZfeomgJJ7oYIJDcGZrQ_fUX1eejMdEMwrd3ESf5xkTy9s0El0HbfP4bJ6VZNo8Ist96E7H0qjGxTW9cO89uQ6cDA/s400/Picture+(Device+Independent+Bitmap)+1-744282.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Nand_read_page_hwecc()是抽象了硬件以后的接口，也是NAND flash一个最为基本平常的操作page read。和我见过的所有的其他的平台完全不一样，Linux MTD将硬件的NAND controller抽象成了，hwctl() 紧接着read_buf()这样的操作序列。可以看出hwctl负责下命令，包括read ，program ，erase等等。</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/901565983733912887/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/901565983733912887?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/901565983733912887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/901565983733912887'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/10/linux-mtd-nand-read-page.html' title='Linux MTD nand read page抽象方法'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHrJxciyvKZ7G5Jj6MFvf_wgzOxfqd2Ip1t3ER5MF-Hmls5OpMviNZfeomgJJ7oYIJDcGZrQ_fUX1eejMdEMwrd3ESf5xkTy9s0El0HbfP4bJ6VZNo8Ist96E7H0qjGxTW9cO89uQ6cDA/s72-c/Picture+(Device+Independent+Bitmap)+1-744282.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-9167069335803882445</id><published>2010-10-20T13:08:00.000+08:00</published><updated>2010-10-20T13:08:58.980+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ThreadX"/><title type='text'>phone modem RT OS can disable time slice to improve performance</title><content type='html'>ThreadX具有时间片功能，但是这样的实时操作系统往往用在一下小型的系统上，比如phone modem里。在这样的应用中，由于内部的中断非常频繁，所以往往会disable time slice，来减小上下文切换开销，而达到高效的效果。</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/9167069335803882445/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/9167069335803882445?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/9167069335803882445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/9167069335803882445'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/10/phone-modem-rt-os-can-disable-time.html' title='phone modem RT OS can disable time slice to improve performance'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-2143182656684706568</id><published>2010-09-17T13:06:00.000+08:00</published><updated>2010-09-17T13:06:12.894+08:00</updated><title type='text'>flight term</title><content type='html'>distance measuring equipment (DME)&lt;br /&gt;
VHF omnidirectional range (VOR)&lt;br /&gt;
non-directional beacons (NDBs)</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/2143182656684706568/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/2143182656684706568?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/2143182656684706568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/2143182656684706568'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/09/flight-term.html' title='flight term'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-8990120482152531975</id><published>2010-08-12T10:53:00.000+08:00</published><updated>2010-08-12T10:53:21.788+08:00</updated><title type='text'>DMA flow controller can solve unknown packet length problem</title><content type='html'>The peripheral that controls the length of the packet is known as the flow controller. The&lt;br /&gt;
flow controller is usually the DMAC, where the packet length is programmed by&lt;br /&gt;
software before the DMA channel is enabled. If the packet length is unknown when the&lt;br /&gt;
DMA channel is enabled, you can use either the source or destination peripherals as the&lt;br /&gt;
flow controller.</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/8990120482152531975/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/8990120482152531975?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/8990120482152531975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/8990120482152531975'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/08/dma-flow-controller-can-solve-unknown.html' title='DMA flow controller can solve unknown packet length problem'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-513128951642640880</id><published>2010-08-04T12:34:00.000+08:00</published><updated>2010-08-04T12:34:43.368+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gerrit"/><title type='text'>git no branch</title><content type='html'>&lt;div class=&quot;mobile-photo&quot;&gt;&lt;/div&gt;&lt;a href=&quot;mailto:cpuwolf@gmail.com&quot;&gt;&lt;/a&gt;&lt;br /&gt;
兄弟，那个git no branch ,网上查到了&lt;br /&gt;
终于救回来了,&lt;br /&gt;
有个命令git help里看不到的 叫reflog&lt;br /&gt;
Git reflog 可以看到no branch 上 提交的tag list &lt;br /&gt;
然后找到 最后一个tag , git checkout xxxx 就可以了</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/513128951642640880/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/513128951642640880?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/513128951642640880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/513128951642640880'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/08/git-no-branch.html' title='git no branch'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-4964881693457745062</id><published>2010-05-31T12:49:00.000+08:00</published><updated>2010-05-31T12:49:41.102+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="UART"/><title type='text'>UART RX的一个细节</title><content type='html'>当UART内部支持FIFO，那么一般情况，RX interrupt的触发条件就是RX FIFO接收到的数据，超过了level trigger。但是如果只有这一种触发条件是不够的，因为如果对方发送了很少的数据，比如一个字节，但是没有超过level trigger，那么逻辑上讲就不会触发RX interrupt，也就是上层软件意识不到有数据来临，但事实是对方已经发了东西，所以是就一个条件触发RX interrupt不够的。 &lt;br /&gt;
基于以上的原因，在UART的hardware设计时，往往会加入一些条件：如果RX FIFO中不是空，但是在很短的时间内，还没有超过level trigger，此时就认为是一种timeout，同时也会触发RX interrupt，这样就解决了上面逻辑上和事实上不符合的问题</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/4964881693457745062/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/4964881693457745062?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/4964881693457745062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/4964881693457745062'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/05/uart-rx.html' title='UART RX的一个细节'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-2412853054780620471</id><published>2010-05-21T12:57:00.000+08:00</published><updated>2010-05-21T12:57:37.205+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>cygwin in  Win7 Command Prompt</title><content type='html'>The message I get when trying to run gcc in Win7 cmd.exe is: &quot;Access is denied.&quot;&lt;br /&gt;
This is a known limitation of the symbolic links in Cygwin 1.7. The solution is to invoke the command(&#39;gcc-3.exe&#39; or &#39;gcc-4.exe&#39;)&amp;nbsp; directly</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/2412853054780620471/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/2412853054780620471?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/2412853054780620471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/2412853054780620471'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/05/cygwin-in-win7-command-prompt.html' title='cygwin in  Win7 Command Prompt'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-4673202461117193025</id><published>2010-03-29T12:58:00.000+08:00</published><updated>2010-03-29T12:58:27.147+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux"/><title type='text'>Linux中断和异常的处理交错的核心原则</title><content type='html'>在Linux中，中断和异常的处理是可以交错执行的。中断可以打断其他中断的处理，同时也可以打断异常的处理。</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/4673202461117193025/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/4673202461117193025?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/4673202461117193025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/4673202461117193025'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/03/linux.html' title='Linux中断和异常的处理交错的核心原则'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2343104350091080580.post-3120163241930139834</id><published>2010-03-25T12:51:00.002+08:00</published><updated>2010-03-25T12:52:55.810+08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><title type='text'>Android目录结构</title><content type='html'>&lt;div class=&quot;Section1&quot;&gt;&lt;p class=&quot;MsoPlainText&quot;&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;到目前为止，&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Android&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;的代码结构是我&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;年以来见到的最漂亮的。专门有个&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;build&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;的目录，是它的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;build system&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;。其他的目录主要依靠&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Android.mk&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;来控制，这个文件的语法简单，结构清晰。根目录下的&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;Makefile&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;激发整个&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;build system&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;的编译过程。&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=&quot;MsoPlainText&quot;&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;而且代码直接包括&lt;/span&gt;&lt;span lang=&quot;EN-US&quot;&gt;tool chain&lt;/span&gt;&lt;span style=&quot;font-family:宋体;&quot;&gt;，几乎无须另外安装什么东西（关于这点也许是优点，也许是缺点）。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://cpuwolf.blogspot.com/feeds/3120163241930139834/comments/default' title='博文评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2343104350091080580/3120163241930139834?isPopup=true' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3120163241930139834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2343104350091080580/posts/default/3120163241930139834'/><link rel='alternate' type='text/html' href='http://cpuwolf.blogspot.com/2010/03/android.html' title='Android目录结构'/><author><name>cpuwolf</name><uri>http://www.blogger.com/profile/15475974717095133478</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhixpelL5Cswnp3wBr3bN5rXByIkAWE8WNOfOD9Hnx0HschkzxypBakF9v6nLJT3foFRL9aRtp7hatvre29d1BXCnk1BQxZ8DM6P05ntcI6qWO9lCvhtKJ_MOVgHHjVIQ/s220/arraw.png'/></author><thr:total>0</thr:total></entry></feed>