커널에서 돌아가는 어플리케이션을 만드는 순으로 작성하였다.
---------------------------------------------
~/work : 워킹디렉토리
~/work/kernel/arch/arm/include/asm/unistd.h : 여기에 System Call 번호를 할당하여야 한다.
unistd.h |
~/work/kernel/arch/arm/kernel/calls.S : 처리 함수를 등록하여야 한다.
System Call이 발생했을 때 수행될 함수를 구현하자
printStar.c(~/work/kernel/kernel/printStar.c) |
별찍기 소스는 아무렇게 넣자..
Makefile을 수정하자
Makefile(~/work/kernel/kernel/Makefile) |
obj-y 에 목적파일을 추가한다.
이 후 ~/work/kernel 디렉토리의 fast_build를 실행시킨다.
어플리케이션을 만들기 위해 ~/work/android_work/external/ 디렉토리로 이동하여
mkdir printStar로 printStar디렉토리를 만든다.
printStar디렉토리에서 printStar.c를 생성하여 아래와 같이 코드를 작성한다.
printStar.c(~/work/android_work/external/printStar/printStar.c) |
이렇게 작성하고 printStar디렉토리에서 Android.mk파일을 생성하여 아래와 같이 작성한다.
============================Android.mk============================
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:=\
$(LOCAL_PATH)/include \
$(LOCAL_PATH)/android
LOCAL_SRC_FILES:=\
printStar.c
LOCAL_MODULE:=printStar
include $(BUILD_EXECUTABLE)
============================Android.mk============================
작성 후 ~/work/android_work디렉토리에서
. build/envsetup.sh
chooseproduct sec_smdkv210
mmm external/printStar/
위와 같이 입력하면 출력 결과물은
out/target/product/smdkv210/system/bin/printStar 에 존재하게 된다.
이것을 ~/work/android_work/rootfs/system/bin 에 복사한다.
rootfs 디렉토리 내에서 다음과 같이 tar로 묶어 sdboot로 전송한다.
tar zcvf ../../sdboot/maple210_android210.tgz .
kernel 이미지와 안드로이드 이미지를 sd카드에 쓴다.
sudo ./sdwriter_maple210 sdb
마지막 sdb는 유동적으로 변할 수 있다.(dmesg | tail -3를 통하여 알 수 있다.)
잘봤습니다^^
답글삭제fast_build는 무엇이고 어떻게 실행시켜야 하나요?