vmware에 ubuntu 운영체제에 안드로이드 소스 설치후에 소스를 볼라면, vi와 cscope의 달인이 아니면 보기가 너무 힘들다.  그래서, 삼바 서버를 설치해두면 두고 두고 쓰기 편하다.

삼바를 설치후, 소스 보는 것이 편해진다.



삼바 설치

$ sudo apt-get install samba smbfs

삼바 환경설정

$ sudo gedit /etc/samba/smb.conf
#   security = user
-> (수정)
   security = user

 

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
;   read only = yes
-> (추가)
# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
;   read only = yes
writable = yes


;   create mask = 0700
-> (수정)
   create mask = 0700

;   directory mask = 0700
-> (수정)
   directory mask = 0700

;   valid users = %S
-> (수정)
   valid users = %S



#======================= Share Definitions =======================
바로 밑에 추가


[root]
comment = Root
path = /
browable = yes
writable = yes





환경 설정 확인
root 계정 접근을 확인한다.

$ sudo testparm


....
[root]
 comment = Root Directory
 path = /
 valid users = %S
 read only = No
 create mask = 0700
 directory mask = 0700

......


패스워드 설정

$ sudo smbpasswd -a root
New SMB password:
Retype new SMB password:
Added user root.


ip 확인

$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0c:29:ff:fb:0a 
          inet addr:192.168.150.128


리눅스에서 나와 윈도우 탐색기에서 접근
패스워드는 smbpasswd에서 입력한 계정 paswd 가능하다.





repo로 받은 안드로이드 소스 보기가 편하다..




* 예전(7,8년 전)에는 삼바 설정 파일 수정후에 삼바 데몬을 재시작했는데..
ubuntu 에서 설치후에는 samba 설정 파일만 수정하면, 알아서 자동으로 읽는다.. 완전 신기.
그리고, 속도도 빨라졌다. 삼바가 이렇게 좋아질 줄이야!!!



그리고, 이클립스를 이용해서 소스를 확인할 때 볼 수 있는 소스를 복사해서 사용한다.
framework/base/core/java 밑에 있는 파일을 로컬로 복사한다. 그리고, 이클립스에서 안드로이드 소스에 해당되는 곳에 F3를 눌러 복사한 folder 로 지정하서 소스를 보면 끝..

\\ip\안드로이드소스받은위치\frameworks\base\core\java


네트웍 드라이드 연결을 할 수 도 있다.
윈도우 탐색기->도구->네트웍드라이브 연결

드라이브이름과 , \\192.168.158.128\root\work 각각 넣어주고 엔터하면 접근된다.

Posted by '김용환'
,

ubuntu 11.04 (내가 제일 좋아하는 ubuntu 버전)에서 android 4점대 컴파일이다. 
공식싸이트(http://source.android.com/source/downloading.html)를 기준으로 설명한다.

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev  ant gcc-multilib g++-multilib

$ mkdir ~/bin

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

$ chmod a+x ~/bin/repo

$ mkdir my-android

$ cd my-android

$ ~/bin/repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

$ ~/bin/repo sync
(시간 소요 많이 됨)

$  source build/envsetup.sh


$ lunch full-eng

============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=4.0.1
TARGET_PRODUCT=full
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=ITL41D
============================================

$ make

(시간 소요 많이 됨) 










그외에..  안드로이드 4.01 용 갤럭시 넥서스와 판다보드 드라이버가 공개되었다.  커스텀 롬을 기대할 수 있을 것 같다~ 멋진 분들이 만들어주실 커스텀 롬 짱!
http://code.google.com/android/nexus/drivers.html





삼성 갤럭시 넥서스의 gsm의 경우는 tgz로 되어 있는데, 그거 다운받으면 아래와 같은 shell이 있는데, 그것을 실행시키면 드라이버를 다운받을 수 있다.

$ chmod 755 extract-samsung-maguro.sh

Type "I ACCEPT" if you agree to the terms of the license: I ACCEPT



 
Posted by '김용환'
,

android 타겟이 arm이라서 x86도 포팅하면 재미있겠다하는 생각이 들었는데. 이미 그런게 있었다. 흘~

android-x86 (http://www.android-x86.org)이라는 싸이트에서 참조해서 진저 브레드용 안드로이드를 올려보았다. 아직 싸이트에서는 2.3 진저브레드 iso 파일이 없어서 직접 소스 컴파일을 해보았다. 


$ mkdir android-x86
$ cd android-x86
$ ~/bin/repo init -u git://git.android-x86.org/manifest.git -b gingerbread-x86
$ ~/bin/repo sync 
$ make iso_img TARGET_PRODUCT=generic_x86

(컴파일시간은 엄청 걸림)

$ ls  out/target/product/generic_x86/generic_x86.iso 
out/target/product/generic_x86/generic_x86.iso




generic_x86 을 파일을 vmware를 이용해서 읽게 한다.

 







특징적인 것은 일부 구글 앺인 market이 없다는 게 (정확히는 몰라서..  정책때문에 그런가?? 싶기도 하고) App store 같은게 있기는 한데, 활성화는 안되었다. 

2.3 진저브레드는 좀 불안한거 같다. App Store에 받은 어플리케이션이 실행이 안되고 crash되는 부분이 조금 있다. 

2.2가 그나마 안정적인듯 하다. 

일반 어플리케이션이 동작이 안되는 이유를 발견했는데. 그것은 어플리케이션이 arm library에 dependent (/lib/armeabi/libW2A-jni.so) 한 부분이 있다. 그래서 x86에서는 동작이 되지 않된 것 같다. 



Posted by '김용환'
,


마인드 스톰 NXT을 잘 쓰기 위해서는 안드로이드 개발 환경을 셋팅해야 한다. 내일 부터 잘 쓸 수 있을 것 같다.


1. Motoroi 환경 설정

설정 -> 응용프로그램 -> 개발 -> USB 디버깅, 켜진 상태로 유지 를 on으로 셋팅


2. PC 에 드라이버 설치

http://www.mymotorola.co.kr/product/PrdDownProduct.aspx?id=0045

32비트 OS이면 USB Driver 버튼을 선택하고, 압축파일에 있는 driver installer를 설치한다.

3. motorio를 pc usb 포트에 꽂는다.
그러면, 윈도우 7이라면,  제어판 -> 장치관리자 의 디스크 드라이브에 Motorloa xt720 drive와 ADB Interface로 mot composit ADB interface가 생긴 것을 확인할 수 있다.

 







4. 이클립스를 설치한다.  난 STS가 편해서 STS로 설치
http://www.springsource.com/downloads/sts


아래 설치

Windows springsource-tool-suite-2.7.1.RELEASE-e3.7-win32-installer.exe 361MB


5. 안드로이드 SDK 설치

안드로이드 개발자 싸이트에 접속하여
http://developer.android.com/index.html

다운로드 페이지에 접속하여 윈도우 설치 판을 설치한다.
http://developer.android.com/sdk/index.html




설치하고 나면, SDK Manager를 실행하냐구 물어본다. 실행하면 설치한다.



6. 이클립스 플러그인 설치
메뉴에서  Help->install new software를 선택하고, 주소에 다음 내용을 넣는다.
https://dl-ssl.google.com/android/eclipse/


약관이 뜨면, 승인하고, Next, Finish~


7. SDK와 연동
메뉴에서 Window -> Preferences 로 들어가면 왼쪽 두번째에 android가 보인다


SDK 위치(C:\Program Files\Android\android-sdk(를 SDK Location 란에 넣고, ok 버튼을 클릭한다.
그런데.. 디렉토리 명안에서 스페이스가 있으면 문제가 된다.


invalid command-line parameter: Files\Android\android-sdk 이렇게 뜰 수 있다.

C:\Progra~1\Android\android-sdk  이렇게 SDK Location을 채워줘야 한다.








Installed package에 설치되었는지 확인하고, 없으면, 설치해야 한다. 만약 없다면.. http://developer.android.com/sdk/android-2.2.html 를 본다. sdk android 2.2는 sdk api 12라고 나온다.
available packages 에서 두가지를 선택한다.


 



Virtual device 에서 new 버튼을 선택한다.



다음과 같이 설정한다.




9. 에뮬레이터를 돌려본다.
Virtual devices에서 Start 버튼을 선택한다.


여기까지는 기본 개발환경 셋팅이다.


10. 이클립스 DDMS를 선택한다.


DDMS 화면에서 보면, 모토롤라가 연결되었음을 확인할 수 있다.




Devices의 카메라 아이콘을 선택하면, 캡쳐도 할 수 있다.



11. 간단한 어플을 돌려본다.

Android 프로젝트, 2.2 버전으로 맞추놓고 프로젝트를 생성한다.

Run AS-> Run Android App 하면, motori 어플이 실행되는지 지켜보면 된다.





환경 셋팅 완료. 내일은 안드로이드 블루투쓰~ 공부
Posted by '김용환'
,



* 아이폰

<nxtblock>
http://www.nxtblock.com/p/downloads.html
클라이언트는 : NXT-G와 비슷한 개념에서 만들었지만,loop와 switch는 없다고 함


<아이폰-사파리>
아이폰2대와 GWT, Safari를 이용해서 센터를 바탕으로로봇을 통제하는 것
http://blog.naver.com/PostView.nhn?blogId=onnex&logNo=105599851


<legodrive>
cydia에서만 돌아가는 어플
http://www.saygin.gen.tr/personal/Lego-Robot-with-iPhone-Bluetooth/
http://wn.com/Lego_Robot_with_iPhone_Bluetooth_LegoDrive


<inxt>
http://www.youtube.com/watch?v=gzTY5UjUCm8
http://itunes.apple.com/us/app/inxt-remote/id317399938?mt=8
4.2에서 문제가 많은 것으로 알려져 있음
서버에 버그가 많아서 평이 좋지 않음


<nxt drive>
http://www.youtube.com/watch?v=XrAQ7uodQeo
정체를 모르겠음


<kleebots>
가입을 통해서 이것저것 할 수 있게 하는데, 테스트해 볼 필요 있음
http://www.kleekbots.com/
http://www.robots-dreams.com/2010/12/kleekbots-control-lego-mindstorms-robots-with-the-iphone-video.html


<아이폰을 이용한 NXT 통신>
할 수 있다 가능성이 있는 내용.
http://www.xyster.net/blog/?p=59#comments
http://www.xyster.net/blog/


<Lego nxt 블루투쓰 리모트 콘트롤 셋업 화면>
http://www.youtube.com/watch?v=W6nQ0y3MauM&feature=related

 

 

* 안드로이드
<app inventor에 있는 nxt drive>
블루투쓰를 이용해서 마인스톰 통제하는 것
http://appinventor.googlelabs.com/learn/reference/components/legomindstorms.html
http://code.google.com/p/app-inventor-for-android/source/browse/trunk/src/components/runtime/components/android/NxtDrive.java?r=50


<NxtRemote 3.0 어플>
http://mac.softpedia.com/get/Utilities/Lego-NXT-Remote.shtml
http://www.appbrain.com/app/nxtremote/com.smartphoneremote.nxtremote

<NXT Remote Control>
http://www.appbrain.com/app/nxt-remote-control/org.jfedor.nxtremotecontrol

이외 엄청많은 어플들...

 

* MS의 Robotics Developer Studio(MRDS)
Lego Mindstorms NXT 2.0 Bot controlled using MRDS
http://www.codeproject.com/KB/system/LegoMindstorms2MRDS.aspx?display=Mobile
http://www.youtube.com/watch?v=YUXAIZXGfQk

 

 

 

Posted by '김용환'
,

http://jdesbonnet.blogspot.com/2011/05/arduino-to-android-io-on-cheap-aka-poor.html



wifi 대신 HTC 폰에 있는 magnetometer 센터를 이용하여 아두이노에서 연결된 1cm 직경의 코일 안테나에 자기력을 만들어 통신을 할 수 있는 데모이다. 7bps라는 엄청난 열악한 bandwidth에서 통신.





핀 13번에 wave를 쏜다. 아두이노는 단파이기 때문에 송신만 할 수 있다.


코드는 간단하다. "Hello World!"라는 단어를 1.4초 간격으로 데이터를 전달한다.

#define BIT_DELAY 140

int i;
char *text = "Hello World! ";

void setup() {
  pinMode(13,OUTPUT);
}

void loop() {
 
  char *s;
  s = text;
  while (*s != 0) {
    transmitByte(*s++);
  }
  
  delay (BIT_DELAY*10); 
}
/**
 * Bit bang a byte
 */
void transmitByte (byte c) {
  
  // Start bit
  digitalWrite (13,1);
  delay(BIT_DELAY);
  
  // Data bits
  for (i = 0; i < 8; i++) {
      digitalWrite (13, ( (c&0x80)!=0 ? 1 : 0) );
      delay(BIT_DELAY);
      c <<= 1;
  }
  
  // Stop bit
  digitalWrite (13, 0);
  delay(BIT_DELAY);
}




실제 동영상은 이렇다.




Posted by '김용환'
,