'ARM'에 해당되는 글 6건

  1. 2009.09.09 [ARM] 톨러런트
  2. 2009.06.10 [ARM] Boot Code(Startup Code)
  3. 2009.06.04 [ARM7] LCD 사용자 문자 출력
  4. 2009.05.28 [ARM7] H-JTAG와 Wiggler형 JTAG 인터페이스 OK-JTAG의 사용법
  5. 2009.05.26 [프로그램] GNU ARM 을 설치하자.
  6. 2009.05.26 [프로그램] cygwin 설치법
2009. 9. 9. 09:47

[ARM] 톨러런트

톨러런트란?



ARM은 3.3V로 구동되지만 5V까지의 입력을 받아도 견딜 수 있게 되어 있다.

즉, ARM은 3.3V나 5V의 입력을 받아 3.3V로 구동된다.

이런 방식을 톨러런트라고 한다.
2009. 6. 10. 11:36

[ARM] Boot Code(Startup Code)

1. Reset (장치를 켜거나 리셋)
2. 0번지로 점프
3. reset handler
4. low level init 호출(하드웨어 초기화)
5. remap
6. 메모리 초기화
    6-1. Stack 영역 초기화
    6-2. Data 영역 초기화
    6-3. BSS 영역 초기화
//여기까지 boot code(or startup code)

7. main 호출
2009. 6. 4. 15:13

[ARM7] LCD 사용자 문자 출력

텍스트형 LCD 모듈에서 사용자 정의 문자를 보내는 방법에 대해 알아보자.

보통 기본적으로 텍스트형 LCD 모듈은 LCD 콘트롤러를 내장하고 있어서, 이것의 내부에 있는 CG ROM안에는 192개(일본어형) 또는 240개(유럽형)의 기본 문자 폰트를 가지고 있어서 사용자가 화면에 표시하고자 하는 문자 코드를 DD RAM에 써주기만 하면 이것에 해당하는 폰트가 자동으로 CG ROM에서 찾아져서 화면에 디스플레이 된다.

그러나 한글과 같이 정의되어 있지 않은 문자를 출력하려면, 사용자가 문자를 정의해서 사용해야 하는데, 이와 같이 사용자 정의문자를 지정하는데 사용하는 메모리가 CG RAM이며, 이 CG RAM에는 5x7 도트를 사용하는 경우에 최대 8문자까지 정의할 수 있고, 5x10도트의 경우에는 최대 4문자까지 정의하여 사용할 수 있다.

<5x8에서 '가'를 그린 모습>


LCD 모듈의 CG RAM에 사용자 정의문자를 작성해 넣는 방법은 다음과 같다.

1. 가로가 5칸이므로 한바이트로 표현이 가능하다. 따라서 한줄을 한바이트로 정의하며, 총 8줄이므로 한글자는 8바이트가 된다.

2. 토트를 검게 표시하고 싶은 부분을 1로 하고 공백부분은 0으로 한다. 일반적으로 8번째 줄은 커서를 표시하기 위해 비우기도 한다.

3. 위의 '가'란 문자를 정의한다고 하면, 5칸으므로 8비트(1바이트)로 표시할 때 상위 3비트는 필요가 없다. 그리고 검게 표시된 부분은 2번째 비트이다. 따라서 이것을 2진수로 나타내면 xxx00010(x는 don't care)이고, 16진수로 나타내면 0x02가 된다.(don't care를 0이라 둔다면)

4. 이런식으로 8줄을 모두 정의한다.

5. 8줄을 묶어주기 위해 배열을 선언하는게 편하다. 소스로 나타내면 다음과 같을 것이다.

unsigned char font[8] = {0x02, 0x1A, 0x0A, 0x0A, 0x0B, 0x0A, 0x0A, 0x02};

이를 활용하여 한가인이라는 문자를 출력하는 프로그램을 작성하였다. (소스 일부임)

int main()
{
  InitLCD();
  SetFont();
  SendToLCD(10x80); //set ddram
  SendToLCD(00x03);  //하트
  SendToLCD(00x00);  //한
  SendToLCD(00x01);  //가
  SendToLCD(00x02);  //인
  SendToLCD(00x03);

  return 0;
}

void InitLCD()
{
  //LCD 제어 시작
  *PIO_PER = DBUS|RS|RW|EN|BL;        //병렬 입출력 활성화
  *PIO_OER = DBUS|RS|RW|EN|BL;       //  출력 활성화

  SendToLCD(10x3c);  //function set
  SendToLCD(10x06);  //Entry mode
  SendToLCD(10x1C);  //cursor shift
  SendToLCD(10x0C);  //Display On
  SendToLCD(10x01);  //Clear Display
  return;
}


void SetFont()
{
  int i;
  unsigned char font[] = {0x0a, 0x1e, 0x020x1b, 0x1a, 0x020x100x1e,  //한
                0x020x1a, 0x0a, 0x0a, 0x0b, 0x0a, 0x0a, 0x02,   //가
                0x090x150x150x150x090x000x080x0f,  //인
                0x000x0a, 0x1b, 0x1f, 0x1f, 0x0e, 0x040x00};   //하트

  SendToLCD(10x40);
  for(i=0; i<32; ++i)
  {
    SendToLCD(0, font[i]);
  }
  return;
}



결과 화면이다.


2009. 5. 28. 18:18

[ARM7] H-JTAG와 Wiggler형 JTAG 인터페이스 OK-JTAG의 사용법

 ARM 개발에 있어 사용자 프로그램의 다운로드와 프로그램의 디버깅을 할 수 있게 해주는 JTAG 에뮬레이터는 수십만원에서 수백만원에 이르는 비교적 고가의 개발장비이며, 여기에 사용되는 디버거 소프트웨어가 수백만원이 하므로 아마추어들은 사용하기가 어렵다.

 이러한 이유로 좀더 저렴하고 쉽게 사용할 수 있는 Wiggler라는 저가형 간이 JTAG 인터페이스가 있는데 이를 개발한 Macraigor사(http://www.macraigor.com)는 현재 더 이상 이러한 Wiggler JTAG 인터페이스를 지원하지 않고 있어, 여러 가지의 변형된 Wiggler 호환형 제품들만이 널리 사용되고 있다.

<Wiggler 호환형 JTAG 인터페이스>

 이러한 Wiggler 호환형의 JTAG 인터페이스를 사용하려면 하드웨어뿐만 아니라 이를 구동할 수 있는 운용 소프트웨어도 무료로 쉽게 구할 수 있어야 한다. 아마추어도 쉽게 구할 수 있는 무료 소프트웨어로 H-JTAG이란 프로그램이 널리 알려져 있다.

 H-JTAG은 Wiggler 호환의 JTAG 인터페이스와 함께 사용할 수 있는 디버그 도우미(debug agent)용의 무료 소프트웨어로서 http://www.hjtag.com 사이트에서 제공하는 H-JTAG Server 및 H-Flasher 프로그램으로 구성된다.
홈페이지에 접속해서 프로그램을 설치하자.



빨간색으로 네모친 곳을 클릭하여 H-JTAG을 다운받고 설치파일을 실행하자.




약관에 동의하고 다음


설치될 경로를 지정해주고 다음



설치가 완료되었다.


H-JTAG Server 프로그램은 내부적으로 H-Flasher 프로그램과 연계하여 ARM 소자에 내장되거나 또는 외부에 확장 인터페이스된 플래쉬 메모리를 프로그래밍하는 기능을 가진다. 이를 이용하면 SAM-BA GUI프로그램을 대신하여 사용자 프로그램을 다운로드할 수 있다.


H-JTAG Server를 실행시켜보자.


현재 장치가 연결되어 있지 않으므로 UNKNOWN이라고 표시된다. JTAG 인터페이스로 PC와 ARM을 연결하자.


사진에는 잘 보이지 않지만 JTAG에 보면 선마다 GND, TDI, TDO, TCK, TMS, VCC가 써있으며 거기에 맞게 ARM의 해당핀에 연결해주면 된다.

연결해준뒤 H-JTAG Server의 Operations-Detect Target을 해주면 장치를 읽게 되고 다음과 같이 화면이 바뀌게 된다.

<ARM CORE가 감지된 모습>

다시 H-JTAG Server에서 Setting - LPT JTAG Setting(패러럴포트이면) 메뉴를 선택하여 아래의 그림과 같이 설정한다.



H-JTAG Server에서 Setting - LPT Port Setting 메뉴를 선택하여 아래 그림과 같이 설정해준다.



Setting - Target Setting 메뉴으로 가서 아래 그림과 같이 설정한다.



Option 메뉴를 선택하여 아래 그림과 같이 설정한다.


Flasher - Start H-Flasher 메뉴를 선택하여 H-Flasher프로그램을 실행하여 아래와 같이 설정해주자.


<자신의 해당하는 모델을 선택하자>

<설정을 저장한다.>



이제 사용자 프로그램을 SAM-BA가 아닌 JTAG을 이용해서 전송해보자.

H-Flasher를 살펴보면 좌측에 Programing이란 항목이 있다.


 Type에는 Hexa 파일을 전송할건지, 바이너리 파일을 전송할건지등을 결정할 수 있다. 보낼 데이터의 타입에 맞게 설정해준다.
 Dst Addr은 Flash Base Address로 설정해준다.
 Src File에는 ...을 클릭해 소스를 선택해주자. 경로를 직접 써줘도 된다.

그리고 Type 옆에 있는 Program을 클릭하면 전송을 하게 된다.

<이로서 전송완료>


SAM-BA를 이용할 경우 TST로 10초간 리셋을 시켜줘야하는 불편함이 있지만 JTAG을 이용하는 경우 바로 전송이 가능하다는 장점이 있으므로 자주 애용하자.
2009. 5. 26. 11:38

[프로그램] GNU ARM 을 설치하자.

GNU ARM 홈페이지에 접속한다.

http://www.gnuarm.org/


홈페이지 상단 프레임에 FILES를 선택하면 GNUARM 바이너리 파일과 소스 파일들이 있다. 소스파일은 컴파일을 해줘야하니 편하게 바이너리 파일(실행파일)을 받자.


설치파일을 실행시키자.


다음을 클릭


약관에 동의하고 다음


설치할 경로를 지정해주고 다음


설치할 패키지를 선택해주고 다음(full installation 권장)


시작메뉴에 등록될 이름을 선택하고 다음(시작메뉴에 등록되지 않길 원한다면 아래 체크박스 체크)


GNU ARM Tool-chain을 Cygwin에서 사용할 것이므로, “Install Cygwin DLLs”는 선택하선 말 것. 만약 이것을 선택했다면, GNU ARM Uninstall을 실행한 후 처음부터 다시 설치한다.

이제 다음부터 나오는 대화 상자들은 계속 진행하도록 하고 “Install” 여부를 묻는 대화 상자가 나오면 “Install”을 선택한다. 인스톨을 다 마치면, “Finish”를 묻는 대화 상자가 나오는데, 그냥 “Finish”를 눌러 설치를 끝내면 된다.

제대로 설치 됐는지를 확인하기 위해 cygwin을 실행시켜보자.


$ arm-elf-gcc -v 라고 쳐서 버전이 제대로 나온다면 설치 완료.


만약 아래와 같은 화면이 나온다면,
Cygwin에  C:\cygwin\bin 안의 cywin1.dll 파일을 C:\GNUARM\bin 로 복사하고
다시 명령을 실행하면 된다.


2009. 5. 26. 10:03

[프로그램] cygwin 설치법

cygwin이란 윈도우에서 gnu 프로그램들을 사용할 수 있게 해주는 한마디로 윈도우 상에서 돌아가는 리눅스라고 할 수 있다. 오늘은 이 cygwin의 설치법에 대해 알아보자.

먼저 cygwin 홈페이지에 접속한다.



홈페이지 중간쯤에 보면 위의 그림과 같은 곳을 클릭하면 설치 파일을 받을 수 있다. 실행시키자.

다음을 누르자.

설치 파일을 다운로드 받아야 하므로 인터넷으로부터 설치를 선택하고 다음.

설치될 경로를 지정해주고 다음(디폴트는 c:\cygwin).

설치 패키지를 임시저장할 장소를 지정해주고 다음.

인터넷 설정에 맞게 선택하고(일반적으로 직접연결하면 됨) 다음.

파일을 받을 서버를 선택하고 다음(daum이 가장 빠른듯).

다운로드가 끝나면 gnu 유틸리티를 어떤걸 설치할지 묻는데 기본적으로 모두 skip으로 되있다.

+Devel을 펼쳐보면 gcc나 cvs같은 개발도구들이 있고 +Editors를 펼쳐보면 vi와 emacs같은 편집기들이 있다.
원하는 패키지가 있다면 Default를 한번 클릭하면 install로 바뀐다(몇 초정도 걸릴 수도 있다.)
인스톨할 패키지를 선택해주고 다음.


패키지를 다운 받는다. (앞에서 모두 선택했다면 1시간 정도 걸린다.)


설치가 모두 끝났다. vi와 gcc가 제대로 설치됐는지 확인해보면 끝.


윈도우의 C드라이브를 찾으려면 /cygdrive에 가면 볼수 있다.