1. android build 환경 구성

ubuntu 14.04 LTS 기준

sudo apt-get install bison g++-multilib git gperf libxml2-utils make python-networkx zlib1g-dev:i386 zip


https://source.android.com/source/initializing.html

자세한 사항은 상단 링크 참조

 

http://thdev.net/498

기타 한국어 참고 페이지

 

https://github.com/beagleboard/linux

http://icculus.org/~hendersa/android/

그대로 따라 진행하면 된다(android 4.4 kikat + 3.8 linux kernel)


왜 3.8을 쓰냐면 3.8 kernel 부터 devicetree가 적용 되어있다

만약에 다른 버전을 쓰고 싶다면 수동으로 devicetree를 적용하고 패치해야하는데 음...ㅋㅋㅋ


old version 참고(linux 3.2 kernel)

https://github.com/csimmonds/bbb-android-device-files/tree/kk4.4-sdcard


안드로이드 말고 일반 linux kernel 경우 링크 참고

https://www.eewiki.net/display/linuxonarm/BeagleBone+Black#BeagleBoneBlack-LinuxKernel


android adb linux kernel config 참고

http://nelenkov.blogspot.kr/2013/07/building-wireless-android-device.html

1. Configure FunctionFS support in the kernel (CONFIG_USB_FUNCTIONFS=y):

Device Drivers -> USB Support -> USB Gadget Support -> USB Gadget Driver -> Function Filesystem


2. Modify the boot parameters in uEnv.txt to set the vendor and product IDs, as well as the device serial number

g_ffs.idVendor=0x18d1g_ffs.idProduct=0x4e26 g_ffs.iSerialNumber=<serial>


3. Setup the FunctionFS directory and mount it in your init.am335xevm.usb.rc file:

on fs

mkdir /dev/usb-ffs 0770 shell shell

mkdir /dev/usb-ffs/adb 0770 shell shell

mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000


4. Delete all lines referencing /sys/class/android_usb/android0/*. (Those nodes are created by the native Android gadget driver and are not available when using FunctionFS.)

아 몰라 이렇게 복잡하게 안하고 그냥 USB Gadget Driver Function FileSystem을 활성화 했다

컴파일 할 때 님이 원하는게 usb gadget driver function fs 맞나요? 라고 몇 번 문의가 왔던거로 기억한다 디폴트 상태 그대로 yes

이 부분을 잘못하면 usb adb 통신이 잘 안되는 골까는 상황이 발생한다

그리고 망할놈의 virtualbox 는 될 때도 있고 안될 때도 있고 그렇다 참 지랄맞아......

슬프지만 host가 linux이길 추천한다



컴파일 시간은 굉장히 오래 걸린다



i5-3570, 4GB ram, hdd기준

repo 통해서 aosp source 가져오는데 1~2시간 가량 걸렸고

aosp kernel build 하는데 5시간 걸렸다(make -j4)

sgx driver 함께 kernel 파일을 통합해서 이미지를 만드는데 2시간 가량 걸린 같다

예전에 xeon 2690 dual을 쓰던 시절이 간절히 그리운 순간이었다 


여기까지 하는데 70GB 하드디스크 용량이 소요되었음

sd card 여러 파티션으로 나누고 dd 카피하는 부분은 용량을 어떻게 바꿀지 모르겠다




2. devicetree

참고 링크들

http://processors.wiki.ti.com/index.php/AM335x_Android_Device_Tree_Integration

http://elinux.org/BeagleBone_and_the_3.8_Kernel

http://slowbootkernelhacks.blogspot.kr/2014/03/beaglebone-linux-kernel310x-programming.html

http://www.devicetree.org/Device_Tree_Usage


컴파일 이전에 사실 devicetree를 구현하는게 맞지만 컴파일 후에 해도 괜찮다

make dtbs 해주면 dtb가 이쁘게 바로 만들어지니까


arch/arm/boot/dts/am335x-boneblack.dts

에 적당한 dtsi 파일을 만들어서 include 했다

그런데 말이다 분명 3.14 kernel 에서는 #include 가 먹혔는데 3.8에서는 / include / "spidev-bbb.dtsi" 이런식으로 써야했다


dtsi 파일 내용은 별거 없다 spidev 참고해서 만든거다


gpio는 갠적으로 필요해서 넣은거니 ocp랑 gpio는 빼도 상관없다

나중에 device driver에서 spi register 할 때 compatible 쪽에 bbbspidev를 맞춰주면 ok


dtbs 컴파일은 빠르게 끝난다

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs

아마 am335x-boneblack.dtb 파일만 부트 디렉토리와 교체해서 리붓하면 ok


dtc로 직접 컴파일 하면 일부 내역이 제외되는거 같다 make했을 때랑 다른 blob이 만들어진다(dtc 1.4.0)



dtb가 제대로 만들어졌나 궁금할 경우 

dtc -I dtb am335x-boneblack.dtb -O dts -o export.dts

옵션중 -I(대문자 i 다, 망할 font)

위 명령어 구문을 사용해서 dtb를 dts로 변환해서 정확히 잘 정의되었는지 확인하기 바란다



3. 확인

/sys/devices/ocp.3/48030000.spi/spi_master/spi1/spi1.0/modalias

cat으로 확인해본다 

spi:bbbspidev로 들어갔는지 


만약 확인이 되었다면 devicetree가 정확히 일단 등록이 되었다고 볼 수 있으므로 하드웨어 테스트를 한다

spi d0와 d1을 전선으로 직접 1:1 연결

그리고 간단한 통신을 했을 때 tx로 보낸 command가 그대로 rx로 찍혀 나오면 ok

만약 뭔가 실패하면 음...devicetree 다시 확인해봐야지 뭐


'devel > etc' 카테고리의 다른 글

usb otg kernel config(linux usb over ethernet)  (0) 2016.01.27
beaglebone black linux kernel 환경 구성 추천  (0) 2016.01.18
intel software academic program  (0) 2015.12.10
minimal linux live  (0) 2015.12.10
git  (0) 2015.09.11
Posted by 쵸코케키

블로그 이미지
chocokeki
쵸코케키

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.3
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

최근에 올라온 글

최근에 달린 댓글

글 보관함