<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3723835365102661922</id><updated>2011-12-09T17:02:32.768+09:00</updated><category term='S3C6410'/><category term='Samsung'/><category term='Android'/><category term='porting'/><title type='text'>About Google Android</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nemustech.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nemustech.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Zaharang</name><uri>http://www.blogger.com/profile/08953523725172158062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3723835365102661922.post-653954681173030590</id><published>2009-04-27T15:45:00.007+09:00</published><updated>2009-04-28T20:06:00.892+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Samsung'/><category scheme='http://www.blogger.com/atom/ns#' term='porting'/><category scheme='http://www.blogger.com/atom/ns#' term='S3C6410'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android on S3C6410 target board</title><content type='html'>Long time since we successfully ported Android on PXA270 evaulation board.&lt;br /&gt;As you know, Google opened android full sources last year.&lt;br /&gt;After that, we ported android to various system, and here is one of them, Samsung S3C6410 based target board.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zj5fXVeZVUw/SfbiXqgQPJI/AAAAAAAAACg/U1AFQts2Qr0/s1600-h/100_1338.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_zj5fXVeZVUw/SfbiXqgQPJI/AAAAAAAAACg/U1AFQts2Qr0/s400/100_1338.JPG" alt="" id="BLOGGER_PHOTO_ID_5329696105214000274" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zj5fXVeZVUw/SfbiqCB0gVI/AAAAAAAAACo/QX3N1ztrXTg/s1600-h/100_1345.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_zj5fXVeZVUw/SfbiqCB0gVI/AAAAAAAAACo/QX3N1ztrXTg/s400/100_1345.JPG" alt="" id="BLOGGER_PHOTO_ID_5329696420766450002" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Hardware Spec.&lt;br /&gt;CPU : Samsung S3C6410X ARM1176JZF-S 667MHz Application Processor&lt;br /&gt;Memory:  128Mbytes Mobile DDR, 256Mbytes SLC NAND Flash, 4Mbytes NOR Flash&lt;br /&gt;Display : 5” WVGA(800x480) Color TFT with Touch Screen Interface&lt;br /&gt;Audio : Wolfson WM8960 Audio Codec with 1W Stereo Speaker Amplifier&lt;br /&gt;&lt;br /&gt;----&lt;br /&gt;&lt;br /&gt;The following are the porting steps.&lt;br /&gt;&lt;br /&gt;0. Setting Compiler&lt;br /&gt;- Environment variables for ARM compiler&lt;br /&gt;- export ARCH=arm&lt;br /&gt;- export CROSS_COMPLIE=arm-eabi-&lt;br /&gt;- export PATH=$PATH:(Android Source Directory)/prebuilt/linux-x86/toolchain/arm-eabi-4.3.1/bin&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. Kernel Compile  : Android kernel for 6410&lt;br /&gt;- Get Android sources.&lt;br /&gt;- Use patch with this diff&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-size:180%;"&gt;&lt;a style="color: rgb(255, 0, 0); font-weight: bold;" href="http://nemustech.com/android/nead6410-android-2.6.29.diff"&gt;file&lt;/a&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;&lt;/span&gt;(Should use 2.6.29 kernel version)&lt;br /&gt;- make zImage&lt;br /&gt;&lt;br /&gt;2. Android&lt;br /&gt;- Should fix battery and AC power logic with attached source codes.&lt;br /&gt;/hardware/libhardware_legacy/power/&lt;a style="font-weight: bold;" href="http://nemustech.com/android/power.c"&gt;&lt;span style="color: rgb(255, 102, 102);font-size:180%;" &gt;power.c&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;/frameworks/base/services/jni/&lt;a href="http://nemustech.com/android/com_android_server_BatteryService.cpp"&gt;&lt;span style="color: rgb(255, 102, 102); font-weight: bold;font-size:180%;" &gt;com_android_server_BatteryService.cpp&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;- Just make!&lt;br /&gt;&lt;br /&gt;3. Sound Driver&lt;br /&gt;-  ALSA interface does not recognized in original android source.&lt;br /&gt;So need to fix up followings,&lt;br /&gt;- Apply alsa library ,  audio interface&lt;br /&gt; - git clone git://android.git.kernel.org/platform/external/alsa-lib.git&lt;br /&gt; - git checkout origin/master ==&gt; copy alsa-lib directory to external directory (cp -a)&lt;br /&gt; - git clone git://android.git.kernel.org/platform/hardware/alsa_sound.git&lt;br /&gt; - git checkout origin/master ==&gt; copy alsa_sound directory to hardware directory (cp -a)&lt;br /&gt; - Modify file "build/target/board/generic/BoardConfig.mk"&lt;br /&gt;   - BOARD_USES_GENERIC_AUDIO := false&lt;br /&gt;   - BOARD_USES_ALSA_AUDIO := true&lt;br /&gt; - make!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3723835365102661922-653954681173030590?l=nemustech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nemustech.blogspot.com/feeds/653954681173030590/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3723835365102661922&amp;postID=653954681173030590' title='8개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/653954681173030590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/653954681173030590'/><link rel='alternate' type='text/html' href='http://nemustech.blogspot.com/2009/04/android-on-s3c6410-target-board.html' title='Android on S3C6410 target board'/><author><name>Zaharang</name><uri>http://www.blogger.com/profile/08953523725172158062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zj5fXVeZVUw/SfbiXqgQPJI/AAAAAAAAACg/U1AFQts2Qr0/s72-c/100_1338.JPG' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3723835365102661922.post-6323292048836717862</id><published>2007-12-10T18:07:00.001+09:00</published><updated>2007-12-10T18:23:40.628+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android Porting Notes</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_zj5fXVeZVUw/R10CBAtU8vI/AAAAAAAAABI/-eVA1nCvqu8/s1600-h/Andriod_Lunar.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_zj5fXVeZVUw/R10CBAtU8vI/AAAAAAAAABI/-eVA1nCvqu8/s400/Andriod_Lunar.jpg" alt="" id="BLOGGER_PHOTO_ID_5142268565920215794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Here goes the porting guide of Android to real ARM device.&lt;br /&gt;&lt;br /&gt;1) Frame Buffer&lt;br /&gt;Android using "fb0" in following order.&lt;br /&gt;&lt;br /&gt;1. /dev/graphics/fb0&lt;br /&gt;2. /dev/fb0&lt;br /&gt;You need to tune following factors&lt;br /&gt;* frame buffer size&lt;br /&gt;* use double buffer to "memory mapped files"&lt;br /&gt;* you have to span virtual resolution 2x times in driver inside.&lt;br /&gt;* xres_virtual = xres&lt;br /&gt;* yres_virtual = yres * 2&lt;br /&gt;* double buffering&lt;br /&gt;* using IOCTL command,  exchange coordination of yres to y 0&lt;br /&gt;&lt;br /&gt;2) Touch Screen&lt;br /&gt;* Android opens input device directly, and returns the absolute coordination of the screen.&lt;br /&gt;* Porting TS-lib to driver and do normarlization of the coordination.&lt;br /&gt;* Do auto calibration using "sysfs" in booting procedure&lt;br /&gt;&lt;br /&gt;3) Network&lt;br /&gt;* Android using OS (eg, Linux) network directly, but handle DNS directly.&lt;br /&gt;* DNS lookup order follows&lt;br /&gt;1. /system/etc/hosts  lookup&lt;br /&gt;2. system_property [net.eth0.dns1]&lt;br /&gt;* system_property is provided android init process using unix domain socket @property_service&lt;br /&gt;* You should run "init" process for network management.&lt;br /&gt;* You should set up DNS 'net.eth0.dns1' using "/system/bin/setprop", "/etc/default.prop",  "/data/local.prob"&lt;br /&gt;&lt;br /&gt;4) Init process&lt;br /&gt;Android init do make "device file" and...&lt;br /&gt;1. /data and it's subdir.&lt;br /&gt;2. execute /etc/init.rc&lt;br /&gt;3. make /tmp/eventlog&lt;br /&gt;4. provide system property using unix domain socket @property_service&lt;br /&gt;load following order,&lt;br /&gt;/etc/default.prop&lt;br /&gt;/system/build.prop&lt;br /&gt;/system/default.prop&lt;br /&gt;/data/local.prop&lt;br /&gt;* You shoud start "init" process for proper network/application setting.&lt;br /&gt;* Init opens "/system_properties" and do memory mapping of it.&lt;br /&gt;* JFFS2 filesystem does not support "write" operation of memory mapped I/O&lt;br /&gt;* For device bootstrap, use it's own init program&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3723835365102661922-6323292048836717862?l=nemustech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nemustech.blogspot.com/feeds/6323292048836717862/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3723835365102661922&amp;postID=6323292048836717862' title='6개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/6323292048836717862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/6323292048836717862'/><link rel='alternate' type='text/html' href='http://nemustech.blogspot.com/2007/12/android-porting-notes.html' title='Android Porting Notes'/><author><name>Zaharang</name><uri>http://www.blogger.com/profile/08953523725172158062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_zj5fXVeZVUw/R10CBAtU8vI/AAAAAAAAABI/-eVA1nCvqu8/s72-c/Andriod_Lunar.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3723835365102661922.post-2258446448916514529</id><published>2007-12-07T16:34:00.000+09:00</published><updated>2007-12-07T16:47:56.177+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android Target Demo Video</title><content type='html'>We've made a video clip of our demonstration.&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt; &lt;param name="movie" value="http://www.youtube.com/v/QUgdVr262NU"&gt; &lt;/param&gt; &lt;embed src="http://www.youtube.com/v/QUgdVr262NU" type="application/x-shockwave-flash" width="425" height="350"&gt; &lt;/embed&gt; &lt;/object&gt;&lt;br /&gt;&lt;br /&gt;We will post another porting guide later.&lt;br /&gt;&lt;br /&gt;Thanx!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3723835365102661922-2258446448916514529?l=nemustech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nemustech.blogspot.com/feeds/2258446448916514529/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3723835365102661922&amp;postID=2258446448916514529' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/2258446448916514529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/2258446448916514529'/><link rel='alternate' type='text/html' href='http://nemustech.blogspot.com/2007/12/android-target-demo-video.html' title='Android Target Demo Video'/><author><name>Zaharang</name><uri>http://www.blogger.com/profile/08953523725172158062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3723835365102661922.post-6595367832313868120</id><published>2007-12-07T15:10:00.000+09:00</published><updated>2007-12-07T16:48:20.076+09:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android Porting to Real Target HW</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_zj5fXVeZVUw/R1joNfNXMAI/AAAAAAAAAAo/Rp1oWGsy9oc/s1600-h/Andriod_FullSet.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 248px; height: 186px;" src="http://bp2.blogger.com/_zj5fXVeZVUw/R1joNfNXMAI/AAAAAAAAAAo/Rp1oWGsy9oc/s320/Andriod_FullSet.jpg" alt="" id="BLOGGER_PHOTO_ID_5141114293056909314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After digging Android a few days, we successfully ported Android to our evaluation board (PXA270, Intel Xscale ARM) including network and touch screen.     We know some people already have done similar work with this, but we didn't find the actual working network/touch device yet.&lt;br /&gt;&lt;br /&gt;So we want to share our experience with you guys.&lt;br /&gt;&lt;br /&gt;Ok, here goes our working process,&lt;br /&gt;&lt;br /&gt;We've chosen the target to Intel bulverde evaluation board.  Why this one?  Actually there is no technical reason.  Just selected because we have this one for our Linux project, and thought Xscale would be fit for our project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are the technical spec of our bd,&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_zj5fXVeZVUw/R1jrtvNXMBI/AAAAAAAAAAw/emOrmlPg7g8/s1600-h/Andriod_Launcher.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 271px; height: 204px;" src="http://bp3.blogger.com/_zj5fXVeZVUw/R1jrtvNXMBI/AAAAAAAAAAw/emOrmlPg7g8/s320/Andriod_Launcher.jpg" alt="" id="BLOGGER_PHOTO_ID_5141118145642573842" border="0" /&gt;&lt;/a&gt;&lt;div style="direction: ltr;"&gt;-------------------------------&lt;br /&gt;Intel Bulverde evaluation board :&lt;br /&gt;- PXA270 520MHz&lt;br /&gt;- SDRAM 128MB&lt;br /&gt;- NAND 32 MB&lt;br /&gt;- 7inch TFT LCD : 800x480&lt;br /&gt;- 2GB USB Storage&lt;br /&gt;-------------------------------&lt;br /&gt;&lt;br /&gt;Here are our porting procedure step by step.&lt;br /&gt;&lt;br /&gt;* get Linux &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://2.6.23.8/" target="_blank"&gt;2.6.23.8&lt;/a&gt; from &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://kernel.org/" target="_blank"&gt;kernel.org&lt;/a&gt;&lt;br /&gt;* Port &lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://2.6.23.8/" target="_blank"&gt;2.6.23.8&lt;/a&gt; to target board&lt;br /&gt;* CONFIG_AEABI=y&lt;br /&gt;* CONFIG_BINDER=y&lt;br /&gt;* CONFIG_LOW_MEMORY_KILLER=y&lt;br /&gt;* CONFIG_INITRAMFS_SOURCE=""&lt;br /&gt;* CONFIG_CC_OPTIMIZE_FOR_SIZE=y&lt;br /&gt;--- EABI toolchain?&lt;br /&gt;&lt;br /&gt;* Prepare Filesystems&lt;br /&gt;&lt;br /&gt;* rootfs : jffs2 : using acumen270 rootfs as is&lt;br /&gt;* extract android filesystem contents&lt;br /&gt;* / : extract gzipped cpio&lt;br /&gt;* /system &amp;amp; /data : download from benno(&lt;a onclick="return top.js.OpenExtLink(window,event,this)" href="http://benno.id.au/blog/%29%27s" target="_blank"&gt;http://benno.id.au/blog/&lt;/a&gt; )'s&lt;br /&gt;* build ext2 fs images for /system &amp;amp; /data&lt;br /&gt;* mount /system &amp;amp; /data&lt;br /&gt;* put android files to /etc&lt;br /&gt;init.rc default.prop system.conf system.d init.gprs-pppd init.ril hcid.conf&lt;br /&gt;* put android init-modified in /&lt;br /&gt;* if you have jffs2 for / patch /init&lt;br /&gt;* modify with hexedit : "/system_property" -&gt; "/tmp/sy_property"&lt;br /&gt;* NOTE: jffs2 does not support memory mapped file&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;* patch /etc/init.rc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;---- begin : init.rc&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;## qemu-init {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;## exec /etc/qemu-init.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;## }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;network-property {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;exec /etc/set_network.sh&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;....&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;----- end : init.rc&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* put this script to /etc/&lt;br /&gt;&lt;br /&gt;------ begin : set_networkprop.sh&lt;br /&gt;&lt;script&gt;&lt;!-- D(["mb","export PATH\u003d/sbin:/bin:/usr/bin:\u003cwbr /\&gt;/system/bin\u003cbr /\&gt;\u003cbr /\&gt;LOCALIP\u003d`ifconfig|grep &amp;quot;inet addr&amp;quot; |head -1|sed -e\u003cbr /\&gt;&amp;quot;s/.*addr:\\([0-9\\.]*\\) .*/\\1/g&amp;quot;`\u003cbr /\&gt;DNSIP\u003d`nslookup localhost|grep Address|head -1|sed -e &amp;quot;s/.* //g&amp;quot;`\u003cbr /\&gt;\u003cbr /\&gt;/system/bin/setprop net.eth0.dns1 $DNSIP\u003cbr /\&gt;/system/bin/setprop net.gprs.local-ip $LOCALIP\u003cbr /\&gt;/system/bin/setprop ro.radio.use-ppp no\u003cbr /\&gt;/system/bin/setprop ro.config.nocheckin yes\u003cbr /\&gt;----- end : set_networkprop.sh\u003cbr /\&gt;\u003cbr /\&gt;* Execute a-run.sh as root\u003cbr /\&gt;----- begin : a-run.sh\u003cbr /\&gt;export PATH\u003d/system/sbin:/system/bin:\u003cwbr /\&gt;/sbin:/bin:/usr/bin\u003cbr /\&gt;export LD_LIBRARY_PATH\u003d/system/lib\u003cbr /\&gt;\u003cbr /\&gt;export ANDROID_BOOTLOGO\u003d1\u003cbr /\&gt;export ANDROID_ROOT\u003d/system\u003cbr /\&gt;export ANDROID_ASSETS\u003d/system/app\u003cbr /\&gt;export ANDROID_DATA\u003d/data\u003cbr /\&gt;export EXTERNAL_STORAGE\u003d/sdcard\u003cbr /\&gt;export DRM_CONTENT\u003d/data/drm/content\u003cbr /\&gt;\u003cbr /\&gt;### copy Android files to /etc if not exists there.\u003cbr /\&gt;copy_if_not_in_etc () {\u003cbr /\&gt;if /usr/bin/test ! -e /etc/$1; then\u003cbr /\&gt;cp -vR /home/android/etc/$1 /etc\u003cbr /\&gt;fi\u003cbr /\&gt;}\u003cbr /\&gt;copy_if_not_in_etc init.rc\u003cbr /\&gt;copy_if_not_in_etc default.prop\u003cbr /\&gt;copy_if_not_in_etc system.conf\u003cbr /\&gt;copy_if_not_in_etc system.d\u003cbr /\&gt;copy_if_not_in_etc init.gprs-pppd\u003cbr /\&gt;copy_if_not_in_etc init.ril\u003cbr /\&gt;copy_if_not_in_etc hcid.conf\u003cbr /\&gt;copy_if_not_in_etc set_networkprop.sh\u003cbr /\&gt;\u003cbr /\&gt;umask 000\u003cbr /\&gt;/bin/chmod -R a+rw /data /tmp\u003cbr /\&gt;/bin/chmod a+rw .\u003cbr /\&gt;/bin/chmod -R a+rw data*\u003cbr /\&gt;\u003cbr /\&gt;/init-modified &amp;amp;\u003cbr /\&gt;------ end : a-run.sh\u003cbr /\&gt;\u003cbr /\&gt;* have fun :)\u003cbr /\&gt;you may see android with network enabled\u003cbr /\&gt;------------------------------\u003cwbr /\&gt;------------------------------\u003cwbr /\&gt;--------------------\u003cbr /\&gt;* NOTICE\u003cbr /\&gt;(1) you need world wide write permission on\u003cbr /\&gt;* /data /tmp $PWD\u003cbr /\&gt;* /dev/binder /dev/fb0\u003cbr /\&gt;(2) never run dbus-daemon, app_process, runtime by yourself.\u003cbr /\&gt;(android) init will do it for you\u003cbr /\&gt;------------------------------\u003cwbr /\&gt;------------------------------\u003cwbr /\&gt;--------------------\u003cbr /\&gt;Lesson Learned ;\u003cbr /\&gt;* you don\'t need /data filesystem image from begining. /init will create\u003cbr /\&gt;",1] );  //--&gt;&lt;/script&gt;export PATH=/sbin:/bin:/usr/bin:&lt;wbr&gt;/system/bin&lt;br /&gt;&lt;br /&gt;LOCALIP=`ifconfig|grep "inet addr" |head -1|sed -e&lt;br /&gt;"s/.*addr:\([0-9\.]*\) .*/\1/g"`&lt;br /&gt;DNSIP=`nslookup localhost|grep Address|head -1|sed -e "s/.* //g"`&lt;br /&gt;&lt;br /&gt;/system/bin/setprop net.eth0.dns1 $DNSIP&lt;br /&gt;/system/bin/setprop net.gprs.local-ip $LOCALIP&lt;br /&gt;/system/bin/setprop ro.radio.use-ppp no&lt;br /&gt;/system/bin/setprop ro.config.nocheckin yes&lt;br /&gt;----- end : set_networkprop.sh&lt;br /&gt;&lt;br /&gt;* Execute a-run.sh as root&lt;br /&gt;&lt;br /&gt;----- begin : a-run.sh&lt;br /&gt;export PATH=/system/sbin:/system/bin:&lt;wbr&gt;/sbin:/bin:/usr/bin&lt;br /&gt;export LD_LIBRARY_PATH=/system/lib&lt;br /&gt;&lt;br /&gt;export ANDROID_BOOTLOGO=1&lt;br /&gt;export ANDROID_ROOT=/system&lt;br /&gt;export ANDROID_ASSETS=/system/app&lt;br /&gt;export ANDROID_DATA=/data&lt;br /&gt;export EXTERNAL_STORAGE=/sdcard&lt;br /&gt;export DRM_CONTENT=/data/drm/content&lt;br /&gt;&lt;br /&gt;### copy Android files to /etc if not exists there.&lt;br /&gt;&lt;br /&gt;copy_if_not_in_etc () {&lt;br /&gt;if /usr/bin/test ! -e /etc/$1; then&lt;br /&gt;cp -vR /home/android/etc/$1 /etc&lt;br /&gt;fi&lt;br /&gt;}&lt;br /&gt;copy_if_not_in_etc init.rc&lt;br /&gt;copy_if_not_in_etc default.prop&lt;br /&gt;copy_if_not_in_etc system.conf&lt;br /&gt;copy_if_not_in_etc system.d&lt;br /&gt;copy_if_not_in_etc init.gprs-pppd&lt;br /&gt;copy_if_not_in_etc init.ril&lt;br /&gt;copy_if_not_in_etc hcid.conf&lt;br /&gt;copy_if_not_in_etc set_networkprop.sh&lt;br /&gt;&lt;br /&gt;umask 000&lt;br /&gt;/bin/chmod -R a+rw /data /tmp&lt;br /&gt;/bin/chmod a+rw .&lt;br /&gt;/bin/chmod -R a+rw data*&lt;br /&gt;&lt;br /&gt;/init-modified &amp;amp;&lt;br /&gt;------ end : a-run.sh&lt;br /&gt;&lt;br /&gt;* have fun :)&lt;br /&gt;you may see android with network enabled&lt;br /&gt;---------------------------&lt;wbr&gt;--------------------&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_zj5fXVeZVUw/R1jtVvNXMDI/AAAAAAAAABA/risYW7ji9iM/s1600-h/Andriod_Map.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_zj5fXVeZVUw/R1jtVvNXMDI/AAAAAAAAABA/risYW7ji9iM/s400/Andriod_Map.jpg" alt="" id="BLOGGER_PHOTO_ID_5141119932348969010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* NOTICE&lt;br /&gt;(1) you need world wide write permission on&lt;br /&gt;* /data /tmp $PWD&lt;br /&gt;* /dev/binder /dev/fb0&lt;br /&gt;(2) never run dbus-daemon, app_process, runtime by yourself.&lt;br /&gt;(android) init will do it for you&lt;br /&gt;----------&lt;wbr&gt;------------------------------&lt;wbr&gt;--------------------&lt;br /&gt;&lt;br /&gt;Lesson Learned ;&lt;br /&gt;* you don't need /data filesystem image from begining. /init will create&lt;br /&gt;&lt;script&gt;&lt;!-- D(["mb","* you need /data /tmp write permissions for other(not root) users (app)\u003cbr /\&gt;* w/o, app may killed with Segmentation Fault\u003cbr /\&gt;* you need /init(of android) process for system property service\u003cbr /\&gt;* / should be ramfs for memory mapped file /system_property created by /init\u003cbr /\&gt;* you can edit /init with hexedit ; /system_property -&gt; /tmp/sy_property\u003cbr /\&gt;* you need system property service for network (net.eth0.dns1 for DNS\u003cbr /\&gt;lookup)\u003cbr /\&gt;* to see log (in strace detail) you need /dev/log/{main,events,radio}\u003cbr /\&gt;* just do\u003cbr /\&gt;# rm /dev/log (if you have)\u003cbr /\&gt;# mkdir /dev/log;touch /dev/log/{main,events,radio}\u003cbr /\&gt;* you can see usefull infos from strace log and /dev/log/main\u003cbr /\&gt;* you may run /init on some directory with write permission.\u003cbr /\&gt;* init create data/ databases on running directory which cannot found in\u003cbr /\&gt;emulator.\u003cbr /\&gt;------------------------------\u003cwbr /\&gt;------------------------------\u003cwbr /\&gt;--------------------\u003cbr /\&gt;\u003cbr /\&gt;Porting Notes\u003cbr /\&gt;\u003cbr /\&gt;(1) FrameBuffer\u003cbr /\&gt;* 안드로이드의 fb0 사용 순서\u003cbr /\&gt;1. /dev/graphics/fb0\u003cbr /\&gt;2. /dev/fb0\u003cbr /\&gt;* framebuffer 크기\u003cbr /\&gt;* double buffer를 memory mapped file로 사용.\u003cbr /\&gt;* driver 내부에서 세로 가상 해상도를 실제의 2배로 만들어줘야함\u003cbr /\&gt;* xres_virtual \u003d xres\u003cbr /\&gt;* yres_virtual \u003d yres * 2\u003cbr /\&gt;* double buffering\u003cbr /\&gt;* IOCTL XXXX 로 y좌표 0과 yres를 전환\u003cbr /\&gt;\u003cbr /\&gt;(2) for Touch Screen\u003cbr /\&gt;* Android(emulator binary) 는 input device를 직접 open하며, 화면의 절대\u003cbr /\&gt;좌표가 반환되는 것을 전재로 이용함\u003cbr /\&gt;* 기존 driver들은 touch sensor의 좌표계를 직접 return\u003cbr /\&gt;* ts-lib를 touch driver내로 porting하여 normalization 처리.\u003cbr /\&gt;* calibrate값은 sysfs를 통해 boot과정에서 자동 입력\u003cbr /\&gt;\u003cbr /\&gt;(3) for Network\u003cbr /\&gt;* device의 network 설정이 정상이라면, android는 OS의 network을 그대로 이용함\u003cbr /\&gt;* DNS 처리는 예외. 다음 순서로 lookup함\u003cbr /\&gt;1. /system/etc/hosts lookup\u003cbr /\&gt;2. system_property [net.eth0.dns1]\u003cbr /\&gt;* system_property는 android init process가 unix domain socket\u003cbr /\&gt;@property_service 를 통해 제공\u003cbr /\&gt;* 따라서 Network 운용을 위해서는 android init process가 실행될 필요가 있\u003cbr /\&gt;으며,\u003cbr /\&gt;/system/bin/setprop 명령 또는 /etc/default.prop, /data/local.prop 파일을\u003cbr /\&gt;통해 net.eth0.dns1 을 설정해두어야함.\u003cbr /\&gt;\u003cbr /\&gt;",1] );  //--&gt;&lt;/script&gt;* you need /data /tmp write permissions for other(not root) users (app)&lt;br /&gt;* w/o, app may killed with Segmentation Fault&lt;br /&gt;* you need /init(of android) process for system property service&lt;br /&gt;* / should be ramfs for memory mapped file /system_property created by /init&lt;br /&gt;* you can edit /init with hexedit ; /system_property -&gt; /tmp/sy_property&lt;br /&gt;* you need system property service for network (net.eth0.dns1 for DNS&lt;br /&gt;lookup)&lt;br /&gt;* to see log (in strace detail) you need /dev/log/{main,events,radio}&lt;br /&gt;* just do&lt;br /&gt;# rm /dev/log (if you have)&lt;br /&gt;# mkdir /dev/log;touch /dev/log/{main,events,radio}&lt;br /&gt;* you can see usefull infos from strace log and /dev/log/main&lt;br /&gt;* you may run /init on some directory with write permission.&lt;br /&gt;* init create data/ databases on running directory which cannot found in&lt;br /&gt;emulator.&lt;br /&gt;----------------------------&lt;wbr&gt;--------------------&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_zj5fXVeZVUw/R1jsCPNXMCI/AAAAAAAAAA4/rDGPPY2iLPE/s1600-h/Andriod_Web.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 266px; height: 199px;" src="http://bp1.blogger.com/_zj5fXVeZVUw/R1jsCPNXMCI/AAAAAAAAAA4/rDGPPY2iLPE/s320/Andriod_Web.jpg" alt="" id="BLOGGER_PHOTO_ID_5141118497829892130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ok, done for now, we will keep posting our next improvement later.&lt;br /&gt;If you have any question, leave a message to this blog.&lt;br /&gt;&lt;br /&gt;Good Luck!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3723835365102661922-6595367832313868120?l=nemustech.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nemustech.blogspot.com/feeds/6595367832313868120/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3723835365102661922&amp;postID=6595367832313868120' title='15개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/6595367832313868120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3723835365102661922/posts/default/6595367832313868120'/><link rel='alternate' type='text/html' href='http://nemustech.blogspot.com/2007/12/android-porting-to-real-target-hw.html' title='Android Porting to Real Target HW'/><author><name>Zaharang</name><uri>http://www.blogger.com/profile/08953523725172158062</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_zj5fXVeZVUw/R1joNfNXMAI/AAAAAAAAAAo/Rp1oWGsy9oc/s72-c/Andriod_FullSet.jpg' height='72' width='72'/><thr:total>15</thr:total></entry></feed>
