아래와 같은 보드를 발견. Cortex-A9이 포함된 보드인데 스펙이 빠방하다.
그럼에도 불구하고 가격도 저렴. 우리나라 돈으로 21만원 정도면 구입이 가능하다.
장난감으로 하나 구입하고 싶은 충동을 강하게 받고 있다.
학생 때 같았으면 벌써 사서 이것저것 해 봤을텐데... ㅜ.ㅜ
어쨌든 조만간 질러버릴 수 도 있다. (물론 마눌님 용돈할부의 형태가 되겠지...)
한국 원화 가격
Digi-Key 부품번호
UEVM4430F-01-00-00-ND
수량
단가
소계
1
203,705.00000
203,705
이용가능 수량
0
제조업체
Circuitco Electronics LLC
제조업체 부품 번호
UEVM4430G-01-00-00
제품요약
PANDABOARD
무연 여부 / RoHS 준수 여부
무연 / RoHS 준수
PandaBoard Platform Specifications
PandaBoard: First open OMAP™ 4 mobile software development platform includes the following:
Dual-core ARM® Cortex™-A9 MPCore™ with Symmetric Multiprocessing (SMP) at 1 GHz each. Allows for 150% performance increase over previous ARM Cortex-A8 cores.
Full HD (1080p) multi-standard video encode/decode
Imagination Technologies’ POWERVR™ SGX540 graphics core supporting all major API's including OpenGL® ES v2.0, OpenGL ES v1.1, OpenVG v1.1 and EGL v1.3 and delivering 2x sustained performance compared to the previous SGX530 core
Low power audio
Technical Specs
Memory
1 GB low power DDR RAM
Full size SD/MMC card cage with Support for High-Speed & High-Capacity SD cards
Display
HDMI v1.3 Connector (Type A) to drive HD displays
DVI-D Connector (can drive a 2nd display in simultaneous)
LCD expansion header
Connectivity
Onboard 10/100 Ethernet
Debug
JTAG
UART/RS-232
2 status LEDs (configurable)
1x GPIO button
Currently Supported Distributions
Android
Ubuntu
Ångström minimal filesystem
Core Logic
OMAP4430 applications processor
Expansion
1x USB 2.0 High-Speed On-The-Go port
2x USB 2.0 High-Speed host ports
General purpose expansion header (I2C, GPMC, USB, MMC, DSS, ETM)
* Setting the NFS shared directory
1. Add shared directorie to the list file "/etc/exports"
ex) /opt/rootfs *(rw,no_root_squash,no_all_squash,no_subtree_check,async)
2. Restart NFS service
prompt# /etc/init.d/nfs-kernel-server restart
binder에 대한 내용을 공부하다 kzalloc이란 커널 메모리 할당 함수가 있어 찾아 보았다.
kcalloc과 kzalloc 모두 동일하게, 요청한 크기의 메모리를 0으로 초기화하여 반환한다.
그런데 왜 두 개의 함수로 나누어 놓았을까?
그 내용은 위의 kzalloc 링크에 설명되어 있듯이,
처음에는 kmalloc + memset의 기능을 하나로 합쳐 kcalloc으로 만들었다고 한다.
void *kcalloc(size_t n, size_t size, unsigned int __nocast gfp_flags);
그런데, 사용자들은 보통 kcalloc의 첫 번째 인자인 [size_t n]의 입력을 보통 1로 하여 호출하여, 원래의 기능인 (n * size) 크기의 메모리 할당이 (1 * size) 가되어 별 의미가 없다는 불평(?)이 있었다고 한다. (개인적으로도 헷갈리기만 하고 별 필요 없었다고 생각이 들었다. align을 편하게 하기위해 만든기능?)
그래서 나온 함수가 kzalloc.
void *kzalloc(size_t size, unsigned int __nocast gfp_flags);
Android VM은 Process 별로 instance가 생성된다.
그래서 각 VM별로 사용할 수 있는 heap의 크키가 정해져 있는데,
큰 메모리가 필요한 app을 만들고 실행하려면 VM에 할당 된 heap의 크기를 늘려야 할 필요가 생긴다.
이미지를 생성할 때 설정을 변경할 수 도 있지만, 그냥 구동중인 device에서 VM의 heap 크기를 변경할 수도 있다.
물론 /system은 읽기전용ro으로 mount 되어 있으므로 루팅을 통해 /system 에대해 쓰기권한을 부여해야 한다. (시스템 설정을 수정하는 것이어서 어떠한 문제가 발생할지 모른다. 그러므로 신중하게 해야 한다. 잘못되어도 본인은 책임을 질 수 없다^^;)
방법은 다음과 같다.
1. /system/build.prop 파일을 수정할 수 있도록 디바이스에서 추출한다.
ex) adb pull /system/build.prop
2. Notepad++ 등의 편집기를 이용하여 파일을 열고, 다음 문자열을 검색한다. dalvik.vm.heapsize
3. 해당 문자열을 검색하여, 다음과 같이 원하는 크기로 설정한다.
ex) dalvik.vm.heapsize=64m
만약 해당 문자열이 없다면 적당한 부분(?)에 추가하면 된다.
4. 수정한 파일을 저장하고 다시 디바이스에 저장한다.
ex) adb push build.prop /system/build.prop
5. 재부팅 한다.
그래서, 이것을 android device에서 해 봐야겠다고, git으로부터 소스를 받고 code sourcery cross compiler로 빌드를 해 봤는데, 빌드 에러가 발생! 계속 구글링을 해 보았지만 별다른 내용을 찾을 수 없었다.
그래서 무식하게 소스를 다 뒤져 보았더니, 아주 간단하게 시스템 이미지에 추가할 수 있는 방법이 있었다-_-;
방법은 다음과 같다.
1. $(ANDROID_SOURCE_PATH)/external/blktrace/Android.mk 파일을 열어,
2. BUILD_BLKTRACE := false 의 false를 true로 수정하고 저장한 후,
3. 이미지를 다시 빌드한다.
4. 새로운 이미지를 적용한 device 나 emulator 의 system/bin 디렉토리에 blktrace, blkparse 가 포함되어 있다.
이렇게 간단한 방법을 모르고, 엄한데서 삽질하고 있었음.
필요한 사람들에게 도움이 되고자 포스팅! ^^v
blktrace 사용법은 blktrace User Guide 참고. 실제 android에서의 사용방법은 다음 기회에...
android에서 blktrace 사용은 또 다시 딴나라의 얘기 로구나-_-;
아... 뭔가 굴레 같은 느낌...;;
# mount -t debugfs nodev /sys/kernel/debug
# cat /sys/kernel/debug/tracing/available_tracers
wakeup preemptirqsoff preemptoff irqsoff function sched_switch nop