vagrant
docker-machine
Root FS 설치 후 아래작업진행
https://github.com/hypriot/os-rootfs
https://github.com/hypriot/os-rootfs/blob/master/builder/build.sh
상위 Root FS의 Sources.list
https://github.com/hypriot/os-rootfs/tree/master/builder/files/etc/apt
https://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidc2&bid=7436
Circle CI 사용 및 Docker 이용
https://github.com/hypriot/image-builder-odroid-c2
Travis CI 사용 및 Docker 이용
https://github.com/hypriot/image-builder-odroid-xu4
index.html
https://github.com/hypriot/hypriot.github.io
https://blog.hypriot.com/
https://blog.hypriot.com/downloads/
https://blog.hypriot.com/faq/
https://blog.hypriot.com/post/making-of-hypriotos/
Filesystem 구축 (최신정보)
https://kyuhyuk.kr/article/linux/2015/11/23/How-to-Make-a-Micro-Linux
github.io page 만들기
https://pages.github.com/
https://username.github.io.
github.io 만들기
https://varian-lee.github.io/jekyll/
https://dreamgonfly.github.io/2018/01/27/jekyll-remote-theme.html
글 혹은 그림의 출처가 문제있다면 수정 및 삭제하겠습니다. 우측의 Tags 와 검색기능을 이용하여 편하게 찾을 수 있습니다.
Please check buttons on the right like Tags and language options if can't read this blog (*mobile not support)
10/11/2018
4/10/2015
ODOID Lollipop Porting-2 (이 부분을 끝내지를 못함)- 추후 삭제
수정부분요약 (회사일로 바뻐서 이 일을 멈추기로함)
1. Makefile
Android.mk : 기본 Makefile, TAGET_PRODUCT= odroidx2 일 경우 동작
AndroidProducts.mk : odroidx2.mk wrap Makefile
BoardConfig.mk : Board기본 설정 on/off 제어
CleanSpec.mk
device.mk : 아래내용 수정
* PRODUCT_COPY_FILES 중 (Ultra_Explorer.apk,DicePlayer.apk 복사방지 막음)
odroidx2.mk : PRODUCT INFO
2. vendorsetup.sh : odroidx lunch 항목에 등록 3. drivers : driver's ko (wifi ,snd,기타)
4. conf : 초기화 설정
Memory 관련 문제
vi hardware/libhardware/include/hardware/gralloc.h:
GRALLOC_USAGE_YUV_ADDR = 0x04000000, //새로추가
vi hardware/samsung_slsi/exynos4/libgralloc_ump/gralloc_module.cpp
// getphys: gralloc_getphys, //not used, 489 getphys 안쓰도록 수정
https://source.android.com/devices/halref/structgralloc__module__t.html
https://source.android.com/devices/graphics/index.html
Audio 관련문제
https://source.android.com/devices/audio/implement.html
http://blog.eairship.kr/175
hardware/hardkernel/libaudio/AudioHardware.cpp: In function 'android_audio_legacy::AudioHardwareInterface* android_audio_legacy::createAudioHardware()':
hardware/hardkernel/libaudio/AudioHardware.cpp:2324:30: error: cannot allocate an object of abstract type 'android_audio_legacy::AudioHardware'
return new AudioHardware();
vi device/hardkernel/odroidx2/BoardConfig.mk
BOARD_USES_ALSA_AUDIO := true
BUILD_WITH_ALSA_UTILS := true
ref.
https://groups.google.com/forum/#!topic/android-porting/w487bZaVzxA
*Android Porting Forum
https://groups.google.com/forum/#!forum/android-porting
vi hardware/hardkernel/libcamera_webcame/Android.mk
LOCAL_C_INCLUDES += \
$(TOP)/system/media/camera/include \ // 새로운 include 추가
$(TOP)/frameworks/base/include/android_runtime \
참조
hardware/libhardware_legacy/audio/audio_hw_hal.cpp
hardware/libhardware_legacy/include/hardware_legacy/AudioHardwareInterface.h
external/tinyalsa/include/tinyalsa/asoundlib.h
vi hardware/hardkernel/libcamera_webcame/V4L2Camera.h
device/hardkernel/odroidx2
1. Makefile
Android.mk : 기본 Makefile, TAGET_PRODUCT= odroidx2 일 경우 동작
AndroidProducts.mk : odroidx2.mk wrap Makefile
BoardConfig.mk : Board기본 설정 on/off 제어
CleanSpec.mk
device.mk : 아래내용 수정
* PRODUCT_COPY_FILES 중 (Ultra_Explorer.apk,DicePlayer.apk 복사방지 막음)
odroidx2.mk : PRODUCT INFO
2. vendorsetup.sh : odroidx lunch 항목에 등록 3. drivers : driver's ko (wifi ,snd,기타)
4. conf : 초기화 설정
Memory 관련 문제
vi hardware/libhardware/include/hardware/gralloc.h:
GRALLOC_USAGE_YUV_ADDR = 0x04000000, //새로추가
vi hardware/samsung_slsi/exynos4/libgralloc_ump/gralloc_module.cpp
// getphys: gralloc_getphys, //not used, 489 getphys 안쓰도록 수정
https://source.android.com/devices/halref/structgralloc__module__t.html
https://source.android.com/devices/graphics/index.html
Audio 관련문제
https://source.android.com/devices/audio/implement.html
http://blog.eairship.kr/175
hardware/hardkernel/libaudio/AudioHardware.cpp: In function 'android_audio_legacy::AudioHardwareInterface* android_audio_legacy::createAudioHardware()':
hardware/hardkernel/libaudio/AudioHardware.cpp:2324:30: error: cannot allocate an object of abstract type 'android_audio_legacy::AudioHardware'
return new AudioHardware();
vi device/hardkernel/odroidx2/BoardConfig.mk
BOARD_USES_ALSA_AUDIO := true
BUILD_WITH_ALSA_UTILS := true
ref.
https://groups.google.com/forum/#!topic/android-porting/w487bZaVzxA
*Android Porting Forum
https://groups.google.com/forum/#!forum/android-porting
vi hardware/hardkernel/libcamera_webcame/Android.mk
LOCAL_C_INCLUDES += \
$(TOP)/system/media/camera/include \ // 새로운 include 추가
$(TOP)/frameworks/base/include/android_runtime \
참조
hardware/libhardware_legacy/audio/audio_hw_hal.cpp
hardware/libhardware_legacy/include/hardware_legacy/AudioHardwareInterface.h
external/tinyalsa/include/tinyalsa/asoundlib.h
vi hardware/hardkernel/libcamera_webcame/V4L2Camera.h
//#include linux/videodev.h #include linux/videodev2.hhttp://w3facility.org/question/flashcam-doesnt-compile-videodev-h-not-found/
4/08/2015
ODROID-X2 Lollipop Porting-1 - 추후 삭제
1. How To Download Android Source ( Lollipop)
A. 설정
B. 개발자 version 혹은 release version으로 download하자
*download
C. download 후 확인
1.1 repo 설정
repo는 git를 관리는 하는 linux tool로 아래에서 간단히 사용방법을 숙지하자.
처음 사용한다면, 아래의 사이트를 참조하여, download를 받고 기본설정하자.
* https://ahyuo79.blogspot.com/search/label/SCM-GIT
1.2 repo와 git 기본사용법
android source를 수정을 한 후, repo status를 보면 아래와 같이 수정 및 새로추가한 것을 알수있다.
-m : 수정
- : new file
세세한 download 혹은 상태를 보고 싶다면 git status를 사용하자.
아래와 같이 File 삭제 새로 추가 및 수정 했다면 아래와 같이
git status로 보면 확인하고, 다른명령으로 복구하자.
*아래사이트에서 위의 branch 주소가 변경이 될 수 있으므로 확인하자.
How to download source
http://source.android.com/source/downloading.html ( how to download )
https://android.googlesource.com/platform/manifest/+refs ( how to check branch ,tags)
http://source.android.com/source/build-numbers.html#source-code-tags-and-builds
(* how to check branch, tags)
2. 기존 odroid 분석
odroid에서 제공하는 shell을 분석하여 Build 구성을 파악.
2.1 odroid build shell 분석
$ vi build_android.sh
기본구성은 다음과 같다.
1. source build/envsetup.sh을 하고 나면 device의 내의 vendor를 include 함.
2. lunch로 등록된 이 부분을 설정을 시도를 한다.
3. platform을 빌드를 시작
이부분은 다른 Android에도 동일
* lunch 관련부분 설명
http://chlrbgh0.tistory.com/207
* envsetup.sh 설명
http://www.kaisyu.com/notes/google-android/android-envsetupsh
http://itmir.tistory.com/450
* 기본 Build 방법
http://source.android.com/source/building-running.html
http://elinux.org/Android_Build_System
2.2 How To build Android
ref. http://ahyuo79.blogspot.com/2014/01/blog-post_7416.html
2.3 odroid 의 포팅된 부분 파악
아래의 결과물로 쉽게 관련 Makefile들을 찾을 수 있다.
쉽게 결과물을 얻으며, 포팅된 부분은 device와 hardware 두 directory 부분
3. android-5.1.0_r3 구조파악 및 적용
필요한 부분만 고쳐서 적용하기로 함.
Ref. http://ahyuo79.blogspot.com/2014/01/blog-post.html?zx=1016342afcd2910e
4. Build 도중 발생 하는 문제
Build를 하다보면, Java version 문제 , oracle version 문제 등 문제가 발생할 경우
java version을 변경해 보자.
현재 나의 java를 보니, openjdk가 없음으로, 이를 설치
http://source.android.com/source/initializing.html
* kikat은 oracle 6을 lolipop은 openjdk 7이 필요 한다고 한다.
* version 이 정확이 맞이 않으면 에러가 발생.
아래와 같이 사용
jdk_swich.sh
* Java 관련부분 error
http://stackoverflow.com/questions/27955851/android-5-0-build-errors-with-java-version-issue
A. 설정
$ mkdir lollipop $ cd lollipop
B. 개발자 version 혹은 release version으로 download하자
*develop version init
$ repo init -u https://android.googlesource.com/platform/manifest -b lollipop-dev
*release version init
$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.0_r3
*download
$ repo sync -qc -j4
C. download 후 확인
$ ls abi bootable dalvik device frameworks libnativehelper packages sdk art build developers docs hardware Makefile pdk system bionic cts development external libcore ndk prebuilts tools
1.1 repo 설정
repo는 git를 관리는 하는 linux tool로 아래에서 간단히 사용방법을 숙지하자.
처음 사용한다면, 아래의 사이트를 참조하여, download를 받고 기본설정하자.
* https://ahyuo79.blogspot.com/search/label/SCM-GIT
1.2 repo와 git 기본사용법
android source를 수정을 한 후, repo status를 보면 아래와 같이 수정 및 새로추가한 것을 알수있다.
-m : 수정
- : new file
$ repo status project build/ (*** NO BRANCH ***) -m envsetup.sh project hardware/libhardware/ (*** NO BRANCH ***) -m include/hardware/gralloc.h project hardware/libhardware_legacy/ (*** NO BRANCH ***) -- audio/audio_hw_hal.kitkat.cpp -- audio/audio_hw_hal.lollipop.cpp
세세한 download 혹은 상태를 보고 싶다면 git status를 사용하자.
아래와 같이 File 삭제 새로 추가 및 수정 했다면 아래와 같이
git status로 보면 확인하고, 다른명령으로 복구하자.
- 삭제: deleted:
- 수정: modified:
- 새로추가: Untracked files:
$ git status # Not currently on any branch. # Changes not staged for commit: # (use "git add/rm file..." to update what will be committed) # (use "git checkout -- file..." to discard changes in working directory) # # deleted: Android.mk // 지워진 파일 # # Untracked files: # (use "git add file..." to include in what will be committed) # # audio_hw_hal.kitkat.cpp // 새로 추가한 파일 # audio_hw_hal.lollipop.cpp // 새로 추가한 파일git checkout으로 Android.mk 복구
$ git checkout Android.mk // Android.mk 삭제되어있기에, 이를 복구 $ git status // 복구 후 상태확인 # Not currently on any branch. # Untracked files: # (use "git add file..." to include in what will be committed) # # audio_hw_hal.kitkat.cpp # audio_hw_hal.lollipop.cpp
*아래사이트에서 위의 branch 주소가 변경이 될 수 있으므로 확인하자.
How to download source
http://source.android.com/source/downloading.html ( how to download )
https://android.googlesource.com/platform/manifest/+refs ( how to check branch ,tags)
http://source.android.com/source/build-numbers.html#source-code-tags-and-builds
(* how to check branch, tags)
2. 기존 odroid 분석
odroid에서 제공하는 shell을 분석하여 Build 구성을 파악.
2.1 odroid build shell 분석
$ vi build_android.sh
odroidx2) . build/envsetup.sh // source build/envsetup.sh lunch odroidx2-eng // lunch 설정 build_android // build android platform copy_root_2_system // filesystem 수정 및 만들기 make_update_zip // image 작업 if [[ $2 = "otapackage" ]] then ./build_otapackage.sh fi ;;
기본구성은 다음과 같다.
1. source build/envsetup.sh을 하고 나면 device의 내의 vendor를 include 함.
2. lunch로 등록된 이 부분을 설정을 시도를 한다.
3. platform을 빌드를 시작
이부분은 다른 Android에도 동일
* lunch 관련부분 설명
http://chlrbgh0.tistory.com/207
* envsetup.sh 설명
http://www.kaisyu.com/notes/google-android/android-envsetupsh
http://itmir.tistory.com/450
* 기본 Build 방법
http://source.android.com/source/building-running.html
http://elinux.org/Android_Build_System
2.2 How To build Android
$ . build/envsetup.sh or $ source build/envsetup.sh $ lunch odroidx2-eng $ make -j4
ref. http://ahyuo79.blogspot.com/2014/01/blog-post_7416.html
2.3 odroid 의 포팅된 부분 파악
$ find . -name '*.mk' -o -name 'Makefile' | xargs grep odroid
아래의 결과물로 쉽게 관련 Makefile들을 찾을 수 있다.
쉽게 결과물을 얻으며, 포팅된 부분은 device와 hardware 두 directory 부분
3. android-5.1.0_r3 구조파악 및 적용
- device와 hardware의 hardkernel을 복사 ( Hard Kernel에서 Porting 부분)
- device의 rockchip 부분도 복사 ( Dummy Ril)
- hardware/samsung_slsi/exynos4 부분도 복사 ( Exynos4 관련 library )
필요한 부분만 고쳐서 적용하기로 함.
* 수정된 부분 ├─ abi ├─ bootable ├─ dalvik ├─ device │ ├─hardkernel :기존에 있던 hardkernel 존재하던 부분 복사 - 2 │ │ ├─ odroidx2 : odroid-x2 설정 │ │ │ │ │ │ │ ├─ BoardConfig.mk : BoardConfig.mk 와 동일 ( on/off 제어) │ │ │ ├─ device.mk : │ │ │ ├─ AndroidProducts.mk : odroidx2.mk wrapping Makefile │ │ │ ├─ odroidx2.mk : PRODUCT 정보, product_config.mk 와 동일 │ │ │ └─ vendorsetup.sh : lunch 등록 shell │ │ │ │ │ ├─ ... : 기타 다른보드설정 │ │ │ │ │ └─ proprietary : 공통사항 , uboot 및 library 보관 (자산, library로 보관 중) │ │ │ │ │ ├─ rockchip │ │ └─ common : 전부 rockchip 부분을 복사-4 │ │ └─ phone │ │ │ ├─ common : 수정안함 │ ... │ │ ├─ frameworks ├─ libnativehelper ├─ packages ├─ sdk ├─ art ├─ build │ ├─ buildspec.mk.default │ ├─ CleanSpec.mk │ ├─ core │ ├─ envsetup.sh │ ├─ libs │ ├─ target │ └─ tools │ │ ├─ developers ├─ docs ├─ hardware │ ├─ hardkernel : 기존에 있던 hardkernel 존재하던 부분 복사-1 │ │ ├─ _Android.mk : Hal 관련 부분 │ │ ├─ libaudio : Audio Hal │ │ ├─ libcamera_mipi │ │ ├─ libcamera_webcame : Camera Hal │ │ └─ libodroid-gps │ │ │ │ │ ├─ samsung_slsi │ │ ├─ exynos4 : exynos4 부분이 존재하지 않아 복사-3 │ │ └─ exynos5 │ ... │ ├─ Makefile ├─ pdk ├─ system ├─ bionic ├─ cts ├─ development ├─ external ├─ libcore ├─ ndk ├─ prebuilts └─ tools
Ref. http://ahyuo79.blogspot.com/2014/01/blog-post.html?zx=1016342afcd2910e
4. Build 도중 발생 하는 문제
Build를 하다보면, Java version 문제 , oracle version 문제 등 문제가 발생할 경우
java version을 변경해 보자.
현재 나의 java를 보니, openjdk가 없음으로, 이를 설치
$ java -version $ echo $JAVA_HOME /usr/lib/jvm/java-7-oracle $ ls /usr/lib/jvm/ java-6-oracle/ .java-6-oracle.jinfo java-7-oracle/ .java-7-oracle.jinfo java-8-oracle/ .java-8-oracle.jinfo
http://source.android.com/source/initializing.html
* kikat은 oracle 6을 lolipop은 openjdk 7이 필요 한다고 한다.
* version 이 정확이 맞이 않으면 에러가 발생.
아래와 같이 사용
$ . ./jdk_switch.sh jdk7 $ . ./jdk_switch.sh jdk6
jdk_swich.sh
vi jdk_switch.sh // shell script 작성 #!/bin/bash case $1 in jdk6) export JAVA_HOME=/usr/lib/jvm/java-6-oracle/ ;; jdk7) export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ ;; *) export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ ;; esac export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib java -version
* Java 관련부분 error
http://stackoverflow.com/questions/27955851/android-5-0-build-errors-with-java-version-issue
10/15/2014
FILE SYSTEM의 수정 및 Script 수정 (정리가 필요)
1. 목적
기존 ODROID에서 사용하던 File system을 TI File system 으로 대체
ODROID는 FILE SYSTEM은 Ubuntu 을 TI Linux Embed File system으로 변경.
2. Script 및 Service on /off
2.1 Background
service를 제어를 하는데 있어서 현재 두가지 방법이 있으며, 관련 directory는 아래와 같다.
2.2 ubuntu
ex) S20xrdp : X의 remote disply 로 원격접속에 사용 이를 제거
ps --ppid 2 -p 2 --deselect (user process : 2 kthreadd)
http://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d
http://snoopybox.co.kr/1720
2.3 TI Filesystem
inittab 사용
3. 수정사항
1. /lib/module sync ( 기본 모듈 복사)
2. /dev sync ( 기존 dev 복사 )
3. /etc/inittab 수정 ( TI Filesystem 은 inittab 사용)
4. /etc/rc5.d ( 불필요한 서비스 제거 )
-
6. /lib/ld-linux-armhf.so.3 ( loader 복사 및 관련 lib 복사)
7. 연관된 프로그램 복사
http://onestep.tistory.com/78
기존 ODROID에서 사용하던 File system을 TI File system 으로 대체
ODROID는 FILE SYSTEM은 Ubuntu 을 TI Linux Embed File system으로 변경.
2. Script 및 Service on /off
2.1 Background
service를 제어를 하는데 있어서 현재 두가지 방법이 있으며, 관련 directory는 아래와 같다.
- /etc/init.d : System init tool 방식 기존 부터 존재하던 방식
- /etc/init : ubuntu 에서 적용하는 방식이며, 파일은 service의 설정파일
2.2 ubuntu
- 런레벨 설정
$ vi /etc/init/rc-sysinit.conf env DEFAULT_RUNLEVEL=2
- X Manager 제어
$ vi /etc/init/lightdm.conf start on ((filesystem and runlevel [!026] and started dbus and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1 or stopped udev-fallback-graphics)) or runlevel PREVLEVEL=S)
- 기타 다른 제어 (/etc/init service 기능)
$ cd /etc/init $ grep -r runlevel .
- /etc/init.d 제어
ex) S20xrdp : X의 remote disply 로 원격접속에 사용 이를 제거
ps --ppid 2 -p 2 --deselect (user process : 2 kthreadd)
http://askubuntu.com/questions/5039/what-is-the-difference-between-etc-init-and-etc-init-d
http://snoopybox.co.kr/1720
2.3 TI Filesystem
inittab 사용
3. 수정사항
1. /lib/module sync ( 기본 모듈 복사)
2. /dev sync ( 기존 dev 복사 )
3. /etc/inittab 수정 ( TI Filesystem 은 inittab 사용)
sudo vi inittab S:2345:respawn:/sbin/getty 115200 ttySAC1 // kernel Arg 참조 // tty1-6 가상 console이므로, 속도는 상관없음
4. /etc/rc5.d ( 불필요한 서비스 제거 )
$ ls etc/rc5.d $ sudo vi ../init.d/mount-sdcard // 현재 UUID로 마운트 필요없는 부분제거
-
6. /lib/ld-linux-armhf.so.3 ( loader 복사 및 관련 lib 복사)
7. 연관된 프로그램 복사
http://onestep.tistory.com/78
10/14/2014
FILE SYSTEM의 IMAGE 수정 (추후 TEST 완료 후 삭제)
1. 목적
기존에 존재하던 image 파일을 수정하여 새로운 image 파일을 만드는 것이 목적.
기존에 존재하던 image 파일을 수정하여 새로운 image 파일을 만드는 것이 목적.
TI에서 제공하는 Filesystem 사용
2. Image 수정
FAT는 Boot file이기에 건들지 않고, Linux File system만 외부의 파일 system에서 가져와
새로 파티션을 만들어 수정한다.
2.1 각각의 Image 구성 확인
2.2 Image 수정
두번째 파티션 지우고 동시에 새로운 파티션을 만드며,각 사이즈를 정하고, Sector 크기를
2의 배수로 정한다. ( 1 Block이 2 Sector)
2.3 Image Resizing
위의 emmc_backup_2014_09_30.img 의 경우 아직 7818MB이며, 15269888 sectors 사용중 하지만 우리의 새로운 image의 end는
아래와 같이 dd 명령어를 사용해서, image를 resize를 한다.
마지막 sector가 1712089 이고 해서, 이를 짝수를 맞추고, 여분을 주기위해서, +1011줌.
현재 1 block = 2 sectors
* bs size에 속도차이가 심함
count 값은 위의 sectors 값을 반으로 나눈값 , bs를 변경 해도 됨
결과물로 test_newImage.img
3. Filesystem 복사
3.1 Filesystem 복사 방법
A. Mount 복사
skip = input block offset
seek = output block offset
위에서 에러가 나서, 그냥 dd로 전부 copy
B. dd를 이용하여 복사
위와 같이 여러번 했으나, 에러 발생으로 다른 방법시도
참조: http://forum.falinux.com/zbxe/index.php?document_srl=561988&mid=lecture_tip
C. mkfs.ext4 와 losetup 을 이용
* 에러 메시지를 보고, 안되는 이유가 파티션의 사이즈 배분을 잘못해서 문제생김.
3.2 File system 복사 ( Porting Qt 및 기타 사항)
3.3 SD 카드 이용시 할 경우
추후, TEST SD 카드 변경하여 아래와 같이 변경
- emmc_backup_2014_90_30.img의 filesystem을 지우고, TI-Filesystem 대체
- emmc_backup_2014_90_30.img resize
2. Image 수정
FAT는 Boot file이기에 건들지 않고, Linux File system만 외부의 파일 system에서 가져와
새로 파티션을 만들어 수정한다.
2.1 각각의 Image 구성 확인
- 각 구성은 1. boot 2. Linux filesystem 으로 구성
$ fdisk -l /media/sf_SHARED/emmc_backup_2014_09_30.img Disk /media/sf_SHARED/emmc_backup_2014_09_30.img: 7818 MB, 7818182656 bytes 255 heads, 63 sectors/track, 950 cylinders, total 15269888 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/emmc_backup_2014_09_30.img1 4096 266239 131072 b W95 FAT32 /media/sf_SHARED/emmc_backup_2014_09_30.img2 266240 11532287 5633024 83 Linux
2.2 Image 수정
두번째 파티션 지우고 동시에 새로운 파티션을 만드며,각 사이즈를 정하고, Sector 크기를
2의 배수로 정한다. ( 1 Block이 2 Sector)
$ fdisk /media/sf_SHARED/emmc_backup_2014_09_30.img Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only) Command (m for help): d Partition number (1-4): 2 Command (m for help): p Disk /media/sf_SHARED/emmc_backup_2014_09_30.img: 7818 MB, 7818182656 bytes 255 heads, 63 sectors/track, 950 cylinders, total 15269888 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/emmc_backup_2014_09_30.img1 4096 266239 131072 b W95 FAT32 Command (m for help): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (1-4, default 2): 2 First sector (2048-15269887, default 2048): 266240 Last sector, +sectors or +size{K,M,G} (266240-15269887, default 15269887): 1712089 //1606499 -160650 = 1712089 Command (m for help): p Disk /media/sf_SHARED/emmc_backup_2014_09_30.img: 7818 MB, 7818182656 bytes 255 heads, 63 sectors/track, 950 cylinders, total 15269888 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/emmc_backup_2014_09_30.img1 4096 266239 131072 b W95 FAT32 /media/sf_SHARED/emmc_backup_2014_09_30.img2 266240 1712089 722925 83 Linux Command (m for help): w
2.3 Image Resizing
위의 emmc_backup_2014_09_30.img 의 경우 아직 7818MB이며, 15269888 sectors 사용중 하지만 우리의 새로운 image의 end는
아래와 같이 dd 명령어를 사용해서, image를 resize를 한다.
마지막 sector가 1712089 이고 해서, 이를 짝수를 맞추고, 여분을 주기위해서, +1011줌.
현재 1 block = 2 sectors
* bs size에 속도차이가 심함
count 값은 위의 sectors 값을 반으로 나눈값 , bs를 변경 해도 됨
$ dd if=/media/sf_SHARED/emmc_backup_2014_09_30.img of=/media/sf_SHARED/test_newImage.img bs=1k count=$(((1712089+1011)/2))
결과물로 test_newImage.img
3. Filesystem 복사
$ fdisk -l /media/sf_SHARED/test_newImage.img Disk /media/sf_SHARED/test_newImage.img: 877 MB, 877107200 bytes 255 heads, 63 sectors/track, 106 cylinders, total 1713100 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c4046 Device Boot Start End Blocks Id System /media/sf_SHARED/test_newImage.img1 4096 266239 131072 b W95 FAT32 /media/sf_SHARED/test_newImage.img2 266240 1712089 722925 83 Linux
$ fdisk -l /media/sf_SHARED/TI-IMAGE.img Disk /media/sf_SHARED/TI-IMAGE.img: 3965 MB, 3965190144 bytes 255 heads, 63 sectors/track, 482 cylinders, total 7744512 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /media/sf_SHARED/TI-IMAGE.img1 * 63 144584 72261 c W95 FAT32 (LBA) /media/sf_SHARED/TI-IMAGE.img2 160650 1606499 722925 83 Linux /media/sf_SHARED/TI-IMAGE.img3 1606500 7743329 3068415 83 Linux
3.1 Filesystem 복사 방법
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/test_newImage.img ./tmp1 mount: wrong fs type, bad option, bad superblock on /dev/loop1, missing codepage or helper program, or other error In some cases useful info is found in syslog - try dmesg | tail or so $ sudo mount -o loop,offset=$((512 * 160650)) /media/sf_SHARED/TI-IMAGE.img ./tmp2
skip = input block offset
seek = output block offset
위에서 에러가 나서, 그냥 dd로 전부 copy
B. dd를 이용하여 복사
$ dd if=/media/sf_SHARED/TI-IMAGE.img of=/media/sf_SHARED/test_newImage.img bs=512 skip=160650 seek=266240 count=$((1606499-160650))
위와 같이 여러번 했으나, 에러 발생으로 다른 방법시도
참조: http://forum.falinux.com/zbxe/index.php?document_srl=561988&mid=lecture_tip
C. mkfs.ext4 와 losetup 을 이용
$ sudo losetup -o$((512 * 266240)) /dev/loop0 /media/sf_SHARED/test_newImage.img //attach device $ sudo mkfs -t ext4 /dev/loop0 $ sudo losetup -d /dev/loop0 //detach device
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/test_newImage.img ./tmp1 EXT4-fs (loop0): bad geometry: block count 1408255 exceeds size of device (214137 blocks)
* 에러 메시지를 보고, 안되는 이유가 파티션의 사이즈 배분을 잘못해서 문제생김.
3.2 File system 복사 ( Porting Qt 및 기타 사항)
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/emmc_backup_2014_09_30.img ./tmp1 $ sudo mount -o loop,offset=$((512 * 160650)) /media/sf_SHARED/TI-IMAGE.img ./tmp2 $ cd tmp1 $ sudo rm -rf * $ sudo cp -a ../tmp2/* . $ cd usr/local $ sudo cp -a /usr/local/Qt-4.8.6 .
3.3 SD 카드 이용시 할 경우
추후, TEST SD 카드 변경하여 아래와 같이 변경
$ sudo mount -o loop,offset=$((512 * 266240)) /media/sf_SHARED/emmc_backup_2014_09_30.img ./tmp1 $ sudo mount -o loop,offset=$((512 * 160650)) /media/sf_SHARED/TI-IMAGE.img ./tmp2 $ sudo umount tmp1 tmp2 1. lib/module 복사 2. dev 복사 3. etc/rc5.d 수정 S02dbus-1 S20netperf S20syslog S90mount-sdcard S98parse-ip 4. sudo vi inittab //commnad line보고 수정, tty1 가상 console S:2345:respawn:/sbin/getty 115200 ttySAC1 5. sudo vi ../init.d/mount-sdcard // 현재 UUID로 마운트 필요없는 부분제거 6. /lib/ld-linux-armhf.so.3 loader 복사 7. QT 복사 8. EMA 복사 9. sudo ln -s libcmirisLib2_arm_2.1.3.so libcmirisLib2_arm_2.1.1.so //usr/local/lib export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/Qt-4.8.6/lib:/usr/local/lib export QWS_DISPLAY="LinuxFb:/dev/fb6" export PATH=$PATH:/usr/local/bin TEST cd /usr/local/ ./deform -qws -display LinuxFb:/dev/fb6
9/30/2014
Porting LCD, Touch Screen
1. LCD 관련정리
LCD Interface 관련정리
- LCD 와 Frame Buffer
SoC에서 Frame Buffer의 역할은 중요하며, LCD가 특히 RGB Interface로 연결되었을 경우 LCD 내부에 RAM이 별도로 없으므로,
Frame Buffer를 통해 이 Latency를 없애고자 하는 것이며, OSD 와 VIDEO Frame Buffer의 경우 갯수 또한 다르다.
2. KERNEL 설정
TFTP Pannel이므로, 별도의 Backlight와 Frame Buffer를 설정해야줘야 한다.
TFTP Pannel이므로, 별도의 Backlight와 Frame Buffer를 설정해야줘야 한다.
LCD: U133WA01
- Odroid Kernel 설정
Odroid의 LCD 설정 및 Backlight 및 Frame Buffer 설정
$ make menuconfig Device Driver-> Graphics support -> Backlight & LCD device support Lowlevel LCD controls Lowlevel Backlight controls Generic PWM based Backlight Driver
$ make menuconfig Device Driver-> Graphics support ->Support for frame buffer devices-> S5P Framebuffer support LCD init in kernel (2) Default Window (0-4) (2) Number of frame buffers (1-3) Select LCD Type (U133WA01)
- LCD Back Light 관련소스
arch/arm/mach-exynos/mach-odroid-x.c : spi resiger, pwm arch/arm/mach-exynos/setup-fb-odroid.c : s3cfb_backlight_on backright arch/arm/plat-samsung/dev-backlight.c
- Frame Buffer 와 LCD 관련부분 확인
$ ls qtwork/kernel/linux-3.0.68/drivers/video/samsung built-in.o s3cfb_fimd6x.o s3cfb_main.o s3cfb.o s3cfb_ops.o u133wa01.o
2.1 SPI 관련 추가방법
GPIO 기반의 SPI 설정
$ vi arch/arm/mach-exynos/mach-odroid-x.c static struct s3c64xx_spi_csinfo spi1_csi[] = { [0] = { .line = EXYNOS4_GPB(5), .set_level = gpio_set_value, .fb_delay = 0x2, }, }; static struct spi_board_info spi1_board_info[] __initdata = { { .modalias = "spidev", .platform_data = NULL, .max_speed_hz = 10*1000*1000, .bus_num = 1, .chip_select = 0, .mode = SPI_MODE_3, .controller_data = &spi1_csi[0], } }; ...... spi_register_board_info(spi0_board_info, ARRAY_SIZE(spi0_board_info));
- SPI Driver Based GPIO
drivers/spi/spi.c drivers/spi/spi_gpio.c: 위의 board에서 정의된 값을 이용하여, gpio를 이용하여 기본 SPI 설정 이 곳에서 제대로 GPIO 제대로 설정되었는지 TEST drivers/spi/spi_bitbang.c 위 함수를 이용하여 SPI based on GPIO 구동 - bitbang_work : 실제 gpio로 전송을 담당 하는 함수. - spi_bitbang_transfer : 전송을 전송을 하지만, queue만 넣고 실제 전송을 bitbang_work 동작
http://lxr.free-electrons.com/source/include/uapi/linux/spi/spidev.h#L35
http://elinux.org/BeagleBoard/SPI
http://forum.odroid.com/viewtopic.php?f=80&t=5702
http://elinux.org/BeagleBoard/SPI
http://forum.odroid.com/viewtopic.php?f=80&t=5702
- 관련 GPIO 설정 및 Contorl
cat /sys/kernel/debug/gpio관련참조
http://th15.tistory.com/25
Touch TSC2007
세부사항은 아래링크 참조하며, 추후 시간이 있을 경우 보완
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&kind=&field=content&keyword=hdmi&bid=1693
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&bid=2170
https://forum.odroid.com/viewtopic.php?f=14&t=1760
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&kind=&field=content&keyword=hdmi&bid=1693
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&bid=2170
https://forum.odroid.com/viewtopic.php?f=14&t=1760
http://codewalkerster.blogspot.kr/2014/06/optimize-setting-for-low-dpi.html
https://access.redhat.com/documentation/ko-KR/Red_Hat_Enterprise_Linux/6/html/Performance_Tuning_Guide/s-cpu-irq.html
Interrupt Chattering
http://forum.falinux.com/zbxe/index.php?document_srl=786529&mid=question
http://mroon.tistory.com/263
9/29/2014
USB Cable로만 Linux 개발환경구축 (Exynos)
1. USB Cable로만 개발환경구축
Virtual Box를 개발 도중 , NFS 및 TFTBOOT BOOT 로 편하게 개발하고 싶은마음에,
아래 검색도중 아래의 문서들을 발견하여 다음과 같이 정리
ODROID(Embedded Linux 기반의 개발환경)
현재 ODROID의 경우 USB기반의 Network를 이용하여 개발환경을 구축이 가능하다.
이를 이용하기 위해서 Host Linux와 Device Linux의 설정을 알아보자.
http://www.aesop.or.kr/Board_Resources_General/36136
http://www.aesop.or.kr/Board_Documents_Linux_Kernel/35302
http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidpc&bid=1032
http://callgm.tistory.com/36
http://vaultmicro.blogspot.kr/2013/04/usb-network-protocol.html
http://recursive-labs.com/blog/2012/06/15/beaglebone-archlinux-gettingstarted/
https://sites.google.com/site/computewiththinking/odroid-u2/bootloader-u-boot-fusing
2. Uboot의 dnw명령 과 DNW Tool
uboot에 dnw라는 명령어가 존재하며 보통 TFTP 대신 목적으로 사용한다
이는 현재 Exynos에서만 지원해주고 있는 것 같다.
원리는 Taget Device의 uboot에서 OTG의 Device Mode 동작이 되고 Host Linux와 통신한다.
이 때 uboot에서는 dnw 명령과 Host에서는 DNW Tool이 필요하다
현재 Odroid인 경우 smdk-usbdl를 이용하여 Exynos를 지원해주고 있다.
관련 Tool: Window 및 Linux 용이 존재.
2.1 Host Linux용 DNW Tool 설치
Host Linux에서 아래의 파일을 Download하고 아래와 같이 설치를 해주면
이제 HOST Linux에서 smdk-usbdl를 이용하여 이제 uboot로 전송가능하다
2.2 UBOOT의 DNW 개발환경설정
Host에서 System MCU SEC S3C6400X Test B/D USB를 인식 가능하며 아래의 Virtual Box에도 설정을 해주자.
System MCU SEC S3C6400X Test B/D [0100] 추가 (VID:04e8, PID: 1234)
실행 중인 Virtual Box의 장치-> USB 장치 확인 및 앞에 체크 표시 확인
System MCU SEC S3C6400X Test B/D [0100]
2.3 Uboot의 dnw TEST 진행
아래와 같이 uboot에서 dnw 명령이 지원이 되어야 한다.
아래와 같이 smdk-usbdl을 이용하여 Kernel Image를 Load 해보자
만약 Window에서 사용하고 싶다면, Window DNW Tool을 사용, 아래 참조 방법은 동일
http://dreamlog.tistory.com/165
win7.rar&can=2&q=
3. USB-CDC를 이용한 NFS 설정
이제 UBOOT에서 Kernel을 USB를 통해가져오면, USB-CDC Gadget을 이용하여 Host Linux에서 USB Network를 이용한다
3.1 Target Device에서 Kernel설정
우선 아래와 같이 USB-CDC Gadget Driver를 추가하여, USB로 Network가 가능하도록 하자.
* KERNEL에서 RNDIS 및 USB Gadet Driver CDC추가와 NFS 지원 확인
3.2 Host Linux에서 NFS Server 설정
기본으로 NFS가 설치가 안되어있기에, NFS관련 PKG 설치 및 설정
3.3 Host에서 Virtual Box 관리자 설정
Device에서 Kernel의 USB Gadget인 USB-CDC의 RNDIS를 이미 설치했기때문에,
아래와 같이 이를 Host에서 인식하기 위해서 Virtual Box를 설정해준다.
Kernel zImage를 적용 후, 다시 Image를 writing 을 한 후 USB 필터 추가
* WINDOW RNDIS/Ethernet Driver는 필요가 없기에 취소
* VirtualBox USB Driver 가 문제가 있다면 아래의 연결에 문제 발생 (재설치)
Linux 3.0.68 with s3c-udc RNDIS/Ethernet Gadget [0326] 추가
Linux 3.0.68 with s3c-udc RNDIS/Ethernet Gadget [0326]
3.4 Target Device에서 NFS 및 NETWORK TEST
그리고 lsusb로 연결확인
기본 동작 Exynos에서 동작은 하는데, TARGET에서 IP가 일정시간이 지나면 없어짐
네트워크문제 발생
4. Linux 개발환경설정
4.1 Host Linux에서 udev 설정
Host Linux에서는 이제 udev 관련 rules들을 변경하여 Hotplug가 가능하도록 해주자.
1. dnw 관련 uboot에서 tftpboot 처럼 이용하여 kernel Image를 Device로 전송
2. Kernel은 USB-CDC의 Gadget을 이용하여 NFS를 Mount 한다
상위 파일 존재하고 이미 있다면, 아래부분만 추가 및 확인 ( NFS Restart )
usb0과 eth0을 NAT로 설정한다.
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-ko-4/s1-firewall-ipt-fwd.html
4.2 Boot 환경설정 (Device)
수정 전 boot.scr
수정 후 boot.scr
Virtual Box를 개발 도중 , NFS 및 TFTBOOT BOOT 로 편하게 개발하고 싶은마음에,
아래 검색도중 아래의 문서들을 발견하여 다음과 같이 정리
ODROID(Embedded Linux 기반의 개발환경)
현재 ODROID의 경우 USB기반의 Network를 이용하여 개발환경을 구축이 가능하다.
이를 이용하기 위해서 Host Linux와 Device Linux의 설정을 알아보자.
- 참고사항 (USB_NFS_HOWTO)
http://www.aesop.or.kr/Board_Resources_General/36136
http://www.aesop.or.kr/Board_Documents_Linux_Kernel/35302
http://elinux.org/Mount_BeagleBoard_Root_Filesystem_over_NFS_via_USB
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidpc&bid=1032
http://callgm.tistory.com/36
http://vaultmicro.blogspot.kr/2013/04/usb-network-protocol.html
http://recursive-labs.com/blog/2012/06/15/beaglebone-archlinux-gettingstarted/
https://sites.google.com/site/computewiththinking/odroid-u2/bootloader-u-boot-fusing
2. Uboot의 dnw명령 과 DNW Tool
uboot에 dnw라는 명령어가 존재하며 보통 TFTP 대신 목적으로 사용한다
이는 현재 Exynos에서만 지원해주고 있는 것 같다.
원리는 Taget Device의 uboot에서 OTG의 Device Mode 동작이 되고 Host Linux와 통신한다.
이 때 uboot에서는 dnw 명령과 Host에서는 DNW Tool이 필요하다
현재 Odroid인 경우 smdk-usbdl를 이용하여 Exynos를 지원해주고 있다.
관련 Tool: Window 및 Linux 용이 존재.
2.1 Host Linux용 DNW Tool 설치
Host Linux에서 아래의 파일을 Download하고 아래와 같이 설치를 해주면
- Linux-dltool.tar.gz Download
$ sudo apt-get install libusb-dev $ sudo cp smdk-usbdl /usr/local/bin $ apt-get install libusb-0.1-4:i386 (for 64bit)
이제 HOST Linux에서 smdk-usbdl를 이용하여 이제 uboot로 전송가능하다
2.2 UBOOT의 DNW 개발환경설정
- Target Device에서 UBOOT dnw명령 확인
Host에서 System MCU SEC S3C6400X Test B/D USB를 인식 가능하며 아래의 Virtual Box에도 설정을 해주자.
Exynos4412 # dnw 0xC0008000
- Host에서 Virtual Box 관리자 설정
System MCU SEC S3C6400X Test B/D [0100] 추가 (VID:04e8, PID: 1234)
- Host에서 실행중 Virtual Box 확인
실행 중인 Virtual Box의 장치-> USB 장치 확인 및 앞에 체크 표시 확인
System MCU SEC S3C6400X Test B/D [0100]
2.3 Uboot의 dnw TEST 진행
- Target Device에서 UBOOT 명령 실행
아래와 같이 uboot에서 dnw 명령이 지원이 되어야 한다.
Exynos4412 # dnw 0xC0008000
- Host Linux에서 Kernel Image Load
아래와 같이 smdk-usbdl을 이용하여 Kernel Image를 Load 해보자
$ sudo smdk-usbdl -f arch/arm/boot/zImage -a 0xC0008000 SMDK42XX,S3C64XX USB Download Tool Version 0.20 (c) 2004,2005,2006 Ben DooksS3C64XX Detected! => found device: bus 001, dev 005 => loaded 2311724 bytes from arch/arm/boot/zImage => Downloading 2311734 bytes to 0x40008000 => Data checksum 26c6 => usb_bulk_write() returned 2311734
만약 Window에서 사용하고 싶다면, Window DNW Tool을 사용, 아래 참조 방법은 동일
- For Linux SMDK-USBDL
http://dreamlog.tistory.com/165
- for Window 7
win7.rar&can=2&q=
- Window
- How to install on Linux
3. USB-CDC를 이용한 NFS 설정
이제 UBOOT에서 Kernel을 USB를 통해가져오면, USB-CDC Gadget을 이용하여 Host Linux에서 USB Network를 이용한다
3.1 Target Device에서 Kernel설정
우선 아래와 같이 USB-CDC Gadget Driver를 추가하여, USB로 Network가 가능하도록 하자.
* KERNEL에서 RNDIS 및 USB Gadet Driver CDC추가와 NFS 지원 확인
- 아래와 같이 Kernel 설정을 추가
$ make menuconfig [ * ] File systems -> Network File System -> NFS client support 를 체크하고 NFS client support for NFS version 3 및 Root file system on NFS 를 선택 [ * ] Device Drivers -> USB support -> USB Gadget Support -> USB Gadget Drivers (Ethernet Gadget (with CDC Ethernet support)) 로 변경 및 [*] 아래 RNDIS support (NEW) 확인 * Built-in으로 변경
- 확인사항
$ vi .config CONFIG_IP_PNP=y CONFIG_IP_PNP_DHCP=y CONFIG_IP_PNP_BOOTP=y CONFIG_IP_PNP_RARP=y CONFIG_USB_USBNET=y CONFIG_USB_NET_SMSC95XX=y CONFIG_USB=y CONFIG_USB_SUPPORT=y CONFIG_USB_ARCH_HAS_EHCI=y CONFIG_NETWORK_FILESYSTEMS=y CONFIG_NFS_FS=y CONFIG_NFS_V3=y CONFIG_NFS_V3_ACL=y CONFIG_ROOT_NFS=y
3.2 Host Linux에서 NFS Server 설정
기본으로 NFS가 설치가 안되어있기에, NFS관련 PKG 설치 및 설정
~$ sudo apt-get install nfs-kernel-server nfs-common portmap ~$ sudo vi /etc/exports /home/jhlee/qtwork/tmp1 *(rw,no_root_squash,no_all_squash,sync) /home/jhlee/qtwork/tmp2 *(rw,no_root_squash,no_all_squash,sync) ~$ sudo /etc/init.d/portmap restart ~$ sudo /etc/init.d/nfs-kernel-server restart ~$ sudo /etc/init.d/portmap restart
3.3 Host에서 Virtual Box 관리자 설정
Device에서 Kernel의 USB Gadget인 USB-CDC의 RNDIS를 이미 설치했기때문에,
아래와 같이 이를 Host에서 인식하기 위해서 Virtual Box를 설정해준다.
Kernel zImage를 적용 후, 다시 Image를 writing 을 한 후 USB 필터 추가
* WINDOW RNDIS/Ethernet Driver는 필요가 없기에 취소
* VirtualBox USB Driver 가 문제가 있다면 아래의 연결에 문제 발생 (재설치)
- Virtual Box 관리자 설정
Linux 3.0.68 with s3c-udc RNDIS/Ethernet Gadget [0326] 추가
- 실행중 Virtual Box 확인
Linux 3.0.68 with s3c-udc RNDIS/Ethernet Gadget [0326]
3.4 Target Device에서 NFS 및 NETWORK TEST
- NFS Mount TEST
mount -t nfs 192.168.1.1:/home/jhlee/qtwork/tmp2 /tmp
그리고 lsusb로 연결확인
- Network Test
Guest OS Linux $ ifconfig usb0 192.168.1.1 TARGET # ifconfig usb0 192.168.1.2 # ping 192.168.1.1
기본 동작 Exynos에서 동작은 하는데, TARGET에서 IP가 일정시간이 지나면 없어짐
네트워크문제 발생
4. Linux 개발환경설정
4.1 Host Linux에서 udev 설정
Host Linux에서는 이제 udev 관련 rules들을 변경하여 Hotplug가 가능하도록 해주자.
1. dnw 관련 uboot에서 tftpboot 처럼 이용하여 kernel Image를 Device로 전송
2. Kernel은 USB-CDC의 Gadget을 이용하여 NFS를 Mount 한다
- DNW Tool 설정
$vi /etc/udev/rules.d/80-dnw.rules SUBSYSTEMS=="usb", ATTRS{idVendor}=="04e8", ATTRS{idProduct}=="1234", RUN+="/usr/local/bin/smdk-usbdl -a 0xc0008000 -f /tftpboot/zImage"
- NFS 관련설정
$ vi /etc/udev/rules.d/85-ifupdown.rules ACTION=="remove", RUN+="/sbin/start-stop-daemon --start --background --pidfile /var/run/network/bogus --startas /sbin/ifdown -- --allow auto $env{INTERFACE}" LABEL="net_end" KERNEL=="usb0" RUN+="/etc/init.d/nfs-kernel-server restart" SUBSYSTEM=="usb", ACTION=="add", DRIVERS=="?*", KERNEL=="usb0", NAME="eth0"
상위 파일 존재하고 이미 있다면, 아래부분만 추가 및 확인 ( NFS Restart )
$ vi /etc/udev/rules.d/85-ifupdown.rules .... KERNEL=="usb0" RUN+="/etc/init.d/nfs-kernel-server restart" SUBSYSTEM=="usb", ACTION=="add", DRIVERS=="?*", KERNEL=="usb0", NAME="eth0"
- USB0 Network 설정 및 network 재설정
usb0과 eth0을 NAT로 설정한다.
$ vi /etc/newtowrk/interfaces auto lo iface lo inet loopback auto usb0 iface usb0 inet static address 192.168.1.1 netmask 255.255.255.0 broadcast 192.168.1.255 up /sbin/iptables -A POSTROUTING -t nat -o eth0 -j MASQUERADE up echo 1 > /proc/sys/net/ipv4/ip_forward down /sbin/iptables -D POSTROUTING -t nat -o eth0 -j MASQUERADE down echo 0 > /proc/sys/net/ipv4/ip_forward
- iptable 사용법
http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-sg-ko-4/s1-firewall-ipt-fwd.html
4.2 Boot 환경설정 (Device)
수정 전 boot.scr
setenv initrd_high "0xffffffff" setenv fdt_high "0xffffffff" setenv fb_x_res "1280" setenv fb_y_res "720" setenv hdmi_phy_res "720" setenv bootcmd "fatload mmc 0:1 0x40008000 zImage; fatload mmc 0:1 0x42000000 uInitrd; bootm 0x40008000 0x42000000" setenv bootargs "console=tty1 console=ttySAC1,115200n8 fb_x_res=${fb_x_res} fb_y_res=${fb_y_res} hdmi_phy_res=${hdmi_phy_res} root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro mem=1023M" boot
수정 후 boot.scr
setenv initrd_high "0xffffffff" setenv fdt_high "0xffffffff" setenv fb_x_res "1280" setenv fb_y_res "720" setenv hdmi_phy_res "720" setenv serverip "192.168.1.1" setenv ipaddr "192.168.1.2" setenv gatewayip "192.168.1.1" setenv bootcmd "dnw 0xc0008000; fatload mmc 0:1 0x42000000 uInitrd; bootm 0xc0008000 0x42000000" setenv bootargs "console=tty1 console=ttySAC1,115200n8 fb_x_res=${fb_x_res} fb_y_res=${fb_y_res} hdmi_phy_res=${hdmi_phy_res} root=/dev/nfs rw nfsroot=192.168.1.1:/home/jhlee/qtwork/tmp2 ip=192.168.1.2:192.168.1.1:192.168.1.1:255.255.255.0::usb0:off init=/init mem=1023M" boot setenv serverip 192.168.1.1;setenv ipaddr 192.168.1.2;setenv gatewayip 192.168.1.1
9/23/2014
IMAGE 수정 및 boot.scr 관리
1. Uboot Script
Uboot Script 이며, Uboot 에서 사용하는 Command들을 나열하여 사용하는 일종의 Shell Script이라고 생각하면 되겠다.
boot.txt or boot.cmd 로 uboot command를 정의한 후 이를 mkimage를 이용하여 변형을 해주고, Uboot에서 이를 load에서 해서 이 Uboot Script를 사용하면 된다.
https://www.denx.de/wiki/DULG/UBootScripts
1.1 How to make boot.scr
1.2 Uboot 환경변수 설정소스 파악
기본적으로 Uboot에서 설정되는 환경설정값들을 각각의 EVM or Board마다 다르므로, 본인의 소스 위치를 파악하여 알아보자.
Uboot 에서 BOOTCOMAND는 bootcmd 의 환경설정값 이며, boot.scr 안에서 Kernel를 Load하고 본인이 원하는 기능을 추가하여 넣자.
관련참고
http://elinux.org/ECE597_boot.scr ( OMAP 기준 설명)
http://forum.odroid.com/viewtopic.php?f=52&t=1104
https://wiki.linaro.org/Resources/HowTo/boot.scr
2. Android Image
ODROID에서 제공하는 Android Image들은 크게 아래와 같이 3 종류인 것 같으며, 각 설정에 변경이 되는 것 같다.
Download Site
http://dn.odroid.com/4412/Android/
2.1 ODROID-X2의 Android Image 종류
2.2 ODROID-X2의 Android Image 구조
한번 install이 되면, 그 이후에 아래의 구조가 존재하지 않는다.
Fastboot에 의해 Android 를 SD Write를 한다.
2.3 boot.scr (android) 분석
3. Ubuntu Image
https://wiki.odroid.com/old_product/odroid-x_u_q/odroid_u3/u3_partition_table
http://odroid.in/ubuntu_14.04lts/old_images/
http://odroid.in/ubuntu_14.04lts/
3.1 Ubuntu Image 구조
fdisk -l xxxx.img //512 Byte 기준표시
parted -s xxxx.img unit B print // Byte 기준표시
parted -s xxxxx unit B print 사용가능 (Byte 기준표시)
http://odroid.us/mediawiki/index.php?title=Updating_from_Root_File_System_Images
B. FAT32 Partition 정보확인
Booting에 필요한 주요파일로 구성되어 있으며, 간단히 구성을 보면 다음과 같다.
C. Linux Partition 정보확인
Mount 되는 Linux Fliesystem 정보로 Host Linux에서 확인을 해보자.
4. Uboot script
4.1 boot.scr (ubuntu)
ubuntu boot.scr 설치가 아닌 boot 이며,아래와 같이 기본 설정을 해준다.
4.2 boot.scr (dnw 적용)
4.3 boot.scr (printenv)
5. mkimage 의 Image header 제거
mkimage를 사용할 경우 헤더가 64byte 가 사용이 되며, 이는 boot시 사용이 된다. 그리고, 이와 같은 이미지가 필요 없을 경우 아래와 같이 제거 한다.
mkimage를 사용하는 것은 ramdisk, kernel image, boot.scr이 있다.
RAMDISK의 경우 아래와 같이 mkimage를 제거하고, 압축을 풀고 카피한 다음 분석가능
https://wiki.linaro.org/MichaelHope/Sandbox/DebuggingOnInitrd
Uboot Script 이며, Uboot 에서 사용하는 Command들을 나열하여 사용하는 일종의 Shell Script이라고 생각하면 되겠다.
boot.txt or boot.cmd 로 uboot command를 정의한 후 이를 mkimage를 이용하여 변형을 해주고, Uboot에서 이를 load에서 해서 이 Uboot Script를 사용하면 된다.
https://www.denx.de/wiki/DULG/UBootScripts
1.1 How to make boot.scr
mkimage -A arm -T script -C none -n "Boot.scr for odroid" -d ./boot.txt ./boot.scr
- boot.txt : string
- boot.scr : result
1.2 Uboot 환경변수 설정소스 파악
기본적으로 Uboot에서 설정되는 환경설정값들을 각각의 EVM or Board마다 다르므로, 본인의 소스 위치를 파악하여 알아보자.
Uboot 에서 BOOTCOMAND는 bootcmd 의 환경설정값 이며, boot.scr 안에서 Kernel를 Load하고 본인이 원하는 기능을 추가하여 넣자.
- Uboot 의 CONFIG_BOOTCOMMAND (bootcmd )
$ vi /include/configs/smdk4412.h //EXYNOS의 UBOOT bootcmd 설정 #if defined(CONFIG_HKDK4412) && defined(CONFIG_EXYNOS_PRIME) #define CONFIG_BOOTCOMMAND \ " mmc rescan 0:1; mmc rescan 0:2; " \ " if run loadbootscript_1; " \ " then run bootscript; " \ " else " \ " if run loadbootscript_2; " \ " then run bootscript; " \ " else " \ " run default_bootcmd; " \ " fi ;" \ " fi ; " ...
- Uboot 기본환경설정
$ vi ./include/env_default.h // UBOOT 환경설정 값 const unsigned char default_environment[] = { #endif #if defined(CONFIG_HKDK4412) && defined(CONFIG_EXYNOS_PRIME) "bootscript=source 40008000\0" "default_bootcmd=echo >>> Run Default Bootcmd <<<;movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000\0" "loadbootscript_1=echo >>> Load Boot Script from mmc 0:1 <<<;fatload mmc 0:1 40008000 boot.scr\0" "loadbootscript_2=echo >>> Load Boot Script from mmc 0:2 <<<;fatload mmc 0:2 40008000 boot.scr\0" "usb_invert_clken=0\0" #endif ... #ifdef CONFIG_BOOTCOMMAND "bootcmd=" CONFIG_BOOTCOMMAND "\0" #endif
- Serial에서 Uboot 환경설정확인
Exynos4412 # pri baudrate=115200 bootargs=fb_x_res=1280 fb_y_res=720 hdmi_phy_res=720 bootcmd= mmc rescan 0:1; mmc rescan 0:2; if run loadbootscript_1; then run bootscript; else if run loadbootscript_2; then run bootscript; else run default_bootcmd; fi ; fi ; bootdelay=5 bootscript=source 40008000 default_bootcmd=echo >>> Run Default Bootcmd <<<;movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000 ethact=usb_ether loadbootscript_1=echo >>> Load Boot Script from mmc 0:1 <<<;fatload mmc 0:1 40008000 boot.scr loadbootscript_2=echo >>> Load Boot Script from mmc 0:2 <<<;fatload mmc 0:2 40008000 boot.scr preboot=setenv stdin serial,nc stderr=serial stdin=serial stdout=serial usb_invert_clken=0 usbethaddr=DE:AD:BE:EF:00:03
관련참고
http://elinux.org/ECE597_boot.scr ( OMAP 기준 설명)
http://forum.odroid.com/viewtopic.php?f=52&t=1104
https://wiki.linaro.org/Resources/HowTo/boot.scr
2. Android Image
ODROID에서 제공하는 Android Image들은 크게 아래와 같이 3 종류인 것 같으며, 각 설정에 변경이 되는 것 같다.
Download Site
http://dn.odroid.com/4412/Android/
2.1 ODROID-X2의 Android Image 종류
- emmc_self_installer.zip : Image를 emmc에 굽고, emmc에 모든것이 설치됨.
- sd2emmc_installer.zip : Image를 SD카드에 굽고, emmc에 모든것이 설치됨.
- sd_self_installer.zip : Image를 SD카드에 굽고 SD카드에 모든것이 설치됨.
#setenv device "0" #setenv ToSDMMC "0"
2.2 ODROID-X2의 Android Image 구조
- Download Image
- sd_self_installer.img의 구성
- 0~100M: BL1,BL2, UBOOT 있을 거라고 생각
- FAT: FAT Partion만 존재.
$ fdisk -l /media/sf_SHARED/images/sd_self_installer.img Disk /media/sf_SHARED/images/sd_self_installer.img: 524 MB, 524288000 bytes 189 heads, 61 sectors/track, 88 cylinders, total 1024000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00008403 Device Boot Start End Blocks Id System /media/sf_SHARED/images/sd_self_installer.img1 204800 1023999 409600 b W95 FAT32 // 204800 x 512 = 104857600 100M 부터설정, // Blocks: 1k단위로 되는 것 같고, Start,End 512 byte 단위로 되는 것 같다
- /media/sf_SHARED/images/sd_self_installer.img1
// offset 104857600= 204800 x 512 bytes $ sudo mount -o loop,offset=104857600 /media/sf_SHARED/images/sd_self_installer.img ./tmp1 or $ sudo mount -o loop,offset=$((512 * 204800)) /media/sf_SHARED/images/sd_self_installer.img ./tmp1 $ ls ./tmp1 bl1.bin cache_aa system_ac system_af system_ai system_al system_ao system_ar tzsw.bin userdata_ab bl2.bin system_aa system_ad system_ag system_aj system_am system_ap system_as u-boot.bin userdata_ac boot.scr system_ab system_ae system_ah system_ak system_an system_aq system_at userdata_aa zImage
한번 install이 되면, 그 이후에 아래의 구조가 존재하지 않는다.
Fastboot에 의해 Android 를 SD Write를 한다.
//앞부분, Image 정보부분이라서 깨짐 # BootScript for Odroid (2013/01/28) # # # Boot.scr make script # # mkimage -A arm -T script -C none -n "Boot.scr for odroid" -d ./boot.ini ./boot.scr # # EMMC Self Update #setenv device "0" #setenv ToSDMMC "0" # SD/MMC Self Update setenv device "0" setenv ToSDMMC "1" # EMMC Update from SD/EMMC #setenv device "1" #setenv ToSDMMC "0" # SD/MMC Update from EMMC #setenv device "1" #setenv ToSDMMC "1" setenv check_oldboot "check_value 1" setenv check_device_sd "check_value ${ToSDMMC}"; setenv check_device "check_value ${device}"; setenv mmc64gb_check "check_64gb ${device}" if run check_oldboot;then echo >> new-bootloader <<; else echo >> old-bootloader <<; reset; fi; #------------------------------------------------------------------------------------------------------ # UBOOT ENV Erase #------------------------------------------------------------------------------------------------------ mmc write 0 40008000 0x4CF 0x20 fatload mmc 0:1 41000000 zImage;movi w k ${device} 41000000; fatload mmc 0:1 44000000 system_aa; fatload mmc 0:1 45000000 system_ab; fatload mmc 0:1 46000000 system_ac; fatload mmc 0:1 47000000 system_ad; fatload mmc 0:1 48000000 system_ae; fatload mmc 0:1 49000000 system_af; fatload mmc 0:1 4A000000 system_ag; fatload mmc 0:1 4B000000 system_ah; fatload mmc 0:1 4C000000 system_ai; fatload mmc 0:1 4D000000 system_aj; fatload mmc 0:1 4E000000 system_ak; fatload mmc 0:1 4F000000 system_al; fatload mmc 0:1 50000000 system_am; fatload mmc 0:1 51000000 system_an; fatload mmc 0:1 52000000 system_ao; fatload mmc 0:1 53000000 system_ap; fatload mmc 0:1 54000000 system_aq; fatload mmc 0:1 55000000 system_ar; fatload mmc 0:1 56000000 system_as; fatload mmc 0:1 57000000 system_at; fatload mmc 0:1 58000000 userdata_aa; fatload mmc 0:1 59000000 userdata_ab; fatload mmc 0:1 5A000000 userdata_ac; fatload mmc 0:1 41000000 cache_aa; fdisk -c ${device} fastboot flash system 44000000 0 ${device}; fastboot flash userdata 58000000 0 ${device}; fastboot flash cache 41000000 0 ${device}; fatformat mmc ${device}:1; if run check_device; then fastboot poweroff; else reset; fi;
3. Ubuntu Image
https://wiki.odroid.com/old_product/odroid-x_u_q/odroid_u3/u3_partition_table
- Download Site
http://odroid.in/ubuntu_14.04lts/old_images/
http://odroid.in/ubuntu_14.04lts/
- Download Image
3.1 Ubuntu Image 구조
- Download Image
- Image Partition 구성
- 0~2048K: BL1,BL2,UBOOT 있을 거라고 예상
- FAT32: FAT가 2048K부터 구성,(약 2Mbyte)
- Linux : Linux 기본 Partion
- Partition으로 구성확인방법
fdisk -l xxxx.img //512 Byte 기준표시
parted -s xxxx.img unit B print // Byte 기준표시
$ fdisk -l odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img Disk odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img: 5904 MB, 5904530944 bytes 255 heads, 63 sectors/track, 717 cylinders, total 11532287 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c4046 Device Boot Start End Blocks Id System odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img1 4096 266239 131072 b W95 FAT32 odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img2 266240 11532287 5633024 83 Linux
parted -s xxxxx unit B print 사용가능 (Byte 기준표시)
$ sudo parted -s /media/sf_SHARED/odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img unit B print
http://odroid.us/mediawiki/index.php?title=Updating_from_Root_File_System_Images
B. FAT32 Partition 정보확인
Booting에 필요한 주요파일로 구성되어 있으며, 간단히 구성을 보면 다음과 같다.
- board.dtb // Device Tree Binary
- boot.scr // Uboot Script
- boot.ini // Uboot Env 설정 File
- zImage,uImage // Kernel Image
- uInitrd // RAM Disk Image
$ mkdir tmp1 tmp2 // offset 2097152 = 4096 x 512 bytes $ sudo mount -o loop,offset=2097152 /media/sf_SHARED/odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img ./tmp1 or $ sudo mount -o loop,offset=$((512*4096)) /media/sf_SHARED/odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img ./tmp1 $ ls ./tmp1 board.dtb boot boot-hdmi1080.scr boot-hdmi1080.txt boot-hdmi720.scr boot-hdmi720.txt boot.ini boot.scr boot.txt uImage uInitrd zImage
C. Linux Partition 정보확인
Mount 되는 Linux Fliesystem 정보로 Host Linux에서 확인을 해보자.
// offset 136314880 = 266240 x 512 bytes $ sudo mount -o loop,offset=136314880 /media/sf_SHARED/odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img ./tmp2 or $ sudo mount -o loop,offset=$((512*266240)) /media/sf_SHARED/odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img ./tmp2 $ ls ./tmp2 bin boot dev etc home initrd.img lib lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var vmlinuz
4. Uboot script
4.1 boot.scr (ubuntu)
ubuntu boot.scr 설치가 아닌 boot 이며,아래와 같이 기본 설정을 해준다.
setenv initrd_high "0xffffffff" setenv fdt_high "0xffffffff" setenv fb_x_res "1280" setenv fb_y_res "720" setenv hdmi_phy_res "720" setenv bootcmd "fatload mmc 0:1 0x40008000 zImage; fatload mmc 0:1 0x42000000 uInitrd; bootm 0x40008000 0x42000000" setenv bootargs "console=tty1 console=ttySAC1,115200n8 fb_x_res=${fb_x_res} fb_y_res=${fb_y_res} hdmi_phy_res=${hdmi_phy_res} root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro mem=2047M" boot
4.2 boot.scr (dnw 적용)
setenv initrd_high "0xffffffff" setenv fdt_high "0xffffffff" setenv bootcmd "dnw 0xc0008000; fatload mmc 0:1 0x42000000 uInitrd; bootm 0xc0008000 0x42000000" setenv bootargs "console=tty1 console=ttySAC1,115200n8 root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro mem=1023M" boot
4.3 boot.scr (printenv)
baudrate=115200 bootargs=fb_x_res=1280 fb_y_res=720 hdmi_phy_res=720 bootcmd= mmc rescan 0:1; mmc rescan 0:2; if run loadbootscript_1; then run bootscript; else if run loadbootscript_2; then run bootscript; else run default_bootcmd; fi ; fi ; bootdelay=1 bootscript=source 40008000 default_bootcmd=echo >>> Run Default Bootcmd <<<;movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000 ethaddr=00:40:5c:26:0a:5b gatewayip=192.168.0.1 ipaddr=192.168.0.20 loadbootscript_1=echo >>> Load Boot Script from mmc 0:1 <<<;fatload mmc 0:1 40008000 boot.scr loadbootscript_2=echo >>> Load Boot Script from mmc 0:2 <<<;fatload mmc 0:2 40008000 boot.scr netmask=255.255.255.0 serverip=192.168.0.10
5. mkimage 의 Image header 제거
mkimage를 사용할 경우 헤더가 64byte 가 사용이 되며, 이는 boot시 사용이 된다. 그리고, 이와 같은 이미지가 필요 없을 경우 아래와 같이 제거 한다.
mkimage를 사용하는 것은 ramdisk, kernel image, boot.scr이 있다.
dd if=image of=recovered file bs=64 skip=1
RAMDISK의 경우 아래와 같이 mkimage를 제거하고, 압축을 풀고 카피한 다음 분석가능
gunzip initrd.gz mkdir init cd init cpio -i < ../initrd
https://wiki.linaro.org/MichaelHope/Sandbox/DebuggingOnInitrd
9/21/2014
Porting QT on ODROID (추후 정리가 필요, TEST완료)
1. Backgraound
QT는 Trolltech사에서 개발한 UI Interface이며 현재 임베디드에서 많이 이용이 되며, Linux 뿐만 아니라 Window 및 Mac OS, Vxworks 등에서 구동이 된다.
예전에 회사에서 QT를 몇번 Porting을 했지만 매번 까먹는것 같어 정리 좀 한다.
이제 나의 장난감 ODROID에 QT를 올려보고자 한다.
A. QT 관련회사
http://ko.wikipedia.org/wiki/Qt_(%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)
http://en.wikipedia.org/wiki/Qt_(software)
http://en.wikipedia.org/wiki/Qt_Development_Frameworks
B. ODROID 관련회사
현재 UBUNTU Image는 Linaro에서 공급을 받고 있으며, 이를 수정
http://ko.wikipedia.org/wiki/%EB%A6%AC%EB%82%98%EB%A1%9C
2. Cross Compile 설치
기존 사용하던 Code Sourcery로는 에러가 발생하여, 다른 Cross Compiler 사용.
무료 Version이라 hard floating point 미지원 문제인 것 같다.
apt-get install 로도 가능하나, odroid 추천사이트를 아래와 같이 찾음
- 기본 환경설정
- Down Toolchain
- 의존성 문제로 Link 사용
- C-Compiler Cache 설정 (옵션)
출처:
http://odroid.us/mediawiki/index.php?title=Step-by-step_Cross-compiling_a_Kernel
3. Ubuntu Image
* odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img
3.1 Modify the Image
A. FAT32 수정
(kernel 및 boot.scr 변경)
B.Linux FS 수정
(QT 복사 및 설정)
3.3 Resize Image (option)
기본에 존재하는 큰사이즈 Image를 줄이고, 필요없는 File System Partition 삭제
(NFS사용 ,SD도 4G가라 줄여야 함)
http://forum.falinux.com/zbxe/index.php?document_srl=561988&mid=lecture_tip
4. KERNEL
4.1 Download
https://github.com/hardkernel/linux
4.2 Build Kernel
5. QT
5.1 Download
구글에서 qt-everywhere-opensource-src
http://download.qt-project.org/archive/qt/5.2/5.2.0/single/qt-everywhere-opensource-src-5.2.0.tar.gz.mirrorlist
http://download.qt-project.org/archive/qt/5.0/5.0.2/single/qt-everywhere-opensource-src-5.0.2.tar.gz.mirrorlist
http://download.qt-project.org/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz.mirrorlist
5.2 TSLIB
http://egloos.zum.com/sunnmoon/v/2348814
http://jiphung.com/399
5.3 QTWebkit
git clone git://gitorious.org/+qtwebkit-developers/webkit/qtwebkit.git
sudo apt-get install bison flex libqt4-dev libqt4-opengl-dev libphonon-dev libicu-dev libsqlite3-dev libxext-dev libxrender-dev gperf libfontconfig1-dev libphonon-dev g++
Ref. QTWebkit 빌드
http://webkit.sed.hu/blog/20100427/qtwebkit-cross-compilation-gcc-arm-linux
http://linuxspot.tistory.com/249
http://www.sarangnamu.net/basic/basic_view.php?no=4603&page=47&sCategory=0
5.4 Build QT
개발전 우분투에서 설치해줘야할 Package들
아래와 같이 수정.
//TSLibrary 추가
http://www.sereno-labs.com/Qt_4.8.3_installation_procedure_FriendlyARM_mini6410_Linux
6. QT Build ERRS
1. ERROR-1
vi src/corelib/Makefile
2. ERROR-2
위의 Setting에서 기본환경 설치 확인
3. ERROR-3 (TSLIB)
참고사항
TSLib 설치 및 QMAKE_LIBDIR 설정
4. 기타에러
uentialanimationgroup.h -o .moc/release-shared-emb-arm/moc_qsequentialanimationgroup.cpp
compilation terminated.
make[1]: *** [.pch/release-shared-emb-arm/QtCore.gch/c++] Error 1
make[1]: *** Waiting for unfinished jobs...
이전에 permission 문제를 발견을 해서,
chown -R jhlee .
chgrp -R jhlee . 로 해결
5.6 Configure option 설명
-prefix /usr/local/Qt-4.8.6 : QT library가 설치될 장소 선정
-opensource : opensource 이 옵션일 경우 question 이 없어짐 (상용 –commercial)
-embedded arm : 임베디드 ARM 기반으로 빌드한다.
-platform /qws/linux-x86_64-g++ : Host에서 사용할 컴파일러(32비트 사용시는/qws/linux-x86-g++ 옵션을 사용)
-xplatform /qws/linux-dm368-g++ : Target에서 사용할 컴파일러(dm368일 경우)
-depths 16,24,32 : 지원되는 Bit-per-pixel. (콤마로 지원되는 값들을 구분)
-no-cups : CUPS를 지원하지 않도록 함.
-no-largefile : 대용량 파일을 지원하지 않도록 함.
-no-accessibility : Windows Active Accessibility을 지원하지 않도록 함.
-no-openssl : OPENSSL을 지원하지 않는다.
-no-gif : GIF 읽기를 지원하지 않는다.
-no-libtiff : TIFF를 지원하지 않는다.
-no-libmng :MNG를 지원하지 않는다.
-qt-gfx-transformed : 가속되지 않은 Linux Framebuffer(/dev/fb0)을 Enable한다.
-plugin-gfx-transformed : Linux Framebuffer를 런타임시에 링크시킨다.
-continue : 가능한 범위 내에서 오류를 무시하고 계속한다.
-no-mouse-pc : PC 마우스 드라이버를 사용하지 않는다.
-no-mouse-linuxtp : linuxtp 마우스 드라이버를 사용하지 않는다.
-qt-mouse-tslib : ‘tslib’ 터치 드라이버를 사용한다.
-plugin-mouse-tslib : ‘tslib’ 터치 드라이버를 런타임시에 링크한다.
-little-endian : Target 플랫폼은 little-endian으로 동작한다.
-host-little-endian : Host 플랫폼은 little-endian으로 동작한다.
-no-multimedia : Qt Multimedia 모듈을 빌드하지 않는다.
--no-svg : SVG(Scalable Vector Graphics) 모듈을 빌드하지 않는다.
-no-webkit : Webkit 모듈을 빌드하지 않는다.
-no-mmx : MMX 명령을 사용하지 않는다.
-no-3dnow : 3DNOW 명령을 사용하지 않는다.
-no-sse : SSE 명령을 사용하지 않는다.
-no-sse2 : SSE2 명령을 사용하지 않는다.
-no-qt3support : Qt3 지원을 사용하지 않는다.
-no-script : Qt Script를 사용하지 않는다.
-no-scripttools : Qt ScriptTools를 사용하지 않는다.
-qt-libpng : png 라이브러리를 사용한다.
-qt-zlib : zlib 옵션을 사용하도록 한다.(32비트에서만 필요할 것이다.)
-qconfig petra : qconfig-petra.h 를 참조하여 필요한 부분만 컴파일한다.
-release : 디버깅 모드를 사용하지 않고 릴리즈 모드로 컴파일한다.
-qt-sql-[driver-name] : qmysql, qsqlite,
http://qt-project.org/doc/qt-4.8/sql-driver.html
http://qt-project.org/wiki/Building_Qt_for_Embedded_Linux
5.3 QT TEST
http://processors.wiki.ti.com/index.php/Qt_Tips
http://com.odroid.com/sigong/blog/blog_list.php?bid=133
기본환경 설정
QTWebKit
http://linuxspot.tistory.com/249
ODROID QT Porting
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&kind=52&bid=1644
http://napan.ca/ghpsdr3/index.php/Odroid
QT 4.7 Porting GUIDE
http://www.jkelec.co.kr/img/arm/arm11/s3c6410_startkit/man/s3c6410_startkit_qt4.7.0_porting.html
QT 구조
http://qt-project.org/doc/qt-4.8/qt-embedded-linux.html
QT 4.8 Porting GUIDE
http://qt-project.org/doc/qt-4.8/qt-embedded-install.html
http://qt-project.org/doc/qt-5/embedded-linux.html
QT 5.2
https://www.ics.com/blog/building-qt-and-qtwayland-raspberry-pi#.VCKXLvl_uGE
QT 4.8.4
http://galhui.tistory.com/38
http://blog.csdn.net/wangpengqi/article/details/8728234
http://stackoverflow.com/questions/19059596/cross-compiling-qt-for-pandaboard
http://qt-project.org/forums/viewthread/16595
http://forum.falinux.com/zbxe/index.php?document_srl=506571&mid=question
http://chiccoder.tistory.com/36
(USB 모니터 및 Touchscreen example)
https://wiki.kldp.org/wiki.php/LinuxBasedOnUSB-StorageDevice
http://processors.wiki.ti.com/index.php/Creating_a_Root_File_System_for_Linux_on_OMAP35x
https://emreboy.wordpress.com/2012/12/20/building-a-root-file-system-using-busybox/
https://gist.github.com/chrisdone/02e165a0004be33734ac2334f215380e
QT는 Trolltech사에서 개발한 UI Interface이며 현재 임베디드에서 많이 이용이 되며, Linux 뿐만 아니라 Window 및 Mac OS, Vxworks 등에서 구동이 된다.
예전에 회사에서 QT를 몇번 Porting을 했지만 매번 까먹는것 같어 정리 좀 한다.
이제 나의 장난감 ODROID에 QT를 올려보고자 한다.
A. QT 관련회사
- Trolltech: Qt를 개발한 노르웨이 회사
- Digia : 현재 QT를 인수한 회사 2012년에 인수
- Nokia: 핸드폰 제조회사로 QT 회사인 Trolltech와 QT를 2008년에 인수 했지만 이후로 Digia가 인수.
http://ko.wikipedia.org/wiki/Qt_(%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC)
http://en.wikipedia.org/wiki/Qt_(software)
http://en.wikipedia.org/wiki/Qt_Development_Frameworks
B. ODROID 관련회사
- hardkernel : odroid platform을 개발
- linaro : ARM 기반 Linux open source를 지향하는 비영리 단체이며 ARM, Freescale, IBM, Samsung, ST-Ericsson 및 TI가 주축으로 구성이 되어 Soc가 나올 경우 이 관련 솔루션개발.
현재 UBUNTU Image는 Linaro에서 공급을 받고 있으며, 이를 수정
http://ko.wikipedia.org/wiki/%EB%A6%AC%EB%82%98%EB%A1%9C
2. Cross Compile 설치
기존 사용하던 Code Sourcery로는 에러가 발생하여, 다른 Cross Compiler 사용.
무료 Version이라 hard floating point 미지원 문제인 것 같다.
apt-get install 로도 가능하나, odroid 추천사이트를 아래와 같이 찾음
- 기본 환경설정
$ sudo mkdir -p /usr/local/arm >/dev/null $ sudo chmod 777 /usr/local/arm $ cd /usr/local/arm
- Down Toolchain
$ cd /usr/local/arm $ wget https://launchpadlibrarian.net/129963014/gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux.tar.xz $ xz -d gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux.tar.xz $ tar -xvf gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux.tar
- 의존성 문제로 Link 사용
$ ln -s gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux /usr/local/arm/toolchain
- C-Compiler Cache 설정 (옵션)
$ cd /usr/local/arm/toolchain $ mkdir bin-ccache # you may already have ccache installed, but for the sake of illustration... $ sudo apt-get install ccache $ ln -s $(which ccache) arm-linux-gnueabihf-gcc $ ln -s $(which ccache) arm-linux-gnueabihf-g++ $ ln -s $(which ccache) arm-linux-gnueabihf-cpp $ ln -s $(which ccache) arm-linux-gnueabihf-c++
출처:
http://odroid.us/mediawiki/index.php?title=Step-by-step_Cross-compiling_a_Kernel
3. Ubuntu Image
- Download
* odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img
3.1 Modify the Image
- IMAGE의 Partition 정보 확인
$ fdisk -l odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img Disk odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img: 5904 MB, 5904530944 bytes 255 heads, 63 sectors/track, 717 cylinders, total 11532287 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c4046 Device Boot Start End Blocks Id System odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img1 4096 266239 131072 b W95 FAT32 odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img2 266240 11532287 5633024 83 Linux
A. FAT32 수정
(kernel 및 boot.scr 변경)
// offset 2097152 = 4096 x 512 bytes $ sudo mount -o loop,offset=2097152 /media/sf_SHARED/odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img ./tmp1 $ ls ./tmp1 board.dtb boot boot-hdmi1080.scr boot-hdmi1080.txt boot-hdmi720.scr boot-hdmi720.txt boot.ini boot.scr boot.txt uImage uInitrd zImage $ cd tmp1 $ sudo cp boot.scr boot.scr.org // backup $ vi boot.txt // mem=1023M 변경 $ sudo mkimage -A arm -T script -C none -n "Boot.scr for odroid" -d ./boot.txt ./boot.scr
B.Linux FS 수정
(QT 복사 및 설정)
// offset 136314880 = 266240 x 512 bytes $ sudo mount -o loop,offset=136314880 /media/sf_SHARED/odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img ./tmp2 $ ls ./tmp2 bin boot dev etc home initrd.img lib lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var vmlinuz
3.3 Resize Image (option)
기본에 존재하는 큰사이즈 Image를 줄이고, 필요없는 File System Partition 삭제
(NFS사용 ,SD도 4G가라 줄여야 함)
$ dd if=odroidx2_20130125-linaro-ubuntu-desktop_SDeMMC_with_HDMI.img of=newimage.img bs=1k count=200000 //FDISK로 두번째 partion 제거하고 사이즈를 아래와 같이 사이즈를 줄임 $ fdisk newimage.img Command (m for help): d Partition number (1-4): 2 Command (m for help): w Command (m for help): p Disk newimage.img: 204 MB, 204800000 bytes 255 heads, 63 sectors/track, 24 cylinders, total 400000 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x000c4046 Device Boot Start End Blocks Id System newimage.img1 4096 266239 131072 b W95 FAT32 $ sudo mount -o loop,offset=2097152 ./newimage.img ./tmp1
- DD 관련설명
http://forum.falinux.com/zbxe/index.php?document_srl=561988&mid=lecture_tip
4. KERNEL
4.1 Download
- 아래의 사이트에 가서 소스를 확인하고, 각 branch를 확인 후 down
https://github.com/hardkernel/linux
$ git clone https://github.com/hardkernel/linux.git -b odroid-3.0.y
4.2 Build Kernel
$ cd linux $ ls arch/arm/configs/odroidx2* // 확인후 설정 arch/arm/configs/odroidx2_android_emmc_defconfig arch/arm/configs/odroidx2_ubuntu_defconfig arch/arm/configs/odroidx2_android_sdmmc_defconfig arch/arm/configs/odroidx2_ubuntu_mali_defconfig $ make odroidx2_ubuntu_defconfig $ make zImage or make // make는 moudles도 함께, $ ls arch/arm/boot/ $ make modules -j4 $ make modules_install INSTALL_MOD_PATH=~/tmp // 임시설정, 위의 Android에 복사
5. QT
5.1 Download
구글에서 qt-everywhere-opensource-src
http://download.qt-project.org/archive/qt/5.2/5.2.0/single/qt-everywhere-opensource-src-5.2.0.tar.gz.mirrorlist
http://download.qt-project.org/archive/qt/5.0/5.0.2/single/qt-everywhere-opensource-src-5.0.2.tar.gz.mirrorlist
http://download.qt-project.org/archive/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz.mirrorlist
5.2 TSLIB
$ ./configure prefix=/usr/local/Qt-4.8.6 --host=arm-linux CC=arm-linux-gnueabihf-gcc $ make $ make install
ts_test.o: In function `main': ts_test.c:(.text.startup+0x228): undefined reference to `rpl_malloc' fbutils.o: In function `open_framebuffer': fbutils.c:(.text+0x152): undefined reference to `rpl_malloc' collect2: error: ld returned 1 exit status make[2]: *** [ts_test] Error 1 make[2]: Leaving directory `/home/jhlee/qtwork/qtsource/tslib/tslib-1.0/tests' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/home/jhlee/qtwork/qtsource/tslib/tslib-1.0' make: *** [all] Error 2
http://egloos.zum.com/sunnmoon/v/2348814
http://jiphung.com/399
5.3 QTWebkit
git clone git://gitorious.org/+qtwebkit-developers/webkit/qtwebkit.git
sudo apt-get install bison flex libqt4-dev libqt4-opengl-dev libphonon-dev libicu-dev libsqlite3-dev libxext-dev libxrender-dev gperf libfontconfig1-dev libphonon-dev g++
Ref. QTWebkit 빌드
http://webkit.sed.hu/blog/20100427/qtwebkit-cross-compilation-gcc-arm-linux
http://linuxspot.tistory.com/249
http://www.sarangnamu.net/basic/basic_view.php?no=4603&page=47&sCategory=0
5.4 Build QT
개발전 우분투에서 설치해줘야할 Package들
sudo apt-get install build-essential libfontconfig1-dev libfreetype6-dev libx11-dev libxcursor-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxrandr-dev libxrender-dev
- vi mkspecs/qws/linux-arm-g++/qmake.conf
아래와 같이 수정.
# modifications to g++.conf QMAKE_CC = arm-linux-gnueabihf-gcc QMAKE_CXX = arm-linux-gnueabihf-g++ QMAKE_LINK = arm-linux-gnueabihf-g++ QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ # modifications to linux.conf QMAKE_AR = arm-linux-gnueabihf-ar cqs QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy QMAKE_STRIP = arm-linux-gnueabihf-strip
// TS Lib 설치 했을 경우 , Option
QMAKE_INCDIR += /usr/local/Qt-4.8.6/include QMAKE_LIBDIR += /usr/local/Qt-4.8.6/lib -lts
- 아래와 같이 QT source에 들어가 초기화하고, 설정 및 Make
$ sudo -i $ cd qt-everywhere-opensource-src-4.8.4
$ make confclean $ echo yes | ./configure -prefix /usr/local/Qt-4.8.6 -xplatform qws/linux-arm-g++ -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlfile -no-accessibility -no-qt3support -qt-zlib -qt-libpng -no-libmng -qt-libjpeg -no-libtiff -no-nis -no-cups -qt-freetype -depths 16,24,32 -opensource
$ make confclean $ echo yes | ./configure -prefix /usr/local/Qt-4.8.6 -xplatform qws/linux-arm-g++ -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-libpng -no-libmng -qt-libjpeg -no-libtiff -no-nis -no-cups -qt-freetype -depths 16,24,32 -opensource
$ make -j 5 $ make install
//TSLibrary 추가
$echo yes | ./configure -prefix /usr/local/Qt-4.8.6 -xplatform qws/linux-arm-g++ -embedded arm -little-endian -release -no-largefile -no-accessibility -no-qt3support -qt-zlib -qt-libpng -qt-libjpeg -qt-libtiff -qt-libmng -qt-freetype -depths 16,24,32 -opensource -qt-gfx-transformed -qt-mouse-tslib -qt-mouse-pc -webkit -qt-sql-qsqlite
$ make -j 5 $ make install
http://www.sereno-labs.com/Qt_4.8.3_installation_procedure_FriendlyARM_mini6410_Linux
6. QT Build ERRS
1. ERROR-1
qtconcurrentiteratekernel.cpp:(.text+0x1a): undefined reference to `clock_gettime' collect2: error: ld returned 1 exit status make[1]: *** [../../lib/libQtCore.so.4.8.6] Error 1
vi src/corelib/Makefile
LIBS = $(SUBLIBS) -L/opt/qt-everywhere-opensource-src-4.8.4/lib -lpthread -lm -ldl -lrt
2. ERROR-2
make: *** [sub-examples-make_default-ordered] Error 2
위의 Setting에서 기본환경 설치 확인
3. ERROR-3 (TSLIB)
참고사항
The tslib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR and QMAKE_LIBDIR in
TSLib 설치 및 QMAKE_LIBDIR 설정
4. 기타에러
uentialanimationgroup.h -o .moc/release-shared-emb-arm/moc_qsequentialanimationgroup.cpp
compilation terminated.
make[1]: *** [.pch/release-shared-emb-arm/QtCore.gch/c++] Error 1
make[1]: *** Waiting for unfinished jobs...
이전에 permission 문제를 발견을 해서,
chown -R jhlee .
chgrp -R jhlee . 로 해결
5.6 Configure option 설명
-prefix /usr/local/Qt-4.8.6 : QT library가 설치될 장소 선정
-opensource : opensource 이 옵션일 경우 question 이 없어짐 (상용 –commercial)
-embedded arm : 임베디드 ARM 기반으로 빌드한다.
-platform /qws/linux-x86_64-g++ : Host에서 사용할 컴파일러(32비트 사용시는/qws/linux-x86-g++ 옵션을 사용)
-xplatform /qws/linux-dm368-g++ : Target에서 사용할 컴파일러(dm368일 경우)
-depths 16,24,32 : 지원되는 Bit-per-pixel. (콤마로 지원되는 값들을 구분)
-no-cups : CUPS를 지원하지 않도록 함.
-no-largefile : 대용량 파일을 지원하지 않도록 함.
-no-accessibility : Windows Active Accessibility을 지원하지 않도록 함.
-no-openssl : OPENSSL을 지원하지 않는다.
-no-gif : GIF 읽기를 지원하지 않는다.
-no-libtiff : TIFF를 지원하지 않는다.
-no-libmng :MNG를 지원하지 않는다.
-qt-gfx-transformed : 가속되지 않은 Linux Framebuffer(/dev/fb0)을 Enable한다.
-plugin-gfx-transformed : Linux Framebuffer를 런타임시에 링크시킨다.
-continue : 가능한 범위 내에서 오류를 무시하고 계속한다.
-no-mouse-pc : PC 마우스 드라이버를 사용하지 않는다.
-no-mouse-linuxtp : linuxtp 마우스 드라이버를 사용하지 않는다.
-qt-mouse-tslib : ‘tslib’ 터치 드라이버를 사용한다.
-plugin-mouse-tslib : ‘tslib’ 터치 드라이버를 런타임시에 링크한다.
-little-endian : Target 플랫폼은 little-endian으로 동작한다.
-host-little-endian : Host 플랫폼은 little-endian으로 동작한다.
-no-multimedia : Qt Multimedia 모듈을 빌드하지 않는다.
--no-svg : SVG(Scalable Vector Graphics) 모듈을 빌드하지 않는다.
-no-webkit : Webkit 모듈을 빌드하지 않는다.
-no-mmx : MMX 명령을 사용하지 않는다.
-no-3dnow : 3DNOW 명령을 사용하지 않는다.
-no-sse : SSE 명령을 사용하지 않는다.
-no-sse2 : SSE2 명령을 사용하지 않는다.
-no-qt3support : Qt3 지원을 사용하지 않는다.
-no-script : Qt Script를 사용하지 않는다.
-no-scripttools : Qt ScriptTools를 사용하지 않는다.
-qt-libpng : png 라이브러리를 사용한다.
-qt-zlib : zlib 옵션을 사용하도록 한다.(32비트에서만 필요할 것이다.)
-qconfig petra : qconfig-petra.h 를 참조하여 필요한 부분만 컴파일한다.
-release : 디버깅 모드를 사용하지 않고 릴리즈 모드로 컴파일한다.
-qt-sql-[driver-name] : qmysql, qsqlite,
http://qt-project.org/doc/qt-4.8/sql-driver.html
http://qt-project.org/wiki/Building_Qt_for_Embedded_Linux
5.3 QT TEST
http://processors.wiki.ti.com/index.php/Qt_Tips
http://com.odroid.com/sigong/blog/blog_list.php?bid=133
기본환경 설정
- cat /etc/X11/xorg.conf
//FB6 HDMI , FB0 LCD Section "Device" identifier "FBDEV" Driver "fbdev" Option "fbdev" "/dev/fb6" EndSection Section "Screen" identifier "Default Screen" Device "FBDEV" DefaultDepth 16 EndSection
- vi /etc/enviornments or /etc/rc.local (/etc/rc.local 동작안함)
export QWS_DISPLAY="LinuxFb:/dev/fb6" export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/Qt-4.8.6/lib:/usr/local/lib export PATH=$PATH:/usr/local/bin:/usr/local/Qt-4.8.6/demos/deform
export QWS_DISPLAY="LinuxFb:/dev/fb6" export QWS_MOUSE_PROTO="USB:/dev/input/event1" export LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/Qt-4.8.6/lib export PATH=/bin:/sbin:/usr/bin/:/usr/sbin:/usr/local/bin:/usr/local/Qt-4.8.6/demos/deform cd /usr/local/Qt-4.8.6/demos/deform ./deform -qws
- ./deform -qws -display LinuxFb:/dev/fb6 // -display 옵션, Multi로 사용가능
- 관련 link
QTWebKit
http://linuxspot.tistory.com/249
ODROID QT Porting
http://com.odroid.com/sigong/nf_board/nboard_view.php?brd_id=odroidx&kind=52&bid=1644
http://napan.ca/ghpsdr3/index.php/Odroid
QT 4.7 Porting GUIDE
http://www.jkelec.co.kr/img/arm/arm11/s3c6410_startkit/man/s3c6410_startkit_qt4.7.0_porting.html
QT 구조
http://qt-project.org/doc/qt-4.8/qt-embedded-linux.html
QT 4.8 Porting GUIDE
http://qt-project.org/doc/qt-4.8/qt-embedded-install.html
http://qt-project.org/doc/qt-5/embedded-linux.html
QT 5.2
https://www.ics.com/blog/building-qt-and-qtwayland-raspberry-pi#.VCKXLvl_uGE
QT 4.8.4
http://galhui.tistory.com/38
http://blog.csdn.net/wangpengqi/article/details/8728234
http://stackoverflow.com/questions/19059596/cross-compiling-qt-for-pandaboard
http://qt-project.org/forums/viewthread/16595
http://forum.falinux.com/zbxe/index.php?document_srl=506571&mid=question
http://chiccoder.tistory.com/36
(USB 모니터 및 Touchscreen example)
- FILE SYSTEM
https://wiki.kldp.org/wiki.php/LinuxBasedOnUSB-StorageDevice
http://processors.wiki.ti.com/index.php/Creating_a_Root_File_System_for_Linux_on_OMAP35x
https://emreboy.wordpress.com/2012/12/20/building-a-root-file-system-using-busybox/
https://gist.github.com/chrisdone/02e165a0004be33734ac2334f215380e
- Window에서 Image굽는 프로그램
8/24/2014
IPTIME n150ua Android WIFI HAL 기본설정
나의 장난감 ODROID위에 IPTIME n150ua의 기본 Linux Driver를 Porting 한 후 에기본적인 TEST가 진행된 후에 이일을 진행해야한다.
아래와 같이 Android의 HAL Interface의 설정을 수정해주면 Android에서도 문제없이 WIFI를 사용 할 수 있다.
현재 이 부분은 기본적인 TEST를 마친 상황이다.
Odroid에서 IPTIME n150ua Porting
https://ahyuo79.blogspot.com/2014/08/android.html
Odroid WIFI 관련 설정 및 테스트
https://ahyuo79.blogspot.com/2014/03/dlna-upnp.html
libhardware_legacy.so
out/target/product/odroidx2/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/wifi/wifi.o
./out/target/product/odroidx2/root/init.odroidx2.rc
./out/target/product/odroidx2/system/init.odroidx2.rc
cp rt3070sta.ko to device/hardkernel/odroidx2/drivers/
아래와 같이 Android의 HAL Interface의 설정을 수정해주면 Android에서도 문제없이 WIFI를 사용 할 수 있다.
현재 이 부분은 기본적인 TEST를 마친 상황이다.
Odroid에서 IPTIME n150ua Porting
https://ahyuo79.blogspot.com/2014/08/android.html
Odroid WIFI 관련 설정 및 테스트
https://ahyuo79.blogspot.com/2014/03/dlna-upnp.html
- vi device/hardkernel/odroidx2/BoardConfig.mk
BOARD_WIFI_VENDOR := realtek BOARD_WLAN_DEVICE := rtl819xxu WPA_SUPPLICANT_VERSION := VER_0_8_X BOARD_WPA_SUPPLICANT_DRIVER := WEXT BOARD_WPA_SUPPLICANT_PRIVATE_LIB := lib_driver_cmd_rtl WIFI_DRIVER_MODULE_NAME := "rtl8191su" WIFI_DRIVER_MODULE_PATH := "/system/lib/modules/rtl8191su.ko" WIFI_DRIVER_MODULE_NAME2 := "rtl8192cu" WIFI_DRIVER_MODULE_PATH2 := "/system/lib/modules/rtl8192cu.ko" WIFI_DRIVER_MODULE_NAME3 := "rt5370sta" WIFI_DRIVER_MODULE_PATH3 := "/system/lib/modules/rt5370sta.ko" WIFI_DRIVER_MODULE_NAME4 := "rt3070sta" WIFI_DRIVER_MODULE_PATH4 := "/system/lib/modules/rt3070sta.ko"
- vi hardware/libhardware_legacy/wifi/wifi.c
int wifi_load_driver() { #ifdef WIFI_DRIVER_MODULE_PATH char driver_status[PROPERTY_VALUE_MAX]; int count = 100; /* wait at most 20 seconds for completion */ char node[50] = {'\0',}; char buf[5] = {'\0',}; DIR *dir = opendir("/sys/bus/usb/devices/"); struct dirent *dent; if (dir != NULL) { while ((dent = readdir(dir)) != NULL) { memset(node, '\0', 50); sprintf(node, "/sys/bus/usb/devices/%s/idVendor", dent->d_name); int vid_fd = open(node, O_RDONLY); memset(buf, '\0', 5); .... } else if (strcmp(buf, "3070") == 0) { ALOGE("rt3070 Wi-Fi Module 4"); //wifi module 4 rt3070 strcpy(DRIVER_MODULE_NAME, WIFI_DRIVER_MODULE_NAME4); strcpy(DRIVER_MODULE_TAG, WIFI_DRIVER_MODULE_NAME4 " "); strcpy(DRIVER_MODULE_PATH, WIFI_DRIVER_MODULE_PATH4); close(pid_fd); close(vid_fd); break; }
- vi hardware/libhardware_legacy/wifi/Android.mk
ifdef WIFI_DRIVER_MODULE_PATH LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_PATH=\"$(WIFI_DRIVER_MODULE_PATH)\" LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_PATH2=\"$(WIFI_DRIVER_MODULE_PATH2)\" LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_PATH3=\"$(WIFI_DRIVER_MODULE_PATH3)\" LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_PATH4=\"$(WIFI_DRIVER_MODULE_PATH4)\" endif ... ifdef WIFI_DRIVER_MODULE_NAME LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_NAME=\"$(WIFI_DRIVER_MODULE_NAME)\" LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_NAME2=\"$(WIFI_DRIVER_MODULE_NAME2)\" LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_NAME3=\"$(WIFI_DRIVER_MODULE_NAME3)\" LOCAL_CFLAGS += -DWIFI_DRIVER_MODULE_NAME4=\"$(WIFI_DRIVER_MODULE_NAME4)\" endif
- vi ./device/hardkernel/odroidx2/conf/init.odroidx2.rc
libhardware_legacy.so
out/target/product/odroidx2/obj/SHARED_LIBRARIES/libhardware_legacy_intermediates/wifi/wifi.o
./out/target/product/odroidx2/root/init.odroidx2.rc
./out/target/product/odroidx2/system/init.odroidx2.rc
cp rt3070sta.ko to device/hardkernel/odroidx2/drivers/
8/23/2014
IPTIMEn150ua on ODROID (기본동작확인)
1. IPTIME n150ua Porting
1.1 개요
ODROID X2 보드 위에 다른 USB LAN을 사용하기 위해서 남은 USB LAN을 집에서 찾기 시작했지만,
내집에서는 찾지를 못하고 때마침 대전 집에서 우연히 발견된 IPTIME n150ua을 가지고 이를 시작하게됨.
우선 IPTIME n150ua 사의 이 칩명이 알아야 할 것 같아 아래와 같이 IPTIME 사이트에서 질문을 했더니 정확한 칩명과 관련 Driver를 제공을 해주셨다.
집에서 심심해서 우연히 시작한일인데, 정보를 제공해주신 IPTIME에 감사할 뿐이다,
1.2 IPTIME n150ua 정보 및 관련 사이트
3.2 vi os/linux/config.mk 수정
WPA_SUPPLICANT 기능 지원을 위해 아래와 같은 기능을 추가.
(주의: HAS_WPA_SUPPLICANT=y 바로 옆에 주석을 달았더니, 환경변수가 미설정됨)
3.3 vi os/linux/usb_main_dev.c 수정
참조사항
http://www.linuxforums.org/forum/wireless-internet/161550-rt3070sta-module-license-unspecified-taints-kernel-solved.html
참고사항 A.
CFLAG를 사용할 경우 에러, CFLAGS -> EXTRA_CFLAGS 변경해줌
참고사항 B.
WLAGS 값이 제대로 동작이 안되어 이를 Debugging.
참고사항 C.
아래와 같이 insmod시 에러시 MODULE_LICESE("GPL") 추가
3.4 Android 관련수정
Android 수정관련사항
http://ac100.wikispaces.com/Android+rt3070+or+rt2x00
4. 기본 TEST on the ODROID
RT3070이 기본이 STA로 설정이 되어있게 되어있어서, 기본 네트워크 동작을 확인을 했으며, AP는 설명했지만 Test를 하지 못했다.
RT2870STA.dat 파일을 Loading 하는 시점은 ifconfig ra0 up 이다.그리고, 이와 관련된 설정은 iwpriv로 변경이 가능하다.
WPS설정 iwpriv에서 command 형식으로 지원을 하는데, 이부분도 Test 못함.
급히 다른 회사일 때문에 모든것을 마무리 했으며, 추후에 더 시간이 있다면 그때 하도록하자.
4.1 copy rt3070sta.ko to odroid
on serial or adb shell
Send the driver & data to the device on Window
4.2 USB 연결확인 및 기본설정확인.
on serial or adb shell
4.3 connect to AP with wpa_suppicant
on serial or adb shell
관련사항
http://sirlagz.net/2012/08/27/how-to-use-wpa_cli-to-connect-to-a-wireless-network/
http://lists.shmoo.com/pipermail/hostap/2009-December/020817.html
4.4 connect to AP without wpa_suppicant
4.5 관련 기타사항 기록
dhcpd Manual
http://www.daemon-systems.org/man/dhcpcd.8.html
# iwpriv ra0 set EthConvertMode=clone
# iwpriv ra0 set EthCloneMac="00:00:00:00:00:00"
AuthMode=OPEN -> WPA2
1.1 개요
ODROID X2 보드 위에 다른 USB LAN을 사용하기 위해서 남은 USB LAN을 집에서 찾기 시작했지만,
내집에서는 찾지를 못하고 때마침 대전 집에서 우연히 발견된 IPTIME n150ua을 가지고 이를 시작하게됨.
- 모델명: IPTIME n150ua
- USB device로 동작이되는 WLAN Card
우선 IPTIME n150ua 사의 이 칩명이 알아야 할 것 같아 아래와 같이 IPTIME 사이트에서 질문을 했더니 정확한 칩명과 관련 Driver를 제공을 해주셨다.
집에서 심심해서 우연히 시작한일인데, 정보를 제공해주신 IPTIME에 감사할 뿐이다,
1.2 IPTIME n150ua 정보 및 관련 사이트
- 모델명: RT3070
- Device Driver : 2011_0107_RT3070.tar
- IPTIME 사용되는 CHIP이름알기
감사할 뿐이다. 그래서 위와 같이 Linux Driver를 구하고 이 일을 시작하게됨
오랜만에 다시 링크하니, 내가 질문한 것이 없어져서, 다른 것으로 대체,
http://www.iptime.co.kr/~iptime/bbs/view.php?id=qna&no=292133
2. WLAN Linux Driver 구성
2.1 기본숙지문서
Driver Build 방법 및 Test 하는 방법은 인터넷 및 책에 설명이 너무 잘 나와있다
Linux Driver의 상위 두 문서를 제대로 읽는다면, 기본 Build 및 Test 진행에 어려움이 없다.
1. Build 사항 및 How to install
2. RT2870STA.dat 설정 파일 설명
2.2 Makefile 기본구성
3. WLAN Linux Driver 환경설정 및 빌드
수정은 아래와 같이 순서대로 하고 빌드는 make를 하면 원하는 모듈을 얻을 수 있을 것이다.
3.1 Makefile 수정
아래의 변수 PLATFORM과 TARGET PLATFORM은 기존의 것을 가지고 수정하여 만들면된다.
어차피 Linux Kernel source path 문제로 인하여 아래와 같이 수정해야한다.
PLATFORM을 새로 만들어서 하면, 이상하게도 내 환경변수들이 제대로 설정이 안되어서,
기존 에 존재하던 것을 수정하여 Build를 시도.
- 기능설명, WPS란?
- Download Linux Driver
2. WLAN Linux Driver 구성
2.1 기본숙지문서
- README_STA_usb
- iwpriv_usage.txt
Driver Build 방법 및 Test 하는 방법은 인터넷 및 책에 설명이 너무 잘 나와있다
Linux Driver의 상위 두 문서를 제대로 읽는다면, 기본 Build 및 Test 진행에 어려움이 없다.
1. Build 사항 및 How to install
2. RT2870STA.dat 설정 파일 설명
2.2 Makefile 기본구성
Makefile // Main 구성 (PLATFORM 설정 및 기본 TEST) ./os/linux/config.mk // 각 설정 ./os/linux/Makefile.4 or 6 // kernel version 에 따라 설정되며, 실제 빌드
3. WLAN Linux Driver 환경설정 및 빌드
수정은 아래와 같이 순서대로 하고 빌드는 make를 하면 원하는 모듈을 얻을 수 있을 것이다.
- rt3070sta.ko
아래의 변수 PLATFORM과 TARGET PLATFORM은 기존의 것을 가지고 수정하여 만들면된다.
어차피 Linux Kernel source path 문제로 인하여 아래와 같이 수정해야한다.
PLATFORM을 새로 만들어서 하면, 이상하게도 내 환경변수들이 제대로 설정이 안되어서,
기존 에 존재하던 것을 수정하여 Build를 시도.
- PLATFORM : 5VT로 선정하여 수정
- LINUX_SRC 및 CROSS_COMPILE 환경설정
ifeq ($(PLATFORM),5VT)
LINUX_SRC = /home/jhlee/mywork/kernel/linux
CROSS_COMPILE = arm-none-eabi-
endif
LINUX: // TARGET LINUX에서 변수 TEST
echo ">>> PLATFORM $(PLATFORM)" // 각종 변수 TEST
echo ">>> TEST_INC $(TEST_INC)"
echo ">>> LINUX_SRC $(LINUX_SRC)"
....
echo " TEST my plaform LINUX_SRC=$(LINUX_SRC) CROSS_COMPILE=$(CROSS_COMPILE) ARCH=$(ARCH) " // 변수 TEST , 처음에 제대로 안들어옴
$(MAKE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
3.2 vi os/linux/config.mk 수정
WPA_SUPPLICANT 기능 지원을 위해 아래와 같은 기능을 추가.
(주의: HAS_WPA_SUPPLICANT=y 바로 옆에 주석을 달았더니, 환경변수가 미설정됨)
# Support Wpa_Supplicant HAS_WPA_SUPPLICANT=y # Support Native WpaSupplicant for Network Maganger HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y ifeq ($(PLATFORM),5VT) EXTRA_CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -DMODULE $(WFLAGS) endif
3.3 vi os/linux/usb_main_dev.c 수정
#include "rt_config.h" ...... MODULE_AUTHOR("Paul Lin "); MODULE_DESCRIPTION("RT2870 Wireless Lan Linux Driver"); MODULE_LICENSE("GPL");
참조사항
http://www.linuxforums.org/forum/wireless-internet/161550-rt3070sta-module-license-unspecified-taints-kernel-solved.html
참고사항 A.
CFLAG를 사용할 경우 에러, CFLAGS -> EXTRA_CFLAGS 변경해줌
scripts/Makefile.build:49: *** CFLAGS was changed in "/home/jhlee/mywork/2011_0107_RT3070_RT3370_Linux_STA_v2.5.0.1_DPO/os/linux/Makefile". Fix it to use EXTRA_CFLAGS. Stop.
참고사항 B.
WLAGS 값이 제대로 동작이 안되어 이를 Debugging.
- vi os/linux/Makefile.6 (맨 아래에 추가, 각 변수확인 후 지움)
%.o: echo "WLAGS=$(WLAGS)" echo "EXTRA_CFLAGS=$(EXTRA_CFLAGS)"
참고사항 C.
아래와 같이 insmod시 에러시 MODULE_LICESE("GPL") 추가
# insmod /lib/modules/rt3070sta.ko [ 2152.229076] rt3070sta: Unknown symbol usb_alloc_urb (err 0) [ 2152.229239] rt3070sta: Unknown symbol usb_free_urb (err 0) [ 2152.234685] rt3070sta: Unknown symbol usb_alloc_coherent (err 0) [ 2152.240690] rt3070sta: Unknown symbol usb_register_driver (err 0) [ 2152.246849] rt3070sta: Unknown symbol usb_put_dev (err 0) [ 2152.252033] rt3070sta: Unknown symbol usb_get_dev (err 0) [ 2152.257417] rt3070sta: Unknown symbol usb_submit_urb (err 0) [ 2152.263094] rt3070sta: Unknown symbol usb_free_coherent (err 0) [ 2152.269011] rt3070sta: Unknown symbol usb_control_msg (err 0) [ 2152.274745] rt3070sta: Unknown symbol usb_deregister (err 0) [ 2152.280535] rt3070sta: Unknown symbol usb_kill_urb (err 0)
3.4 Android 관련수정
Android 수정관련사항
http://ac100.wikispaces.com/Android+rt3070+or+rt2x00
4. 기본 TEST on the ODROID
RT3070이 기본이 STA로 설정이 되어있게 되어있어서, 기본 네트워크 동작을 확인을 했으며, AP는 설명했지만 Test를 하지 못했다.
RT2870STA.dat 파일을 Loading 하는 시점은 ifconfig ra0 up 이다.그리고, 이와 관련된 설정은 iwpriv로 변경이 가능하다.
WPS설정 iwpriv에서 command 형식으로 지원을 하는데, 이부분도 Test 못함.
급히 다른 회사일 때문에 모든것을 마무리 했으며, 추후에 더 시간이 있다면 그때 하도록하자.
4.1 copy rt3070sta.ko to odroid
on serial or adb shell
# su # mount -o rw,remount -t ext4 /dev/block/mmcblk0p2 /system # mount -o rw,remount -t ext4 /dev/root /
Send the driver & data to the device on Window
Y:\WORKS\LINUX\SHARED> adb push rt3070sta.ko /system/lib/modules Y:\WORKS\LINUX\SHARED> adb push RT2870STA.dat /etc/Wireless/RT2870STA
4.2 USB 연결확인 및 기본설정확인.
on serial or adb shell
root@odroidx2:/etc/Wireless/RT3070STA # lsusb // 연결확인 Bus 001 Device 001: ID 1d6b:0002 Bus 002 Device 001: ID 1d6b:0001 Bus 001 Device 002: ID 0424:3503 Bus 001 Device 003: ID 0424:9514 Bus 001 Device 004: ID 0424:ec00 Bus 001 Device 006: ID 148f:3070 # vi RT2870STA.dat AuthMode OPEN ->WPA2 # cat /data/misc/wifi/wpa_supplicant.conf ctrl_interface=/data/misc/wifi/sockets update_config=1 device_name=odroidx2 manufacturer=HARDKERNEL Co., Ltd. model_name=ODROID-X2 model_number=ODROID-X2 serial_number= device_type=10-0050F204-5 config_methods=physical_display virtual_push_button network={ ssid="CWPW" key_mgmt=NONE priority=1 } network={ ssid="U+Net6AFB" psk="5000050330" key_mgmt=WPA-PSK priority=2 }
4.3 connect to AP with wpa_suppicant
on serial or adb shell
# su # insmod /lib/modules/rt3070sta.ko # ifconfig ra0 up # wpa_supplicant -Dwext -ira0 -c/data/misc/wifi/wpa_supplicant.conf -dd & # wpa_cli -p/data/misc/wifi/sockets -ira0 ..... Interactive mode > scan OK > scan_result bssid / frequency / signal level / flags / ssid 00:40:5a:9c:6a:f8 2422 -51 [WPA-PSK-TKIP][ESS] 00:40:5a:9c:6a:fa 2422 -55 [WPA2-EAP-CCMP][ESS] U+zone 00:40:5a:9c:6a:f9 2422 -55 [WPA2-PSK-CCMP][ESS] U+Net6AFB 00:26:66:a0:35:ba 2432 -73 [WPA-PSK-CCMP][WPA2-PSK-CCMP][WPS][ESS] iptime89 6c:fd:b9:30:ba:82 2457 -69 [WEP][ESS] SAMSUNG 00:24:a5:34:2f:b3 2462 -81 [WPS][ESS] 0024A5342FB3 > list_network // wpa_supplicant.conf 의 list network id / ssid / bssid / flags 0 CWPW any 1 U+Net6AFB any [CURRENT] > select_network 1 // list 중 선택 OK > add_network // 아래와 같이 WPA-PSK로 추가 가능 2 > set_network 2 ssid "U+NetE3CD" OK > set_network 2 key_mgmt WPA-PSK OK > set_network 2 psk "1122333353" // OK > select_network 1 // 추가했으나, 기존것으로 연결 OK > status bssid=00:40:5a:9c:6a:f9 ssid=U+Net6AFB id=1 mode=station pairwise_cipher=CCMP group_cipher=CCMP key_mgmt=WPA2-PSK wpa_state=COMPLETED address=00:26:66:41:26:12
관련사항
http://sirlagz.net/2012/08/27/how-to-use-wpa_cli-to-connect-to-a-wireless-network/
http://lists.shmoo.com/pipermail/hostap/2009-December/020817.html
4.4 connect to AP without wpa_suppicant
# ifconfig ra0 up
# iwconfig ra0 essid "U+NetE3CD" // iwpriv ra0 set SSID="U+NetE3CD" 동일
# iwpriv ra0 set AuthMode=WPA2PSK .
# iwpriv ra0 set EncrypType=AES
# iwpriv ra0 set WPAPSK="1000003353"
# iwconfig ra0 // 확인
ra0 Ralink STA ESSID:"U+NetE3CD" Nickname:"RT2870STA"
Mode:Managed Frequency=2.412 GHz Access Point: 00:27:1C:CC:E3:CB
Bit Rate=135 Mb/s
RTS thr:off Fragment thr:off
Encryption key:533A-C4F7-1FC2-8647-DE03-0301-329D-606C [2] Security mode:open
Link Quality=100/100 Signal level:-29 dBm Noise level:-32 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:
# dhcpcd -n ra0
dhcpcd[3816]: sending signal 14 to pid 3736
dhcpcd[3816]: version 5.5.6 starting
dhcpcd[3816]: ra0: sending IPv6 Router Solicitation
dhcpcd[3816]: ra0: rebinding lease of 192.168.219.109
dhcpcd[3816]: ra0: acknowledged 192.168.219.109 from 192.168.219.1
dhcpcd[3816]: ra0: checking for 192.168.219.109
dhcpcd[3816]: ra0: sending IPv6 Router Solicitation
dhcpcd[3816]: ra0: leased 192.168.219.109 for 86400 seconds
dhcpcd[3816]: forked to background, child pid 3850
# ping 192.168.219.1
64 bytes from 192.168.219.1: icmp_seq=1 ttl=64 time=8.91 ms
64 bytes from 192.168.219.1: icmp_seq=2 ttl=64 time=1.93 ms
64 bytes from 192.168.219.1: icmp_seq=3 ttl=64 time=1.92 ms
4.5 관련 기타사항 기록
dhcpd Manual
http://www.daemon-systems.org/man/dhcpcd.8.html
# iwpriv ra0 set EthConvertMode=clone
# iwpriv ra0 set EthCloneMac="00:00:00:00:00:00"
AuthMode=OPEN -> WPA2
Odroid 관련이슈
https://code.google.com/p/0xdroid/issues/detail?id=160
관련사항
http://forum.samygo.tv/viewtopic.php?f=4&t=3979
http://www.korenixembedded.com/images/support/faq/JetBox_UM_Sparklan%20WPER-150GN%20wifi_v0.0.1.pdf
https://forums.gentoo.org/viewtopic-p-7290276.html
http://rhdxmr.tistory.com/48
https://code.google.com/p/0xdroid/issues/detail?id=160
# cat /proc/net/dev Inter-| Receive | Transmit face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 sit0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ip6tnl0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ra0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # cat /proc/net/wireless Inter-| sta-| Quality | Discarded packets | Missed | WE face | tus | link level noise | nwid crypt frag retry misc | beacon | 22 ra0: 0000 10. -256 -256 0 0 0 0 0 0 root@odroidx2:/ # netcfg lo UP 127.0.0.1/8 0x00000049 00:00:00:00:00:00 sit0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00 ip6tnl0 DOWN 0.0.0.0/0 0x00000080 00:00:00:00:00:00 eth0 UP 0.0.0.0/0 0x00001003 1a:35:8f:c5:6e:b0 ra0 UP 0.0.0.0/0 0x00001043 00:26:66:41:26:12 255|root@odroidx2:/ # ifconfig ra0 up [ 5851.355400] (Efuse for 3062/3562/3572) Size=0x2d [2d0-2fc] [ 5851.867774] -->RTUSBVenderReset [ 5851.868026] <--rtusbvenderreset p="">[ 5852.410959] RtmpOSFileOpen(): Error 2 opening /etc/Wireless/RT2870STA/RT2870STA.dat [ 5852.412997] Open file "/etc/Wireless/RT2870STA/RT2870STA.dat" failed! [ 5852.419480] 1. Phy Mode = 0 [ 5852.422330] ERROR!!! RTMPReadParametersHook failed, Status[=0x00000001] [ 5852.486133] !!! rt28xx Initialized fail !!! error: SIOCSIFFLAGS (Operation not permitted)--rtusbvenderreset>
http://forum.samygo.tv/viewtopic.php?f=4&t=3979
http://www.korenixembedded.com/images/support/faq/JetBox_UM_Sparklan%20WPER-150GN%20wifi_v0.0.1.pdf
https://forums.gentoo.org/viewtopic-p-7290276.html
http://rhdxmr.tistory.com/48
피드 구독하기:
글
(
Atom
)