<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://pimg.daum-img.net/whsnake/css/atom.css?ver=1.0" type="text/css"?>
<feed xmlns="http://www.w3.org/2005/Atom" version="1.0" >
  <title>일상 속의 행복</title>
  <link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin"/>
  <link rel="self" type="application/atom+xml" href="http://blog.daum.net/xml/atom/baramjin"/>
  <rights>바람진</rights>
  <author>
    <name>바람진</name>
    <uri>http://blog.daum.net/baramjin</uri>
  </author>
  <generator uri="http://blog.daum.net" version="1.0">Daum blog (blogmaster@daum.net)</generator>
  <id>tag:blog.daum.net,2009:baramjin</id>
  <updated>2009-11-20T10:44:47Z</updated>

  		<entry>
	    <title>공식 사이트</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011010"/>
		<id>tag:blog.daum.net,2009:baramjin.16011010</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-20T10:44:47Z</updated>
	    <published>2009-11-20T10:44:47Z</published>
	    <content type="html">
	    	&lt;A href=&quot;http://www.chromium.org/chromium-os&quot; target=&quot;_blank&quot;&gt;http://www.chromium.org/chromium-os&lt;/A&gt;
&lt;P&gt;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>PV MetaData 관리</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011009"/>
		<id>tag:blog.daum.net,2009:baramjin.16011009</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-20T09:48:45Z</updated>
	    <published>2009-11-20T09:48:45Z</published>
	    <content type="html">
	    	&lt;P&gt;PV도 Meta Data를 관리하는데 크게 Meta Data와 Frame Data로 구분할 수 있다.&lt;/P&gt;
&lt;P&gt;(당연한 얘기지만 Meta Data는 파일에서 추출한 타이틀, 장르 같은 문자열 데이터이고, Frame Data는 동영상이나 이미지에서 추출한 Thumbnail 이미지로 보인다.)&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;이에 대한 기본적인 정보를 관리하는 곳은&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;external/opencore/android/metadatadriver.h&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // We support get metadata, or get frame, or get both, or get neigther.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 GET_METADATA_ONLY&amp;nbsp;&amp;nbsp;&amp;nbsp; = (0x01 &lt;&lt; 0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 GET_FRAME_ONLY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = (0x01 &lt;&lt; 1);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 MAX_VIDEO_FRAME_SIZE = 640 * 480 * 4;&amp;nbsp; // Big enough?&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 MAX_METADATA_STRING_LENGTH = 128;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 MAX_STRING_LENGTH = 512;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 NUM_METADATA_KEYS = 21;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const char* METADATA_KEYS[NUM_METADATA_KEYS];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const char* ALBUM_ART_KEY;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Meta Data 와 Frame 모두 지원할 지, 둘 중에 하나만 지원할지 결정할 수 있고, 이를 위한 데이터 크기 등을 결정한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;MAX_VIDEO_FRAME_SIZE = 640*480*4 로 되어 있는데 이는 VGA급 컨텐츠(RGB888 기준)까지는 Frame을 추출할 수 있는 것 같다. &lt;/P&gt;
&lt;P&gt;즉 최근 동향에 맞추어서 720p 또는 1080p 까지 지원하려면 다음과 같이 바꾸어야 할 것 같다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 MAX_VIDEO_FRAME_SIZE = 1280 * 720 * 4;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;또는&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static const uint32 MAX_VIDEO_FRAME_SIZE = 1920 * 1080 * 4;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>커널 2.6.29에서 Ethernet Driver</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011008"/>
		<id>tag:blog.daum.net,2009:baramjin.16011008</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-19T17:18:00Z</updated>
	    <published>2009-11-19T17:18:00Z</published>
	    <content type="html">
	    	&lt;P&gt;커널 2.6.27 까지는 큰 어려움 없이 사용했는데 커널 2.6.29로 오면서 Ethernet Driver 컴파일부터 안되었다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;일단 구조체가 바뀌어서 컴파일 시에 문제가 나왔는데&lt;/P&gt;
&lt;P&gt;기존에 dev-&gt;priv 와 같이 사용하던 것을 모두 netdev_priv(dev) 형태로 바꾸어 줘야 한다.&lt;/P&gt;
&lt;P&gt;(이부분은 2.6.27과 2.6.28 까지는 같아서 좋았는데...)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;커널 컴파일에서도 약간의 차이점이 생기는데&lt;/P&gt;
&lt;P&gt;기존에는 네트웍 디바이스를 살려도 CONFIG_MII 가 살아나지 않은 것 같은데 이제는 자동으로 Module로 잡힌다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;CONFIG_MII=m 으로 되면&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;mii.ko 가 만들어지므로 dm9ks.ko 를 올리기 전에 mii를 먼저 로딩해야 한다.&lt;/P&gt;
&lt;P&gt;만약 로딩 안하면 다음과 같은 에러를 만나게 된다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;init_module dm9ks.ko options&lt;BR&gt;dm9ks: Unknown symbol mii_ethtool_sset&lt;BR&gt;dm9ks: Unknown symbol mii_link_ok&lt;BR&gt;dm9ks: Unknown symbol mii_nway_restart&lt;BR&gt;dm9ks: Unknown symbol generic_mii_ioctl&lt;BR&gt;dm9ks: Unknown symbol mii_ethtool_gset&lt;BR&gt;insmod: init_module 'dm9ks.ko' failed (No such&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이를 피하기 위해서 일단&lt;/P&gt;
&lt;P&gt;CONFIG_MII=y 로 커널 자체에 포함시켜서 커널 컴파일 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;이 외에도 위의 내용만 수정한 후 드라이버 파일을 로딩하려고 하면 다음과 같은 에러 메시지가 나온다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;eth0 () : net using net_device_ops yet&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;커널 2.6.29에서부터 net_device_ops를 이용하여 인터페이스를 하기 때문이다. 이를 위해서 기존에 선언된 코드 스타일을 바꾸어야 한다.&lt;/P&gt;
&lt;P&gt;주로 probe 함수에 위와 관련된 처리 부분이 있다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;dm9000.c 파일을 보면&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;kernel 2.6.28 까지&amp;nbsp;&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;
&lt;P&gt;static int __devinit&lt;BR&gt;dm9000_probe(struct platform_device *pdev)&lt;BR&gt;{&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;.......&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&lt;FONT color=#e31600&gt;&amp;nbsp;ndev-&gt;open&amp;nbsp;&amp;nbsp; = &amp;dm9000_open;&lt;BR&gt;&amp;nbsp;ndev-&gt;hard_start_xmit&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;dm9000_start_xmit;&lt;BR&gt;&amp;nbsp;ndev-&gt;tx_timeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;dm9000_timeout;&lt;BR&gt;&lt;/FONT&gt;&amp;nbsp;ndev-&gt;watchdog_timeo = msecs_to_jiffies(watchdog);&lt;BR&gt;&lt;FONT color=#e31600&gt;&amp;nbsp;ndev-&gt;stop&amp;nbsp;&amp;nbsp; = &amp;dm9000_stop;&lt;BR&gt;&amp;nbsp;ndev-&gt;set_multicast_list = &amp;dm9000_hash_table;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;ndev-&gt;ethtool_ops&amp;nbsp; = &amp;dm9000_ethtool_ops;&lt;BR&gt;&lt;FONT color=#e31600&gt;&amp;nbsp;ndev-&gt;do_ioctl&amp;nbsp;&amp;nbsp; = &amp;dm9000_ioctl;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;kernel 2.6.29 부터&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;static const struct net_device_ops dm9000_netdev_ops = {&lt;BR&gt;&lt;FONT color=#e31600&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_open&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = dm9000_open,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_stop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = dm9000_stop,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_start_xmit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = dm9000_start_xmit,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_tx_timeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = dm9000_timeout,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_set_multicast_list = dm9000_hash_table,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_do_ioctl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = dm9000_ioctl,&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_change_mtu&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = eth_change_mtu,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_validate_addr&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = eth_validate_addr,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .ndo_set_mac_address&amp;nbsp;&amp;nbsp;&amp;nbsp; = eth_mac_addr,&lt;BR&gt;&amp;nbsp;};&lt;BR&gt;&amp;nbsp;
&lt;P&gt;static int __devinit&lt;BR&gt;dm9000_probe(struct platform_device *pdev)&lt;BR&gt;{&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;......&lt;/P&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#e31600&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ndev-&gt;netdev_ops&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;dm9000_netdev_ops;&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ndev-&gt;watchdog_timeo&amp;nbsp;&amp;nbsp;&amp;nbsp; = msecs_to_jiffies(watchdog);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ndev-&gt;ethtool_ops&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = &amp;dm9000_ethtool_ops;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;}&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN  style=&quot;FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Gulim','serif'&quot;&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN  style=&quot;FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Gulim','serif'&quot;&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN  style=&quot;FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: 'Gulim','serif'&quot;&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>PV 미디어 검색 파일 추가</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011007"/>
		<id>tag:blog.daum.net,2009:baramjin.16011007</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-19T13:31:10Z</updated>
	    <published>2009-11-19T13:31:10Z</published>
	    <content type="html">
	    	frameworks\base\media\java\android\media\MediaFile.java
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Before&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final int FILE_TYPE_ASF&amp;nbsp;&amp;nbsp; = 43;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_ASF;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;After&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final int FILE_TYPE_ASF&amp;nbsp;&amp;nbsp; = 43;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static final int FILE_TYPE_FLV&amp;nbsp;&amp;nbsp; = 44;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int FIRST_VIDEO_FILE_TYPE = FILE_TYPE_MP4;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int LAST_VIDEO_FILE_TYPE = FILE_TYPE_FLV;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;....&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addFileType(&quot;MP3&quot;, FILE_TYPE_MP3, &quot;audio/mpeg&quot;);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; addFileType(&quot;M4A&quot;, FILE_TYPE_M4A, &quot;audio/mp4&quot;);&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .......&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addFileType(&quot;FLV&quot;, FILE_TYPE_FLV, &quot;video/x-flv&quot;);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>800x480 LCD 관련 수정 사항</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011006"/>
		<id>tag:blog.daum.net,2009:baramjin.16011006</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-19T13:25:29Z</updated>
	    <published>2009-11-19T13:25:29Z</published>
	    <content type="html">
	    	&lt;P&gt;frameworks\base\core\java\android\view\ViewConfiguration.java&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Before&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Deprecated&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int MAXIMUM_DRAWING_CACHE_SIZE = 320 * 480 * 4; // HVGA screen, ARGB8888&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;After&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Deprecated&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static final int MAXIMUM_DRAWING_CACHE_SIZE = 480 * 800 * 4; // HVGA screen, ARGB8888&lt;BR&gt;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>EEEPC 901에 안드로이드 포팅</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011005"/>
		<id>tag:blog.daum.net,2009:baramjin.16011005</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-16T22:55:36Z</updated>
	    <published>2009-11-16T22:55:36Z</published>
	    <content type="html">
	    	&lt;P&gt;참조 사이트&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://astrocosmos.tistory.com/tag/Android&quot; target=&quot;_blank&quot;&gt;http://astrocosmos.tistory.com/tag/Android&lt;/A&gt;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>pmem</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011004"/>
		<id>tag:blog.daum.net,2009:baramjin.16011004</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-16T22:52:05Z</updated>
	    <published>2009-11-16T22:52:05Z</published>
	    <content type="html">
	    	&lt;P&gt;참고 사이트&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://andstudy.springnote.com/pages/3838077&quot; target=_blank&gt;http://andstudy.springnote.com/pages/3838077&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://groups.google.com/group/android-kernel/browse_thread/thread/534e6e1115a43ca8&quot; target=_blank&gt;http://groups.google.com/group/android-kernel/browse_thread/thread/534e6e1115a43ca8&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://groups.google.com/group/android-porting/browse_thread/thread/5cd2f0a9749f1733&quot; target=&quot;_blank&quot;&gt;http://groups.google.com/group/android-porting/browse_thread/thread/5cd2f0a9749f1733&lt;/A&gt;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>인맥 관리 18계</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011003"/>
		<id>tag:blog.daum.net,2009:baramjin.16011003</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-15T21:14:33Z</updated>
	    <published>2009-11-15T21:14:33Z</published>
	    <content type="html">
	    	&lt;P&gt;자주가는 달롱넷 게시판에서 보고 퍼옵니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;인맥관리18계 &lt;BR&gt;&lt;BR&gt;1. 지금 힘이 없는 사람이라고 우습게 보지 마라. &lt;BR&gt;나중에 큰 코다칠 수 있다. &lt;BR&gt;&lt;BR&gt;2. 평소에 잘해라. &lt;BR&gt;평소에 쌓아둔 공덕은 위기 때 빛을 발한다. &lt;BR&gt;&lt;BR&gt;3. 네 밥값은 네가 내고 남의 밥값도 네가 내라. &lt;BR&gt;기본적으로 자기 밥값은 자기가 내는 것이다. 남이 내주는 것을 당연하게 생각하지 마라. &lt;BR&gt;&lt;BR&gt;4. 고마우면 고맙다고, 미안하면 미안하다고 큰 소리로 말해라. &lt;BR&gt;입은 말하라고 있는 것이다. 마음으로 고맙다고 생각하는 것은 인사가 아니다. &lt;BR&gt;남이 네 마음속까지 읽을 만큼 한가하지 않다. &lt;BR&gt;&lt;BR&gt;5. 남을 도와줄 때는 화끈하게 도와줘라. &lt;BR&gt;처음에 도와주다가 나중에 흐지부지하거나 조건을 달지 마라. 괜히 품만 팔고 욕먹는다. &lt;BR&gt;&lt;BR&gt;6. 남의 험담을 하지 마라. &lt;BR&gt;그럴 시간 있으면 팔굽혀 펴기나 해라. &lt;BR&gt;&lt;BR&gt;7. 회사 바깥 사람들도 많이 사귀어라. &lt;BR&gt;자기 회사 사람들하고만 놀면 우물안 개구리가 된다. &lt;BR&gt;그리고 회사가 너를 버리면 너는 고아가 된다. &lt;BR&gt;&lt;BR&gt;8. 불필요한 논쟁을 하지 마라. &lt;BR&gt;회사는 학교가 아니다. &lt;BR&gt;&lt;BR&gt;9. 회사 돈이라고 함부로 쓰지 마라. &lt;BR&gt;사실은 모두가 다 보고 있다. &lt;BR&gt;네가 잘 나갈 때는 그냥 두지만 결정적인 순간에는 그 이유로 잘린다. &lt;BR&gt;&lt;BR&gt;10. 남의 기획을 비판하지 마라. &lt;BR&gt;네가 쓴 기획서를 떠올려 봐라 &lt;BR&gt;&lt;BR&gt;11. 가능한 한 옷을 잘 입어라. &lt;BR&gt;외모는 생각보다 훨씬 중요하다. &lt;BR&gt;할인점 가서 열 벌 살 돈으로 좋은 옷 한 벌 사 입어라. &lt;BR&gt;&lt;BR&gt;12. 조의금은 많이 내라. &lt;BR&gt;부모를 잃은 사람은 이 세상에서 가장 가엾은 사람이다. &lt;BR&gt;사람이 슬프면 조그만 일에도 예민해진다. 2,3만 원 아끼지 마라. &lt;BR&gt;나중에 다 돌아온다. &lt;BR&gt;&lt;BR&gt;13. 수입의 1퍼센트 이상은 기부해라. &lt;BR&gt;마음이 넉넉해지고 얼굴이 핀다. &lt;BR&gt;&lt;BR&gt;14. 수위 아저씨, 청소부 아줌마에게 잘해라. &lt;BR&gt;정보의 발신지이자 소문의 근원일뿐더러, 네 부모의 다른 모습이다. &lt;BR&gt;&lt;BR&gt;15. 옛 친구들을 챙겨라. &lt;BR&gt;새로운 네트워크를 만드느라 지금 가지고 있는 최고의 재산을 소홀히 &lt;BR&gt;하지 마라. 정말 힘들 때 누구에게 가서 울겠느냐? &lt;BR&gt;&lt;BR&gt;16. 너 자신을 발견해라. &lt;BR&gt;다른 사람들 생각하느라 너를 잃어버리지 마라. &lt;BR&gt;일주일에 한 시간이라도 좋으니 혼자서 조용히 생각하는 시간을 가져라. &lt;BR&gt;&lt;BR&gt;17. 지금 이 순간을 즐겨라. &lt;BR&gt;지금 네가 살고 있는 이 순간은 나중에 네 인생의 가장 좋은 추억이다. &lt;BR&gt;나중에 후회하지 않으려면 마음껏 즐겨라. &lt;BR&gt;&lt;BR&gt;18. 아내(남편)를 사랑해라. &lt;BR&gt;너를 참고 견디니 얼마나 좋은 사람이냐? &lt;BR&gt;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>Regulator Framework</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011002"/>
		<id>tag:blog.daum.net,2009:baramjin.16011002</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-15T10:14:00Z</updated>
	    <published>2009-11-15T10:14:00Z</published>
	    <content type="html">
	    	&lt;P&gt;Clock Framework처럼 시스템의 성능 제어나 전력 소모를 위하여 만들어졌으며 외부 PM IC 또는 Regulator를 제어하여 전압이나 전류를 제어하는 것을 위한 것이다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이에 대한 설명은 나중에 추가하겠지만 일단 여기 참조&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://opensource.wolfsonmicro.com/node/15&quot; target=_blank&gt;http://opensource.wolfsonmicro.com/node/15&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;커널 configuration에서는 다음 항목이 설정되어야 한다.&lt;/P&gt;
&lt;P&gt;CONFIG_REGULATOR=y&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;관련 API는 여기를 참조한다.&lt;/P&gt;
&lt;P&gt;/kernel/include/linux/regulator/consumer.h&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;regulator_get() : get a reference to a regulator&lt;/P&gt;
&lt;P&gt;regulator_put() : free the regulator source&lt;/P&gt;
&lt;P&gt;regulator_enable() : enable regulator output&lt;/P&gt;
&lt;P&gt;regulator_disable() : disable regulator output&lt;/P&gt;
&lt;P&gt;regulator_is_enabled() : is the regulator output enabled&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;실제 API가 구현되어 있는 곳은 이제는 당연히 알겠지만 다음 폴더 참조&lt;/P&gt;
&lt;P&gt;/kernel/drivers/regulator/&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;기본 파일은 core.c 파일이며&lt;/P&gt;
&lt;P&gt;사용하는 PM IC 또는 Regulator에 따라서 다음 파일들을 참조하여 수정한다.&lt;/P&gt;
&lt;P&gt;bg24022.c&lt;/P&gt;
&lt;P&gt;wm8350-regulator.c&lt;/P&gt;
&lt;P&gt;wm8400-regulator.c&lt;/P&gt;
&lt;P&gt;da903x.c&lt;/P&gt;
&lt;P&gt;pcf50633-regulator.c&lt;/P&gt;
&lt;P&gt;lp8725-regulator.c&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>Clock Framework</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011001"/>
		<id>tag:blog.daum.net,2009:baramjin.16011001</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-15T10:08:53Z</updated>
	    <published>2009-11-15T10:08:53Z</published>
	    <content type="html">
	    	&lt;P&gt;CPUFreq subsystem을 위하여 구현해야 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Clock Framework를 위한 기본 함수는 다음을 참조한다.&lt;/P&gt;
&lt;P&gt;kernel/include/linux/clk.h&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이를 보면 기본 함수는 다음과 같다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;DIV v:shape=&quot;_x0000_s1026&quot;&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.95%; POSITION: absolute; mso-special-format: bullet&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_get() : get a reference to a clock producer &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.95%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_enable() : enable the clock &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.95%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_disable() : disable the clock &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.95%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_get_rate() : obtain the current clock rate &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.95%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_put() : free the clock source &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;옵션 함수를 보면 다음과 같다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -4.62%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;•&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.95%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_round_rate() : adjust a rate &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.95%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_set_rate() : set the clock rate for a clock source &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.83%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_set_parent() : set the parent clock source for this clock &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O1 style=&quot;mso-line-spacing: '90 20 0'; mso-margin-left-alt: 468; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 89%; FONT-FAMILY: Verdana&quot;&gt;&lt;SPAN style=&quot;LEFT: -3.81%; POSITION: absolute; mso-special-format: bullet&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;–&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 16pt; FONT-FAMILY: Verdana; mso-ascii-font-family: Verdana; mso-fareast-font-family: 굴림; mso-hansi-font-family: Verdana; mso-fareast-language: KO&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;clk_get_parent() : get the parent clock source for this clock &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV class=O style=&quot;mso-line-spacing: '90 50 0'; mso-margin-left-alt: 216; mso-char-wrap: 1; mso-kinsoku-overflow: 1; mso-word-wrap: 0&quot;&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;위의 함수를 제공하기 위해서 즉&amp;nbsp;&amp;nbsp;Clock Framework를 구현하기 위해서는 clk 구조체를 정의해 두어야 한다. 이는 특별한 룰은 없어 보이며 각각의 CPU마다 다른 형태로 구현되어 있다. (보통은 clock.c 또는 clock.h 파일에서 정의한다.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;예를 들어 OMAP을 보면 다음을 참조한다.&lt;/P&gt;
&lt;P&gt;kernel/arch/plat-omap/include/mach/clock.h &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Clock Framework에서 CPU가 내부 장치(CPU 포함) 클럭을 조절할 수 있다면 clk_set_rate() 등의 함수를 만들어서 CPUFreq subsystem과 연동하도록 할 수 있으며, 단지 각각의 블럭을 필요없는 경우 꺼서 전류 소모를 줄일 수만 있다면 clk_enable(), clk_disable()만 구현하면 된다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>CPUFreq sub system</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16011000"/>
		<id>tag:blog.daum.net,2009:baramjin.16011000</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-14T10:23:42Z</updated>
	    <published>2009-11-14T10:23:42Z</published>
	    <content type="html">
	    	&lt;P&gt;참고 사이트와 그 안에서 발췌한 내용을 위주로 정리한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.ibm.com/developerworks/kr/library/l-cpufreq-1/index.html&quot; target=_blank&gt;http://www.ibm.com/developerworks/kr/library/l-cpufreq-1/index.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.ibm.com/developerworks/kr/library/l-cpufreq-2/index.html&quot; target=_blank&gt;http://www.ibm.com/developerworks/kr/library/l-cpufreq-2/index.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://xlife.zuavra.net/index.php/70/&quot; target=_blank&gt;http://xlife.zuavra.net/index.php/70/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>커널 이미지</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16010999"/>
		<id>tag:blog.daum.net,2009:baramjin.16010999</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-12T00:56:39Z</updated>
	    <published>2009-11-12T00:56:39Z</published>
	    <content type="html">
	    	&lt;P&gt;make를 한 결과 과정을 보면 마지막에 다음과 같은 메시지를 출력한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;
&lt;P&gt;&amp;nbsp; .......&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; LD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vmlinux&lt;BR&gt;&lt;/P&gt;&amp;nbsp; SYSMAP&amp;nbsp; System.map&lt;BR&gt;&amp;nbsp; SYSMAP&amp;nbsp; .tmp_System.map&lt;BR&gt;&lt;FONT color=#e31600&gt;&amp;nbsp; OBJCOPY arch/arm/boot/Image&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp; Building modules, stage 2.&lt;BR&gt;&amp;nbsp; MODPOST 38 modules&lt;BR&gt;&amp;nbsp; Kernel: arch/arm/boot/Image is ready&lt;BR&gt;&amp;nbsp; GZIP&amp;nbsp;&amp;nbsp;&amp;nbsp; arch/arm/boot/compressed/piggy.gz&lt;BR&gt;&amp;nbsp; AS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arch/arm/boot/compressed/piggy.o&lt;BR&gt;&amp;nbsp; LD&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; arch/arm/boot/compressed/vmlinux&lt;BR&gt;&lt;FONT color=#e31600&gt;&amp;nbsp; OBJCOPY arch/arm/boot/zImage&lt;BR&gt;&amp;nbsp; Kernel: arch/arm/boot/zImage is ready&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이를 보면 /kernel/arch/arm/boot/에 Image 파일을 만들고 이를 다시 piggy.o로 압축한 후, head와 다른 정보 등을 결합하여 압축된 형태인 zImage를 만든다.&lt;/P&gt;
&lt;P&gt;즉 최종 출력은 zImage이다. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;zImage에 대한 보다 자세한 설명은 여기를 참조한다.&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/kernel-image-file-structure.html&quot; target=_blank&gt;http://wiki.kldp.org/KoreanDoc/html/EmbeddedKernel-KLDP/kernel-image-file-structure.html&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;보통의 경우는 압축된 zImage를 사용하지만 임베디드 시스템에서는 부팅 속도나 사용편의를 고려하여 그냥 Image 파일을 다운로드하여 사용하기도 한다. &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>커널에 CPU 또는 Board 설정 추가</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16010998"/>
		<id>tag:blog.daum.net,2009:baramjin.16010998</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-11T21:29:59Z</updated>
	    <published>2009-11-11T21:29:59Z</published>
	    <content type="html">
	    	&lt;P&gt;참조 : &lt;A href=&quot;http://dasomoli.springnote.com/pages/364103&quot; target=_blank&gt;http://dasomoli.springnote.com/pages/364103&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;만약 Linux 커널을 다운로드 받으면 Target CPU가 무엇인지 어떤 컴파일러를 사용할지를 정해주어야 한다.&lt;/P&gt;
&lt;P&gt;만약 커널 소스를 다운로드 받은 디렉토리를 /kernel이라고 하면 MakeFile을 제일 먼저 수정해 준다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;/kernel/MakeFile&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;수정 전&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;ARCH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?= $(SUBARCH)&lt;BR&gt;CROSS_COMPILE&amp;nbsp;&amp;nbsp; ?=&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;수정&amp;nbsp;후&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;ARCH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?= arm&lt;BR&gt;CROSS_COMPILE&amp;nbsp;&amp;nbsp;&amp;nbsp;?= arm-linux-&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;수정 후(안드로이드의 경우)&amp;nbsp;&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;ARCH&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?= arm&lt;BR&gt;CROSS_COMPILE&amp;nbsp;&amp;nbsp; ?= ../prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin/arm-eabi-&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;CROSS_COMPILE을 arm-linux- 라고 정해주었기 때문에 이후 실제 사용되는 크로스 컴파일러나 링커 등은 arm-linux-gcc, arm-linux-ld 등과 같이 된다. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;보드 종류 구분 상수 추가 (보통 맨 아래, 또는&amp;nbsp;같은 계열의&amp;nbsp;CPU 들에 추가)&lt;/P&gt;
&lt;P&gt;kernel/arch/arm/tools/mach-types&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이 파일을 열어보면 다음 사이트에서 타겟 머신과 ID를 관리하고 있음을 나타낸다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://www.arm.linux.org.uk/developer/machines/download.php&quot; target=_blank&gt;http://www.arm.linux.org.uk/developer/machines/download.php&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;실제로 이렇게 등록해야 겠지만 보통은 일의 마지막에 겹치지 않는 ID를 이용해서 임의로 추가하고 사용한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;
&lt;P&gt;#&lt;BR&gt;# machine_is_xxx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CONFIG_xxxx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MACH_TYPE_xxx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; number&lt;BR&gt;#&lt;BR&gt;ebsa110&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCH_EBSA110&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EBSA110&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;BR&gt;riscpc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCH_RPC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RISCPC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;BR&gt;nexuspci&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCH_NEXUSPCI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NEXUSPCI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;BR&gt;ebsa285&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCH_EBSA285&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EBSA285&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;
&lt;P&gt;....&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;FONT color=#e31600&gt;xxx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ARCH_XXX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XXX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;4000&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P style=&quot;MARGIN-LEFT: 4em&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;위의 정의는 리눅스에서 machine에 대한 설정이나 검사를 위하여 사용하게 된다. 컴파일 시에 include/asm-arm/mach-types.h 파일에 자동으로 생성하게 된다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV class=txc-textbox style=&quot;BORDER-RIGHT: #c1c1c1 1px solid; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px solid; PADDING-LEFT: 10px; PADDING-BOTTOM: 10px; BORDER-LEFT: #c1c1c1 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #c1c1c1 1px solid; BACKGROUND-COLOR: #eeeeee&quot;&gt;
&lt;P&gt;......&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;#define MACH_TYPE_XXX&amp;nbsp;&amp;nbsp;&amp;nbsp; 4000&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;......&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;#define machine_arch_type&amp;nbsp;&amp;nbsp;&amp;nbsp; MACH_TYPE_XXX&lt;/P&gt;
&lt;P&gt;#define machine_is_xxx()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (machine_arch_type == MACH_TYPE_XXX)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이렇게 만들어진 매크로를 이용하여 만들어진 이미지를 실행할때 해당 아키텍쳐인지를 비교하는 코드를 구현하려고 하면 다음 파일을 구현해야 한다.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;kernel/arch/arm/boot/compressed/head-xxx.S&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;초기에는 위와 같은 파일을 두었지만 최근에는 잘 사용하지 않는 것 같다. (machine_arch_type이나 machine_is_xxx를 잘 사용하지 않는다.) 실제 kernel/arch/arm/boot/compressed/를 보면 기본적으로 다음 파일들만 존재한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;head-shark.S&lt;/P&gt;
&lt;P&gt;head-xscale.S&lt;/P&gt;
&lt;P&gt;head-17200.S&lt;/P&gt;
&lt;P&gt;head-sa1100.S&lt;/P&gt;
&lt;P&gt;head-sharpsl.S&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;커널의 설정을 편하게 하기 위하여 Default 설정 파일을 만든다. (보통 make xxx_defconfig를 수행해서 기본 설정을 하게 되는데 이를 위한 파일을 만든다)&lt;/P&gt;
&lt;P&gt;kernel/arch/arm/config/xxx_defconfig&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;아키텍쳐를 위한 디렉토리를 만든다.&lt;/P&gt;
&lt;P&gt;kernel/arch/mach-xxx&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;아키텍쳐 메뉴 추가&lt;/P&gt;
&lt;P&gt;kernel/arch/arm/mach-xxx/Kconfig&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;MakeFile 수정&lt;/P&gt;
&lt;P&gt;kernel/arch/arm/mach-xxx/MakeFile&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;mach-xxx 에 대한 처리를 위하여 다음 파일 수정&lt;/P&gt;
&lt;P&gt;kernel/arch/arm/Kconfig&lt;/P&gt;
&lt;P&gt;kernel/arch/arm/MakeFile &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>make 관련 추가 사항</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16010997"/>
		<id>tag:blog.daum.net,2009:baramjin.16010997</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-10T10:16:53Z</updated>
	    <published>2009-11-10T10:16:53Z</published>
	    <content type="html">
	    	&lt;P&gt;안드로이드에서 Demo Application을 만드는 방법은 다음과 같다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;$make ApiDemos&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이 결과는 /out/target/product/xxx/data/app/ApiDemos.apk 로 만들어 진다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이를 system image에 추가하기 위해서는 system image를 다시 만든다.&lt;/P&gt;
&lt;P&gt;$make snod&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;system image를 다시 만들지 않고 adb로 다운로드할 수도 있다.&lt;/P&gt;
&lt;P&gt;cmd창에서 다음과 같이 한다.&lt;/P&gt;
&lt;P&gt;&gt;adb install ApiDemos.apk&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
    	<entry>
	    <title>커널 소스 관련...</title>
		<link rel="alternate" type="text/html" href="http://blog.daum.net/baramjin/16010996"/>
		<id>tag:blog.daum.net,2009:baramjin.16010996</id>
	    <author>
		    <name>바람진</name>
	    </author>
	    <updated>2009-11-04T12:53:37Z</updated>
	    <published>2009-11-04T12:53:37Z</published>
	    <content type="html">
	    	&lt;P&gt;다들 아는 것이겠지만 자주 잊어먹기 때문에 정리한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;리눅스 커널을 받으려면 &lt;A href=&quot;http://www.kernel.org/&quot; target=&quot;_blank&quot;&gt;http://www.kernel.org/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;안드로이드 소스 관리를 보려면 &lt;A href=&quot;http://android.git.kernel.org/&quot; target=&quot;_blank&quot;&gt;http://android.git.kernel.org/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;안드로이드는 당연히 gitweb이다&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;안드로이드의 공식적인 커널을 받으려면 kernel/common.git으로 받으면 된다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;$git clone git://android.git.kernel.org/kernel/common.git&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;default branch는 android-2.6.27 이다.&lt;/P&gt;
&lt;P&gt;Donut 버젼에서 권장하는 branch는 android-2.6.29 이다&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;이를 위해서는 다운로드 받은 상태에서 다음과 같이 한다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;$git checkout -b android-2.6.29&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
	    </content>
	    	</entry>
      </feed>
