Table of Content 1. Intro 2. 쉬운 API 3. 어려운 API 4. 어려운 API 와 쉬운 API? 5. CPU 소모성 API 6. CPU 소모가 없는 API 7. msleep() 8. msleep_interruptible() 9. ssleep() 10. schedule_timeout_interrupt() 11. schedule_timeout_uninterrupt() 12. schedule_timeout() 13. ndelay(), udelay(), mdelay() 1. Intro 커널에서 시간 지연 함수는 여러가지가 있습니다. 굳이 분류를 하자면 쉬운 API, 어려운 API, CPU 소모성 API, CPU 소모가 없는 API 정도로 나눌 수 있습니다. 2. 쉬운 API 쉬운 API..
[Android] onTouchEvent 에서의 MotionEvent 터치 구분 @Overridepublic boolean onTouchEvent(MotionEvent event) {int action = event.getAction();int touch_id = ((action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> 8 );int actionEvent = action & MotionEvent.ACTION_MASK;// MotionEvent.ACTION_MASK = 0xffpointerCount = event.getPointerCount(); switch (actionEvent) {case MotionEvent.ACTION_DOWN: {...} 위와 같이 actio..
Android에서 'Android library projects cannot be launched' 에러가 발생 할 수 있다. 이 문제는 project를 application이 아닌 Library로 인식하기 때문에 발생할 수 있다. 다음을 체크해 보자 Project Properties > Android > Is Library 가 체크되어 있는지를 확인한다.만약 체크되어 있다면 체크해제 후 재 실행하면 해결 할 수 있다.
디바이스는 하드웨어를 말한다. 드라이버는 하드웨어를 다루는 소프트웨어를 말한다.예를 들어보자.UART 칩이 16개 달려있다고 했을 때 이를 제어하는 드라이버는 하나이다.하지만 UART 칩이 16개 이니 디바이스는 16개 이다. 이제 리눅스 커널로 확장해 보자arm 코아의 커널을 다루게 되면 항상 수정하거나 참고하는 파일이 있다.EM-S5PV210 기준으로arch/arm/mach-s5pv210/mach-ezs5pv210.c 파일이다. 이곳에서 보면 struct platform_device 구조체를 흔히 볼수 있다.이 구조체의 몇몇 멤버를 보자name 문자열 이름id 정수형 아이디resource 리소스 구조체 포인터 (리소스 구조체는 하드웨의 주소나 인터럽트 정보가 나열된다.) num_resources 리소..
함수포인터 (Function pointer) 포인터가 무엇인지는 다들 아실텐데요, 특정 변수에 대한 메모리 주소를 담을 수 있는 변수를 포인터 변수라고 합니다. 그렇다면 함수포인터란, 특정 함수에 대한 메모리 주소를 담을 수 있는 것 이라고 정의할 수 있겠습니다. 함수포인터를 쓰는 이유는 무엇일까요? 1. 프로그램 코드가 간결해집니다. 2. 함수포인터를 배열에 담아서도 사용할 수 있으므로 중복되는 코드를 줄일 수 있습니다. 3. 상황에 따라 해당되는 함수를 호출할 수 있으므로 굉장히 유용합니다. 그 외에도 함수 포인터를 이용하여 콜백함수를 구현할 수 있게 되는 등 편리하고 유용한 코드를 작성할 수 있게 됩니다. 우선 함수포인터의 모양에 대해 알아보도록 하겠습니다. int (*FuncPtr) (int, i..