본문 바로가기
반응형

코스웨어/10년 스마트폰BSP88

[BSP]업무일지 - 김강수 20100929 #include int main() { char A=0x7A; // 0b01111010 int B=A; printf("%X\n", B); A=0x8A; //0b10001010 B=A; printf("%X\n", B); } ▶ 부호확장 왜 위의 것은 1바이트만 출력되고, 아랫것은 4바이트가 출력될까 그것은 부호확장에 있다 char는 (signed)를 생략하고 있다. 그것을 (singed)int 대입하면 형병환이 일어난다. 0X7A 는 0b01111010 이다 1바이트에서 4바이트로 확장을 하면서 나머지 3바이트를 채우게 되는데, 이때 양수 인 것을 맞춰주기 위해 3바이트에 0을 넣는다 위의 그림에서도 출력은 7A가 되었지만 앞의 3바이트에 0이 들어간 것이다 0X8A 는 0b10001010 이다 이는 si.. 2010. 9. 30.
리눅스 커널 함수 호출 과정 대단한건 아니고 공부하는 중에 요즘 과정에서 커널 공부 하신다고 해서 봐두시면 좋을 것 같아서 올립니다. 출처 사이트에 가시면 동영상도 보실 수 있습니다. 사실 이것보다 커널과 드라이버의 전체적인 흐름을 먼저 파악하는게 우선일듯 싶네요. 리눅스에서 프로그램을 작성하면서 장치를 제어하기 위해서는 커널에 요청을 해야 한다고만 알고 있었습니다. 즉, 커널의 시스템 함수를 호출하고 그 결과를 받을 뿐이지 직접 장치를 직접 제어하지 않는다 라는 것이죠. 다시 말씀드려 장치를 open 하고 write 하는 등의 행동은 일반 애플리케이션에서 직접 수행하지 않고 커널의 도움을 받아야 한다는 것인데, 이와 같은 방법은 어렴풋이 알고 있었고, 당연하다라고만 생각해 왔습니다. 리눅스가 멀티타스킹 OS 이기 때문에 장치를 완.. 2010. 9. 30.
[BSP]업무일지-이도헌-2010 0928 Looper 메시지는 즉시 호출되는 메서드와 달리 스레드간의 신호이므로 보낸다고해서 바로처리되는것이아니다 여러 스레드에서 메시지를 동시다발덕으로 보낼수도 있으므로 동기적으로 처리할수없으며 어딘가에 쌓아놓았다가 순서대로 처리해야 한다 전달되는 메시지를 차곡차곡 쌓아놓는것이 바로 메시지큐(Message Queue)이다 메시지나 러너블 객체는 일단 큐에 저장되고 들어온 순서대로 순차적으로 처리된다 루퍼는 무한히 실행되는 메시지 루프를 통해 큐에 메시지가 들어오는지 감시하며 들어온 메시지를 처리할 핸들러를 찾아 handlerMessage 메서드를 호출한다 UI를 관리하는 메인스레드는 기본적으로 루퍼를 가긴자 그래서 별다른 조치가 없어도 핸들러 객체를 만들어 놓기만 하면 메시지를 받으수 있다 그러나 계산을 주로 .. 2010. 9. 28.
[BSP]업무일지-서유해-20100927 Makefile 분석 [-] 접기 #----------------------------- # 2008 Mecha Cource - By CM WC, 2008.09.10. // 주석처리.. makefile에 대한 설명 #----------------------------- ifndef ERASE_FCT // ERASE_FCT가 정의되어있지 않다면 5번 줄을 실행해라라는 뜻. ERASE_FCT=rm -rf // -r은 지울 때 물어보지 않게 -f는 지울수 있는건 다지워라라는 뜻. endif // ifndef ERASE_FCT의 끝 ifndef WCCROSS_COMPILE // WCCROSS_COMPILE이 정의 되어있지 않다면 8번 줄을 실행해라 WCCROSS_COMPILE=arm-elf- endif // W.. 2010. 9. 28.
[BSP]업무일지-김석희-20100924 source insight 프로젝트 생성하기 생성하기에 앞서 소스인사이트에서 ARM 기반을 디폴트로 없기 때문에 언어 정보를 추가해야한다. 위에 처부된 파일 GCC,ADS를 지원하는 파일을 사용하자. Options-> Preferences 에서 import을 클릭해서 위의 파일을 import 시킨다. 그러면 윗처럼 ARM9.....생성이 된다. Options-> Document options에서 Add type을 클릭하고type 이름 설정 그리고 File filter에서 *.s;*.S등을 성정하고 parsing에서 import한 언어를 추가하자 언어추가 설정이 끝났다.(ARM언어를 추가하지 않으면 심볼을 찾을수 없다.) 이제부터 프로젝트을 생성하자. project -> new project 원하는 프로젝.. 2010. 9. 24.
[BSP]업무일지-정호영-20100917 u-boot은 부트로더다. 그럼 부트로더란? 간단하게 말해 특정 cpu에 OS 혹은 어떤 프로그램을 돌릴 수 있도록 cpu가 동작하는데 필요한 아주 기초적인 부분이나 ROM(or flash),RAM,UART 등의 기본적인 디바이스들을 동작할 수 있게 만드는 프로그램이다. 그래서 인텔 관련 보드(x86)에서 말하는 BIOS와 리눅스에서 많이 쓰이는 LILO(Linux Loader)를 결합한 것이라고 생각하면 이해가 쉽다. 부트로더의 종류로는 LILO,GNU GRUB,ARMBOOT, BLOB, bootldr, PPCBOOT, RedBOOT,Angel 등이 있는데 오드로이드에서 사용하는 부트로더는 u-boot이다. LILO와 GEUB에 대해서는 수업에서 CM이 이야기 했듯이 LILO를 대체하기 위해 GRUB이.. 2010. 9. 20.
[BSP]업무일지-이상구-20100915 오드로이드 커널 이미지 만들기 1. 크로스 컴파일러 툴체인 설치하기 1-1. 아래의 주소에서 크로스 컴파일러 다운로드한다. http://dev.odroid.com/projects/odroid-t/download/40?filename=4.3.1-eabi.tar.gz 1-2. 압축파일을 /usr/local/arm에 복사한다. # cp 4.3.1-eabi.tar.gz /usr/local/arm 만약 디렉토리가 존재하지 않는다면 만들어준다. # mkdir /usr/local/arm 1-3. 복사한 파일의 압축을 풀자. # cd /usr/local/arm # tar xvzf 4.3.1-eabi.tar.gz 1-4. 환경파일에 경로를 추가한다. # cd # vi .bashrc 아래와 같이 경로를 추가해준다. PAT.. 2010. 9. 15.
[BSP]업무일지-손대원-20100914 Device Module 사용횟수 및 동작원리는 알아보는 예제 소스이다 lsmod 모듈이 현재 커널에 올라와있는지 확인을 할 수 있는 명령어이다 그다음에 Make를 실행을 한 다음에 커널이 올라와있으면 rmmod로 커널을 삭제 시킨후에 insmod 로 커널을 올리면 된다. 커널이 올라와있지 않으면 insmod 로 커널을 올리면 된다 gcc 로 mds를 컴파일을 시키면 된다. /*bsp.c*/ 일단 위의 코드를 insmod를 하여 커널에 모듈을 올리고 lsmod로 모듈이 올라갔는지 확인을 해봐야한다 올라가있으면 실행 파일이 하나 있는데 일단 실행 파일 코드를 보도록 하자 위의 코드를 실행을 하게 되면 아래와 같은 결과를 눈으로 볼수 있을것이다 gcc 컴파일을 이용하여 컴파일을 해야한다 위의 화면은 실행 초.. 2010. 9. 14.
[BSP]업무일지-전현수-20100913 ● 가상주소 가상 메모리는 컴퓨터와 운영체계에 의해 구현되는 개념으로서 가상의 주소 공간을 할당하여 대단히 큰 용량의 메모리나 데이터 저장공간을 사용할 수 있도록 만든다. 또 한 가상 메모리 기법으로 제공되는 주소공간으로서, 프로세스의 관점에서 사용하는 주소이다.오늘날 대부분의 운영체제에는 가상 메모리 기법이 적용되어 있다. 가상메모리에서의 주소공간 즉 가상주소 공간은 프로세스가 참조할 수 있는 주소들의 범위이며, 하나의 프로세스 당 하나의 가상주소 공간이 주어진다. 일반적으로 스레드는 프로세스 내의 주소 공간을 공유한다. 주소 공간의 크기는 주소버스(Address Bus)의 크기에 따라 달라진다. 예를 들어 주소 버스가 32비트인 시스템에서 주소 공간의 크기는 232개의 서로 다른 주소에 대한 식별자를.. 2010. 9. 13.
728x90
반응형