'Embedded'에 해당하는 글 46건

GPIO 핀을 제어 할려고 하는데

메뉴얼이나 씨디에는 마땅한 예제 소스가 없네요.

Init,Open,Read,Write 를 사용하는 예제 소스 좀 부탁드립니다.

GPIO핀은 외부 다른 Device와 통신하기 위해서 사용할겁니다.

제가 사용 하는 보드는 255A이고

리눅스용과 윈도우용 둘다 보내주셨으면 합니다 ^^


=====================답글내용=======================


안녕하세요..


255보드의 GPIO실습용 테스트 프로그램을 첨부해드립니다.(리눅스)


wince용은 따로 만들어 놓은 것이 없네요..


참고하셔서 좋은 결과가 있기를 바랍니다.


감사합니다.

'Embedded > Xhyper255A' 카테고리의 다른 글

Android porting to XScale PXA255  (0) 2009.06.16
kernel error  (0) 2009.06.08
[답글]X-Hyper255A에서 커널에 대해...  (0) 2009.06.08
[XHYPER255] 커널 2.6 컴파일  (0) 2009.06.05
JTAG Compile  (0) 2009.06.05

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

타겟보드의 사용할 리눅스 커널버전은 어떤것으로 하건 상관이 없습니다.


선택한 커널버전에 알맞게 수정작업을 해주면 됩니다.


제공되는 255용 커널은 수 많은 응용사례를 통하여 안정성을 확인한 것입니다.


사용해보지 않은 커널버전에 문제가 있는지 없는지는 말할수 없습니다.

=====================답글내용=======================



매뉴얼을 보면


225A는 커널 2.4.18을 사용합니다.
2.6.xx는 사용할 수 없는지요?
없다면 그 이유는 무엇입니까?


있다면 그 방법은 어떻게 됩니까?


 


그리고 2.4.18 말고


2.4.20-8이나 2.4.34로 선택을 해도 문제는 없는지 궁금합니다.

'Embedded > Xhyper255A' 카테고리의 다른 글

Android porting to XScale PXA255  (0) 2009.06.16
kernel error  (0) 2009.06.08
[답글]255A보드에서 GPIO제어.  (0) 2009.06.08
[XHYPER255] 커널 2.6 컴파일  (0) 2009.06.05
JTAG Compile  (0) 2009.06.05

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,
리눅스 모듈에 관련된 명령어.
1.1.8 insmod, lsmod, rmmod

insmod
insmod 는 로드 할 수 있는 모듈을 실행중인 커널에 설치한다. Insmod 는 커널에서 제출한 외부 심벌 표로부터 모든 심벌을 분석함으로써 모듈을 실행중인 커널에 링크하려고 한다. 만약 오브젝트 파>
일의 이름이 확장자가 없이 주어졌다면, insmod는 어떤 공통의 기본 디렉토리에서 그것을 찾을 것이다. 이 기본값을 무시하기 위해 MODPATH 환경 변수를 사용할 수 있다.

lsmod
lsmod는 모든 로드된 정보를 보여준다. 포멧은 이름, 크기, 사용수카운트, 언급된 모듈의 리스트이다. 이 정보는 /proc/modules과 동일한 정보를 표현하고 있다. 만약 모듈의 제어 이것을 로딩하지 않은
것과 로드할수 없는 루틴 사용수카운트의 표현을 항상 -1로 표현되며, 실제 사용수와 관계 없이.

Lsmod shows information about all loaded modules. The format is name, size, use count, list of referring modules. The information displayed is identical to that available from /proc/modules. If the module controls its own unloading via a can_unload routine then the user count displayed by lsmod is always -1, irrespective of the real use count.

rmmod
rmmod는 동작중인 커널로 부터 로딩된 모듈을 언로드한다. rmmod는 커널로 부터 모듈로 설정된 그들은 사용하지 않거나 다른 모듈로 부터 언급되지 않은것에 대하여 언로드 한다.
만약 하나이상의 모듈이 커맨드라인으로 부터 명명되고, 그 모듈은 주어진 순서에 의하여 제거될 수 있다.
이러한 차곡차곡 쌓여진 모듈의 언로드에 대하여 지원한다. -r옵션과 함께 모듈의 재귀적인 제거를 시도 하게 될것이다. 이것의 의미는 만약 스택안에 있는 최상의 모듈이 커멘드 라인에서 명명되었을때
, 이 모듈에 의해 사용된 모든 모듈은 같이 제거 된다는 것이다.

1.1.9 diff
간단한 예로, diff 는 from-file 와 to-file 의 두파일의 내용을 비교한다. - 의 파일명은 표준입력으로부터 읽어들여 내용을 나타낸다. 특별한 경우로, diff - - 는 자기 자신을 표준입력으>
로 비교한다. If from-file 이 디렉토리이고, to-file 이 아니라면 diff 는 to-file의 파일과 from-file안의 파일을 비교한다. from-file 과 to-file 이 모두 디렉토리라면, diff 는 알파벳 순서로 두
디렉토리 안의 상응하는 파일을 비교한다; 이 비교는 -r이나 -recursive옵션이 주어지지 않으면 재귀적이 아니다. diff 는 파일인양 실제 디렉토리를 비교하지는 않는다. 표준입력은
같은 이름을 가진 파일개념을 적용하지 않기때문에 꽉찬 파일은 표준입력되지 않을 수 있다. diff 은 -, 로 시작된다, 그래서 대게 from-file 과 to-file 은 - 로 시작되지 않을런지 모른다.

1.1.10 patch
원본 파일에 차이점을 적용한다.
patch는 diff프로그램에 의하여 생성된 패치파일을 하나 혹은 그 이상의 오리지널 파일에 적용시키기 위해 사용하는 프로그램 이다.

예를들어 패치의 적용은 다음과 같이 할 수 있다.
# gzip -cd ../patch-2.4.10-ac11.gz | patch -p1
# gzip -cd ../patch-2.4.10-ac11-rmk1.gz | patch -p1
# gzip -cd ../diff-2.4.10-ac11-rmk1-np1.gz | patch -p1

# gzip -cd ./patch-2.4.10-ac11.gz | patch -p0
# gzip -cd ./patch-2.4.10-ac11-rmk1.gz | patch -p0
# gzip -cd ./diff-2.4.10-ac11-rmk1-np1.gz | patch -p0

여기서 patch다음에 나오는 옵션중 -p0와 -p1 옵션이 있는데 이 옵션은 p1은 상위 디렉토리에서 패치하는 것이고, p0는 현재 디렉토리에서 패치하는 것이다.

'Embedded > Softwares' 카테고리의 다른 글

유용한 ARM 어셈블리 매크로  (0) 2010.05.05
유용한 ARM 어셈블리 분기 명령어  (0) 2010.05.05
minicom  (0) 2009.06.03
mobm 이 뭔가요?  (0) 2009.06.03
Code V  (0) 2009.05.25

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,
1. kernel 2.6.10 .www.kernel.org
2. kernel-2.6.10-patch www.hybus.net
3. toolchain
    http://www.falinux.com/pds/toolchain.html
    arm-toolchain-3.4.3.tar.gz
 
Patch
# gzio -cd ../linux-2[1].6.10-hybus-patch.gz | patch -p1

make mrproper
make xhyper255b_deconfig    (/usr/src/kernels/kernel-2.6.10/arch/arm/configs/xhyper255_deconfig)
make



'Embedded > Xhyper255A' 카테고리의 다른 글

Android porting to XScale PXA255  (0) 2009.06.16
kernel error  (0) 2009.06.08
[답글]255A보드에서 GPIO제어.  (0) 2009.06.08
[답글]X-Hyper255A에서 커널에 대해...  (0) 2009.06.08
JTAG Compile  (0) 2009.06.05

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

JTAG Compile

Embedded/Xhyper255A 2009. 6. 5. 04:12
JTAG란?
이반적으로 JTAG라는 말 보다는 Boundary-Scan이란 말을 더 많이 사용한다. JTAG는 칩 내부에 Boundary Cell이란 것을 두어 외부의 핀과 일대 일로 연결시켜 프로세서가 할 수있는 동작을 중간에  Cell을 통해 모든 동작을 인위적으로 수행할 수 있어 여러가지 하드웨어 테스트나 연결 상태 등을 체크 할 수있다.

JTAG 기능
프로세서 상태와는상관없이 디바이스의 모든 외부 핀을 구동시키거나 값을 읽어 들일 수 있는 기능을 제공한다.
  • 디바이스 내에서 모든 외부와의 연결점을 가로챈다.(외부로 나가는 각각의 핀들과 일대 일로 연결)
  • 각각의 sell은 serial-regisher(boundary scan register)형성하기 위해서 서로 연결되어 있다.
  • 전체적인 인터페이스는 5개의 핀에 의해서 제어된다 (TDI, TMS, TCK, nTRST, TDO)
  • 회로의 배선과 소자의 저기적 연결상태 Test
  • 디바이스간의 연결상태 Test
  • Flash memory fusing

JTAG Building
#cd /home/embed/xhyper/Jflash-PXA255
#vi Compile_switches.h
/*****************************************                                                                   
**  FILENAME:       Compile_switches.h
**
**  PURPOSE:        collects the optional switches for this program.
**
**  LAST MODIFIED:  2003.06.03
*****************************************/
//#define DEBUG
//#define INSIGHT_JTAG
#define PARALLEL_JTAG
                                              
/*
* HyBus pxa255 board platform
*/
#define XHYPER255A   // 16bit flash memory
//#define XHYPER255B   // 32bit flash memory

그리고 main.c에서  #include <asm/io.h> 를 #include <sys/io.h> 로 바꿔준다

레드헷 리눅스 9.0에서는 void main() 함수를 쓰지 않고 int main() 함수를 씀으로 바꿔줘야 한다. 아래 빨간색 int로 바꿔 주자.
#vi main.c
/*
*******************************************************************************
*
* FUNCTION:         main
*
* DESCRIPTION:      Entry point for utility
*
* INPUT PARAMETERS: uses optional input parameters:
*                       argv[1] = filename to flash (binary files only)
*                       argv[2] = program options, currently only 'P' for Program
*                       argv[3] = block number (used to compute base_address)*
* RETURNS:          void
*
*******************************************************************************
*/
int main( int argc, char *argv[] )
{
   time_t start;
       DWORD fsize = 0;
       DWORD last_non_zero = 0 ;
       DWORD last_non_ff = 0;
//      DWORD li;
       int block_number = 0;
#make clean
rm -f *.o Jflash-Xhyper255
#make
g++ -O2 -s -g -D__linux__ Jflash.cpp -o Jflash-Xhyper255
/tmp/ccp8kA4v.o(.text+0x42b): In function `main':
/home/embed/xhyper/Jflash-PXA255/Jflash.cpp:199: the `gets' function is dangerous and should not be used.
#ls
Compile_switches.h  Jflash.dsw  RelNote_Jflash_CL.htm  jflash
Debug               Jflash.h    SWLicense.pdf          jflash_cl.exe
Giveio.zip          Jflash.ncb  giveio.inf             load_sample.bat
Jflash-Xhyper255    Jflash.opt  giveio.ini             xhyper255jtag.h
Jflash.cpp          Jflash.plg  giveio.sys
Jflash.dsp          Makefile    instdrv.exe




Jflash-Xhyper255 바이너리 파일이 만들어 져 있을 것이다. Bootloader Compile 한 후 간단한 사용 방법을 보자.

'Embedded > Xhyper255A' 카테고리의 다른 글

Android porting to XScale PXA255  (0) 2009.06.16
kernel error  (0) 2009.06.08
[답글]255A보드에서 GPIO제어.  (0) 2009.06.08
[답글]X-Hyper255A에서 커널에 대해...  (0) 2009.06.08
[XHYPER255] 커널 2.6 컴파일  (0) 2009.06.05

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

-- PC/104

 

PC/104는 ISA와 32비트 PCI를 지원하는 임베디스시스템의 소형화와 고신뢰성의 목표를 동시에

실현한 국제표준 규격이다.

PC/104는 임베디드컴퓨터시스템의 보드들을 서로 쌓아올릴수 있게끔하는 것을 말한다.

이러한 시스템 규격은 주로 공장이나 연구소 그리고 복합적인 시스템의 프로그램을 조정하는

기계등에서 주로 볼수있다.

이는 일반 스텐다드 데스크탑 PC의 규격과 매우 유사하다.

이는 특수한 104핀 스텍커블 버스콘넥터로 구성되어 있기때문에  PC104로 이름지어졌다.

Full Size의 PC의 개발툴을 사용하는  고객의 개발노력 비용을 감소시켜주기 위하여

개발되었다. 약 4" x 4"밖에 안되는 제품인 PC104 보드는 사이즈에 비행 성능적으로 매우 강력하다.  임베디스시스템 디자이너는 PC 104 제품은 최소한의 소비전력으로 디자인되어있으며 기본적으로 부품의 높낮이가 현저하게 높지않게 디자인할수 있도록 하여야한다.

보통 생각하는 어떠한 모듈타입의 대부분도 현재 PC104버스가 포함되어있는 CPU,비디오콘트롤러, 네트워크 인터페이스,사운드 I/O, 데이터수집보드, 그리고 특별한 인터페이스등이 현재에 공급 가능하다. 현재는 세계적으로 200개 이상의 공급회사가 소프트웨어,엔지니어링 서비스등에 PC104 규격을 지원하며 성장하고있다.

 

 

-- PC/104 Plus

 

PC/104-plus is basically a PCI (Peripherial Component Interface) bus addition to the PC/104 standard. PCI gives peripherial devices more direct access to the CPU which can greatly improve system performance. PC/104-plus has arrived just in time to serve video controllers, processors, and other high-throughput devices while maintaining backward compatability with PC/104.

The PC/104-plus specification Defines the PCI addition to PC/104 including the connector details. The new connector has 120 pins with 2mm spacing, an overall width of about 2.4 inches, and occupies the space at the opposite side of the board from the existing bus connectors. The spec can be seen at http://www.controlled.com/pc104/consp5.html.

Although vendors are finding it hard to place additional circuitry onto PC/104 boards that now have the plus PCI connector consuming space, they're being helped by the availability of video controllers, CPUs, gate arrays and other components with smaller footprints.

The obvious result of PC/104-plus is increased performance for the ever-increasing demands of the embedded systems designer.

 

--PCI/104

 

PCI-104는 오직 PC 104 계열에서만 사용되어지는 PCI ( 32-bit PCI bus )규격이다.

PC 104는 104핀 콘넥타의 ISA버스를 지원하며 PC-104는 Separate 콘넥타를 통하여 ISA와 PCI를 지원한다.

 PCI-104 eliminates the on-board support for the ISA bus, retaining only the 120-pin connector for PCI. ISA support may still be obtained through use of a PCI to ISA bridge.

Because PCI is gradually replacing ISA as the bus of choice for device designs, the need for the ISA connector on the PC/104-Plus architecture is declining. The PCI-104 specification was adopted in 2003 by the PC/104 Consortium. The specification provides an industry standard for PC/104 footprint compatible devices that offer PCI, but not ISA bus connections. By not including the ISA connector, a small PC/104 format board regains space that can be used to provide additional functionality.






WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,
serial(시리얼) 통신은 데이터를 선 하나에 하나의 bit(비트)씩 순차적으로 보내는 방법을 말한다.
시리얼 통신을 위해서는 Tx(보내는신호), Rx(받는신호), SG(GND, 그라운드), 3개의 선이 필요하다.

1. PC에서는 시리얼 통신을 위해 COM1 ~ COM4등의 포트가 마련되어있고, 이때 사용하는것이 RS232라는 규격이고, 신호를 위해 -12 ~ + 12v를 사용한다.

pc의 9핀 시리얼포트 모양이다
1DCD (Data Carrier Detect) 6DSR (Data Set Ready)
2RX (Receive Data) 7RTS (Request To Send)
3TX (Transmit Data) 8CTS (Clear To Send)
4DTR (Data Terminal Ready) 9RI (Ring Indicator)
5GND (Signal Ground)



2. AVR에서는 TTL(=UART) 규격을 사용하는데 이 TTL은 0 ~ 5v(또는 3.3v)를 사용한다.
사용하는 핀은 VCC, Tx, Rx, GND 4개의 핀이다.

3. 전압과 신호가 다르기때문에 RS232와 TTL은 혼용해서 쓸수없다.
그래서 MAX232라는 레벨 시프터를 사용해서 변환해주어야 한다.(시리얼to uart 컨버터들이 MAX232 칩을 주로 사용)


원문 : http://pepsiman.tistory.com/43

'Embedded > Hardware' 카테고리의 다른 글

uart와 spi의 차이점  (0) 2009.06.12
PC/104는 무엇인가?  (0) 2009.06.04
FPGA, CPDL, PDL  (0) 2009.06.03
SOC(system on chip)  (0) 2009.06.01
변환기판에 납땜하는 방법 궁금합니다  (0) 2009.06.01

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

minicom

Embedded/Softwares 2009. 6. 3. 18:18

미니컴은 윈95의 하이퍼터미널과 유사한 리눅스용 통신 프로그램이다. (UNIX 버전도 있다)
비록 텍스트 방식이지만 모뎀 제어, 파일 업로드 다운로드, 다이얼링 디렉토리 등 통신에 필요한 중요한 기능은 거의 포함되어있는 좋은 프로그램이다.

미니컴의 용도는 다양하지만 우선 리눅스에서 하이텔이나 천리안 등의 BBS를 연결할 때 가장 좋다.
콘솔에서 한글을 쓰려면 han 같은 콘솔용 한글을 뛰우거나 한글 X-window를 뛰우면 된다.

윈95에서 리눅스로 login하여 minicom을 가동해도 한글이 지원된다. 따라서 랜에 연결된 리눅스 서버에 모뎀과 전화선을 연결하면 그 랜의 모든 피시에서 리눅스에 login해서 minicom을 가동해서 통신을 할수 있으므로 가장 손쉬운 모뎀 공유 방법이기도 하다.

다른 용도로는 PPP 연결에서 사용한다. 보통 PPP 연결은 쉘스크립트를 쓰지만 쉘스크립트를 쓸 경우 PPP 연결이 잘 안되어도 어느 부분이 문제인지 파악이 어렵다. 이 경우는 일단 minicom으로 먼저 상대 모뎀과 연결을 한 후 통신 연결을 유지한채 minicom을 빠져나와 ppp 데몬을 실행하는 방법으로 접근하면 쉽게 어느 부분에서 문제가 있는지 파악이 가능하다.

1. 통신을 하기 전에 알아야 할 사항

1.1 장치명

우선 시리얼 통신을 하려면 시리얼포트와 모뎀이 필수적이다.
피시는 4개의 시리얼포트를 지원하므로 이 네개의 시리얼 포트 중 어디에 모뎀이 연결되어 있는지를 알아야한다.

아래 예를 우선 보자

Serial driver version 4.13 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16550A
tty01 at 0x02f8 (irq = 3) is a 16550A

위는 dmesg 명령으로 출력한 내용 중 일부이다.

위에서는 시리얼 포트가 두개가 인식되었다. com1과 com2이다. 즉 tty00 옆에 0x03f8은 IO Address 이고 irq= 옆의 4는 인터럽트이다. 그 옆의 16550A 는 UART 칩을 표시한다. 아래는 com 포트 별 IO Address와 IRQ 번호이다.

com1  3f8      4
com2 2f8 3
com3 3e8 4
com4 2e8 3

내장 모뎀을 사용한다면 com3나 com4가 나올수도 있다. 또 CMOS 셋업에서도 com 포트 IO address를 변경할수 있으므로 피시의 마더보드에 내장된 com 포트가 항상 com1 과 com2 로만 설정되지 않는다는걸 알아야한다.

왜 위의 지식이 필요한가하면 시리얼포트 를 사용하려면 시리얼포트 장치명을 알아야하기 때문이다. 아래는 각 com 포트 별 리눅스의 장치명이다.

com1  :  /dev/ttyS0
com2 : /dev/ttyS1
com3 : /dev/ttyS2
com4 : /dev/ttyS3

예를들어 minicom에서 셋업에 아래 부분이 있다.

A - Serial Device : /dev/ttyS1

여기에 /dev/ttyS1 은 com2를 가르킨다. 가끔 시리얼 디바이스명에 /dev/modem이라고 넣어야 하지 않느냐는 질문을 받는데 /dev/modem 이란 장치는 없다. 단지 리눅스 설치시 모뎀 포트를 묻는 부분이 있는데 이 대답에 따라 /dev/ttyS?를 /dev/modem 이란 장치에 링크 해 놓았기 때문이다.

따라서 만약에 설치 후에 모뎀이 연결된 포트가 바뀌면 /dev/modem이란 장치는 인식이 되지 않으므로 ttyS? 장치명을 쓰는게 좋다.
(리눅스 커널 2.0에서는 dial-in 과 dial-out에 따라 ttyS? 장치명과 cua? 장치명을 구분해 썼으나 2.2부터는 ttyS? 장치로 통일되었다.)

1.2 통신속도

요즘 나오는 56k 모뎀을 사용하려면 피시의 시리얼 포트 속도가 115,200bps는 되야한다. 이는 모뎀에 데이터 압축 기능이 있어 시리얼포트 속도(DTE 속도라고도 함)는 선로속도(DCE 속도라고도 함)의 2배 내지 4배를 잡아주는게 좋기 때문이다.

통신 프로그램에서 포트에 지정하는 속도는 선로속도가 아니고 시리얼포트 속도이다. 선로속도는 통신프로그램에서는 지정할 수 없고 두 모뎀이 처음 연결될때 두 모뎀간의 핸드쉐이킹(handshaking) 과정에서 결정된다.
(모뎀으로 처음 접속시 나는 이상한 소리가 바로 두 모뎀의 핸드쉐이킹 과정이다. )

com2의 시리얼 포트 속도를 115,200bps롤 주고 싶으면 setserial 명령을 써야한다.

/bin/setserial /dev/ttyS1 spd_vhi

위의 명령을 주면 com2의 시리얼포트 속도가 115,200bps로 바뀐다.(57,600 bps라면 spd_hi 를 쓴다)
다음에 이를 확인하려면 setserial -a /dev/ttyS1 명령을 주라.
아래는 출력 결과이다.

churlsu:~$ setserial -a /dev/ttyS1
/dev/ttyS1, Line 1, UART: 16550A, Port: 0x02f8, IRQ: 3
Baud_base: 115200, close_delay: 50, divisor: 0
Flags: spd_vhi skip_test auto_irq session_lockout

위에서 Flags가 spd_vhi 로 바뀌었으므로 이제 시리얼포트 속도는 115200bps를 지원한다.
(물론 통신프로그램에서 지정해야 효력이 있다)

setserial 명령은 리눅스 시스템을 리부팅하면 효력이 사라진다. 따라서 부팅과 동시에 이 명령을 실행하려면 rc.local 스크립트나 rc.boot 디렉토리에 넣으면 된다.

1.3 com 포트의 IRQ를 비표준 irq로 쓰려면

com포트는 보통은 2개 밖에 쓸수 없다. 이유는 com포트에 할당된 irq가 4와 3 2개 이기 때문이다.
일부 내장모뎀은 irq를 바꿀수 있다. 따라서 irq만 여유가 있으면 4개의 모뎀을 리눅스에서 동시에 사용할수 있다. 이때는 setserial에서 수동으로 해당 포트의 irq를 지정해야한다.

1.4 시리얼포트의 FIFO 버퍼 문제

피시의 시리얼 포트 UART 칩에는 여러 종류가 있다. 8250, 16450, 16550 등이다.
그 런데 UART 칩이 8250이나 16450일 경우 버퍼의 문제로 인해 시리얼 포트 속도를 19,200bps 이상으로 올리기 힘들다. 이른바 데이터 오버론 현상(또는 CRC 에러)이 발생할수 있기 때문이다. 그러나 16550칩은 버퍼가 16바이트이므로 적절한 플로우 컨트롤을 사용하면 115,200bps에서도 별로 문제가 없다.

하지만 요즘 고속의 시리얼 데이터 전송이 등장하므로서 피시의 시리얼 포트는 16바이트 버퍼로도 부족할수 있어 새로 16650, 16750 UART 칩이 등장하였다. 16650은 32바이트 16750은 64바이트 버퍼를 갖고 있다. 리눅스에서 시리얼 포트의 UART 칩을 확인하려면 dmesg 명령을 써서 부트 때의 메시지를 보면 된다.

1.5 230k , 460k 시리얼 포트 속도

모뎀통신을 하는 경우 피시의 시리얼포트 속도를 115.2k 이상으로 할 필요는 없다. 56k 모뎀이라 할지라도 실제 선로 속도는 50k 수준으로서 극히 일부 데이터를 제외하고는 2배 이상의 압축이 이루지지 않으므로 115.2k 로 충분하다.

그러나 ISDN의 경우는 다르다. ISDN 라인은 선로 속도가 128k이다. 그런데 ISDN 외장형 TA나 ISDN 모뎀을 쓸 경우 128k 속도를 피시의 시리얼 포트가 지원하지 못하므로 이를 115.2k로 낮추어 피시의 시리얼 포트로 보낸다. 즉 10% 가량의 속도를 손해보고 있다.

일부 업체서 230.4k를 지원하는 시리얼포트 및 멀트포트를 생산하고 있다. 460k 심지어는 920k를 지원하는 멀티포트도 있다. 그러나 이런 속도를 피시의 시리얼포트에서 사용하려면 업체서 제공하는 드라이버나 프로그램을 사용하여야한다.

ISDN에서 피시와 연결하는 포트 속도를 230k로 하려면 ISDN 장비 자체도 이에 맞게 조정해야하고 피시의 시리얼포트, 드라이버 및 통신 프로그램도 230k를 지원하도록 바꾸어야한다. 리눅스에서 시리얼 포트에서 230k를 쓰려면 setserial 명령으로 가능하다. (물론 시리얼포트가 230.4k를 지원해야한다)

1.6 플로우컨트롤

고속모뎀에서는 시리얼포트 속도와 선로속도가 다르므로 모뎀에 버퍼를 사용하여 데이터를 임시로 저장한다. 따라서 피시에서 모뎀으로 데이터를 넘겨 줄 때 모뎀의 버퍼가 다 차면 모뎀은 피시로부터 데이터를 받는걸 중단해야한다. 이를 제어하는 방식에는 두 가지가 있는데 xon/xoff 와 rts/cts 이다.

xon/xoff 흐름제어를 소프트웨어 플로우컨트롤이라고도 하는데 데이터 내에 애스키 콘트롤캐릭터를 넣어 데이터 흐름을 제어하는 방식이므로 모뎀에서 바이너리 데이터를 전송하는 경우 즉 파일 업로드 다운로드시에는 데이터 송수신이 중단된다.
(바이너리 데이터에는 xon/xoff 문자가 들어 있으므로 이를 데이터로 인식하지 않고 흐름제어로 인식하여 송수신을 중단한다)

rts/cts는 하드웨어 플로우 컨트롤이라고도 하는데 rs-232 포트의 rts/cts 라인을 흐름제어로 사용하므로 바이너리 데이터 전송시에도 문제가 발생하지 않는다. 따라서 고속모뎀에서는 무조건 RTS/CTS 를 사용해야한다.

그러면 xon/xoff는 어떤 경우에 사용하는가?
예를들면 단말기를 RX, TX, Ground 3개의 선으로 연결하여 연결하는 경우는 rts와 cts 신호는 사용할 수 없으므로 이 경우 흐름제어를 하려면 Xon/Xoff를 쓸 수밖에 없다. 또는 통신 프로그램에서 RTS/CTS 를 지원하지 않는 경우도 마찬가지다.

리눅스 통신에서 흐름제어에 rts/cts를 쓰려면 stty 명령을 주어야한다. 물론 통신프로그램에서도 지정할수 있다. 그러나 양쪽에 모두 주는게 보다 확실하다.
아래는 stty 명령으로 com2포트의 특성을 확인한 결과이다.

churlsu:~$ stty -a < /dev/ttyS1

speed 9600 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = ;
eol2 = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

이부분은 현재 com2 포트의 특성을 보여주고 있다. 너무 복잡해 설명하기가 힘드나 위에서 6번째 줄 끝에 crtscts라고 나와있다. 이는 이 포트에 현재 rts/cts 플로우컨트롤이 사용된다는 뜻이다. 여기에 -crtscts라고 나오면 rts/cts 플로우컨트롤이 사용되지 않는다는 뜻이다. 이포트에 rts/cts를 쓰려면 아래 명령을 준다.

stty crtscts < /dev/ttyS1

이부분도 시스템 부팅시마다 가동되야하므로 rc.local이나 rc.boot 디렉토리에 넣는다.

2. 미니컴 환경설정(configuration)

미니컴은 가동시 옵션을 붙일수 있는데 형식은 아래와 같다.

minicom [-somlz] [-c on|off] [-d entry] [-a on|off] [-t term] [configuration]

미니컴을 처음 사용할 때는 사용 환경을 맞추어야한다. 우선 가동시 -s 옵션을 주어 configuration 메뉴를 가동해 환경 설정부터 해야한다.

minicom -s 명령을 주면 아래 화면이 뜬다.

            [configuration]
Filenames and paths
File transfer protocols
Serial port setup
Modem and dialing
Screen and keyboard
Save setup as dfl
Save setup as..
Exit

위의 메뉴에서 상하 화살표키를 이용해서 메뉴를 선택하면 다음메뉴가 나온다. 여기에서 우선 가장 필수적으로 지정해야하는 부분을 위주로 아래에 설명한다.

2.1 Filenames and paths

파일 업로드와 다운로드에서 사용하는 디렉토리를 지정한다. 별도 지정이 없으면 현행 디렉토리가 사용된다.

2.2 Serial port setup

가장 중요한 부분이다. 아래에 서브메뉴를 보면 다음과같다.

A -    Serial Device      : /dev/ttyS1 
B - Lockfile Location : /var/lock
C - Callin Program :
D - Callout Program :
E - Baud/Par/Bits : 115200 8N1
F - Hardware Flow Control : Yes
G - Software Flow Control : No

2.2.1 serial device

위의 1.1을 참고

2.2.2 Lockfile Location : /var/lock

리눅스는 멀티유저 시스템이므로 한 개의 통신포트를 다른 프로그램에서 동시에 사용을 시도할수 있다. 이를 예방하기위해 통신포트를 특정 프로그램이 사용하면 특정 디렉토리에 파일을 만들어 그 포트가 사용중임을 표시한다. 파일 이름은 보통 LCK..tty?? 이다.

이 파일 내에는 그 포트를 사용중인 프로그램의 PID가 ascii 또는 바이너리로 저장되므로 다른 프로그램은 이 파일을 체크해서 그 포트가 사용 가능한지를 알수 있다. LCK..tty?? 파일을 lock 파일이라 부르는데 이 파일의 위치가 통일되야 포트 사용여부를 다른 프로그램에서 파악이 가능하다. 리눅스에서는 /var/lock 디렉토리를 사용한다.

2.2.3 Baud/Par/Bits : 115200 8N1

이부분은 위의 1.2를 참조

2.2.4 Hardware Flow Control : Yes
2.2.5 Software Flow Control : No

위의 1.6를 참조

2.3 Modem and dialing

이부분에서 중요한건 모뎀초기화 스트링을 넣는 부분이다.

A - Init string ......... ~atz^M~

여기서 tilde(~)은 1초 정도 지연을 발생시킨다. ^M은 리턴키를 누른다는 뜻임. 어느 경우든 모뎀의 초기값은 모뎀에 내장될수 있으므로 여기에 모뎀 초기화 스트링을 넣을 필요성은 없으나 혹시 다른 사람이 모뎀을 사용하면서 모뎀 설정 값을 바꾸어 놓을수 있으므로 여러 사람이 모뎀을 사용하는 경우라면 초기화 스트링에 e1q0v1&c1&d2 정도를 넣어주는게 좋다. 혼자서만 쓴다면 atz면 충분하다.(뒤에 꼭 ^M을 넣어야한다.)

P - Auto baud detect .... No

이부분은 특별한 경우가 아니면 no로 해야한다. Auto baud 란 선로속도와 시리얼포트를 자동으로 일치시킨다는 의미인데 데이터 압축이 지원되는 모뎀(9600bps 이상의 모든 모뎀)은 시리얼 포트 속도가 선로속도보다 높아야하므로 auto baud를 지정하면 안된다.

대충 이정도만 지정하고 configuration 메뉴로 돌아와(서브메뉴에서 ESC키를 누른다) " Save setup as dfl" 를 선택하고(enter를 누른다) "Exit from Minicom"을 선택하면 환경 설정이 완료되었다.

*. 혹시 미니컴 사용 도중 위의 환경 설정을 바꾸려면 ctrl+a o 를 누른다.
(ctll 키와 a 키를 동시에 누른후 o 키를 누른다.)

2.4 가동시에 사용되는 다른 옵션

-l
한글을 사용하려면 필히 지정해야한다. 이는 미니컴이 확장아스키코드를 그래픽문자로 표시하지 않게 하는 옵션이다.

-d
전화번호부를 지정한다. 즉 미니컴에서 ctrl+a d 를 눌러 설정한 전화번호부( 상대전화번호 터미널 타입 등이 저장돼 있다) 의 디폴트네임은 홈디렉토리의 .dialdir 인데 이를 사용하지 않고 다른 파일을 쓸 때 사용한다.

3. 명령어(키)

위의 절차를 마치고 미니컴을 가동하면 (minicom -l) "Initializing Modem.." 이란 메시지가 뜨고 텅빈 화면이 나온다. 그리고 25번째 라인에는 아래의 상태라인이 나온다.

CTRL-A Z for help |115200 8N1 | NOR | Minicom 1.75 1996 | VT102 | Offline

이글의 의미는 사용법을 알려면 ctrl+a z 를 누르고 통신속도(시리얼포트 속도)는 115200 터미널 타입은 vt-102 라는 뜻이다.

한글을 사용하려면 필히 ctrl+a t 키를 눌러 터미널 타입을 ansi로 바꾸어야한다.

Ctrl+a z 를 누르면 아래 화면이 나온다.

Commands can be called by CTRL-A                    

Main Functions Other Functions

Dialing directory..D run script (Go)....G Clear Screen.......C
Send files.........S Receive files......R cOnfigure Minicom..O
comm Parameters....P Add linefeed.......A Suspend minicom....J
Capture on/off.....L Hangup.............H eXit and reset.....X
Send break.........F initialize Modem...M Quit with no reset.Q
Terminal settings..T run Kermit.........K Cursor key mode....I
lineWrap on/off....W local Echo on/off..E Help screen........Z
scroll Back........B
 

위에서 D S P L .. 등으로만 표시했는데 반드시 ctrl+a를 먼저 누르고 해당 문자를 눌러야한다.
여기에서 중요한 메뉴를 보면

S
하이텔같은곳에 파일을 업로드 할 때 저쪽에서 zmodem을 가동하시오 라고 나왔을 때 이 키를 누른후 zmodem을 선택한다.

P
전송속도, 패리티 비트등을 고칠수 있다.

L
화면 내용을 파일로 저장할 때 쓴다. 토글키이다.

F
중단 신호를 모뎀으로 보낸다.

T
터미널 타입을 선택할수 있다.(한글을 쓸려면 ansi로 지정하시오.)

W
linewrap on/off

G
스크립트 구동

R
파일을 다운로드 할 때 쓴다.

A
라인 피드 on/off

H
전화를 끊는다.

M
모뎀을 초기화 한다.

E
local echo on/off, 1:1 통신에서 씀.

C
화면을 지움.

O
Configuration 메뉴가 나옴

X
모뎀을 리셋하고 종료

Q
모뎀의 리셋없이 종료한다. 즉 전화 연결이 끊기지 않는다. PPP 연결시 모뎀 연결을 종료하지 않고 PPP 데몬을 가동할 때 사용한다.

J
잠시 쉘프롬프트 상태로 빠질 때 사용한다. 다시 돌아 올 때는 쉘에서 fg 명령을 쓴다.

Z
도움말

4. 전화 걸기

전화를 걸려면 두가지 방법이 있다.

4.1 수동 연결

미니컴 가동후 텅빈 터미널 화면에서 atdt014XX 하면 된다.

4.2 전화번호부 사용

미니컴 가동후 ctrl+a d 키를 누르면 전화번호부 메뉴가 나온다. 이 메뉴에서 좌우 화살표키를 눌러 아래를 선택한다.

Dial  :  지금 선택한 번호로 전화를 건다.
Add : 전화 번호 등록
Edit : 항목 수정
Remove : 항목 제거

한글을 쓰려면 터미널 타입을 필히 ansi로 지정하기 바람. 전화번호 등록후 해당 전화번호에 커서를 위치하고 (상하 화살표) 좌우 화살표를 사용 dial을 선택후 하면 전화가 걸린다. 전화번호부 내용은 사용자 홈디렉토리에 .dialdir 파일에 저장된다.

5. 기타

minicom을 root외의 사용자가 사용할수 있으려면 minicom 파일의 허가모드를 setuid root 즉 4555로 해야한다. 그러면 누구나 minicom을 사용할수 있으나 특정 사용자만 사용을 허가하려면 minicom.users에 사용자를 지정한다.

minicom.users를 위치시킬 디렉토리를 알려면 minicom -h 를 준다. 그러면 마지막 줄에 디렉토리 위치를 알려준다.
아래는 minicom -h 의 출력이다. 디폴트 디렉토리가 /etc이다.

 
These options can also be specified in the MINICOM environment variable.
This variable is currently unset.
The LIBDIR to find the configuration files and the
access file minicom.users is compiled as /etc.
 

미니컴의 명령키를 ctrl+a 대신 alt 키를 쓰려면(즉 ctrl+a d 대신 alt+d) 가동시 -m 옵션을 준다. 그러나 이 옵션은 콘솔에서 미니컴을 쓰는 경우에만 가능하다. 다른 통신 프로그램이나 telnet으로 login 한 경우 alt 키를 누르면 그 프로그램에서 alt키를 가로채어 minicom으로 전달되지 않기 때문이다.

미니컴의 디폴트 셋업 즉 "save setup as dfl" 로 저장한 내용은 디폴트 디렉토리에 minirc.dfl로 저장된다.(위의 경우 /etc)

글쓴 이 : 배철수 <bae@linuxlab.co.kr>
이글은 리눅스 월드 1999년 4월호에 실려 있습니다.



[출처] minicom|작성자 spirit0305

'Embedded > Softwares' 카테고리의 다른 글

유용한 ARM 어셈블리 분기 명령어  (0) 2010.05.05
모듈명령, diff, patch  (0) 2009.06.08
mobm 이 뭔가요?  (0) 2009.06.03
Code V  (0) 2009.05.25
ADS (ARM Developer Suite (v 1.2)소프트웨어  (0) 2009.05.25

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

 FPGA(field programmable gate array)

FPGA(field programmable gate array, 현장 프로그래머블 게이트 어레이)은 프로그래머블 논리 요소와 프로그래밍가능 내부선이 포함된 반도체 소자이다. 프로그래머블 논리 요소는 AND, OR, XOR, NOT, 더 복잡한 디코더나 계산기능의 조합 기능같은 기본적인 논리 게이트의 기능을 복재하여 프로그래밍할 수 있다. 대부분의 FPGA는 프로그래밍가능 논리 요소 (FPGA 식으로는 논리 블록이라고도 함)에 간단한 플립플롭이나 더 완벽한 메모리 블록으로 된 메모리 요소도 포함하고 있다.

프로그램이 가능한 내부선 계층구조는 FPGA의 논리블록을 시스템 설계자가 요구하는 대로 단일칩 프로그래밍가능 빵판처럼 내부연결을 할 수 있다. 이 논리블록과 내부선은 제조공정 이후에 소비자/설계자(그러한 이유로 "현장 프로그래머블", 현장에서 프로그래머블라고 불림)가 프로그램할 수 있으므로 요구되는 어떠한 논리기능이라도 수행한다.

FPGA는 일반적으로 주문형 반도체(ASIC) 대용품보다 느리고 복잡한 설계에 적용할 수 없으며 소비전력이 크다. 그러나 개발시간이 짧고, 오류수정을 현장에서 재프로그램할 수 있고, 초기 개발비가 저렴하다는 장점이 있다. 제조사는 설계이후에 수정할 수 없도록 할당된 덜 유연한 FPGA 버전으로 싸게 팔 수 있다. 이런 설계개발은 일반적인 FPGA에서 만들었고 좀더 ASIC와 비슷한 고정된 버전으로 변경되었다. 복합 프로그래머블 논리 소자 (CPLD)는 또다른 대체품이다.



 CPDL(Complex Programmable Logic Device)

복합 프로그래머블 논리 소자 (Complex Programmable Logic Device)는 현장 프로그래머블 게이트 어레이 (FPGA)와 프로그래머블 어레이 논리 (PAL)의 복합성과 구조적 특성을 지니고 있는 프로그래머블 논리 소자 (PLD)이다. 제조된 복합 프로그래머블 논리 소자의 블럭은 논리적 표준형 식과 더 특별한 논리 연산을 실행하는 논리가 포함된 매크로셀 (macrocell)이다.

프로그래머블 어레이 논리과 동일한 특징:

  • 비휘발 설정 메모리. 대다수 현장 프로그래머블 게이트 어레이와 다르게 외부 설졍 ROM이 불필요하고, 복합 프로그래머블 논리 소자는 시스템 시작하자마자 동작할 수 있다.
  • 특히 큰 소자는 라우팅 대부분이 (내부 상태저장이나 깊은 레이어 논리의 작은 이점으로) 외부핀과 연결된 입력과 출력신호를 가지는 논리블럭을 수반한다.

현장 프로그래머블 게이트 어레이와 동일한 특징:

  • 큰수의 게이트가 가능함. 복합 프로그래머블 논리 소자는 일반적으로 수천에서 수십만의 논리 게이트와 동등하며, 적당히 복잡한 데이터 처리 장치의 수행이 가능하다. 프로그래머블 어레이 논리는 일반적으로 수백 게이트와 동등하며, 현장 프로그래머블 게이트 어레이는 일반적으로 수백만에서 수백만의 범위이다.
  • 어떤 제품은 논리가 결과의 합식보다 유연하도록 매크로셀 사이에 복합한 피드백 라인과 (내부 연산회로 같은) 일반적으로 사용되는 다양한 기능을 실행하는 특별한 논리를 포함한다.

큰 복합 프로그래머블 논리 소자와 작은 현장 프로그래머블 게이트 어레이의 가장큰 다른점은 복합 프로그래머블 논리 소자에는 칩내부에 비활성 메모리가 존재한다. 구조적 접근에서 다른점은 중간체 영역으로부터 분명히 더 멀다.

비휘발의 특징은 복합 프로그래머블 논리 소자가 이런 능력을 가지지 않는 다른 소자를 제어 이전에 처리하는 부트 로더 기능을 수행하는 현대 디지털 설계에 종종 사용되는것을 의미한다. 좋은 예로 복합 프로그래머블 논리 소자가 비활성 메모리에서 현장 프로그래머블 게이트 어레이에 환경설정 데이터를 올리는 데 사용된다.

(처음으로 시그네틱스에 의하여 판매된) 프로그래머블 논리 어레이 (PLA)와 프로그래머블 어레이 논리보다 우월하면서 심지어 더 작은 소자로 진보적인 단계가 복합 프로그래머블 논리 소자이다.

두 소자 사이에서 향상된 현장 프로그래머블 게이트 어레이는 두가지 종류가 근본적으로 구별할 수 없을때까지 의미해지는 경향이 계속되었다.


 PLD(Programmable Logic Device)

PLD(Programmable Logic Device)는 제조 후 사용자가 내부 논리 회로의 구조를 변경할 수 있는 집적 회로이 다. 초기에는 사전에 프로그래밍되어 양산에 제공되어서 회로를 변경하지 않아도 되는 것이 일반적이었다. 최근에는 동작 중 회로의 정의를 다시 할 수 있어서 재설정 가능 논리 소자(Reconfigurable Logic Device)라고도 불린다. 는 설계시 사양이나 기능이 정해져서 제조되기 때문에 나중에 회로 구성을 변경할 수 없는 일반 집적 회로와 달리 회로가 정의되지 않은 채 출하되어 사용자가 임의의 회로를 기록해 동작시킬 수 있다.

일반 집적 회로는 대량으로 제조하는 경우 ASIC를 사용하지만 개발에 걸리는 기술 자산과 설비, IP 등 초기 개발비가 들며 설계 자산을 다른 곳에 쓸 수 없고 설계하는 데 많은 시간이 들며 조금의 실수도 용납되지 않아 개발자에게 부담이 될 수 있다. 하지만 설계 가능 논리 소자의 경우 초기 개발비가 필요없고 회로를 여러 번 고쳐 쓸 수 있기 때문에 오늘날 많은 사람들의 지지를 받아 개발품부터 양산품까지 폭넓게 쓰이고 있다.

통상 PAL(Programmable Array Logic), GAL(Generic Array Logic)의 총칭으로 쓰이는 말이지만 CPLD와 FPGA까지 포함한 총칭으로 쓰이기도 한다




원문 : Wikipedia

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,

>pxa320 보드를 사용한데..

>부트로더 의 mobm 의 역할이 정확이 이해가 안가네여...

>질문 올립니다.



mobm 자체가 뭘 말하는지는 모르겠지만

답변 달아주신 분들의 말씀을 종합해보면 한가지로 집중되는군요...

 

바로 NAND Boot Loader입니다.

 

왜 이게 필요하냐! NAND는 실행할 수 없는 메모리 이기 때문입니다.

뭔말이고 하니, NAND로 부팅하려면 NAND에 PC(프로그램 카운터)를 보내야 된다는 말인데

NAND라는건 주소와 데이터버스로 이루어진 디바이스가 아니거든요-_-;;;

그래서 "주소" 라는 개념이 없고 "블럭/페이지"의 개념이 있습니다.

 

그래서 어떻게 하느냐...

NAND의 특정블럭(대부분 0번 블럭)부터 "일정량만큼"

내부DRAM이나 외부 SDRAM/DDRRAM 등에 복사를 한 후 (H/W적으로 하는겁니다)

그 코드를 RAM에서 수행하는 겁니다.

 

mobm이라는게 바로 이 "H/W적인 로직" 을 말하는 것인지

아니면 그렇게 들어갈 "코드" 를 말하는 것인지는 잘 모르겠네요.

이부분은 다른 분들이 답변 달아주실테고

 

하튼, 그럼 "일정량 만큼" 복사를 하게 되므로 용량 제한이 굉장히 강해집니다.

아무리 커도 Small block NAND의 경우에는 16KB

Large block NAND의 경우에는 64KB 를 넘지 못하게 되는거죠

(블럭을 넘어서 읽지는 않을껍니다. 0번 블럭은 Bad로부터 자유로운 블럭이지만 나머지는 아니니까요)

그러다보니 160KB에 육박하는 부트로더를 통채로 0번 블럭에 넣을 수는 없는겁니다.

아마 리눅스의 부트로더도 마찬가지겠지요

 

그래서 필요한게 NAND Boot Loader입니다.

이녀석의 역할은 딱 하나입니다

(물론 부가기능 몇가지 넣은 부트로더들도 있지만... 이론적으로...)

뭐냐! 바로 "진짜부트로더"를 NAND에서 읽어다가 SDRAM에 적재시키고 실행하는 겁니다.

물론 이를 위해서는 SDRAM을 초기화 하고 몇몇 H/W도 초기화 시켜야겠죠

그리고 "진짜부트로더"를 "업데이트" 하는 알고리즘도 들어가 있어야 할테구요

 

하여튼, 이런 "기본적인" 기능만 넣으면 수KB에도 구현이 가능합니다.

이것을 NAND Boot Loader라고 합니다.

용어는 매우 많습니다.

Loader, Boot, NBoot, stbloader 등등...

CPU벤더마다 부르는 방법이 거의 다 다르다고 보시면 됩니다.

하지만 하는 일은 딱 하나죠.



원문 : http://cafe.naver.com/wincepro/11557

'Embedded > Softwares' 카테고리의 다른 글

유용한 ARM 어셈블리 분기 명령어  (0) 2010.05.05
모듈명령, diff, patch  (0) 2009.06.08
minicom  (0) 2009.06.03
Code V  (0) 2009.05.25
ADS (ARM Developer Suite (v 1.2)소프트웨어  (0) 2009.05.25

WRITTEN BY
RootFriend
개인적으로... 나쁜 기억력에 도움되라고 만들게되었습니다.

,