<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>SealedBlade---尘封血刃</title>
	<atom:link href="http://sealedblade.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sealedblade.wordpress.com</link>
	<description>~尘封的血刃该出鞘了～</description>
	<lastBuildDate>Thu, 05 Jan 2012 08:01:17 +0000</lastBuildDate>
	<language>zh</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='sealedblade.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>SealedBlade---尘封血刃</title>
		<link>http://sealedblade.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://sealedblade.wordpress.com/osd.xml" title="SealedBlade---尘封血刃" />
	<atom:link rel='hub' href='http://sealedblade.wordpress.com/?pushpress=hub'/>
		<item>
		<title>fatal error</title>
		<link>http://sealedblade.wordpress.com/2010/07/01/fatal-error/</link>
		<comments>http://sealedblade.wordpress.com/2010/07/01/fatal-error/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 08:08:56 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=196</guid>
		<description><![CDATA[fatal error LNK1104: cannot open file &#8220;mfc42u.lib&#8221; solution: Hello. I think the mfc42u.lib is referring to the Unicode release version of MFC library, which you won&#8217;t have unless you are on Windows NT. Try going to Build menu, select &#8220;Set Active Configuration&#8230;&#8221;, and then select the &#8220;Win32 &#8211; Debug&#8221; configuration. Then rebuild your project. I&#8217;ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=196&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>fatal error LNK1104: cannot open file &#8220;mfc42u.lib&#8221;<br />
solution:<br />
Hello.<br />
I think the mfc42u.lib is referring to the<br />
Unicode release version of MFC library, which you<br />
won&#8217;t have unless you are on Windows NT.</p>
<p>Try going to Build menu, select &#8220;Set Active Configuration&#8230;&#8221;, and then select the<br />
&#8220;Win32 &#8211; Debug&#8221; configuration. Then rebuild<br />
your project.</p>
<p>I&#8217;ve encountered this problem also when trying<br />
to build projects from sample dsps in various<br />
books.</p>
<p>Steve</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/196/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/196/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/196/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=196&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2010/07/01/fatal-error/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>如何让word表格不跨页</title>
		<link>http://sealedblade.wordpress.com/2010/06/21/%e5%a6%82%e4%bd%95%e8%ae%a9word%e8%a1%a8%e6%a0%bc%e4%b8%8d%e8%b7%a8%e9%a1%b5/</link>
		<comments>http://sealedblade.wordpress.com/2010/06/21/%e5%a6%82%e4%bd%95%e8%ae%a9word%e8%a1%a8%e6%a0%bc%e4%b8%8d%e8%b7%a8%e9%a1%b5/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 03:53:30 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=197</guid>
		<description><![CDATA[1.游標先停在表格內,按[表格]&#62;[表格內容] 2.選[表格]頁 3.選[文繞圖],按[確定] 4.按[工具]&#62;[選項] 5.選[相容]頁 6.勾選[不要將跨頁的換行表格切斷],按[確定] 1.Select table -&#62; table property 2.Select &#8220;table&#8221; tab. 3.Select &#8220;word warping&#8221; 4.Select Tools -&#62; &#8220;Option&#8221; 5.Select &#8220;Compatibility&#8221; 6.check the item &#8220;Don&#8217;t break warpped talbe accross pages&#8221;<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=197&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>1.游標先停在表格內,按[表格]&gt;[表格內容]<br />
2.選[表格]頁<br />
3.選[文繞圖],按[確定]<br />
4.按[工具]&gt;[選項]<br />
5.選[相容]頁</p>
<p>6.勾選[不要將跨頁的換行表格切斷],按[確定]<br />
1.Select table -&gt; table property<br />
2.Select &#8220;table&#8221; tab.<br />
3.Select &#8220;word warping&#8221;<br />
4.Select Tools -&gt; &#8220;Option&#8221;<br />
5.Select &#8220;Compatibility&#8221;<br />
6.check the item &#8220;Don&#8217;t break warpped talbe accross pages&#8221;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=197&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2010/06/21/%e5%a6%82%e4%bd%95%e8%ae%a9word%e8%a1%a8%e6%a0%bc%e4%b8%8d%e8%b7%a8%e9%a1%b5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>[转]：从kernel和其他opensource 扒出来的常见的宏，对写应用程序相当有用</title>
		<link>http://sealedblade.wordpress.com/2010/04/20/%e8%bd%ac%ef%bc%9a%e4%bb%8ekernel%e5%92%8c%e5%85%b6%e4%bb%96opensource-%e6%89%92%e5%87%ba%e6%9d%a5%e7%9a%84%e5%b8%b8%e8%a7%81%e7%9a%84%e5%ae%8f%ef%bc%8c%e5%af%b9%e5%86%99%e5%ba%94%e7%94%a8%e7%a8%8b/</link>
		<comments>http://sealedblade.wordpress.com/2010/04/20/%e8%bd%ac%ef%bc%9a%e4%bb%8ekernel%e5%92%8c%e5%85%b6%e4%bb%96opensource-%e6%89%92%e5%87%ba%e6%9d%a5%e7%9a%84%e5%b8%b8%e8%a7%81%e7%9a%84%e5%ae%8f%ef%bc%8c%e5%af%b9%e5%86%99%e5%ba%94%e7%94%a8%e7%a8%8b/#comments</comments>
		<pubDate>Tue, 20 Apr 2010 09:13:14 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[C&CPP]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=191</guid>
		<description><![CDATA[比如比较两个数的大小 ： 一般我们都习惯了这样写： #define MAX(a,b) (((a)&#62;(b))?(a)b)) //实际上宏参数计算两次 可是宏是有副作用的， 比如下面这个例子： MAX(a++,b) 又如何呢？ 所以kernel里面的gcc扩展提供了很好的办法： #define MAX_CHECK(x,y) \ //宏参数仅仅计算一次 ({ \ typeof(x) __x = (x); \ typeof(y) __y = (y); \ (void) (&#38;__x == &#38;__y); \ (__x&#62;__y) ?__x:__y ;\ })注意上面的是语句表达式（就是 用() 括起来） ， 当if(MAX_CHECK(10,20) ) 是没有副作用的。 typeof 是个宏， 取出变量的类型 当然上面的宏 按照kernel里面的写法也可以写成这样： #define MAX_CHECK2(x,y) \ do{ \ typeof(x) __x [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=191&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>比如比较两个数的大小 ： 一般我们都习惯了这样写：<br />
#define MAX(a,b) (((a)&gt;(b))?(a)b)) //实际上宏参数计算两次<br />
可是宏是有副作用的， 比如下面这个例子： MAX(a++,b) 又如何呢？<br />
所以kernel里面的gcc扩展提供了很好的办法：</p>
<p>#define MAX_CHECK(x,y)     \ //宏参数仅仅计算一次</p>
<p>({                \<br />
typeof(x) __x = (x);    \<br />
typeof(y) __y = (y);    \<br />
(void) (&amp;__x == &amp;__y);    \<br />
(__x&gt;__y) ?__x:__y    ;\<br />
})注意上面的是语句表达式（就是 用() 括起来） ， 当if(MAX_CHECK(10,20) ) 是没有副作用的。 typeof 是个宏， 取出变量的类型</p>
<p>当然上面的宏 按照kernel里面的写法也可以写成这样：</p>
<p>#define MAX_CHECK2(x,y)     \<br />
do{                \<br />
typeof(x) __x = (x);    \<br />
typeof(y) __y = (y);    \<br />
(void) (&amp;__x == &amp;__y);    \<br />
(__x&gt;__y) ?__x:__y    ;\<br />
}while(0) //注意可没有;但是用法就不一样了，语句表达返回的是个值 ， 但是 这点用 do {} while(0) 格式就不幸了。</p>
<p>比如 你可以这样 max = MAX_CHECK(a,b);<br />
但是这样就错了： max = MAX_CHECK2(a,b) ; 编译就出错了。<br />
但是如果 一行里面直接写 MAX_CHECK2(a,b) 肯定就没有问题了。</p>
<p>－－－</p>
<p>下面是就是聪kernel里面扒出来的：</p>
<p>#define ARRAY_SIZE(X) ((sizeof((X)))/(sizeof((X)[0])))<br />
#define ALIGN(x,a)         (((x)+(a)-1) &amp; (~((a)-1)))<br />
#define FIELD_SIZEOF(t, f) (sizeof(((t*)0)-&gt;f))</p>
<p>#define abs(x) ({                    \<br />
int __x = (x);                \<br />
(__x MEMBER)</p>
<p>//也非常有用</p>
<p>/**<br />
* container_of &#8211; cast a member of a structure out to the containing structure<br />
* @ptr:    the pointer to the member.<br />
* @type:    the type of the container struct this is embedded in.<br />
* @member:    the name of the member within the struct.<br />
*<br />
*/<br />
#define container_of(ptr, type, member) ({            \<br />
const typeof( ((type *)0)-&gt;member ) *__mptr = (ptr);    \<br />
(type *)( (char *)__mptr &#8211; offsetof(type,member) );})</p>
<p>//#define container_of(ptr,type,member)</p>
<p>//({                                                            \</p>
<p>//    const typeof(((type *)0)-&gt;member) *__mptr = (ptr);    \ //仅仅计算一次</p>
<p>//    (type *)((char *)__mptr &#8211; offsetof(type,member)) ;        \</p>
<p>//})</p>
<p>/**<br />
* list_entry &#8211; get the struct for this entry<br />
* @ptr:    the &amp;struct list_head pointer.<br />
* @type:    the type of the struct this is embedded in.<br />
* @member:    the name of the list_struct within the struct.<br />
*/<br />
#define list_entry(ptr, type, member) \<br />
container_of(ptr, type, member)</p>
<p>//#define abs(x)    ((x) &gt; 0)?(x):(-(x))</p>
<p>/*<br />
* ..and if you can&#8217;t take the strict<br />
* types, you can specify one yourself.<br />
*<br />
* Or not use min/max at all, of course.<br />
*/<br />
#define MIN_T(type,x,y) \<br />
({ type __x = (x); type __y = (y); __x  __y ? __x: __y; })</p>
<p>#define MAX(x,y)    ( (x)&gt;(y)?(x):(y) )<br />
#define MAX_CHECK(x,y)     \<br />
({                \<br />
typeof(x) __x = (x);    \<br />
typeof(y) __y = (y);    \<br />
(void) (&amp;__x == &amp;__y);    \<br />
(__x&gt;__y) ?__x:__y    ;\<br />
})</p>
<p>PS：</p>
<p>有朋友问：</p>
<p>({ \</p>
<p>typeof(x) __x = (x); \</p>
<p>typeof(y) __y = (y); \</p>
<p>(void) (&amp;__x == &amp;__y); \</p>
<p>(__x&gt;__y) ?__x:__y ;\</p>
<p>})</p>
<p>其中(void) (&amp;__x == &amp;__y);的目的是什么？</p>
<p>检查两个变量的类型是否相同，如果不相同，编译的时候会有警告。</p>
<p>比如</p>
<p>int a=8;</p>
<p>flat b = 1.5 ;</p>
<p>编译的时候，就会有warning ，弥补了编译器不检查宏参数的问题。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/191/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/191/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/191/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=191&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2010/04/20/%e8%bd%ac%ef%bc%9a%e4%bb%8ekernel%e5%92%8c%e5%85%b6%e4%bb%96opensource-%e6%89%92%e5%87%ba%e6%9d%a5%e7%9a%84%e5%b8%b8%e8%a7%81%e7%9a%84%e5%ae%8f%ef%bc%8c%e5%af%b9%e5%86%99%e5%ba%94%e7%94%a8%e7%a8%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>c51软复位经典分析 (转)</title>
		<link>http://sealedblade.wordpress.com/2010/04/11/c51%e8%bd%af%e5%a4%8d%e4%bd%8d%e7%bb%8f%e5%85%b8%e5%88%86%e6%9e%90-%e8%bd%ac/</link>
		<comments>http://sealedblade.wordpress.com/2010/04/11/c51%e8%bd%af%e5%a4%8d%e4%bd%8d%e7%bb%8f%e5%85%b8%e5%88%86%e6%9e%90-%e8%bd%ac/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 13:36:05 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=188</guid>
		<description><![CDATA[在电子BBS讨论区上溜达，看到一个有趣的帖子，整个帖子内容如下： 纯C51复位功能函数：一个大三学生，让人又爱又怕 现单列复位部分如下： main() { unsigned char code rst[]={0xe4,0xc0,0xe0,0xc0,0xe0,0&#215;32}; // 复位代码 (*((void (*)())(rst)))(); // 执行上一行代码，将rst数组当函数调用 } 本来我告诉他嵌入如下代码： clr a push acc push acc reti 结果他却玩了前面哪一段，而数组rst[]中的内容恰恰是上面的汇编机器码，他的做法是将rst数组的数据当作代码保存，然后采用绝对地址方式指向该数组，将该数组中的代码当作函数来运行。居然通过了！ 我觉得有问题，我说即使如此，那绝对地址调用也应该写成(*((void (*)())(&#38;rst)))()才对呀，结果他反驳说，那样的话，rst的地址就会当成参数传递给这个绝对地址函数，而实际LJMP调用的地址并非rst的地址，而是一个不确定的地址。于是我按照自己的说法尝试了一下，看看汇编结果，还真的是将rst的地址传递给了R1 R2，而绝对函数最终LJMP到了 一个莫名其妙的地址上去了，死翘！ 看来C真是一匹不容易驾驭的野马，这个大三学生理解力在我之上，我30多岁的人了，干了这么多年还没他的境界呢，唉，人家才学了几天啊，翻了几天书就这么厉害了，服了！ l 首先分析帖子的C语言代码 第一句定义一个数组rst[]，数组内数据就是完成复位功能的汇编机器码，具体对应关系 为：clr a == 0xe4、push acc == 0xc0,0xe0、reti ==0&#215;32 第二句是一个函数指针的用法，函数指针用法稍微有点复杂，可参看本人著的书，，以 下为快速入门讲解。 定义一个返回值是空函数指针的定义形式如下： void (*p) ( ) 当把函数指针赋值后，就能通过函数指针调用函数，调用形式如下， (*p) ( ); 或等价的简化形式： p ( [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=188&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>在电子BBS讨论区上溜达，看到一个有趣的帖子，整个帖子内容如下：<br />
纯<span>C51</span>复位功能函数：一个<span>大三</span>学生，让人又爱又怕</p>
<p>现单列复位部分如下：</p>
<p>main()<br />
{<br />
unsigned char code rst[]={0xe4,0xc0,0xe0,0xc0,0xe0,0&#215;32};<br />
// 复位代码<br />
(*((void (*)())(rst)))();<br />
// 执行上一行代码，将rst数组当函数调用<br />
}</p>
<p>本来我告诉他嵌入如下代码：<br />
clr a<br />
push acc<br />
push acc<br />
reti</p>
<p>结果他却玩了前面哪一段，而数组rst[]中的内容恰恰是上面的汇编机器码，他的做法是将rst数组的数据当作代码保存，然后采用绝对地址方式指向该数组，将该数组中的代码当作函数来运行。居然通过了！</p>
<p>我觉得有问题，我说即使如此，那绝对地址调用也应该写成(*((void (*)())(&amp;rst)))()才对呀，结果他反驳说，那样的话，rst的地址就会当成参数传递给这个绝对地址函数，而实际LJMP调用的地址并非rst的地址，而是一个不确定的地址。于是我按照自己的说法尝试了一下，看看汇编结果，还真的是将rst的地址传递给了R1 R2，而绝对函数最终LJMP到了<br />
一个莫名其妙的地址上去了，死翘！</p>
<p>看来C真是一匹不容易驾驭的野马，这个<span>大三</span>学生理解力在我之上，我30多岁的人了，干了这么多年还没他的境界呢，唉，人家才学了几天啊，翻了几天书就这么厉害了，服了！</p>
<p>l 首先分析帖子的C语言代码<br />
第一句定义一个数组rst[]，数组内数据就是完成复位功能的汇编机器码，具体对应关系<br />
为：clr a == 0xe4、push acc == 0xc0,0xe0、reti ==0&#215;32<br />
第二句是一个函数指针的用法，函数指针用法稍微有点复杂，可参看本人著的书，，以<br />
下为快速入门讲解。</p>
<p>定义一个返回值是空函数指针的定义形式如下：<br />
void (*p) ( )<br />
当把函数指针赋值后，就能通过函数指针调用函数，调用形式如下，<br />
(*p) ( );<br />
或等价的简化形式：<br />
p ( );<br />
假设rst就是函数指针，则如下调用形式就可以令单片机复位再起。<br />
(*rst ) ( );<br />
但可惜，rst不是函数指针，而是数组名，虽然两者都是地址，但不可直接调用数组名。<br />
如同把char型变量a赋值给int型变量b，(int) 表示强制类型转换：<br />
b = (int) a<br />
函数指针的强制类型转换公式如下（C语言的哲学是定义形式和使用一致）：<br />
( (void (*)() ) rst<br />
这样经过转换后的rst就可以当作函数指针使用了，简单的调用形式如下：<br />
#define K     ( (void (*)( ) ) rst<br />
(*K) ( )<br />
或：<br />
(     * ( void (*)( ) )rst      ) ( );<br />
这样的语句就完成复位再启功能了。类型转换符()的优先级跟指针运算符*的优先级相同，<br />
二者的结合方向是自右至左，所以上述语句就能完成复位功能了。保险起见有些程序员常<br />
常喜欢再加个括号：<br />
#define K     (   ( (void (*)( ) ) rst   )<br />
(*K) ( )<br />
或<br />
(     *(   ( void (*)( ) )rst   )    ) ( );</p>
<p>由于没有输入参数，上述复位代码更严谨的写法是：<br />
#define K     (   ( (void (*)(void ) ) rst   )<br />
(*K) ( )<br />
或<br />
(     *(   ( void (*)(void ) )rst   )    ) ( );</p>
<p>关于帖子作者的解释<br />
千万不要犯“&amp;rst”形式的错误，对于一维数组而言，数组名rst就代表地址。以下二者等<br />
价，更常用的是等式左边的形式：<br />
rst == &amp;rst[0]<br />
整个函数指针无所谓参数传递，只是把rst当作程序执行地址调用而已，那个学生的解释也<br />
有问题。<br />
还有一点必须提及，不是说能通过编译，甚至生成正确代码，就表示某语句一定是对的。<br />
对很复杂的语句，要考虑到编译器不严格甚至出错的可能性。</p>
<p>哈佛结构和一个蠕虫病毒<br />
请注意，定义数组rst[]时用了关键字code，这是<span>C51</span>特有的关键字，意味着把数组定义到程序空间。标准C是没有关键字code的。</p>
<p>哈佛结构和普林斯顿结构：<br />
哈佛结构——程序空间和存储空间分开的。<span>C51</span>算是不太严格的哈佛结构——虽地址线分开，但数据线没有分开。DSP是增强的哈佛结构。<br />
PC电脑上奔腾CPU是普林斯顿结构——数据空间和程序空间统一编址。<br />
如果数组rst[]数据的汇编机器码是删除文件的机器码，这算不算是病毒？<br />
曾经流行过一种蠕虫病毒，其发作机理采取的就是将恶意代码保存成文本文件，然后通过指针调用执行这个文本，很多杀毒程序也不会查询文本文件。<br />
程序也罢，数据也罢都是二进制形式，如果数据空间和程序空间是统一编码的， 数据当然可以当作程序运行。<br />
在这一点上，相对而言，哈佛结构的CPU安全性会好一点点。但嵌入式应用少有病毒，一般不用关心。</p>
<p>单片机复位的更好方法<br />
帖子中汇编语言解释如下：<br />
clr a                   //清除ACC=0<br />
push acc                //压0到堆栈——8位<br />
push acc                //再压0到堆栈——再8位<br />
reti                        //返回到0地址，从而执行。</p>
<p>帖子作者的这种复位方法比较麻烦，更加简单的复位写法是（摘自《C缺陷与陷阱》）：<br />
(     * ( void (*)( ) )0      ) ( );<br />
本句的分析方法同上，但更加精炼，没有多余的汇编语句。</p>
<p>上述复位的方法可称为软件复位。<br />
软件复位跟真正上电复位有很大差别：上电复位时大部分寄存器都有确定的复位值；软件复位则只相当于从0地址开始执行而已，寄存器不会变为确定的复位值。<br />
如果用户要编程实现上电复位这种情况，在程序中不要踢看门狗即可。大部分单片机都有看门狗吧。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/188/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/188/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/188/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=188&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2010/04/11/c51%e8%bd%af%e5%a4%8d%e4%bd%8d%e7%bb%8f%e5%85%b8%e5%88%86%e6%9e%90-%e8%bd%ac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>转：关于嵌入式系统方向</title>
		<link>http://sealedblade.wordpress.com/2009/12/22/%e8%bd%ac%ef%bc%9a%e5%85%b3%e4%ba%8e%e5%b5%8c%e5%85%a5%e5%bc%8f%e7%b3%bb%e7%bb%9f%e6%96%b9%e5%90%91/</link>
		<comments>http://sealedblade.wordpress.com/2009/12/22/%e8%bd%ac%ef%bc%9a%e5%85%b3%e4%ba%8e%e5%b5%8c%e5%85%a5%e5%bc%8f%e7%b3%bb%e7%bb%9f%e6%96%b9%e5%90%91/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 07:57:54 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[EE]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=183</guid>
		<description><![CDATA[转自：马二进三名人传记  http://blog.chinaunix.net/u/22170/showart_508134.html 讲的不错，可以作为参考。自己也留一个备份。 文字嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上，通常这些设备的硬件资源（如处理器、存储 器等）非常有限，并且对成本很敏感，有时对实时响应要求很高等。特别是随着消费家电的智能化，嵌入式更显重要。像我们平常常见到的手机、PDA、电子字 典、可视电话、VCD/DVD/MP3 Player、数字相机（DC）、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌 入式系统。 嵌入式系统是软硬结合的东西，搞嵌入式开发的人有两类。 一类是学电子工程、通信工程等偏硬件专业出身的人，他们主要是搞硬件设计，有时要开发一些与硬件关系最密切的最底层软件，如BootLoader、Board Support Package(像PC的BIOS一样，往下驱动硬件，往上支持操作系统），最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚，不足是他们更擅长定义各种硬件接口，但对复杂软件系统往往力不从心（例如嵌入式操作系统原理和复杂应用软件等）。 另一类是学软件、计算机专业出身的人，主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握，我们完全也 可写BSP和硬件驱动程序。嵌入式硬件设计完后，各种功能就全靠软件来实现了，嵌入式设备的增值很大程度上取决于嵌入式软件，这占了嵌入式系统的最主要工 作（目前有很多公司将硬件设计包给了专门的硬件公司，稍复杂的硬件都交给台湾或国外公司设计，国内的硬件设计力量很弱，很多嵌入式公司自己只负责开发软 件，因为公司都知道，嵌入式产品的差异很大程度在软件上，在软件方面是最有“花头“可做的），所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之 地，越是智能设备越是复杂系统，软件越起关键作用，而且这是目前的趋势。 从事嵌入式软件开发的好处是： （1） 目前国内外这方面的人都很稀缺。一方面，是因为这一领域入门门槛较高，不仅要懂较底层软 件（例如操作系统级、驱动程序级软件），对软件专业水平要求较高（嵌入式系统对软件设计的时间和空间效率要求较高），而且必须懂得硬件的工作原理，所以非 专业IT人员很难切入这一领域；另一方面，是因为这一领域较新，目前发展太快，很多软硬件技术出现时间不长或正在出现 （如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等）， 掌握这些新技术的人当然很找。嵌入式人才稀缺，身价自然就高，越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。 （2） 与 企业计算等应用软件不同，嵌入式领域人才的工作强度通常低一些（但收入不低）。搞企业应用软件的IT企业，这个用户的系统搞完了，又得去搞下一个用户的， 而且每个用户的需求和完成时间都得按客户要求改变，往往疲于奔命，重复劳动。相比而言，搞嵌入式系统的公司，都有自己的产品计划，按自己的节奏行事。所开 发的产品通常是通用的，不会因客户的不同而修改。一个产品型号开发完了，往往有较长一段空闲时间（或只是对软件进行一些小修补），有时间进行充电和休整。 另外，从事嵌入式软件的每个人工作范围相对狭窄， 所涉及的专业技术范围就是那些（ARM、RTOS、MPEG、802.11等），时间长了这些东西会越搞越有经验，卖卖老本，几句指导也够让那些初入道者琢磨半年的。若搞应用软件，可能下一个客户要换成一个完全不同的软件开发平台，那就苦了。 （3） 哪 天若想创业，搞自已的产品，那么嵌入式是一个不错的主意，这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌 上PDA（南校区门口有广告），施工技术人员用该PDA可当场进行土木概预算和其它土木计算，据说销路特好。我认识的某大学老师，他开发的饭馆用的点菜 PDA（WinCE平台，可无线连网和上网），据他说销路不错，饭馆点点PDA让客户点菜，多显派头档次。我记得00级2+2班当年有一组同学在学 Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课程项目，当时真想建议他们将这个软件做成PDA，估计会有些销路（上海火车站 南广场的Macdonald便使用很漂亮的PDA给用户点食品，像摸像样的）。这些PDA的硬件设计一般都是请其它公司给订做（这叫“贴牌”：OEM）， 都是通用的硬件，我们只管设计软件就变成自己的产品了。 从事嵌入式软件开发的缺点是： （1） 入门起点较高，所用到的技术往往都有一定难度，若软硬件基础不好，特别是操作系统级软件功底不深，则可能不适于此行。 （2） 这 方面的企业数量要远少于企业计算类企业。特别是从事嵌入式的小企业数量较多（小企业要搞自己的产品创业），知名大公司较少（搞嵌入式的大公司主要有 Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、 Microtek、研华、华为、中兴通信、上广电等制造类企业）。这些企业的习惯思维方式是到电子、通信等偏硬专业找人。由于我院以前毕业生以企业计算为 主，所以我院与这些企业联系相对较少。我院正积极努力，目前已与其中部分公司建立了联系，争取今后能有我院同学到这些企业中实习或就业。 （3）有少数公司经常要硕士以上的人搞嵌入式，主要是基于嵌入式的难度。但大多数公司也并无此要求，只要有经验即可。 我院同学若学习嵌入式，显然应偏重于嵌入式软件，特别是嵌入式操作系统方面，应是我们的强项。对于搞嵌入式软件的人，最重要的技术显然是（实际上很多公司的招聘广告上就是这样写的）： （1） 掌握主流嵌入式微处理器的结构与原理 （2） 必须掌握一个嵌入式操作系统 （3） 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。 嵌入式软件方面最重要的课程包括： [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=183&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>转自：马二进三名人传记  http://blog.chinaunix.net/u/22170/showart_508134.html</div>
<div>讲的不错，可以作为参考。自己也留一个备份。</div>
<div>文字嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上，通常这些设备的硬件资源（如处理器、存储 器等）非常有限，并且对成本很敏感，有时对实时响应要求很高等。特别是随着消费家电的智能化，嵌入式更显重要。像我们平常常见到的手机、PDA、电子字 典、可视电话、VCD/DVD/MP3 Player、数字相机（DC）、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌 入式系统。</div>
<div>嵌入式系统是软硬结合的东西，搞嵌入式开发的人有两类。</div>
<div>一类是学电子工程、通信工程等偏硬件专业出身的人，他们主要是搞硬件设计，有时要开发一些与硬件关系最密切的最底层软件，如BootLoader、Board Support<br />
Package(像PC的BIOS一样，往下驱动硬件，往上支持操作系统），最初级的硬件驱动程序等。他们的优势是对硬件原理非常清楚，不足是他们更擅长定义各种硬件接口，但对复杂软件系统往往力不从心（例如嵌入式操作系统原理和复杂应用软件等）。</div>
<div>另一类是学软件、计算机专业出身的人，主要从事嵌入式操作系统和应用软件的开发。如果我们学软件的人对硬件原理和接口有较好的掌握，我们完全也 可写BSP和硬件驱动程序。嵌入式硬件设计完后，各种功能就全靠软件来实现了，嵌入式设备的增值很大程度上取决于嵌入式软件，这占了嵌入式系统的最主要工 作（目前有很多公司将硬件设计包给了专门的硬件公司，稍复杂的硬件都交给台湾或国外公司设计，国内的硬件设计力量很弱，很多嵌入式公司自己只负责开发软 件，因为公司都知道，嵌入式产品的差异很大程度在软件上，在软件方面是最有“花头“可做的），所以我们搞软件的人完全不用担心我们在嵌入式市场上的用武之 地，越是智能设备越是复杂系统，软件越起关键作用，而且这是目前的趋势。</div>
<div>从事嵌入式软件开发的好处是：<br />
（1）<br />
目前国内外这方面的人都很稀缺。一方面，是因为这一领域入门门槛较高，不仅要懂较底层软 件（例如操作系统级、驱动程序级软件），对软件专业水平要求较高（嵌入式系统对软件设计的时间和空间效率要求较高），而且必须懂得硬件的工作原理，所以非 专业IT人员很难切入这一领域；另一方面，是因为这一领域较新，目前发展太快，很多软硬件技术出现时间不长或正在出现</div>
<div>（如ARM处理器、嵌入式操作系统、MPEG技术、无线通信协议等），</div>
<div>掌握这些新技术的人当然很找。嵌入式人才稀缺，身价自然就高，越有经验价格就越高。其实嵌入式人才稀少,根本原因可能是大多数人无条件接触,这需要相应的嵌入式开发板和软件,另外需要有经验的人进行指导开发流程。<br />
（2）<br />
与 企业计算等应用软件不同，嵌入式领域人才的工作强度通常低一些（但收入不低）。搞企业应用软件的IT企业，这个用户的系统搞完了，又得去搞下一个用户的， 而且每个用户的需求和完成时间都得按客户要求改变，往往疲于奔命，重复劳动。相比而言，搞嵌入式系统的公司，都有自己的产品计划，按自己的节奏行事。所开 发的产品通常是通用的，不会因客户的不同而修改。一个产品型号开发完了，往往有较长一段空闲时间（或只是对软件进行一些小修补），有时间进行充电和休整。 另外，从事嵌入式软件的每个人工作范围相对狭窄，</div>
<div>所涉及的专业技术范围就是那些（ARM、RTOS、MPEG、802.11等），时间长了这些东西会越搞越有经验，卖卖老本，几句指导也够让那些初入道者琢磨半年的。若搞应用软件，可能下一个客户要换成一个完全不同的软件开发平台，那就苦了。<br />
（3）<br />
哪 天若想创业，搞自已的产品，那么嵌入式是一个不错的主意，这可不像应用软件那样容易被盗版。土木学院有一个叫启明星的公司开发出一个好象叫“工程e”的掌 上PDA（南校区门口有广告），施工技术人员用该PDA可当场进行土木概预算和其它土木计算，据说销路特好。我认识的某大学老师，他开发的饭馆用的点菜 PDA（WinCE平台，可无线连网和上网），据他说销路不错，饭馆点点PDA让客户点菜，多显派头档次。我记得00级2+2班当年有一组同学在学 Windows程序设计课程时用VC++设计了一个功能很强的点菜系统做为课程项目，当时真想建议他们将这个软件做成PDA，估计会有些销路（上海火车站 南广场的Macdonald便使用很漂亮的PDA给用户点食品，像摸像样的）。这些PDA的硬件设计一般都是请其它公司给订做（这叫“贴牌”：OEM）， 都是通用的硬件，我们只管设计软件就变成自己的产品了。</div>
<div>从事嵌入式软件开发的缺点是：<br />
（1）<br />
入门起点较高，所用到的技术往往都有一定难度，若软硬件基础不好，特别是操作系统级软件功底不深，则可能不适于此行。<br />
（2）<br />
这 方面的企业数量要远少于企业计算类企业。特别是从事嵌入式的小企业数量较多（小企业要搞自己的产品创业），知名大公司较少（搞嵌入式的大公司主要有 Intel、Motorola、TI、Philip、Samsung、Sony、Futjtum、Bell-Alcatel、意法半导体、 Microtek、研华、华为、中兴通信、上广电等制造类企业）。这些企业的习惯思维方式是到电子、通信等偏硬专业找人。由于我院以前毕业生以企业计算为 主，所以我院与这些企业联系相对较少。我院正积极努力，目前已与其中部分公司建立了联系，争取今后能有我院同学到这些企业中实习或就业。<br />
（3）有少数公司经常要硕士以上的人搞嵌入式，主要是基于嵌入式的难度。但大多数公司也并无此要求，只要有经验即可。</div>
<div>我院同学若学习嵌入式，显然应偏重于嵌入式软件，特别是嵌入式操作系统方面，应是我们的强项。对于搞嵌入式软件的人，最重要的技术显然是（实际上很多公司的招聘广告上就是这样写的）：<br />
（1） 掌握主流嵌入式微处理器的结构与原理<br />
（2） 必须掌握一个嵌入式操作系统<br />
（3） 必须熟悉嵌入式软件开发流程并至少做过一个嵌入式软件项目。</div>
<div>嵌入式软件方面最重要的课程包括：<br />
（1）<br />
<strong>嵌入式微处理器结构与应用：这是一门嵌入式硬件基础课程，</strong></div>
<div>我院用这门课取代了传统的“微机原理与接口”课程（目前国内已有少部分高校IT专业这样做了，因为讲x86微机原理与接口很难找到实际用处，只 为教学而已）。我们说过，嵌入式是软硬件结合的技术，搞嵌入式软件的人应对ARM处理器工作原理和接口技术有充分了解，包括ARM的汇编指令系统。若不了 解处理器原理，怎么能控制硬件工作，怎么能写出节省内存又运行高速的最优代码（嵌入式软件设计特别讲究时空效率），怎么能写出驱动程序（驱动程序都是与硬 件打交道的）？很多公司招聘嵌入式软件人员时都要求熟悉ARM处理器，将来若同学到公司中从事嵌入式软件开发，公司都会给你一本该设备的硬件规格说明书<br />
(xxx<br />
Specification)， 您必须能看懂其中的内存分布和端口使用等最基本的说明（就像x86汇编一样），否则怎么设计软件。有些同学觉得嵌入式处理器课程较枯燥，这主要是硬件课程 都较抽象的原因，等我们的嵌入式实验室10月份建好后，您做了一些实验后就会觉得看得见摸得着。还有同学对ARM汇编不感兴趣，以为嵌入式开发用C语言就 足够了。其实不应仅是将汇编语言当成一个程序设计语言，学汇编主要是为了掌握处理器工作原理的。一个不熟悉汇编语言的人，怎么能在该处理器写出最优的C语 言代码。在嵌入式开发的一些关键部分，有时还必须写汇编，如Bootloader等（可能还包括BSP）。特别是在对速度有极高要求的场合（如DSP处理 器的高速图像采集和图像解压缩），目前主要还要靠汇编写程序（我看到过很多公司是这样做的）。当您在一个嵌入式公司工作时，在查看描述原理的手册时，可能 很多都是用汇编描述的（我就遇到过），这是因为很多硬件设计人员只会写或者喜欢用汇编描述，此时您就必须看懂汇编程序，否则软硬件人员可能就无法交流。很 多嵌入式职位招聘时都要求熟悉汇编。</div>
<div><strong>(2) </strong><strong>嵌入式操作系统类课程</strong><strong><br />
</strong>除了WinCE的实时性稍差外，大多数嵌入式操作系统的实时 性都很强,所以也可称为实时操作系统Real Time Operating System.从事嵌入式的人至少须掌握一个嵌入式操作系统(当然掌握两个 更好),这在嵌入式的所有技术中是最为关键的了。目前最重要的RTOS主要包括：</div>
<h3><a name="_Toc154986433"><span style="font-family:宋体;font-size:small;">第一类、传统的经典RTOS：最主要的便是Vxworks操作系统，以及其Tornado开发平台。</span></a></h3>
<div>Vxworks因出现稍早，实时性很强（据说可在1ms内响应外部事件请求），并且内核可极微（据说最小可8K），可靠性较高等，所以在北 美，Vxworks占据了嵌入式系统的多半疆山。特别是在通信设备等实时性要求较高的系统中，几乎非Vxworks莫属。Vxworks的很多概念和技术 都和Linux很类似，主要是C语言开发。像Bell-alcatel、Lucent、华为等通信企业在开发产品时，Vxworks用得很多。但 Vxworks因价格很高，所以一些小公司或小产品中往往用不起。目前很多公司都在往嵌入式Linux转（听说华为目前正在这样转）。但无论如 何，Vxworks在一段长时间内仍是不可动摇的。与Vxworks类似的稍有名的实时操作系统还有pSOS、QNX、Nucleus等RTOS。</div>
<h3><a name="_Toc154986434"><span style="font-family:宋体;font-size:small;">第二类、嵌入式Linux操作系统：</span></a></h3>
<div>Linux的前途除作为服务器操作系统外，最成功的便是在嵌入式领域的应用，原因当然是免费、开源、支持软件多、呼拥者众，这样嵌入式产品成本 会低。Linux本身不是一个为嵌入式设计的操作系统，不是微内核的，并且实时性不强。目前应用在嵌入式领域的Linux系统主要有两类：</div>
<div>一类是专为嵌入式设计的已被裁减过的Linux系统，最常用的是uClinux（不带MMU功能），目前占较大应用份额，可在ARM7上跑；另一类是跑在ARM 9上的，一般是将Linux<br />
2.4.18内核移植在其上，可使用更多的Linux功能（当然uClinux更可跑在ARM<br />
9上）。很多人预测，嵌入式Linux预计将占嵌入式操作系统的50%以上份额，非常重要。缺点是熟悉Linux的人太少，开发难度稍大。</div>
<div>另外，目前我们能发现很多教材和很多大学都以ucOS/II为教学用实时操作系统，这主要是由于ucOS/II较简单，且开源，非常适合入门者 学习实时操作系统原理，但由于ucOS/II功能有限，实用用得较少，所以我院不将其作为教学重点，要学习就应学直接实用的，比如<br />
uClinux 就很实用。况且熟悉了Linux开发，不仅在嵌入式领域有用，对开发Linux应用软件，对加深操作系统的认识也有帮助，可谓一举多得。据我所知，目前 Intel、Philip都在大搞ARM+LINUX的嵌入式开发，Fujitum则是在自己的处理器上大搞Linux开发。</div>
<h3><a name="_Toc154986435"><span style="font-family:宋体;font-size:small;">目前在嵌入式Linux领域，以下几个方面的人特别难找，一是能将Linux移植到某个新型号的开发版上；二是能写Linux驱动程序的人；三是熟悉Linux内核裁减和优化的人。</span></a></h3>
<div>我院在该嵌入式Linux方面的课程系列是：本科生操作系统必修课，然后是Linux程序设计选修课，最后是嵌入式Linux系统选修课。我院在Linux方面目前已有较强力量，魏老师和张老师熟悉Linux开发，金老师和唐老师熟悉Linux系统管理。</div>
<div>第三类、 Windows<br />
CE嵌入式操作系统：Microsoft也看准了嵌入式的巨大市场，MS永远是最厉害的，WinCE出来只 有几年时间，但目前已占据了很大市场份额，特别是在PDA、手机、显示仪表等界面要求较高或者要求快速开发的场合，WinCE目前已很流行（据说有一家卖 工控机的公司板子卖得太好，以至来不及为客户裁减WinCE）。</div>
<h3><a name="_Toc154986436"><span style="font-size:small;"><span style="font-family:宋体;">WinCE目前主要为4.2版（.NET），开发平台主要为WinCE Platform Builder，</span></span></a></h3>
<div>有时也用EVC环境开发一些较上层的应用，由于WinCE开发都是大家熟悉的VC++环境，所以我院学过Windows程序设计课程的同学都不 会有多大难度，这也是WinCE容易被人们接受的原因，开发环境方便快速，微软的强大技术支持，WinCE开发难度远低于嵌入式Linux。对于急于完 成，不想拿嵌入式Linux冒险的开发场合，WinCE是最合适了（找嵌入式Linux的人可没那么好找的），毕竟公司不能像学生学习那样试试看，保证开 发成功更重要。根据不同的侧重点 ，WinCE还有两个特殊版本，一个是MS PocketPC操作系统专用于PDA上（掌上电脑），另一个是 MS SmartPhone操作系统用于智能手机上（带PDA功能的手机），两者也都属于WinCE平台。在PDA和手机市场上，除WinCE外，著名的 PDA嵌入式操作系统还有Palm OS（因出现很早，很有名）、Symbian等，但在WinCE的强劲冲击下，Palm和Symbian来日还能有多 长？我院可能是全国高校中唯一一家开设专门的“Windows CE嵌入式操作系统“课程的学校，这主要是基于以下原因：我院本身前面便有Windows 程序设计课程，同学学过VC++后再学WinCE,非常方便自然，通过学习WinCE同样也可了解嵌入式软件的一般开发过程，对Linux有惧怕心理的同 学也很合适。很显然，嵌入式Linux永远不可能替代WinCE，而且将来谁占份额大还很难讲，毕竟很多人更愿意接受MS的平台，就像各国政府都在大力推 LINUX已好长时间，但您能看到几个在PC机上真正使用LINUX的用户？据我观察,目前在嵌入式平台上,LINUX是叫得最响,但还是WinCE实际 用得更多.嵌入式LINUX可能更多地是一些有长远产品计划的公司,为降低成本而进行长远考虑;<br />
二是微软亚洲研究院对我院WinCE课程的支持计划，我们也很希望将来我院能有同学通过微软的面试去实习。WinCE和多媒体(如MPEG技术)是微软亚洲工程院目前做得较多的项目领域之一,他们很需要精通WinCE的人。</div>
<div>总结关于嵌入式操作系统类课程，若您觉得自己功底较深且能钻研下去，则可去学嵌入式Linux；若您觉得自己VC++功底较好且想短平快地学嵌入式开发，则我院的WinCE课程是最好的选择。</div>
<div>(3) 嵌入式开发的其它相关软件课程</div>
<div>搞嵌入式若能熟悉嵌入式应用的一些主要领域，这样的人更受企业欢迎。主要的相关领域包括：</div>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="189" valign="top"></td>
<td width="190" valign="top"></td>
<td width="190" valign="top"></td>
</tr>
<tr>
<td width="189" valign="top">
<div>MPEG编解码算法和技术</div>
<h3><a name="_Toc154986437"><span style="font-family:宋体;font-size:small;">数字图像压缩技术：</span></a></h3>
</td>
<td width="190" valign="top"></td>
<td width="190" valign="top">
<div>如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题</div>
</td>
</tr>
<tr>
<td width="189" valign="top">
<div>通信协议及编程技术：</div>
</td>
<td width="190" valign="top">
<div>无结通信协议包括无线局域网通信协议802.11系列，Bluetooth，以及移动通信（如GPRS、GSM、CDMA等）。</p>
</div>
</td>
<td width="190" valign="top"></td>
</tr>
<tr>
<td width="189" valign="top">
<div><strong>网络与信息安全技术：</strong></div>
</td>
<td width="190" valign="top">
<div>如加密技术，数字证书CA等。</div>
</td>
<td width="190" valign="top"></td>
</tr>
<tr>
<td width="189" valign="top">
<div>DSP技术：DSP是Digital Signal</p>
</div>
</td>
<td width="190" valign="top"></td>
<td width="190" valign="top"></td>
</tr>
</tbody>
</table>
<h3><a name="_Toc154986438"><span style="font-family:宋体;font-size:small;">A</span></a><span style="font-family:宋体;font-size:small;">、数字图像压缩技术：</span></h3>
<div>这是嵌入式最重要最热门的应用领域之一，主要是应掌握MPEG编解码算法和技术，如DVD、MP3、PDA、高精电视、机顶盒等都涉及MPEG高速解码问题。为此，我院已预订了一位能开设数字图像处理课程的博士。<br />
<strong>B</strong><strong>、通信协议及编程技术：</strong></div>
<div>这包括传统的TCP/IP协议和热门的无线通信协议。首先，大多数嵌入式设备都要连入局域网或Internet，所以首先应掌握TCP/IP协 议及其编程，这是需首要掌握的基本技术；其次，无线通信是目前的大趋势，所以掌握无线通信协议及编程也是是很重要的。无结通信协议包括无线局域网通信协议 802.11系列，Bluetooth，以及移动通信（如GPRS、GSM、CDMA等）。<br />
<strong>C</strong><strong>、网络与信息安全技术：</strong></div>
<div>如加密技术，数字证书CA等。我院有这方面的选修课。<br />
<strong>D</strong><strong>、DSP技术</strong><strong>：</strong></div>
<div>DSP是Digital Signal<br />
Process数字信号处理的意思，DSP处理器通过硬件实现数字信号处理算法，如高速数据采 集、压缩、解压缩、通信等。数字信号处理是电子、通信等硬件专业的课程，对于搞软件的人若能了解一下最好。目前DSP人才较缺。如果有信号与系统、数字信 号处理等课程基础，对于学习MPEG编解码原理会有很大帮助。</div>
<div>（4）嵌入式开发的相关硬件基础</div>
<div>对于软件工程专业的学生，从事嵌入式软件开发，像数字电路、计算机组成原理、嵌入式微处理器结构等硬件课程是较重要的。另外，汇编语言、 C/C++、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理，但重点应是在嵌入式软件，特别操作系统级 软件，那将是我们的优势。<br />
我们的研究生里有些是学电子、通信类专业过来的，有较好的模拟电路和单片机基础，学嵌入式非常合适。嵌入式本身就是从单 片机发展过来的，只是单片机不带OS，而现在很多嵌入式应用越来越复杂，以至不得不引入嵌入式操作系统。另外，为追求更高速的信号处理速度，现在在一些速 度要求较高的场合，有不少公司是将一些DSP算法，如MPEG压缩解压缩算法等用硬件来实现，这就涉及到HDL数字电路设计技术及其FPGA/IP核实现 技术，这方面的人目前市场上也很缺。</div>
<div>题外话<br />
另外，能写驱动程序的人目前是非常紧缺的（驱动程序也可归于嵌入式范畴），包括桌面Windows中的DDK开发环境和WDM驱 动程序。公司每时每刻都要推出新产品，每一个新产品出来了，要能被操作系统所使用，是必须写驱动程序的。写驱动程序就必须掌握操作系统(如Windows 或Linux)的内部工作原理，还涉及到少量硬件知识，难度较大，所以这方面的人很难找。想成为高手的同学，也可从驱动程序方面获得突破。我可说一下自己 的经历，三年前我曾短暂地在一家公司写过WinCE驱动程序（正是因为知道这方面的人紧缺，所以才要做这方面的事），尽管那以前从未做过驱动程序，应聘那 个职位时正是看准了公司是很难招聘到这方面的人，既然都找不到人，驱动还得有人做，这正是可能有机会切入这一领域的大好机会。面试时大讲自己写过多少万行 汇编程序，对计算机工作原理如何清楚，简历中又写着我曾阅读完两本关于Windows Driver Model的两本英文原版书，写过几个小型的驱动程 序练习程序（其实根本没写过，我们的同学将来千万不要像我这样，早练就些过硬功夫，就不至于沦落到我这等地步，就不用像我那样去“欺骗”公司了，我这是一 个典型的反面教材），居然一切都PASS（当然最重要的是笔试和面试问题还说得过去），这只能说明这一领域找人的困难程度。公司本就未指望找到搞过驱动的 人，找个有相关基础的人就算不错了。做了以后，发现也并不是怎样难的。其实搞驱动程序的工作是很舒服的，搞完一个版本就会空一段时间，只有等公司新的芯片 推出或新的OS出现后，才需要再去开发新一版驱动，那时有将近一个月时间空闲着在等WinCE .NET Beta版推出，准备将驱动程序升级到 CE .NET上，现在在软件学院工作整日忙，无限怀念那段悠闲时光。</div>
<h3><a name="_Toc154986439"><span style="font-size:small;"><span style="font-family:宋体;">要么走ARM+WinCE</span></span></a><span style="font-size:small;"><span style="font-family:宋体;">，要么走ARM+LINUX，要么走ARM+VXWORKS。每个搞嵌入式的人都可选一条路，条条大路通罗马。 </span></span></h3>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/183/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/183/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/183/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=183&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2009/12/22/%e8%bd%ac%ef%bc%9a%e5%85%b3%e4%ba%8e%e5%b5%8c%e5%85%a5%e5%bc%8f%e7%b3%bb%e7%bb%9f%e6%96%b9%e5%90%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>转帖：ARM的资料</title>
		<link>http://sealedblade.wordpress.com/2009/11/20/%e8%bd%ac%e5%b8%96%ef%bc%9aarm%e7%9a%84%e8%b5%84%e6%96%99/</link>
		<comments>http://sealedblade.wordpress.com/2009/11/20/%e8%bd%ac%e5%b8%96%ef%bc%9aarm%e7%9a%84%e8%b5%84%e6%96%99/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 07:13:40 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[EE]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=181</guid>
		<description><![CDATA[1. EG3 关 于嵌入式开发的站点，提供非常多关于嵌入式开发的资料。包括开发公司，技术文档，免费资源等等。版面包括busses &#38; boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,system-on-a-chip 等等。 强烈推荐 http://www.eg3.com/ &#8211; 外文 2. The First Stop for the Latest ICs and Components 非常好的关于微处理器,DSP,可以编程控制器资讯的网站，更新非常快。强烈推荐一些领导级别的人常去，了解行业动态！ http://www.eeproductcenter.com/ &#8211; 外文 3. Programmers Heaven &#8211; Assembler programming zone 大量的源代码，分类清晰，强烈推荐。但是有很多好像已经不再更新了。 http://www.programmersheaven.com/zone5/index.htm &#8211; 外文 4. 吐血推荐的关于ARM开发的网站，收集了非常多ARM开发工具，而且是免费的。 http://www.gnuarm.com/resources.html &#8211; 外文 5. ARM的中文网站，官方网站 http://www.arm.com/chinese/ &#8211; 中文 6. 美国Cornell University课程ECE476所完成的项目。 这 些项目都具有详细学习资料。共有200多个项目，看看这些东西，就能感觉国内与国外教学实践的差别。我们国家很多高校的电子相关专业的设计就是搞个键盘， [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=181&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">1.</td>
<td width="98%" align="left" valign="top">EG3<br />
关 于嵌入式开发的站点，提供非常多关于嵌入式开发的资料。包括开发公司，技术文档，免费资源等等。版面包括busses &amp; boards,embedded software,dsp,embedded systems,open source,rtos,embedded chips,system-on-a-chip 等等。<br />
强烈推荐<br />
<a href="http://www.eg3.com/" target="_blank">http://www.eg3.com/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">2.</td>
<td width="98%" align="left" valign="top">The First Stop for the Latest ICs and Components<br />
非常好的关于微处理器,DSP,可以编程控制器资讯的网站，更新非常快。强烈推荐一些领导级别的人常去，了解行业动态！<br />
<a href="http://www.eeproductcenter.com/" target="_blank">http://www.eeproductcenter.com/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">3.</td>
<td width="98%" align="left" valign="top">Programmers Heaven &#8211; Assembler programming zone<br />
大量的源代码，分类清晰，强烈推荐。但是有很多好像已经不再更新了。<br />
<a href="http://www.programmersheaven.com/zone5/index.htm" target="_blank">http://www.programmersheaven.com/zone5/index.htm</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">4.</td>
<td width="98%" align="left" valign="top">吐血推荐的关于ARM开发的网站，收集了非常多ARM开发工具，而且是免费的。<br />
<a href="http://www.gnuarm.com/resources.html" target="_blank">http://www.gnuarm.com/resources.html</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">5.</td>
<td width="98%" align="left" valign="top">ARM的中文网站，官方网站<br />
<a href="http://www.arm.com/chinese" target="_blank">http://www.arm.com/chinese</a>/ &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">6.</td>
<td width="98%" align="left" valign="top">美国Cornell University课程ECE476所完成的项目。<br />
这 些项目都具有详细学习资料。共有200多个项目，看看这些东西，就能感觉国内与国外教学实践的差别。我们国家很多高校的电子相关专业的设计就是搞个键盘， 搞个MAX7219显示，搞个DS1302时钟，&#8217;一百年不变&#8217;。看了它是我记得很不舒服。大家好好研究研究吧。特别是老师们，一定要深思。<br />
一毛</p>
<p><a href="http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/" target="_blank">http://instruct1.cit.cornell.edu/courses/ee476/FinalProjects/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">7.</td>
<td width="98%" align="left" valign="top">Build Your Own Microcontroller Projects<br />
This page provides schematic and software for hobbyists to practice &#8220;learn by doing&#8221;, build a simple microcontroller projects at home. For those who would like to contribute projects, please prepare HTML files whatever you like to see but keep all files small and informative. I shall provide for others. DIY的好地方,强烈推荐.<br />
<a href="http://www.kmitl.ac.th/%7Ekswichit/" target="_blank">http://www.kmitl.ac.th/~kswichit/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">8.</td>
<td width="98%" align="left" valign="top">LPC2000 Tools from the LPC2000 Yahoo! Group 推荐<br />
<a href="http://www.gnuarm.com/%7Elpc2000/body.html" target="_blank">http://www.gnuarm.com/~lpc2000/body.html</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">9.</td>
<td width="98%" align="left" valign="top">GNU ARM? toolchain for Cygwin, Linux and MacOS .推荐<br />
这里是它的实用资源 <a href="http://www.gnuarm.com/resources.html" target="_blank">http://www.gnuarm.com/resources.html</a><br />
讨论组 <a href="http://groups.yahoo.com/group/gnuarm/" target="_blank">http://groups.yahoo.com/group/gnuarm/</a><br />
文件下载 <a href="http://www.gnuarm.com/files.html" target="_blank">http://www.gnuarm.com/files.html</a><br />
<a href="http://www.gnuarm.com/" target="_blank">http://www.gnuarm.com/ </a>- 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">10.</td>
<td width="98%" align="left" valign="top">ARMuC Wiki.大量的开发资料,强烈推荐<br />
<a href="http://www.open-research.org.uk/ARMuC/" target="_blank">http://www.open-research.org.uk/ARMuC/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">11.</td>
<td width="98%" align="left" valign="top">来自www.mikrocontroller.net大量实用链接<br />
这里有许多所用链接关于AVR,8051,ARM,PIC.它收集的AVR信息是我看到的最好的。遗憾的是网站语言是德文。<br />
<a href="http://www.mikrocontroller.net/articles/Linksammlung" target="_blank">http://www.mikrocontroller.net/articles/Linksammlung</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">12.</td>
<td width="98%" align="left" valign="top">LPC2000 information page featuring the Philips ARM microcontrollers<br />
关于LPC2100的专业网站<br />
<a href="http://www.lpc2100.com/" target="_blank">http://www.lpc2100.com/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">13.</td>
<td width="98%" align="left" valign="top">ARMboot<br />
ARMboot is an Open-Source firmware suite for ARM based platforms. ARMboot is heavily based on the sister-project PPCboot, which provides similar functionality on PowerPC based systems. ARMboot shall be a common, easy-to-use and easy-to-port boot platform<br />
<a href="http://armboot.sourceforge.net/" target="_blank">http://armboot.sourceforge.net/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">14.</td>
<td width="98%" align="left" valign="top">周立功单片机<br />
国内知名的民营企业，他主要是代理 PHILIPS 公司的 ARM微控制器与单片机，在该网站上可以下载大量的相关资料。推荐看看<br />
<a href="http://www.zlgmcu.com/" target="_blank">http://www.zlgmcu.com</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">15.</td>
<td width="98%" align="left" valign="top">ARMphetamine<br />
ARMphetamine is a project to create a fast and accurate ARM processor emulator. A technique known as &#8220;dynamic recompilation&#8221; will be used so that the highest possible speed can be achieved for emulated code &#8211; ARM code programs are translated into native code as they are being emulated. The current development platform is Linux/x86<br />
<a href="http://armphetamine.sourceforge.net/" target="_blank">http://armphetamine.sourceforge.net/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">16.</td>
<td width="98%" align="left" valign="top">Linux for all ARM based machines<br />
一种LINUX操作系统，适合移植在ARM结构上。<br />
<a href="http://www.arm.linux.org.uk/" target="_blank">http://www.arm.linux.org.uk/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">17.</td>
<td width="98%" align="left" valign="top">Universal Bootloader<br />
Universal Bootloader project provides firmware with full source code under GPL. Many CPU architectures are supported: PowerPC(MPC5xx, MPC8xx, MPC82xx, MPC7xx, MPC74xx, 4xx), ARM(ARM7, ARM9, StrongARM, Xscale), MIPS(4Kc,5Kc), x86, &#8230;<br />
<a href="http://sourceforge.net/projects/u-boot" target="_blank">http://sourceforge.net/projects/u-boot</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">18.</td>
<td width="98%" align="left" valign="top">SkyEye Project<br />
SkyEye 是一个开源软件（opensource software）项目，中文名字是“天目”。SkyEye的目标是在通用的Linux和Windows平台实现一个模拟集成开发环境，模拟基于ARM的 嵌入式计算机系统；可在SkyEye上运行ARM Linux,uclinux以及uC/OS-II等多种嵌入式操作系统，并对它们进行源码级的分析和测试<br />
<a href="http://www.skyeye.org/index_cn.html" target="_blank">http://www.skyeye.org/index_cn.html</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">19.</td>
<td width="98%" align="left" valign="top">uclinux-elf-tools<br />
一个优秀的交叉编译工具。m68k系统,ARM系统下有很好的性能。<br />
<a href="http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/" target="_blank">http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">20.</td>
<td width="98%" align="left" valign="top">MCUserver<br />
一个比较专业的关于电子开发的网站，但是我也不知道网站是什么语言，但看一勉强看懂。它的下载区有很多实用资料，需要注册才可以下载。它提供很多DIY电路，比如PIC,AVR,MSP430,FPGA,ARM,8051等等编程电路。推荐<br />
<a href="http://www.mcu.cz/modules/news/" target="_blank">http://www.mcu.cz/modules/news/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">21.</td>
<td width="98%" align="left" valign="top">Embeder&#8217;s Family&#8211;嵌入者之家<br />
个人站点,但是这里有些相关资源下载<a href="http://www.embeder.com/bbs/showforum.asp?forumid=10" target="_blank">http://www.embeder.com/bbs/showforum.asp?forumid=10</a><br />
它的ARM论坛还可以.<a href="http://www.embeder.com/bbs/" target="_blank">http://www.embeder.com/bbs/</a></p>
<p><a href="http://www.embeder.com/" target="_blank">http://www.embeder.com/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">22.</td>
<td width="98%" align="left" valign="top">ArmTime Technology<br />
推荐.比较不错的ARM网站,比较专业的网站.<br />
<a href="http://www.armtime.com/" target="_blank">http://www.armtime.com/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">23.</td>
<td width="98%" align="left" valign="top">GNU Toolchain for ARM Processors<br />
<a href="http://www.codesourcery.com/archives/arm-gnu-announce/maillist.html" target="_blank">http://www.codesourcery.com/archives/arm-gnu-announce/maillist.html</a><br />
<a href="http://www.codesourcery.com/archives/arm-gnu/maillist.html" target="_blank">http://www.codesourcery.com/archives/arm-gnu/maillist.html</a><br />
<a href="http://www.codesourcery.com/gnu_toolchains/arm/" target="_blank">http://www.codesourcery.com/gnu_toolchains/arm/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">24.</td>
<td width="98%" align="left" valign="top">ARMLinux Resources<br />
Here are links to various resources for ARMLinux. Mostly off-site but some are maintained here.<br />
<a href="http://www.aleph1.co.uk/armlinux/" target="_blank">http://www.aleph1.co.uk/armlinux/</a><br />
<a href="http://www.aleph1.co.uk/armlinux/resources.html" target="_blank">http://www.aleph1.co.uk/armlinux/resources.html</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">25.</td>
<td width="98%" align="left" valign="top">www.ulrichradig.de<br />
一个非常好的德国个人网站,有些电子制作.比较经典的就是<br />
1,利用AVR单片机做的WEB服务器.RTL8019芯片.<br />
2,利用CPLD产生视频信号VGA.<br />
3,μClinux &#8211; mini Linux for the Philips&#8217;s ARM LPC2294<br />
<a href="http://www.ulrichradig.de/" target="_blank">http://www.ulrichradig.de/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">26.</td>
<td width="98%" align="left" valign="top">boot<br />
Booting on any device needs a boot-loader and some means to get the boot-loader installed in the first place. Here we look at the specifics for ARM architecture devices booting Linux, covering available boot-loaders and their capabilities, some general principles and mechanisms for uploading the Linux kernel and root filesystem, giving specific examples with Jflash-linux and Blob.<br />
<a href="http://www.aleph1.co.uk/armlinux/docs/ARMbooting/t1.html" target="_blank">http://www.aleph1.co.uk/armlinux/docs/ARMbooting/t1.html</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">27.</td>
<td width="98%" align="left" valign="top">武汉创维特嵌入式沙龙<br />
主要是关于ARM的开发.<br />
下载页面有些好东西:<a href="http://www.cvtech.com.cn/cvtech/down_index.asp" target="_blank">http://www.cvtech.com.cn/cvtech/down_index.asp</a><br />
<a href="http://www.cvtech.com.cn/" target="_blank">http://www.cvtech.com.cn/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">28.</td>
<td width="98%" align="left" valign="top">Debian GNU/Linux on ARM<br />
On these pages you&#8217;ll find information about the ongoing effort of porting Debian GNU/Linux to the ARM architecture which is often found in embedded systems<br />
<a href="http://www.debian.org/ports/arm/" target="_blank">http://www.debian.org/ports/arm/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">29.</td>
<td width="98%" align="left" valign="top">ARM Documentation 来自官方网站<br />
<a href="http://www.arm.com/documentation/" target="_blank">http://www.arm.com/documentation/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">30.</td>
<td width="98%" align="left" valign="top">ARM Devlopments<br />
<a href="http://www.ap-systems.co.uk/index.htm" target="_blank">http://www.ap-systems.co.uk/index.htm</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">31.</td>
<td width="98%" align="left" valign="top">RTLinux for StrongARM<br />
<a href="http://www.imec.be/rtlinux/" target="_blank">http://www.imec.be/rtlinux/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">32.</td>
<td width="98%" align="left" valign="top">PIC,AVR,ARM,MSP430开发DIY<br />
该网站提供很多的PIC,AVR,ARM,MSP430的开发资料，特别适合自己制作开发系统，它的ARM开发(利用LPC21**系列)是非常号的资料。推荐。<br />
<a href="http://www.olimex.com/dev/index.html" target="_blank">http://www.olimex.com/dev/index.html</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">33.</td>
<td width="98%" align="left" valign="top">杭州莱顿科技有限公司<br />
尽管是买方ARM(主要是三星的芯片)开发板的，但是里面也有不少开发资料下载，开发三星ARM不容错过。<br />
<a href="http://www.jzx51.com/index.htm" target="_blank">http://www.jzx51.com/index.htm</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">34.</td>
<td width="98%" align="left" valign="top">嵌入式开源项目<br />
是一个适合初学者学习嵌入式开发的技术网站，lumit 名称取自 let us make it together 这句话的首字母缩写。我们期待对嵌入式技术有兴趣的朋友能和我们一起学习、动手制作、相互探讨、共同进步。<br />
lumit 也是一个软硬件资料可以完全免费下载的开源项目，目前主要目标是制作一个基于arm7tdmi s3c4510开发板的可以实用的u盘，未来我们希望还能做出 mp3、pda 甚至是 dc，dv 等。<br />
<a href="http://www.lumit.org/" target="_blank">http://www.lumit.org/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">35.</td>
<td width="98%" align="left" valign="top">ARM时代<br />
提供:ARM仿真器|ARM开发板|ARM技术 项目 方案 成型产品，还有一些ARM开发资料供下载<br />
<a href="http://www.arm9e.com/" target="_blank">http://www.arm9e.com/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">36.</td>
<td width="98%" align="left" valign="top">广州友善之臂的ARM资料下载<br />
<a href="http://www.arm9.net/m4-download.asp" target="_blank">http://www.arm9.net/m4-download.asp</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">37.</td>
<td width="98%" align="left" valign="top">Aeolus Development &#8211; Embedded Hardware and Software<br />
<a href="http://www.aeolusdevelopment.com/" target="_blank">http://www.aeolusdevelopment.com/</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">38.</td>
<td width="98%" align="left" valign="top">阿冰BLOG : ARM与嵌入式开发<br />
<a href="http://ustcers.com/blogs/devzhao/articles/category/65.aspx" target="_blank">http://ustcers.com/blogs/devzhao/articles/category/65.aspx</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">39.</td>
<td width="98%" align="left" valign="top">中国单片机公共实验室.&#8211;可以看看.<br />
<a href="http://www.bol-system.com/" target="_blank">http://www.bol-system.com/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">40.</td>
<td width="98%" align="left" valign="top">52ARM微电通讯技术网<br />
<a href="http://www.52arm.com/" target="_blank">http://www.52arm.com/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">41.</td>
<td width="98%" align="left" valign="top">思恒科技-DSP、ARM、FPGA等开发的电子综合网站<br />
公司网站，资料还不是很多，有时间可以看看。<br />
<a href="http://www.siheng.cn/" target="_blank">http://www.siheng.cn/ </a>- 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">42.</td>
<td width="98%" align="left" valign="top">三星官方网站的ARM芯片资料下载<br />
<a href="http://www.samsung.com/Products/Semiconductor/common/product_list.aspx?family_cd=LSI090101" target="_blank">http://www.samsung.com/Products/Semiconductor/common/product_list.aspx?family_cd=LSI090101</a> &#8211; 外文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">43.</td>
<td width="98%" align="left" valign="top">西安建华科技实业有限公司<br />
提供ARM开发板，同时也有少量的ARM开发文档.<br />
<a href="http://www.jhembed.com/" target="_blank">http://www.jhembed.com/</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">44.</td>
<td width="98%" align="left" valign="top">小章电子技术网 -很多实用电子资料下载。<br />
<a href="http://www.zyjmcu.com/zlxz.htm" target="_blank">http://www.zyjmcu.com/zlxz.htm</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">45.</td>
<td width="98%" align="left" valign="top">ARM专栏<br />
<a href="http://www.baite-group.com/chinese_simple/bbs/arm.htm" target="_blank">http://www.baite-group.com/chinese_simple/bbs/arm.htm</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">46.</td>
<td width="98%" align="left" valign="top">Instruction set quick finder<br />
his document describes, as completely as I am aware of, the ARM instruction set. If, however, you are only interested in the instructions relating to programming under RISC OS, you may prefer to read the shorter quick finder document&#8230;<br />
<a href="http://www.heyrick.co.uk/assembler/qfinder.html" target="_blank">http://www.heyrick.co.uk/assembler/qfinder.html</a> &#8211; 中文</td>
</tr>
<tr>
<td colspan="2"></td>
</tr>
</tbody>
</table>
<table>
<tbody>
<tr>
<td width="2%" align="left" valign="top">47.</td>
<td width="98%" align="left" valign="top">ARM学习网<br />
<a href="http://218.78.211.237:8088/" target="_blank">http://218.78.211.237:8088/</a> &#8211; 中文</td>
</tr>
</tbody>
</table>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/181/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/181/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/181/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=181&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2009/11/20/%e8%bd%ac%e5%b8%96%ef%bc%9aarm%e7%9a%84%e8%b5%84%e6%96%99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>windows安装subversion遇到几个问题</title>
		<link>http://sealedblade.wordpress.com/2009/07/06/windows%e5%ae%89%e8%a3%85subversion%e9%81%87%e5%88%b0%e5%87%a0%e4%b8%aa%e9%97%ae%e9%a2%98/</link>
		<comments>http://sealedblade.wordpress.com/2009/07/06/windows%e5%ae%89%e8%a3%85subversion%e9%81%87%e5%88%b0%e5%87%a0%e4%b8%aa%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 03:01:43 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=179</guid>
		<description><![CDATA[昨天安装subversion的时候，遇到几个问题，也搞了比较长的时间。 配置Windows下apache服务器的subversion。 至于安装过程网上有很多。我就不再多说了。 如果安装出现问题。最好的分析文件是apache安装目录下的eorror.log 1. 在Apache的错误日志中表现为错误500 这个和你配置的repository的文件（电子仓库 or 版本库）访问权限有关。右键版本库目录-&#62;属性-&#62;安全。要不然，用户将无法提交他们的更改。就算Apache以本机system来运行，你也要设置它能完全读写版本库目录。 2. 在Apache的错误日志中表现为错误430 这个问题引起有很多原因，可以参考这个网站http://www.cyberciti.biz/faq/apache-403-forbidden-error-and-solution/ 个人感觉权限的配置的问题有很大的几率。希望对你有所帮助。 3. 用http://serverIP/电子仓库路径 （repository path）  网页显示“Could not open the requested SVN filesystem” 这个问题困扰我很长时间，最后发现这个是2.2x的apache和旧版的subversion不兼容。解决方法就是换新版的subversion，不要忘记把4个文件（intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so）再复制到apache的文件目录里面。其实测试过程发现，有区别的就是mod_authz_svn.so、mod_dav_svn.so 这个两个文件原则上讲之替换这两个文件就可。为了安全起见就一起替换旧版本吧。 主要就是上面几个问题。 这两天比较忙，等有空在回味一下。在仔细思考一下。和大家分享。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=179&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>昨天安装subversion的时候，遇到几个问题，也搞了比较长的时间。</p>
<p>配置Windows下apache服务器的subversion。</p>
<p>至于安装过程网上有很多。我就不再多说了。</p>
<p>如果安装出现问题。最好的分析文件是apache安装目录下的eorror.log</p>
<p>1. 在Apache的错误日志中表现为错误500</p>
<p>这个和你配置的repository的文件（电子仓库 or 版本库）访问权限有关。右键版本库目录-&gt;属性-&gt;安全。要不然，用户将无法提交他们的更改。就算Apache以本机system来运行，你也要设置它能完全读写版本库目录。</p>
<p>2. 在Apache的错误日志中表现为错误430</p>
<p>这个问题引起有很多原因，可以参考这个网站http://www.cyberciti.biz/faq/apache-403-forbidden-error-and-solution/</p>
<p>个人感觉权限的配置的问题有很大的几率。希望对你有所帮助。</p>
<p>3. 用http://serverIP/电子仓库路径 （repository path）  网页显示“Could not open the requested SVN filesystem”</p>
<p>这个问题困扰我很长时间，最后发现这个是2.2x的apache和旧版的subversion不兼容。解决方法就是换新版的subversion，不要忘记把4个文件（intl3_svn.dll、libdb44.dll、mod_authz_svn.so、mod_dav_svn.so）再复制到apache的文件目录里面。其实测试过程发现，有区别的就是mod_authz_svn.so、mod_dav_svn.so 这个两个文件原则上讲之替换这两个文件就可。为了安全起见就一起替换旧版本吧。</p>
<p>主要就是上面几个问题。</p>
<p>这两天比较忙，等有空在回味一下。在仔细思考一下。和大家分享。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/179/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/179/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/179/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=179&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2009/07/06/windows%e5%ae%89%e8%a3%85subversion%e9%81%87%e5%88%b0%e5%87%a0%e4%b8%aa%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>指针优先级的回顾</title>
		<link>http://sealedblade.wordpress.com/2009/06/29/%e6%8c%87%e9%92%88%e4%bc%98%e5%85%88%e7%ba%a7%e7%9a%84%e5%9b%9e%e9%a1%be/</link>
		<comments>http://sealedblade.wordpress.com/2009/06/29/%e6%8c%87%e9%92%88%e4%bc%98%e5%85%88%e7%ba%a7%e7%9a%84%e5%9b%9e%e9%a1%be/#comments</comments>
		<pubDate>Mon, 29 Jun 2009 15:57:02 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=175</guid>
		<description><![CDATA[今天YT读代码的时候无意间被一个小代码给困住了。 我们就讨论了一下，自感也是有点小晕。 问这些表达式的结果区别： *p++  ;  *(p++);  *(++p) 经过程序测试找到答案 int test[]={1, 2, 3, 4 }; int *p; p=test; printf(&#8220;%d&#8221;, *p++); printf(&#8220;%d&#8221;, *(++p)); 答案是 1 ； 3 付：优先级的资料 优先决 括号成员第一; //括号运算符[]() 成员运算符. -&#62; 全体单目第二; //所有的单目运算符比如++ &#8212; +(正) -(负) 指针运算*&#38; 乘除余三,加减四; //这个&#8221;余&#8221;是指取余运算即% 移位五，关系六; //移位运算符：&#60;&#60; &#62;&#62; ，关系：&#62; &#60; &#62;= &#60;= 等 等于(与)不等排第七; //即== != 位与异或和位或; //这几个都是位运算: 位与(&#38;)异或(^)位或(&#124;) &#8220;三分天下&#8221;八九十; 逻辑或跟与; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=175&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>今天YT读代码的时候无意间被一个小代码给困住了。</p>
<p>我们就讨论了一下，自感也是有点小晕。</p>
<p>问这些表达式的结果区别：</p>
<p>*p++  ;  *(p++);  *(++p)</p>
<p>经过程序测试找到答案</p>
<p>int test[]={1, 2, 3, 4 };<br />
int *p;<br />
p=test;<br />
printf(&#8220;%d&#8221;,  *p++);<br />
printf(&#8220;%d&#8221;, *(++p));</p>
<p>答案是 1 ； 3</p>
<p>付：优先级的资料</p>
<p>优先决<br />
括号成员第一; <span style="color:#800000;">//括号运算符[]() 成员运算符. -&gt;</span><br />
全体单目第二; <span style="color:#800000;">//所有的单目运算符比如++ &#8212; +(正) -(负) 指针运算*&amp;</span><br />
乘除余三,加减四; <span style="color:#800000;">//这个&#8221;余&#8221;是指取余运算即%</span><br />
移位五，关系六; <span style="color:#800000;">//移位运算符：&lt;&lt; &gt;&gt; ，关系：&gt; &lt; &gt;=  &lt;= 等</span><br />
等于(与)不等排第七; <span style="color:#800000;">//即== !=</span><br />
位与异或和位或; <span style="color:#800000;">//这几个都是位运算: 位与(&amp;)异或(^)位或(|) </span><br />
&#8220;三分天下&#8221;八九十;<br />
逻辑或跟与; <span style="color:#800000;">//逻辑运算符:|| 和 &amp;&amp;</span><br />
十二和十一; <span style="color:#800000;">//注意顺序:优先级(||) 底于 优先级(&amp;&amp;) </span><br />
条件高于赋值, <span style="color:#800000;">//三目运算符优 先级排到 13 位只比赋值运算符和&#8221;,&#8221;高//需要注意的是赋值运算符很多！</span><br />
逗号运算级最低! <span style="color:#800000;">//逗号运算符优先级最低</span><br />
<span style="color:#ff0000;">由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符)，所以这个口诀不能完全实用于<a href="http://www.diybl.com/">C++.</a></span></p>
<p>查了一下优先级答案也是自然而然了。感叹C语言忘的真快啊。</p>
<p><span style="color:#444444;font-family:Arial, Helvetica, sans-serif;font-size:12px;line-height:22px;">优先级                运算符                              结合性<br />
(最高)                () [] -&gt; .                             自左向右<br />
<strong><span style="color:#ff0000;">! ~ ++ &#8212; + &#8211; * &amp; sizeof                             自右向左</span></strong><br />
* / %                                                           自左向右<br />
+ -                                                               自左向右<br />
&gt;                                                                 自左向右<br />
&gt;=                                                               自左向右<br />
== !=                                                           自左向右<br />
&amp;                                                                 自左向右<br />
^                                                                  自左向右<br />
|                                                                   自左向右<br />
&amp;&amp;                                                               自左向右<br />
||                                                                  自左向右<br />
?:                                                                自右向左<br />
= += -= *= /= %= &amp;= ^= |= &gt;=                  自右向左<br />
(最低)          ;                                              自左向右</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/175/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/175/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/175/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=175&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2009/06/29/%e6%8c%87%e9%92%88%e4%bc%98%e5%85%88%e7%ba%a7%e7%9a%84%e5%9b%9e%e9%a1%be/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>64bits CUP 指令集介绍</title>
		<link>http://sealedblade.wordpress.com/2009/06/20/64bits-cup-%e6%8c%87%e4%bb%a4%e9%9b%86%e4%bb%8b%e7%bb%8d/</link>
		<comments>http://sealedblade.wordpress.com/2009/06/20/64bits-cup-%e6%8c%87%e4%bb%a4%e9%9b%86%e4%bb%8b%e7%bb%8d/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 06:47:39 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=172</guid>
		<description><![CDATA[目前主流CPU使用的64位技术主要有AMD公司的AMD64位技术、Intel公司的EM64T技术、和Intel公司的IA-64技术。其中IA-64是Intel独立开发，不兼容现在的传统的32位计算机，仅用于Itanium（安腾）以及后续产品Itanium 2，一般用户不会涉及到，因此这里仅对AMD64位技术和Intel的EM64T技术做一下简单介绍。 AMD64位技术 AMD64的位技术是在原始32位X86指令集的基础上加入了X86-64扩展64位X86指令集，使这款芯片在硬件上兼容原来的32位X86软件，并同时支持X86-64的扩展64位计算，使得这款芯片成为真正的64位X86芯片。这是一个真正的64位的标准，X86-64具有64位的寻址能力。 X86-64新增的几组CPU寄存器将提供更快的执行效率。寄存器是CPU内部用来创建和储存CPU运算结果和其它运算结果的地方。标准的32-bit x86架构包括8个通用寄存器（GPR），AMD在X86-64中又增加了8组（R8-R9），将寄存器的数目提高到了16组。X86-64寄存器默认位64-bit。还增加了8组128-bit XMM寄存器（也叫SSE寄存器，XMM8-XMM15），将能给单指令多数据流技术（SIMD）运算提供更多的空间，这些128位的寄存器将提供在矢量和标量计算模式下进行128位双精度处理，为3D建模、矢量分析和虚拟现实的实现提供了硬件基础。通过提供了更多的寄存器，按照X86-64标准生产的CPU可以更有效的处理数据，可以在一个时钟周期中传输更多的信息。 EM64T技术 Intel官方是给EM64T这样定义的：EM64T全称Extended Memory 64 Technology，即扩展64bit内存技术。EM64T是Intel IA-32架构的扩展，即IA-32e（Intel Architectur-32 extension）。IA-32处理器通过附加EM64T技术，便可在兼容IA-32软件的情况下，允许软件利用更多的内存地址空间，并且允许软件进行32 bit线性地址写入。EM64T特别强调的是对32 bit和64 bit的兼容性。Intel为新核心增加了8个64 bit GPRs（R8-R15），并且把原有GRPs全部扩展为64 bit，如前文所述这样可以提高整数运算能力。增加8个128bit SSE寄存器（XMM8-XMM15），是为了增强多媒体性能，包括对SSE、SSE2和SSE3的支持。 Intel为支持EM64T技术的处理器设计了两大模式：传统IA-32模式（legacy IA-32 mode）和IA-32e扩展模式（IA-32e mode）。在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器（extended feature enable register，IA32_EFER）的部件，其中的Bit10控制着EM64T是否激活。Bit10被称作IA-32e模式有效（IA-32e mode active）或长模式有效（long mode active，LMA)。当LMA＝0时，处理器便作为一颗标准的32 bit（IA32）处理器运行在传统IA-32模式；当LMA＝1时，EM64T便被激活，处理器会运行在IA-32e扩展模式下。 目前AMD方面支持64位技术的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。Intel方面支持64位技术的CPU有使用Nocona核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=172&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>目前主流CPU使用的64位技术主要有AMD公司的AMD64位技术、Intel公司的EM64T技术、和Intel公司的IA-64技术。其中IA-64是Intel独立开发，不兼容现在的传统的32位计算机，仅用于Itanium（安腾）以及后续产品Itanium 2，一般用户不会涉及到，因此这里仅对AMD64位技术和Intel的EM64T技术做一下简单介绍。</p>
<p>AMD64位技术</p>
<p>AMD64的位技术是在原始32位X86指令集的基础上加入了X86-64扩展64位X86指令集，使这款芯片在硬件上兼容原来的32位X86软件，并同时支持X86-64的扩展64位计算，使得这款芯片成为真正的64位X86芯片。这是一个真正的64位的标准，X86-64具有64位的寻址能力。      X86-64新增的几组CPU寄存器将提供更快的执行效率。寄存器是CPU内部用来创建和储存CPU运算结果和其它运算结果的地方。标准的32-bit x86架构包括8个通用寄存器（GPR），AMD在X86-64中又增加了8组（R8-R9），将寄存器的数目提高到了16组。X86-64寄存器默认位64-bit。还增加了8组128-bit XMM寄存器（也叫SSE寄存器，XMM8-XMM15），将能给单指令多数据流技术（SIMD）运算提供更多的空间，这些128位的寄存器将提供在矢量和标量计算模式下进行128位双精度处理，为3D建模、矢量分析和虚拟现实的实现提供了硬件基础。通过提供了更多的寄存器，按照X86-64标准生产的CPU可以更有效的处理数据，可以在一个时钟周期中传输更多的信息。</p>
<p>EM64T技术</p>
<p>Intel官方是给EM64T这样定义的：EM64T全称Extended Memory 64 Technology，即扩展64bit内存技术。EM64T是Intel IA-32架构的扩展，即IA-32e（Intel Architectur-32 extension）。IA-32处理器通过附加EM64T技术，便可在兼容IA-32软件的情况下，允许软件利用更多的内存地址空间，并且允许软件进行32 bit线性地址写入。EM64T特别强调的是对32 bit和64 bit的兼容性。Intel为新核心增加了8个64 bit GPRs（R8-R15），并且把原有GRPs全部扩展为64 bit，如前文所述这样可以提高整数运算能力。增加8个128bit SSE寄存器（XMM8-XMM15），是为了增强多媒体性能，包括对SSE、SSE2和SSE3的支持。      Intel为支持EM64T技术的处理器设计了两大模式：传统IA-32模式（legacy IA-32 mode）和IA-32e扩展模式（IA-32e mode）。在支持EM64T技术的处理器内有一个称之为扩展功能激活寄存器（extended feature enable register，IA32_EFER）的部件，其中的Bit10控制着EM64T是否激活。Bit10被称作IA-32e模式有效（IA-32e mode active）或长模式有效（long mode active，LMA)。当LMA＝0时，处理器便作为一颗标准的32 bit（IA32）处理器运行在传统IA-32模式；当LMA＝1时，EM64T便被激活，处理器会运行在IA-32e扩展模式下。      目前AMD方面支持64位技术的CPU有Athlon 64系列、Athlon FX系列和Opteron系列。Intel方面支持64位技术的CPU有使用Nocona核心的Xeon系列、使用Prescott 2M核心的Pentium 4 6系列和使用Prescott 2M核心的P4 EE系列。</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/172/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/172/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/172/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=172&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2009/06/20/64bits-cup-%e6%8c%87%e4%bb%a4%e9%9b%86%e4%bb%8b%e7%bb%8d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
		<item>
		<title>转:龙芯此时购买MIPS授权是最佳时机</title>
		<link>http://sealedblade.wordpress.com/2009/06/20/%e8%bd%ac%e9%be%99%e8%8a%af%e6%ad%a4%e6%97%b6%e8%b4%ad%e4%b9%b0mips%e6%8e%88%e6%9d%83%e6%98%af%e6%9c%80%e4%bd%b3%e6%97%b6%e6%9c%ba/</link>
		<comments>http://sealedblade.wordpress.com/2009/06/20/%e8%bd%ac%e9%be%99%e8%8a%af%e6%ad%a4%e6%97%b6%e8%b4%ad%e4%b9%b0mips%e6%8e%88%e6%9d%83%e6%98%af%e6%9c%80%e4%bd%b3%e6%97%b6%e6%9c%ba/#comments</comments>
		<pubDate>Sat, 20 Jun 2009 06:40:50 +0000</pubDate>
		<dc:creator>nusmql</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sealedblade.wordpress.com/?p=169</guid>
		<description><![CDATA[1. 两大指令集： MIPS指令集 和 Intel的X86指令集 2. 在两大指令集下开发的CPU， 尤其是Intel的X86指令集，在过去20年不断改善发展， 每一次改善发展都涉及几十上百个的专利保护。如果考虑到与CPU相关联的硬件和软件的专利可能有上千个专利。即使是这一行业里的技术人员， 除最高层的技术主管队伍， 绝大多数也搞不清楚有多少专利技术。 3. 围绕某一个指令集开发出来的CPU的这上千个专利技术是 成千上万的各国高级技术人员20多年来累积开发出来的。 所以要另辟一个指令集本身是容易的事， 但后面形成这个上千个专利技术保护的CPU开发绝不是我们中国一个国家能够完成的。 俄罗斯， 日本， 欧洲各国那个国家都能轻易的开发出一个新的指令集， 但他们不去开发的原因是他们一个国家， 或者是几个国家联合也无法开发出后面的与CPU有关的庞大的专利技术。所以没有国家去做开发一套从新指令集到CPU的完整体系的傻事。所以指责龙芯不开发指令集的人是乱弹琴。 4. 由Intel的X86指令集所开发出来的CPU专利技术非常全面， 其专利的权利要求涵盖了几乎所有可能的方面， 因此几乎不太可能在这方面冲破Intel的X86的CPU专利技术的封锁（世界没有一个国家冲破了这道封锁）。 相比之下， MIPS指令集的专利保护较少（我这里说的较少是与Intel的X86指令集开发的CPU相比较， 但MIPS公司本身在这个指令集下就有450个专利保护）。 5. 龙芯的贡献在于它利用了MIPS指令集所开发出来的龙芯CPU的技术有上百个没有被MIPS公司和其它公司涵盖的我们拥有的专利技术， 是属于中国人自己的专利技术。而且龙芯的MIPS指令集所开发出来的龙芯CPU是MIPS这个指令下开发出来的最好的CPU之一。 这是龙芯CPU的重大贡献。 6. MIPS公司的MIPS指令集的专利保护期大概还有4-5年就到期。 专利保护期越短， 要收的专利保护费越少。 过去我们一直不能与MIPS公司达成MIPS指令集专利使用的合同主要是MIPS公司自持专利保护期还长， 要价很高， 现在他的专利保护期快到了， 如果不降价， 我们再等4-5年， 就可以无偿使用MIPS指令集， 所以他们主动降价。 从而双方达成技术转让协议（Licensing Agreement）。 7. 为何我们不再等待4-5年后无偿使用MIPS指令集？ 因为一个产品的推向市场从小做到大， 至少要3-5年的时间做开发， 在最初的2年， 产品的市场不会太大， 换句话说， 销售量不会太大， 如果双方达成技术转让协议（Licensing Agreement）规定是royalty（抽成）方式， [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=169&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="margin:0;padding:0;"><span><span>1. </span></span><span lang="ZH-CN">两大指令集：</span><span><span> MIPS</span></span><span lang="ZH-CN">指令集</span><span style="text-decoration:underline;"><span lang="ZH-CN"><span> </span></span></span><span lang="ZH-CN">和</span><span><span lang="ZH-CN"> </span><span>Intel</span></span><span lang="ZH-CN">的</span><span><span>X86</span></span><span lang="ZH-CN">指令集</span></p>
<p style="margin:0;padding:0;"><span><span>2. </span></span><span lang="ZH-CN">在两大指令集下开发的</span><span><span>CPU</span></span><span lang="ZH-CN">，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">尤其是</span><span><span>Intel</span></span><span lang="ZH-CN">的</span><span><span>X86</span></span><span lang="ZH-CN">指令集，在过去</span><span><span>20</span></span><span lang="ZH-CN">年不断改善发展，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">每一次改善发展都涉及几十上百个的专利保护。如果考虑到与</span><span><span>CPU</span></span><span lang="ZH-CN">相关联的硬件和软件的专利可能有上千个专利。即使是这一行业里的技术人员，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">除最高层的技术主管队伍，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">绝大多数也搞不清楚有多少专利技术。</span></p>
<p style="margin:0;padding:0;"><span><span>3. </span></span><span lang="ZH-CN">围绕某一个指令集开发出来的</span><span><span>CPU</span></span><span lang="ZH-CN">的这上千个专利技术是</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">成千上万的各国高级技术人员</span><span><span>20</span></span><span lang="ZH-CN">多年来累积开发出来的。</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">所以要另辟一个指令集本身是容易的事，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">但后面形成这个上千个专利技术保护的</span><span><span>CPU</span></span><span lang="ZH-CN">开发绝不是我们中国一个国家能够完成的。</span><span><span> </span></span><span lang="ZH-CN">俄罗斯，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">日本，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">欧洲各国那个国家都能轻易的开发出一个新的指令集，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">但他们不去开发的原因是他们一个国家，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">或者是几个国家联合也无法开发出后面的与</span><span><span>CPU</span></span><span lang="ZH-CN">有关的庞大的专利技术。所以没有国家去做开发一套从新指令集到</span><span><span>CPU</span></span><span lang="ZH-CN">的完整体系的傻事。所以指责龙芯不开发指令集的人是乱弹琴。</span><span></span></p>
<p style="margin:0;padding:0;"><span><span>4. </span></span><span lang="ZH-CN">由</span><span><span>Intel</span></span><span lang="ZH-CN">的</span><span><span>X86</span></span><span lang="ZH-CN">指令集所开发出来的</span><span><span>CPU</span></span><span lang="ZH-CN">专利技术非常全面，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">其专利的</span><strong><span lang="ZH-CN">权利要求</span></strong><span lang="ZH-CN">涵盖了几乎所有可能的方面，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">因此几乎不太可能在这方面冲破</span><span><span>Intel</span></span><span lang="ZH-CN">的</span><span><span>X86</span></span><span lang="ZH-CN">的</span><span><span>CPU</span></span><span lang="ZH-CN">专利技术的封锁（世界没有一个国家冲破了这道封锁）。</span><span><span> </span></span><span lang="ZH-CN">相比之下，</span><span><span> MIPS</span></span><span lang="ZH-CN">指令集的专利保护较少（我这里说的较少是与</span><span><span>Intel</span></span><span lang="ZH-CN">的</span><span><span>X86</span></span><span lang="ZH-CN">指令集开发的</span><span><span>CPU</span></span><span lang="ZH-CN">相比较，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">但</span><span><span>MIPS</span></span><span lang="ZH-CN">公司本身在这个指令集下就有</span><span><span>450</span></span><span lang="ZH-CN">个专利保护）。</span></p>
<p style="margin:0;padding:0;"><span><span>5. </span></span><span lang="ZH-CN">龙芯的贡献在于它利用了</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集所开发出来的龙芯</span><span><span>CPU</span></span><span lang="ZH-CN">的技术有上百个没有被</span><span><span>MIPS</span></span><span lang="ZH-CN">公司和其它公司涵盖的我们拥有的专利技术，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">是属于中国人自己的专利技术。而且龙芯的</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集所开发出来的龙芯</span><span><span>CPU</span></span><span lang="ZH-CN">是</span><span><span>MIPS</span></span><span lang="ZH-CN">这个指令下开发出来的最好的</span><span><span>CPU</span></span><span lang="ZH-CN">之一。</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">这是龙芯</span><span><span>CPU</span></span><span lang="ZH-CN">的重大贡献。</span></p>
<p style="margin:0;padding:0;"><span><span>6. MIPS</span></span><span lang="ZH-CN">公司的</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集的专利保护期大概还有</span><span><span>4-5</span></span><span lang="ZH-CN">年就到期。</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">专利保护期越短，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">要收的专利保护费越少。</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">过去我们一直不能与</span><span><span>MIPS</span></span><span lang="ZH-CN">公司达成</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集专利使用的合同主要是</span><span><span>MIPS</span></span><span lang="ZH-CN">公司自持专利保护期还长，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">要价很高，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">现在他的专利保护期快到了，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">如果不降价，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">我们再等</span><span><span>4-5</span></span><span lang="ZH-CN">年，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">就可以无偿使用</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">所以他们主动降价。</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">从而双方达成技术转让协议（</span><span><span>Licensing Agreement</span></span><span lang="ZH-CN">）。</span></p>
<p style="margin:0;padding:0;"><span><span>7. </span></span><span lang="ZH-CN">为何我们不再等待</span><span><span>4-5</span></span><span lang="ZH-CN">年后无偿使用</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集？</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">因为一个产品的推向市场从小做到大，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">至少要</span><span><span>3-5</span></span><span lang="ZH-CN">年的时间做开发，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">在最初的</span><span><span>2</span></span><span lang="ZH-CN">年，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">产品的市场不会太大，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">换句话说，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">销售量不会太大，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">如果双方达成技术转让协议（</span><span><span>Licensing Agreement</span></span><span lang="ZH-CN">）规定是</span><span><span>royalty</span></span><span lang="ZH-CN">（抽成）方式，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">由于销售量不会太大，我们要付的钱也不多，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">但积累了开发市场的经验。</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">所以现在与</span><span><span>MIPS</span></span><span lang="ZH-CN">公司签订</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集专利使用合同是最佳时机。</span></p>
<p style="margin:0;padding:0;"><span><span>8. </span></span><span lang="ZH-CN">不可能你独家拥有</span><span><span>CPU</span></span><span lang="ZH-CN">的所有技术，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">就是对</span><span><span>Intel</span></span><span lang="ZH-CN">来说，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">其高性能的内存芯片也要使用一家叫</span><span><span>Rambus</span></span><span lang="ZH-CN">的小公司的高性能的内存芯片，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">因为</span><span><span>Rambus</span></span><span lang="ZH-CN">这个小公司钻了</span><span><span>Intel</span></span><span lang="ZH-CN">的</span><span><span>X86</span></span><span lang="ZH-CN">指令集的空子，开发出</span><span><span>Intel</span></span><span lang="ZH-CN">没有的高性能的内存芯片（</span><span><span>Memory chip</span></span><span lang="ZH-CN">），</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">韩国的三星，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">日本的</span><span><span>Sony</span></span><span lang="ZH-CN">，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">东芝都在花钱使用</span><span><span>Rambus</span></span><span lang="ZH-CN">的高性能的内存芯片。</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">在知识产权领域内有一种</span><span><span>“</span></span><span lang="ZH-CN">技术相互使用</span><span><span>”</span></span><span lang="ZH-CN">（</span><span><span>crossing license</span></span><span lang="ZH-CN">）的手段，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">即双方免费使用对方的核心技术。当龙芯花钱使用</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集开发的</span><span><span>CPU</span></span><span lang="ZH-CN">占据相当大的市场份额后，不仅别的国家就会花钱使用龙芯的</span><span><span>CPU</span></span><span lang="ZH-CN">芯片技术，</span><span lang="ZH-CN"><span> </span></span><span lang="ZH-CN">而且以</span><span><span>MIPS</span></span><span lang="ZH-CN">指令集开发的龙芯</span><span><span>CPU</span></span><span lang="ZH-CN">还可能冲击</span><span><span>Intel1</span></span><span lang="ZH-CN">的</span><span><span>X86</span></span><span lang="ZH-CN">指令集体系的</span><span><span>CPU</span></span><span lang="ZH-CN">市场。</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/sealedblade.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/sealedblade.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/sealedblade.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/sealedblade.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/sealedblade.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/sealedblade.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/sealedblade.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/sealedblade.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/sealedblade.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/sealedblade.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/sealedblade.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/sealedblade.wordpress.com/169/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/sealedblade.wordpress.com/169/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/sealedblade.wordpress.com/169/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=sealedblade.wordpress.com&amp;blog=2684442&amp;post=169&amp;subd=sealedblade&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://sealedblade.wordpress.com/2009/06/20/%e8%bd%ac%e9%be%99%e8%8a%af%e6%ad%a4%e6%97%b6%e8%b4%ad%e4%b9%b0mips%e6%8e%88%e6%9d%83%e6%98%af%e6%9c%80%e4%bd%b3%e6%97%b6%e6%9c%ba/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/58f4efd28a1d9e631eba5e3bb31da1a8?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">nusmql</media:title>
		</media:content>
	</item>
	</channel>
</rss>
