SCV/OS 를 개발하는 데 있어서 항상 숙지하고 있어야 할 것들에 대해서 설명하고 있다.
헤더 파일에는 소스 파일(.c) 에서 선언된 함수들의 헤더만 정의하는 것을 원칙으로 한다.
만일 define 값이나, 전역변수를 여러개의 파일에서 공유한다면, 이 역시 헤더 파일에 정의하도록 한다.
모든 명세들은 탭(tab) 단위로 띄어쓰기 한다.
헤더 파일을 include 하는 경우는 해당 extern 함수가 3개 이상일 때 한다. 3 개 미만은 extern 을 사용해서 정의한다.
소스 코드 파일에는 include, 함수 루틴 만을 정의하는 것을 원칙으로 한다.
표기하는 순서는 다음과 같다.
#include .. #define .. static int a; // 전역 변수, 전역 구조체 .. extern int test(void); // 외부에서 참조한 함수 정의 .. int add(int a, int b); // 내부 함수 헤더 정의 .. void main(void) // 함수 루틴 { .. }
조건문이나, 루프문의 경우, 아래와 같이 들여쓰기를 한다.
if(a==0) { for(int i=0; i<100; i++) { while(k<20) { .... } } }
파일 제일 위쪽에 코멘트 블록을 두고, 그안에 파일의 내용과 그 파일이 속하는 프로젝트에 대해서 기술한다.
/****************************************************** * 파일 : Foo.java * 목적 : Foo 클래스 구현 * 알림 : (c) 1066 Foo industries. All rights reserved. *******************************************************/
하드웨어에 의존적인 레지스터 변수의 경우, 데이터 시트에 명기된 이름으로 지정하는 것을 원칙으로 한다.
레지스터에 저장하는 변수의 경우는 접두사로 'v_' 를 사용한다.
변수를 봤을 때, 어떤 동작을 위한 변수인지를 알 수 있게끔 지정한다. 이름은 모두 소문자로 지정한다.
타입 이름의 첫 글자는 대문자로 하고, 변수 이름의 첫 글자는 소문자로 한다.
Window window;
접두사로서는 'SCV_' 를 사용하고, 이후에 함수 이름을 사용한다. 각각의 첫 글자는 대문자로 명기한다. 'SCV_Init_Serial()' 이런 식이다.
순서는 '주어+동사' 순으로 한다. 예를 들어 인터럽트를 비활성화 하는 함수라면, 'SCV_Interrupt_Disable()' 이다.
인터럽트를(주어) 비활성화시킨다(동사).
구조체의 경우는 가장 앞에만 대문자를 사용한다. '대문자_소문자_소문자' 이런식이다.
언제든지 눈에 잘 띄게 대문자로 표시해야 하고, 신중히 이름을 붙여서 이름 충돌이 일어나지 않게 해야 한다. 매크로가 아닌 것은 대문자로 표시하지 않는다.
만일 같은 기능을 하는 함수가 어셈과 C 코드에서 있다면, 이름이 동일할 것이다.
이름이 'SCV_Thread_Switch()' 라면, C 코드에서의 이름은 'SCV_Thread_CSwitch()' 이고, 어셈코드에서는 'SCV_Thread_SSwitch()' 이다.
크로스 컴파일러는 http://www.aesop-embedded.org/index.html 에서 제공되는 '060313_aesoptool_gcc334_glibc233.tar.gz' 을 사용한다. 참고로 호스트 OS 는 redhat 9 이다.
#cd / #mkdir korea-dokdo #tar xzf 060313_aesoptool_gcc334_glibc233.tar.gz -C /korea-dokdo/ #vi ~/.bash_profile
다음을 추가한다.
PATH=$PATH:/korea-dokdo/aesoptool/gcc-3.3.4-glibc-2.3.3/arm-linux/bin export PATH
저장하고 다시 로그인해서 arm-linux-gcc 에 대한 path 가 걸렸는지 확인한다. scvos 소스코드를 /opt 디렉토리에 받아서 압축을 푼다.
samba 를 이용해서 개발환경을 구축할 것이기 때문에 자세한 samba 설정에 대한 내용은 관련 문서를 참고하기 바란다.
#cd /opt/scvos #make
에러없이 컴파일 되었다면, image/ 에 scv.bin 파일이 생성된다. 삼성에서 제공하는 smdk2410 테스트 프로그램을 이용해서 INTEL NOR FLASH 0x0 write 하면 된다.