SCV/OS 를 개발하는 데 있어서 항상 숙지하고 있어야 할 것들에 대해서 설명하고 있다.

헤더 파일(.h)

헤더 파일에는 소스 파일(.c) 에서 선언된 함수들의 헤더만 정의하는 것을 원칙으로 한다.
만일 define 값이나, 전역변수를 여러개의 파일에서 공유한다면, 이 역시 헤더 파일에 정의하도록 한다.
모든 명세들은 탭(tab) 단위로 띄어쓰기 한다.
헤더 파일을 include 하는 경우는 해당 extern 함수가 3개 이상일 때 한다. 3 개 미만은 extern 을 사용해서 정의한다.

소스 코드 파일(.c)

소스 코드 파일에는 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 하면 된다.

  • computer/rtcclab/scv_os_개발_메뉴얼.txt
  • Last modified: 3 years ago
  • by likewind