embeded/AVR (ATmega,ATtiny)2011. 3. 31. 17:58
PINA_Bit0 이런 녀석이 winavr 쪽의 PINA0 이런것과 1:1 매칭이 되는지
PINA0 PORTA0 이런것이 정말 비트 단위로 읽어올수 있고 조작이 가능한지도 모호한 상황인데..
아무튼 아래의 링크는 iar 용 매크로 라던가 변수선언들을 변환하여
일반적인 avr용 컴파일러에서 컴파일이 가능하도록 해주는 래핑소스이다.

#define GPIO_BITREG(port,bitnum) \
        ((volatile BitRegisterType*)_SFR_MEM_ADDR(port) \
        )->bit ## bitnum

#define PINA_Bit0  GPIO_BITREG(PINA,0)
#define PINA_Bit1  GPIO_BITREG(PINA,1)
#define PINA_Bit2  GPIO_BITREG(PINA,2)
#define PINA_Bit3  GPIO_BITREG(PINA,3)
#define PINA_Bit4  GPIO_BITREG(PINA,4)
#define PINA_Bit5  GPIO_BITREG(PINA,5)
#define PINA_Bit6  GPIO_BITREG(PINA,6)
#define PINA_Bit7  GPIO_BITREG(PINA,7)

[링크 : http://www.koders.com/c/fid4B73863201A18CBCB1076C1A7430B0EBF15B6E9F.aspx?s=crc
 


아무튼 자세한건 집에가서 AVR에다가 올려봐야 하려나 -_-
/* Input Pins, Port A */
#define PINA      _SFR_IO8(0x19)
/* Data Direction Register, Port A */
#define DDRA      _SFR_IO8(0x1A)
/* Data Register, Port A */
#define PORTA     _SFR_IO8(0x1B)

/* Port A Data Register - PORTA */
#define    PA7       7
#define    PA6       6
#define    PA5       5
#define    PA4       4
#define    PA3       3
#define    PA2       2
#define    PA1       1
#define    PA0       0

/* Port A Data Direction Register - DDRA */
#define    DDA7         7
#define    DDA6         6
#define    DDA5         5
#define    DDA4         4
#define    DDA3         3
#define    DDA2         2
#define    DDA1         1
#define    DDA0         0

/* Port A Input Pins - PINA */
#define    PINA7        7
#define    PINA6        6
#define    PINA5        5
#define    PINA4        4
#define    PINA3        3
#define    PINA2        2 
#define    PINA1        1
#define    PINA0        0

[출처: C:\WinAVR-20100110\avr\include\avr\iom128.h] 
 
-- 퇴근후 추가
대충해보니 머.. 정의문이라서 정수로 들어가다 보니 아무런 의미도 없는듯 -_-
아무튼, PINA.0 이런식으로 구성이 가능한것은  code vision 쪽 확장인것으로 추측되고
winavr에서는 표준적으로 비트 마스킹을 통해서만 가능한 것으로 추측된다.

[링크 : http://down.file.naver.com/howpc/kin.nhn?m=read&section=read&docid=117760743&page=362]
[링크 : http://cafe359.daum.net/_c21_/bbs_search_read?grpid=1DDsW&fldid=9E8k
Posted by 구차니
embeded/AVR (ATmega,ATtiny)2011. 3. 31. 09:37
아래는 winavr의 iom64.h의 내용중 일부이다
/* Input Pins, Port A */
#define PINA      _SFR_IO8(0x19)

/* Data Direction Register, Port A */
#define DDRA      _SFR_IO8(0x1A)

/* Data Register, Port A */
#define PORTA     _SFR_IO8(0x1B)

정리하자면
PINA는 입력된 값을 읽고
PORTA는 출력할 값을 읽고
DDRA는 그 포트의 방향을 정해준다.

예를들어, UART 같은 경우
TX 값은 PORTA에 쓰고, RX값은 PINA에서 읽는 식이라고 하면 되려나?
Pin* is for read, Port* is for write and DDR* is for direction... 
* = Register ( A, D,C...) 

PIN* is the register you use to read the value on a port if it is an input (so if the corresponding bit in DDR* is '0'). PORT* is used to output values, or to read earlier outputted values back.
 
[링크 : http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=197070]
 


Posted by 구차니
embeded/AVR (ATmega,ATtiny)2011. 3. 12. 22:13
WINAVR로 프로그램을 하긴 했지만, sizeof로 일일이 확인해본게 아니라 긴가민가 했는데
일단 ATMEGA128은 8bit 프로세서이고, int 형은 2byte이다.


ATmega128   8-bit AVR Microcontroller, 128KB Flash, 64-pin
                   View Parameters



[링크 : http://blog.daum.net/lucifer_blog/38]

 The concept is quite simple. The file types.h includes the ANSI-required file limits.h. It then explicitly tests each of the predefined data types for the smallest type that matches signed and unsigned 1-, 8-, 16-, and 32-bit variables. The result is that my data type UCHAR is guaranteed to be an 8-bit unsigned variable, INT is guaranteed to be a 16-bit signed variable, and so forth. In this manner, the following data types are defined: BOOLEAN, CHAR, UCHAR, INT, UINT, LONG, and ULONG.

Posted by 구차니
embeded/ARM2010. 7. 16. 01:46
저번에 디바이스 마트에서 구매해온 Wiggler 호환 NTC사의 JTAG을 오늘에야 테스트를 해보았다.

일단 설명서에 자사 홈페이지에서 강좌/프로그램을 확인해보라길래 갔더니 요런 내용이 있다.
강좌


[링크 : http://newtc.co.kr/]

일단은 전체강좌를 받고 강좌 1을 읽으니 H-JTAG이라는 녀석을 사용하라고 해서 다운로드 고고싱~
RAR 분할 압축으로 되어있는데  Firefox에서는 이상하게 확장자 없이 저장이 되니 확장자를 붙여주어야 한다.
그리고 빵집 4.0 에서 RAR 이 이상하게 제대로 보이지 않아 그냥 알아서 풀기를 하니 덩그러니 설치파일이 나왔다.
[링크 : http://www.hjtag.com/]

Step 1. 처음 실행하면 아래와 같이 UNKNOWN 으로 나오고,
           기본값은 USB JTAG으로 설정되어있다.

Step 2. Setting - "USB/LPT Selection" 을 선택하면

Step 3. 아래와 같은 다이얼로그가 나오고 LPT로 바꾸어 주면 자동검색한다.


2010.07.17 추가
Contorl - Detect Target을 하면 마지막으로 설정된 포트(USB/LPT)로 타겟 CPU를 확인한다.




Step 4. 자작했다면 핀배열이 다를수 있으므로 "LPT Jtag Setting" 메뉴에서 맞추어 주면된다.

Step 5. 예전에도 드물었겠지만, 프린터 포트가 여러개일 경우 포트를 고르는 화면이다.
           이 경우에는 "LPT Port Setting" 메뉴에서 맞추어 주면된다.

아무튼, 예전에 구매한 NTC JTAG은 이상없이 작동하는 것을 확인했고
아쉽게도.. 예전에 케이블이랑 사와서 낑낑대며 만든 JTAG 케이블은 작동하지 않았다 ㅠ.ㅠ

'embeded > ARM' 카테고리의 다른 글

ARM NEON  (0) 2011.08.04
arm용 linux 패치  (0) 2011.06.20
ARM용(암용) 툴체인, 컴파일러 - arm-linux-gcc : tool chain for ARM  (0) 2010.07.03
ARM JTAG 14pin / 20pin 변환하기  (0) 2010.07.01
ARM JTAG - Wiggler 14pin , 20pin pinout  (0) 2010.06.26
Posted by 구차니
embeded/ARM2010. 7. 3. 01:13

'embeded > ARM' 카테고리의 다른 글

arm용 linux 패치  (0) 2011.06.20
ARM JTAG / Wiggler + H-JTAG  (0) 2010.07.16
ARM JTAG 14pin / 20pin 변환하기  (0) 2010.07.01
ARM JTAG - Wiggler 14pin , 20pin pinout  (0) 2010.06.26
Cortex-A8 ?  (2) 2010.05.10
Posted by 구차니
embeded/ARM2010. 7. 1. 00:21

1  -Vddh (+3.3v)

2  - Vss (ground)

3  - nTRST

4  - Vss (ground)

5  - TDI

6  -Vss (ground)

7  - TMS

8  -Vss (ground)

9  - TCK

10-Vss (ground)

11- TDO

12-nRST (optional)

13- Vddh (+3.3v)

14-Vss (ground)

 

 

 

 

 

 

1  - Vddh (+3.3v)

2  - Vddh (+3.3v)

3  - nTRST

4-Vss (ground)

5  - TDI

6-Vss (ground)

7  - TMS

8-Vss (ground)

9  - TCK

10-Vss (ground)

11 --------

12-Vss (ground)

13 TDO

14-Vss (ground)

15 nRST

16-Vss (ground)

17---------

18-Vss (ground)

19---------

20-Vss (ground)


14핀은 2x7이고
20핀은 2x10이다.

일단 20pin에서 15번 nRST만 아니면 14핀으로도 충분할텐데 조금 아쉬운 감이 있다.
20핀이 없어서 10핀(2x5)로 사왔는데 6핀(2x3)을 사올걸 그랬나보다.

아무튼,
13 -> 2 (반대편 가장 윗줄로)
11 -> 13(뽑아서 아래로 한칸)
12 -> 15(위에넘 옆에꺼 뽑아서 꼽은넘 아래로)
13 -> 12(처음 뽑은넘을 남는 곳으로)
이렇게만 약간 이동시켜 주면 간단하게 해결될 것으로 보인다.


2010/06/26 - [embeded processor/ARM] - ARM JTAG - Wiggler 14pin , 20pin pinout
Posted by 구차니
embeded/ARM2010. 6. 26. 08:09
위글러는 14핀과 20핀을 주로 지원한다. 이번에 업어온게 14pin인데 내꺼는 20pin. OTL
변환젠더를 만들던 아니면 보드쪽을 20pin으로 바꾸던 해야 하는지라.. 일단 데이터 수집!
음.. 근데 14핀이 저 자주 이용되고, 20핀은 간혹인가 ㄱ-


1.7.        What is a usual JTAG header pin-out?

 

More pin-outs see at http://www.ocdemon.net/pinouts.pdf

1.7.1.   14-pin JTAG header

Usual pin-out for 14-pin JTAG header (often used for ARM)

 

1  -Vddh (+3.3v)

2  - Vss (ground)

3  - nTRST

4  - Vss (ground)

5  - TDI

6  -Vss (ground)

7  - TMS

8  -Vss (ground)

9  - TCK

10-Vss (ground)

11- TDO

12-nRESET (optional)

13- Vddh (+3.3v)

14-Vss (ground)

 

1.7.2.   20-pin JTAG header

Usual pin-out for 20-pin JTAG header (sometimes used for ARM)

1  - Vddh (+3.3v)

2  - Vddh (+3.3v)

3  - nTRST

4-Vss (ground)

5  - TDI

6-Vss (ground)

7  - TMS

8-Vss (ground)

9  - TCK

10-Vss (ground)

11 --------

12-Vss (ground)

13 –TDO

14-Vss (ground)

15 – nRST

16-Vss (ground)

17---------

18-Vss (ground)

19---------

20-Vss (ground)

 

1.7.3.   8-pin JTAG header

Usual pin-out for 8-pin JTAG header, often used for PLD programming

1 – vddh (+3.3v)

2 – TDO

3 – TDI

4 – nTRST

5

6 – TMS

7 – vss (ground)

8 – TCK


[링크 : http://hri.sourceforge.net/tools/jtag_faq_org.html#_Toc63218715]

'embeded > ARM' 카테고리의 다른 글

ARM용(암용) 툴체인, 컴파일러 - arm-linux-gcc : tool chain for ARM  (0) 2010.07.03
ARM JTAG 14pin / 20pin 변환하기  (0) 2010.07.01
Cortex-A8 ?  (2) 2010.05.10
별 시덥지 않은 이야기 (ST40 core 와 ARM)  (0) 2010.05.03
ARM JTAG DIY  (0) 2010.05.03
Posted by 구차니
embeded/ARM2010. 5. 10. 18:26
코어텍스-A8은 ARMv7 구조/아키텍쳐 기반의 프로세서이다.
300mW의 소비전력과 600Mhz~1Ghz의 클럭을 지원하며 2000 DMIPS의 프로그램을 처리할수 있다.
라고 해석하면 되려나?

Cortex-A8 Processor

The ARM Cortex™-A8 processor is based on the ARMv7 architecture and has the ability to scale in speed from 600MHz to greater than 1GHz. The Cortex-A8 processor can meet the requirements for power-optimized mobile devices needing operation in less than 300mW; and performance-optimized consumer applications requiring 2000 Dhrystone MIPS.

[링크 : http://www.arm.com/products/processors/cortex-a/cortex-a8.php]

머.. 갑자기 Cortex가 떨어진건 아니고 Cortex-M 시리즈도 있었군

ARM9은 ARMv9이 아니라 ARMv5 기반의 프로세서이다.
현재까지는 ARMv7가 가장 최신 아키텍쳐인것으로 보이며
결론은 ARM7과 ARMv7은 천지차이(결론이 이상해!)

[링크 : http://www.arm.com/products/processors/index.php]

 
[링크 : http://www.ti.com/ww/kr/embedded/arm/index.html]

DMIPS / Dhrystone MIPS
Dhrystone is a synthetic computing benchmark program developed in 1984 by Reinhold P. Weicker intended to be representative of system (integer) programming. The Dhrystone grew to become representative of general processor (CPU) performance until it was superseded by the CPU89 benchmark suite from the Standard Performance Evaluation Corporation, today known as the "SPECint" suite. The name is a pun on a different benchmark algorithm called Whetstone.

The Dhrystone benchmark contains no floating point operations, thus the name is a pun on the then-popular Whetstone benchmark for floating point operations. The output from the benchmark is the number of Dhrystones per second (the number of iterations of the main code loop per second).

[링크 : http://en.wikipedia.org/wiki/Dhrystone]

Posted by 구차니
embeded/ARM2010. 5. 3. 01:42
문득 회사에서 사용하는 JTAG인 STmicroconnect를 ARM 코어에서 사용이 가능할까?
라는 의문이 들었다.

이것저것 찾아봤지만 아마도 결론은 사용불능

일단 셋탑박스에서 사용하는 칩셋은 ARM 코어가 아닌 SH(SuperH / Hitachi core) 이라는 점
물론 ST에서 ARM 코어를 판매하지만 모델이 STi 가 아닌 STR 모델이다.

STR71x       STR71x: 144/64-pin ARM7TDMI MCU with up to 256KB FLASH, 64KB RAM and EMI
[링크 : http://www.st.com/mcu/devicedocs-STR710FZ1-86.html]

  • Samsung (ARM7/ARM9/Cortex-M3 Family)
    S3C2410A, S3C2440A, S3C44B0X, S3C4510B
  • XScale (ARM7/ARM9/ARM11 Family)
    PXA210, PXA255, PXA270
  • STMicroelectronics (ARM7/ARM9/Cortex-M3 Family)
    STR710FZ1, STR710FZ2, STR711FR0, STR711FR1, STR711FR2,
    STR712FR0, STR712FR1, STR712FR2, STR715FR0, STR730FZ1, STR730FZ2, STR731FV0, STR731FV1,
    STR731FV2, STR735FZ1, STR735FZ2, STR736FV0, STR736FV1, STR750FL2, STR750FV0, STR750FV1,
    STR750FV2, STR751FR0, STR751FR1, STR751FR2, STR752FR0, STR752FR1, STR752FR2, STR755FR0,
    STR755FR1, STR755FR2, STR755FV0, STR755FV1, STR755FV2, STR910FM32, STR910FW32, STR911FM42,
    STR911FM44, STR912FW42, STR912FW44, STR10XX, STM32F10xx
  • Analog Devices (ARM7/ARM9/Cortex-M3 Family)
    ADuC7019, ADuC7020, ADuC7021, ADuC7022,
    ADuC7024, ADuC7025, ADuC7026, ADuC7027, ADuC7032, ADuC7033, ADuC7128, ADuC7129
  • Atmel (ARM7/ARM9/Cortex-M3 Family)
    AT91C140, AT91F40416, AT91F40816, AT91FR40162,
    AT91FR4042, AT91FR4081, AT91M40400, AT91M40800, AT91M40807, AT91M42800A, AT91M43300,
    AT91M55800A, AT91M63200, AT91R40008, AT91R40807, AT91RM3400, AT91RM9200, AT91SAM7A1,
    AT91SAM7A2, AT91SAM7A3, AT91SAM7S128, AT91SAM7S256, AT91SAM7S32, AT91SAM7S64,
    AT91SAM7SE256, AT91SAM7SE32, AT91SAM7SE512, AT91SAM7X128, AT91SAM7X256, AT91SAM7XC128,
    AT91SAM7XC256, AT91SAM9260, AT91SAM9261
  • Freescale Semiconductor (ARM7/ARM9/Cortex-M3 Family)
    MAC7101, MAC7104, MAC7105, MAC7106,
    MAC7111, MAC7112, MAC7114, MAC7115, MAC7116, MAC7121, MAC7122, MAC7124, MAC7125, MAC7126,
    MAC7131, MAC7134, MAC7135, MAC7136, MAC7141, MAC7142, MAC7144
  • Luminary Micro (ARM7/ARM9/Cortex-M3 Family)
    LM3S101, LM3S102, LM3S301, LM3S310, LM3S315,
    LM3S316, LM3S328, LM3S601, LM3S610, LM3S611, LM3S612, LM3S613, LM3S615, LM3S628, LM3S801,
    LM3S811, LM3S812, LM3S815, LM3S828
  • NXP (founded by Philips) (ARM7/ARM9/Cortex-M3 Family)
    LPC2101, LPC2102, LPC2103, LPC2104,
    LPC2105, LPC2106, LPC2114, LPC2119, LPC2124, LPC2129, LPC2131, LPC2132, LPC2134, LPC2136,
    LPC2138, LPC2141, LPC2142, LPC2144, LPC2146, LPC2148, LPC2194, LPC2210, LPC2212, LPC2214,
    LPC2220, LPC2290, LPC2292, LPC2294, LPC2364, LPC2366, LPC2368, LPC2378, LPC2458, LPC2468,
    LPC2880, LPC2888, LPC3180
  • OKI (ARM7/ARM9/Cortex-M3 Family)
    ML674000, ML674001, ML674002, ML674003, ML675001, ML675002,ML675003, ML67Q4050, ML67Q4051, ML67Q4060, ML67Q4061, ML696201, ML69Q6203
  • Sharp (ARM7/ARM9/Cortex-M3 Family)
    LH75400, LH75401, LH75410, LH75411
  • TI (ARM7/ARM9/Cortex-M3 Family)
    TMS470R1A128, TMS470R1A256, TMS470R1A288, TMS470R1A384,
    TMS470R1A64, TMS470R1B1M, TMS470R1B512, TMS470R1B768

[링크 : http://www.devicemart.co.kr/mart7/mall.php?cat=010001000&query=view&no=24495]

아무튼 이녀석들이라면 Wiggler 호환 JTAG으로 사용이 가능할듯!

'embeded > ARM' 카테고리의 다른 글

ARM용(암용) 툴체인, 컴파일러 - arm-linux-gcc : tool chain for ARM  (0) 2010.07.03
ARM JTAG 14pin / 20pin 변환하기  (0) 2010.07.01
ARM JTAG - Wiggler 14pin , 20pin pinout  (0) 2010.06.26
Cortex-A8 ?  (2) 2010.05.10
ARM JTAG DIY  (0) 2010.05.03
Posted by 구차니
embeded/ARM2010. 5. 3. 01:04
암용 JTAG 중에 자작가능한 것으로 Wiggler 라는 녀석이 있다.
eleparts에서 완제품 팔기도 하고, 회로도 구해서 만들수도 있다.
예전에 주워온 PalmPalm 보드에서 지원가능한지는 모르겠다.

아무튼 74AC244 칩이 핵심인듯
그러고 보니.. AVR에는 74HC244인데 호환이 되려나?


[링크 : http://www.eleparts.co.kr/front/productdetail.php?productcode=017023007001000006&sort=]


[링크 : http://www.frozeneskimo.com/electronics/arm-tutorials/jtag-wiggler-clone/]

검색을 해보니
74HC/HCT vs.74AC/ACT

"AC / ACT stands for Advanced CMOS Logic (ACL for short).
 HC / HCT stands for High-speed CMOS Logic (HCL).

The AC and ACT subfamilies are faster than the HC and HCT subfamilies, and draw some more power in some circuits. All chips in the AC* subfamily have lower output resistance than HC* and can sink and source 24 mA at logic levels and up 70 mA (typ) per gate for motor loads. As a result AC* gates can handle more than twice the current of HC* gates (50 - 70 mA vs. 24 mA). Note, though, that while most HC* chips have a 25 mA limit, the HC* driver chips such as the 74HC240 and the 74HC245 (i.e., buffers) can handle 35 mA per device, and a maximum of 75 mA per chip.

The AC & ACT families also draw about twice as much current as the HC & HCT chips (but we speaking here of microamps, so it's usually not a huge deal).

It is occasionally possible to find (high quality) motors that you can drive directly from an HC chip. For intermittent operation, such as you get with a quadcore, you COULD drive very efficient (i.e., very low-current) motors directly. You would definitely need a capacitor (say 0.47 uF) across each motor to keep the noise under control.

[링크 : http://www.extremetesting.tv/forums/showthread.php?t=16755]

머.. 결론은 It works! 라는데.. 흐음..

아래 문서에는 74HC244로 되어있다.
[링크 : http://files.tomek.cedro.info/electronics/doc/jtag/doc/openocd_preliminary_20060102.pdf]

아무튼, PalmPalm은 PXA255 칩이고 이녀석은 ARMv5TE 계열이고 Intel XScale 인데
[링크 : http://en.wikipedia.org/wiki/XScale]

일단은 Wiggler에서 지원하니 Wiggler 호환에서도 되지 않을려나?
[링크 : http://www.macraigor.com/cpus.htm]
Posted by 구차니