1. Multi Touch disable
- device manager -> 휴먼 인터페이스 장치 -> Apple Multi-Touch disable
2018년 1월 11일 목요일
2017년 12월 29일 금요일
갤럭시 노트8 배터리 최적화
목적: 배터리를 최대한 오래쓰기 위한 셋팅을 검색한 후 내 핸드폰에 적용 하면서 기록
참조1: Link
1. 자동 밝기 조절
⦁ 설정 - 디스플레이 - 자동 밝기 - 사용 중으로
2. 화면 자동꺼짐 시간을 타이트하게
⦁ 설정 - 디스플레이 - 화면 자동 꺼짐 시간 - 30초
3. 배경화면을 어둡게
⦁ 설정 - 배경화면 및 테마 - 선택하여 적용
4. 올웨이즈온 디스플레이 끄기
⦁ 설정 - 잠금화면 및 보안 - Always On Display - 끄기
5. 절전모드와 앱전원 모니터 활용
⦁ 설정 - 디바이스 관리
6. 제스쳐 기능 제거
⦁ 설정 - 유용한 기능
7. 게임런쳐와 게임튜너를 적극 활용한다.
8. 고해상도 말고 저해상도
⦁ 설정 - 디스플레이 - 화면 해상도 -> HD+(1480X720)
9. 스마트 스테이 기능을 꼭 써야해?
⦁ 설정 - 유용한 기능
10. NFC
⦁ 설정 -연결 - NFC 및 결재
11. LED 알림
⦁ 설정 - 디스플레이 - LED 상태표시등
⦁ 관련해서 설정 - 알림 에서 알림은 최소한으로
12. 엣지라이팅
⦁ 설정 - 디스플레이 - Edge screen - Edge lighting
13. 화면을 꺼진 상태로 유지
14. 주변 디바이스 찾기
⦁ 설정 - 연결 -기타 연결설정 - 주변 디바이스 찾기
15. GPS 는 적당히
16. 와이파이와 블루투스는 꺼두자
17. 불필요한 S펜의 특수 효과는 제거할 것
⦁ 설정 - 유용한 기능 - S펜
참조2: Link
1. 절전모드 사용
2. 전력소모가 많은 앱 찾기
3. 자동 동기화 설정 끄기
4. 사용하지 않는 앱 제거
5. 구글 Play, 갤럭시 APPS 자동 업데이트 끄기
⦁ 구글 플레이 - 메뉴 - 설정 - 앱 자동 업데이트 - 해제
⦁ 갤럭시 APPS - 메뉴 - 설정 - 앱 자동 업데이트 - 해제
참조1: Link
1. 자동 밝기 조절
⦁ 설정 - 디스플레이 - 자동 밝기 - 사용 중으로
2. 화면 자동꺼짐 시간을 타이트하게
⦁ 설정 - 디스플레이 - 화면 자동 꺼짐 시간 - 30초
3. 배경화면을 어둡게
⦁ 설정 - 배경화면 및 테마 - 선택하여 적용
4. 올웨이즈온 디스플레이 끄기
⦁ 설정 - 잠금화면 및 보안 - Always On Display - 끄기
5. 절전모드와 앱전원 모니터 활용
⦁ 설정 - 디바이스 관리
6. 제스쳐 기능 제거
⦁ 설정 - 유용한 기능
7. 게임런쳐와 게임튜너를 적극 활용한다.
8. 고해상도 말고 저해상도
⦁ 설정 - 디스플레이 - 화면 해상도 -> HD+(1480X720)
9. 스마트 스테이 기능을 꼭 써야해?
⦁ 설정 - 유용한 기능
10. NFC
⦁ 설정 -연결 - NFC 및 결재
11. LED 알림
⦁ 설정 - 디스플레이 - LED 상태표시등
⦁ 관련해서 설정 - 알림 에서 알림은 최소한으로
12. 엣지라이팅
⦁ 설정 - 디스플레이 - Edge screen - Edge lighting
13. 화면을 꺼진 상태로 유지
14. 주변 디바이스 찾기
⦁ 설정 - 연결 -기타 연결설정 - 주변 디바이스 찾기
15. GPS 는 적당히
16. 와이파이와 블루투스는 꺼두자
17. 불필요한 S펜의 특수 효과는 제거할 것
⦁ 설정 - 유용한 기능 - S펜
참조2: Link
1. 절전모드 사용
2. 전력소모가 많은 앱 찾기
3. 자동 동기화 설정 끄기
4. 사용하지 않는 앱 제거
5. 구글 Play, 갤럭시 APPS 자동 업데이트 끄기
⦁ 구글 플레이 - 메뉴 - 설정 - 앱 자동 업데이트 - 해제
⦁ 갤럭시 APPS - 메뉴 - 설정 - 앱 자동 업데이트 - 해제
2017년 12월 26일 화요일
Ignition on, off 이해하기
참조: Link
ignition: 점화장치
차량에서 점화장치의 상태를 나누는데
키를 꽂는 곳을 보면 아래와 같이 나누어져 있다.
LOCK
ACC
ON
START
여기에 키를 꽂지 않은 상태까지 총 5가지가 된다.
LOCK 은 키만 꽂은 상태
ACC, ON, START 는 키를 여기까지 돌린 상태이다.
ACC 는 라디오, 진단장치에 전원이 들어오고
ON 은 모든 장치에 전원이 들어오고
START 는 시동을 건다.
요즘 나오는 버튼식은 어떻게 되는지?
아마 키가 감지되는 것, 차 안에 키를 가지고 오는 것, 버튼을 누르는 것 등으로 구분하지 않을까
ignition: 점화장치
차량에서 점화장치의 상태를 나누는데
키를 꽂는 곳을 보면 아래와 같이 나누어져 있다.
LOCK
ACC
ON
START
여기에 키를 꽂지 않은 상태까지 총 5가지가 된다.
LOCK 은 키만 꽂은 상태
ACC, ON, START 는 키를 여기까지 돌린 상태이다.
ACC 는 라디오, 진단장치에 전원이 들어오고
ON 은 모든 장치에 전원이 들어오고
START 는 시동을 건다.
요즘 나오는 버튼식은 어떻게 되는지?
아마 키가 감지되는 것, 차 안에 키를 가지고 오는 것, 버튼을 누르는 것 등으로 구분하지 않을까
ECUs
AVM(Around View Monitor)
BCM(Body Control Management)
CDU(Center Display Unit)
EPS(Electronic Power Steering)
ESC(Electronic Stability System)
SCU(Smart Control Unit)
VCU(Vehicle Control Unit) Explanation Link
PEPS(Passive Entry and Passive Start) Explanation Link
ICM(Instrument Cluster Module)
SAS(Steering Angle Sensor)
BCM(Body Control Management)
CDU(Center Display Unit)
EPS(Electronic Power Steering)
ESC(Electronic Stability System)
SCU(Smart Control Unit)
VCU(Vehicle Control Unit) Explanation Link
PEPS(Passive Entry and Passive Start) Explanation Link
ICM(Instrument Cluster Module)
SAS(Steering Angle Sensor)
2017년 12월 21일 목요일
2017년 11월 29일 수요일
Memory demystify
Program Size: data=109.5 xdata=256 const=3503 code=4401
LX51 RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)
두 개의 Gap 을 빼면 109.5 byte 이다.
모두 더하면 256 byte 이다.
0 및 - 를 제외한 것을 모두 더하면 7901 여서 빌드 결과인 7904와 3 byte 다르다.
?CO? CONST:
- ?CO?SERDES: 3495
- ?CO?FLASH: 8
을 더하면 3503 이 되므로 이것이 Build 결과와 같은것 같다.
?PR? CODE
LX51 RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)
START STOP
LENGTH ALIGN RELOC
MEMORY CLASS SEGMENT NAME
=========================================================================
* * * * * * *
* * * * D A T A M E M O R Y
* * * * * * * * * * * * *
000000H 000007H
000008H --- AT..
DATA "REG BANK
0"
000008H 000009H
000002H BYTE UNIT
DATA
?DT?_FLASH_BYTEWRITE?FLASH
00000AH 00000BH
000002H BYTE UNIT
DATA
?DT?_FLASH_BYTEREAD?FLASH
00000CH 00000DH
000002H BYTE UNIT
DATA
?DT?_FLASH_PAGEERASE?FLASH
00000EH.0
00001FH.7 000012H.0 --- --- **GAP**
000020H.0
000020H.0 000000H.1 BIT UNIT BIT ?BI?_FLASH_BYTEWRITE?FLASH
000020H.1
000020H.1 000000H.1 BIT UNIT BIT ?BI?_FLASH_BYTEREAD?FLASH
000020H.2
000020H.2 000000H.1 BIT UNIT BIT ?BI?_FLASH_PAGEERASE?FLASH
000020H.3
000020H.3 000000H.1 BIT UNIT BIT ?BI?SMBUS0_ISR?SMB
000020H.4
000020H.4 000000H.1 BIT UNIT BIT ?BI?SMB
000020H.5
000020H 000000H.3 --- ---
**GAP**
000021H 00007EH
00005EH BYTE UNIT
DATA ?DT?DATAMANAGER
00007FH 00007FH
000001H BYTE UNIT
IDATA ?STACK
두 개의 Gap 을 빼면 109.5 byte 이다.
* * * * * * *
* * * * X D A T A M E M O R Y
* * * * * * * * * * * * *
000000H 000040H
000041H BYTE UNIT
XDATA ?XD?DATAMANAGER
000041H 000078H
000038H BYTE UNIT
XDATA ?XD?UART
000079H 000092H
00001AH BYTE UNIT
XDATA ?XD?SMB
000093H 00009BH
000009H BYTE UNIT
XDATA
?XD?_FLASH_WRITE?FLASH
00009CH 0000A4H
000009H BYTE UNIT
XDATA
?XD?_FLASH_READ?FLASH
0000A5H 0000ADH
000009H BYTE UNIT
XDATA ?XD?_DATAMANAGER_FILLBUFFER?DATAMANAGER
0000AEH 0000B6H
000009H BYTE UNIT
XDATA
?XD?SERDES_INITPROCA?SERDES
0000B7H 0000BEH
000008H BYTE UNIT
XDATA
?XD?FLASH_INIT?FLASH
0000BFH 0000C6H
000008H BYTE UNIT
XDATA
?XD?_TIMER_REVOCABLEDELAY?TIMER
0000C7H 0000CDH
000007H BYTE UNIT
XDATA ?XD?TIMER
0000CEH 0000D4H
000007H BYTE UNIT
XDATA
?XD?_BYTE2HEX?COMMON
0000D5H 0000DAH
000006H BYTE UNIT
XDATA
?XD?_SMB_WRITEREGISTER?SMB
0000DBH 0000E0H
000006H BYTE UNIT
XDATA
?XD?_SERDES_READREGISTER?SERDES
0000E1H 0000E5H
000005H BYTE UNIT
XDATA
?XD?_SERDES_WRITEREGISTER?SERDES
0000E6H 0000E9H
000004H BYTE UNIT
XDATA
?XD?_SMB_READREGISTER?SMB
0000EAH 0000EDH
000004H BYTE UNIT
XDATA
?XD?_TIMER_DELAY?TIMER
0000EEH 0000F1H
000004H BYTE UNIT
XDATA ?XD?_UART_TX?UART
0000F2H 0000F4H
000003H BYTE UNIT
XDATA
?XD?_SMB_SLAVETXDATA?SMB
0000F5H 0000F7H
000003H BYTE UNIT
XDATA
?XD?_DATAMANAGER_CLRBUFFER?DATAMANAGER
0000F8H 0000F9H
000002H BYTE UNIT
XDATA ?XD?EXTINT
0000FAH 0000FBH
000002H BYTE UNIT
XDATA
?XD?SERDES_INITPROCC?SERDES
0000FCH 0000FCH
000001H BYTE UNIT
XDATA
?XD?_FLASH_BYTEWRITE?FLASH
0000FDH 0000FDH
000001H BYTE UNIT
XDATA ?XD?_SMB_INIT?SMB
0000FEH 0000FEH
000001H BYTE UNIT
XDATA ?XD?MAIN
0000FFH 0000FFH
000001H BYTE UNIT
XDATA ?XD?SERDES
모두 더하면 256 byte 이다.
* * * * * * *
* * * * C O D E M E M O R Y
* * * * * * * * * * * * *
000000H 000002H
000003H --- OFFS..
CODE ?CO?SILABS_STARTUP?3
000003H 000005H
000003H BYTE OFFS..
CODE ?EXTINT?00003
000006H 000009H
000004H BYTE UNIT
CODE
?PR?MCU_RSTSRC_INIT?MCU
00000AH 00000AH
000001H --- ---
**GAP**
00000BH 00000DH
000003H BYTE OFFS..
CODE ?TIMER?0000B
00000EH 000022H
000015H BYTE UNIT
CODE ?C_INITSEG
000023H 000025H
000003H BYTE OFFS..
CODE ?UART?00023
000026H 00003AH
000015H BYTE UNIT CODE ?PR?MCU_INIT?MCU
00003BH 00003DH
000003H BYTE OFFS..
CODE ?SMB?0003B
00003EH 000072H
000035H BYTE UNIT
CODE
?PR?_FLASH_BYTEWRITE?FLASH
000073H 000075H
000003H BYTE OFFS..
CODE ?TIMER?00073
000076H 000213H
00019EH BYTE UNIT
CODE
?PR?DATAMANAGER_TRANSMITDATATODISPLAY?DATAMANAGER
000214H 0003ABH
000198H BYTE UNIT
CODE ?C?LIB_CODE
0003ACH 00045EH
0000B3H BYTE UNIT
CODE ?PR?_BYTE2HEX?COMMON
00045FH 000508H
0000AAH BYTE UNIT
CODE
?PR?_SMB_WRITEREGISTER?SMB
000509H 0005ACH
0000A4H BYTE UNIT
CODE
?PR?SERDES_INITPROCC?SERDES
0005ADH 000640H
000094H BYTE UNIT
CODE ?PR?_SERDES_WRITEREGISTER?SERDES
000641H 0006D1H
000091H BYTE UNIT
CODE ?PR?SMBUS0_ISR?SMB
0006D2H 00075DH
00008CH BYTE UNIT
CODE ?C_C51STARTUP
00075EH 0007E2H
000085H BYTE UNIT
CODE ?PR?UART0_ISR?UART
0007E3H 000858H
000076H BYTE UNIT
CODE
?PR?_SMB_READREGISTER?SMB
000859H 0008C3H
00006BH BYTE UNIT
CODE
?PR?_FLASH_READ?FLASH
0008C4H 000928H
000065H BYTE UNIT
CODE
?PR?_FLASH_WRITE?FLASH
000929H 00098CH
000064H BYTE UNIT
CODE ?PR?_UART_TX?UART
00098DH 0009F0H
000064H BYTE UNIT
CODE
?PR?_DATAMANAGER_FILLBUFFER?DATAMANAGER
0009F1H 000A4CH
00005CH BYTE UNIT
CODE
?PR?_TIMER_REVOCABLEDELAY?TIMER
LX51
LINKER/LOCATER V4.66.30.0
11/29/2017 18:16:47 PAGE 3
000A4DH 000AA1H
000055H BYTE UNIT CODE ?PR?_SERDES_READREGISTER?SERDES
000AA2H 000AF5H
000054H BYTE UNIT
CODE ?PR?SMB_TX?SMB
000AF6H 000B48H
000053H BYTE UNIT
CODE
?PR?DATAMANAGER_CHECKSMBMESSAGE?DATAMANAGER
000B49H 000B97H
00004FH BYTE UNIT
CODE
?PR?SERDES_INIT?SERDES
000B98H 000BE2H
00004BH BYTE UNIT
CODE
?PR?TIMER0_ISR?TIMER
000BE3H 000C27H
000045H BYTE UNIT
CODE
?PR?_SMB_SLAVETXDATA?SMB
000C28H 000C6CH
000045H BYTE
UNIT CODE ?PR?SERDES_INITPROCA?SERDES
000C6DH 000CAAH
00003EH BYTE UNIT
CODE
?PR?TIMER3_ISR?TIMER
000CABH 000CE6H
00003CH BYTE UNIT
CODE
?PR?FLASH_INIT?FLASH
000CE7H 000D1DH
000037H BYTE UNIT
CODE ?CO?DATAMANAGER
000D1EH 000D4FH
000032H BYTE UNIT
CODE
?PR?_DATAMANAGER_CLRBUFFER?DATAMANAGER
000D50H 000D7EH
00002FH BYTE UNIT
CODE
?PR?_FLASH_PAGEERASE?FLASH
000D7FH 000DACH
00002EH BYTE UNIT
CODE
?PR?_TIMER_DELAY?TIMER
000DADH 000DD5H
000029H BYTE UNIT
CODE
?PR?DATAMANAGER_CHECKINT0MESSAGE?DATAMANAGER
000DD6H 000DFCH
000027H BYTE UNIT
CODE
?PR?SMB_CLEARDATA?SMB
000DFDH 000E23H
000027H BYTE UNIT
CODE ?PR?SMB_RX?SMB
000E24H 000E48H
000025H BYTE UNIT
CODE ?PR?SMB_STX?SMB
000E49H 000E6DH
000025H BYTE UNIT
CODE
?PR?MAIN_BASETASK?MAIN
000E6EH 000E92H
000025H BYTE UNIT
CODE
?PR?MAIN_SCHEDULER?MAIN
000E93H 000EB6H
000024H BYTE UNIT
CODE
?PR?SMB_SADDRCHECK?SMB
000EB7H 000ED9H
000023H BYTE UNIT
CODE ?PR?_SMB_INIT?SMB
000EDAH 000EF8H
00001FH BYTE UNIT
CODE
?PR?SERDES_INITPROCD?SERDES
000EF9H 000F14H
00001CH BYTE UNIT
CODE ?PR?UART_INIT?UART
000F15H 000F2EH
00001AH BYTE UNIT
CODE
?PR?_PORT_1_CHANGECONFIG?PORT
000F2FH 000F47H
000019H BYTE UNIT
CODE ?PR?SMB_START?SMB
000F48H 000F60H
000019H BYTE UNIT
CODE
?PR?TIMER_0_INIT?TIMER
000F61H 000F77H
000017H BYTE UNIT
CODE ?PR?INT0_ISR?EXTINT
000F78H 000F8DH
000016H BYTE UNIT
CODE ?PR?_FLASH_BYTEREAD?FLASH
000F8EH 000FA1H
000014H BYTE UNIT
CODE ?PR?SMB_READ?SMB
000FA2H 000FB5H
000014H BYTE UNIT
CODE ?PR?SMB_SRX?SMB
000FB6H 000FC9H
000014H BYTE UNIT
CODE
?PR?UART_TXBUFCLEAR?UART
000FCAH 000FDBH
000012H BYTE UNIT
CODE
?PR?SERDES_INITPROCB?SERDES
000FDCH 000FECH
000011H BYTE UNIT
CODE
?PR?MAIN_INITTASK?MAIN
000FEDH 000FFCH
000010H BYTE UNIT
CODE
?PR?EXTINT_INIT?EXTINT
000FFDH 00100CH
000010H BYTE UNIT
CODE
?PR?TIMER_1_INIT?TIMER
00100DH 00101CH
000010H BYTE UNIT
CODE
?PR?TIMER_2_INIT?TIMER
00101DH 00102BH
00000FH BYTE UNIT
CODE ?PR?SMB_RESET?SMB
00102CH 00103AH
00000FH BYTE UNIT
CODE
?PR?TIMER_INIT?TIMER
00103BH 001048H
00000EH BYTE UNIT
CODE ?CO?MAIN
001049H 001056H
00000EH BYTE UNIT
CODE ?PR?DATAMANAGER_INIT?DATAMANAGER
001057H 001063H
00000DH BYTE UNIT
CODE ?PR?SMB_WRITE?SMB
001064H 001070H
00000DH BYTE UNIT
CODE
?PR?SMB_WAITBUSY?SMB
001071H 00107DH
00000DH BYTE UNIT
CODE ?PR?TIMER_3_INIT?TIMER
00107EH 001089H
00000CH BYTE UNIT
CODE
?PR?_SMB_RCVEVENTADD?SMB
00108AH 001093H
00000AH BYTE UNIT
CODE
?PR?PORT_0_INIT?PORT
001094H 00109CH
000009H BYTE UNIT
CODE ?PR?PORT_INIT?PORT
00109DH 0010A5H
000009H BYTE UNIT
CODE
?PR?TIMER_GETDELAYCOUNT?TIMER
0010A6H 0010AEH
000009H BYTE UNIT
CODE
?PR?TIMER_GETSCHEDULECOUNT500MS?TIMER
0010AFH 0010B7H
000009H BYTE UNIT
CODE
?PR?TIMER_GETSCHEDULECOUNT1000MS?TIMER
0010B8H 0010BFH
000008H BYTE UNIT
CODE
?PR?TIMER_CLEARDELAYCOUNT?TIMER
0010C0H 0010C7H
000008H BYTE UNIT
CODE ?PR?TIMER_CLEARSCHEDULECOUNT500MS?TIMER
0010C8H 0010CFH
000008H BYTE UNIT
CODE
?PR?TIMER_CLEARSCHEDULECOUNT1000MS?TIMER
0010D0H 0010D7H
000008H BYTE UNIT
CODE
?PR?MCU_PERIPHERALINIT?MCU
0010D8H 0010DEH
000007H BYTE UNIT
CODE
?PR?PORT_1_INIT?PORT
0010DFH 0010E5H
000007H BYTE UNIT
CODE ?PR?XBAR_INIT?PORT
0010E6H 0010ECH
000007H BYTE UNIT
CODE
?PR?SMB_GETSMBBUSY?SMB
0010EDH 0010F3H
000007H BYTE UNIT
CODE
?PR?TIMER_CLK_INIT?TIMER
0010F4H 0010FAH
000007H BYTE UNIT
CODE
?PR?MCU_WDT_INIT?MCU
0010FBH 001101H
000007H BYTE UNIT
CODE
?PR?GLBINT_INIT?GLBINT
001102H 001107H
000006H BYTE UNIT CODE ?PR?SMB_GETFOUNDSLAFLAG?SMB
001108H 00110DH
000006H BYTE UNIT
CODE
?PR?SMB_GETFOUNDSLAADDR?SMB
00110EH 001113H
000006H BYTE UNIT
CODE
?PR?SMB_CLEARFOUNDSLAFLAG?SMB
LX51
LINKER/LOCATER V4.66.30.0
11/29/2017 18:16:47 PAGE 4
001114H 001119H
000006H BYTE UNIT
CODE
?PR?_SMB_SETFOUNDSLAADDR?SMB
00111AH 00111FH
000006H BYTE UNIT
CODE ?PR?TIMER_GETSCHEDULECOUNT100MS?TIMER
001120H 001125H
000006H BYTE UNIT
CODE
?PR?TIMER_CLEARSCHEDULECOUNT100MS?TIMER
001126H 00112BH
000006H BYTE UNIT
CODE ?PR?MAIN?MAIN
00112CH 001131H
000006H BYTE UNIT
CODE ?PR?UART_GETRXBUFFERSIZE?UART
001132H 001ED8H
000DA7H BYTE UNIT
CONST ?CO?SERDES
001ED9H 001EE0H
000008H BYTE UNIT
CONST ?CO?FLASH
0 및 - 를 제외한 것을 모두 더하면 7901 여서 빌드 결과인 7904와 3 byte 다르다.
?CO? CONST:
- ?CO?SERDES: 3495
- ?CO?FLASH: 8
을 더하면 3503 이 되므로 이것이 Build 결과와 같은것 같다.
?PR? CODE
JTAG
The Joint Test Action Group (JTAG) is an electronics industry association formed in 1985 for developing a method of verifying designs and testing printed circuit boards after manufacture. In 1990 the Institute of Electrical and Electronics Engineers codified the results of the effort in IEEE Standard 1149.1-1990, entitled Standard Test Access Port and Boundary-Scan Architecture.
JTAG implements standards for on-chip instrumentation in electronic design automation (EDA) as a complementary tool to digital simulation.[1] It specifies the use of a dedicated debug port implementing a serial communications interface for low-overhead access without requiring direct external access to the system address and data buses. The interface connects to an on-chip test access port (TAP) that implements a stateful protocol to access a set of test registers that present chip logic levels and device capabilities of various parts.
The JTAG standards have been extended by many semiconductor chip manufacturers with specialized variants to provide vendor-specific features.[2]
JTAG (Joint Test Action Group)는 1985 년에 제조 된 전자 산업 협회로, 설계 검증 및 제조 후 인쇄 회로 기판 테스트 방법을 개발했습니다. 1990 년에 전기 전자 기술 연구소 (Institute of Electrical and Electronics Engineers)는 표준 테스트 액세스 포트 및 경계 스캔 아키텍처라는 IEEE 표준 1149.1-1990에서의 노력 결과를 성문화했습니다.
JTAG은 디지털 시뮬레이션에 대한 보완 도구로서 전자 설계 자동화 (EDA)에서 온칩 계측 표준을 구현합니다. 시스템 주소 및 데이터 버스에 직접 외부 액세스하지 않고도 오버 헤드가 적은 액세스를 위해 직렬 통신 인터페이스를 구현하는 전용 디버그 포트를 사용합니다. 이 인터페이스는 상태 로직을 구현하는 온칩 테스트 액세스 포트 (TAP)에 연결되어 칩 로직 레벨 및 다양한 부품의 장치 성능을 나타내는 테스트 레지스터 세트에 액세스한다.
JTAG 표준은 많은 반도체 칩 제조업체들에 의해 특화된 변형으로 확장되어 벤더 특정 기능을 제공합니다. [2]
History
In the 1980s, multi-layer circuit boards and non-lead-frame integrated circuits (ICs) were becoming standard and connections were being made between ICs that were not available to probes. The majority of manufacturing and field faults in circuit boards were due to poor solder joints on the boards, imperfections among board connections, or the bonds and bond wires from IC pads to pin lead frames. The Joint Test Action Group (JTAG) was formed in 1985 to provide a pins-out view from one IC pad to another so these faults could be discovered.
1980 년대에 다층 회로 보드와 비 리드 프레임 IC (non-lead-frame integrated circuits)가 표준화되었고 프로브에 사용할 수 없었던 IC간에 연결이 이루어지고있었습니다. 회로 기판의 제조 및 필드 오류의 대부분은 보드의 납땜 조인트 불량, 보드 연결 불완전 또는 IC 패드에서 핀 리드 프레임으로 본드 및 본드 와이어로 인해 발생했습니다. JTAG (Joint Test Action Group)는 1985 년에 하나의 IC 패드에서 다른 IC 패드로 핀 아웃 뷰를 제공하기 위해 형성되었으므로 이러한 결함을 발견 할 수있었습니다.
The industry standard became an IEEE standard in 1990 as IEEE Std. 1149.1-1990[3] after many years of initial use. In the same year, Intel released their first processor with JTAG (the 80486) which led to quicker industry adoption by all manufacturers. In 1994, a supplement that contains a description of the boundary scan description language (BSDL) was added. Further refinements regarding the use of all-zeros for EXTEST, separating the use of SAMPLE from PRELOAD and better implementation for OBSERVE_ONLY cells were made and released in 2001.[4] Since 1990, this standard has been adopted by electronics companies around the world. Boundary scan is now mostly synonymous with JTAG, but JTAG has essential uses beyond such manufacturing applications.
산업 표준은 1990 년 IEEE 표준으로 IEEE 표준이되었습니다. 1149.1-1990 [3]. 같은 해 인텔은 JTAG (80486)를 탑재 한 첫 번째 프로세서를 출시하여 모든 제조업체의 산업 채택이 빨라졌습니다. 1994 년에는 BSDL (boundary scan description language)에 대한 설명이 포함 된 보완 물이 추가되었습니다. EXTEST에 대해 모두 0을 사용하는 것과 관련된 추가 세부 사항, PRELOAD에서 SAMPLE의 사용을 분리하고 OBSERVE_ONLY 셀에 대한 더 나은 구현이 작성되어 2001 년에 릴리스되었습니다. 1990 년이 표준은 전 세계의 전자 회사에서 채택했습니다. 바운더리 스캔은 현재 JTAG과 거의 동의어이지만 JTAG은 이러한 제조 애플리케이션 이외의 필수 용도로 사용됩니다.
Debugging
Although JTAG's early applications targeted board level testing, the JTAG standard was designed to assist with device, board, and system testing, diagnosis, and fault isolation. Today JTAG is used as the primary means of accessing sub-blocks of integrated circuits, making it an essential mechanism for debugging embedded systems which may not have any other debug-capable communications channel.[citation needed] On most systems, JTAG-based debugging is available from the very first instruction after CPU reset, letting it assist with development of early boot software which runs before anything is set up. An in-circuit emulator (or, more correctly, a "JTAG adapter") uses JTAG as the transport mechanism to access on-chip debug modules inside the target CPU. Those modules let software developers debug the software of an embedded system directly at the machine instruction level when needed, or (more typically) in terms of high level language source code.
JTAG의 초기 응용 프로그램은 보드 레벨 테스트를 대상으로했지만 JTAG 표준은 장치, 보드 및 시스템 테스트, 진단 및 오류 격리를 지원하도록 설계되었습니다. 오늘날 JTAG는 집적 회로의 하위 블록에 액세스하는 주요 수단으로 사용되어 다른 디버그 가능 통신 채널이없는 임베디드 시스템을 디버깅하는 데 필수적인 메커니즘입니다. [표창장은 필요 없습니다] 대부분의 시스템에서 JTAG 기반 디버깅 CPU 리셋 후 첫 번째 명령에서 사용할 수 있으므로 아무 것도 설정되기 전에 실행되는 초기 부팅 소프트웨어 개발을 지원합니다. 인서 킷 에뮬레이터 (또는보다 정확하게는 "JTAG 어댑터")는 JTAG를 전송 메커니즘으로 사용하여 대상 CPU 내부의 온칩 디버그 모듈에 액세스합니다. 이러한 모듈을 통해 소프트웨어 개발자는 필요할 때 기계 명령어 레벨에서 또는 직접 (일반적으로) 고급 언어 소스 코드 측면에서 임베디드 시스템의 소프트웨어를 직접 디버깅 할 수 있습니다.
System software debug support is for many software developers the main reason to be interested in JTAG. Many silicon architectures such as PowerPC, MIPS, ARM, x86 built an entire software debug, instruction tracing, and data tracing infrastructure around the basic JTAG protocol. Frequently individual silicon vendors however only implement parts of these extensions. Some examples are ARM CoreSight and Nexus as well as Intel's BTS (Branch Trace Storage), LBR (Last Branch Record), and IPT (Intel Processor Trace) implementations. There are many other such silicon vendor-specific extensions that may not be documented except under NDA. The adoption of the JTAG standard helped move JTAG-centric debugging environments away from early processor-specific designs. Processors can normally be halted, single stepped, or let run freely. One can set code breakpoints, both for code in RAM (often using a special machine instruction) and in ROM/flash. Data breakpoints are often available, as is bulk data download to RAM. Most designs have “halt mode debugging”, but some allow debuggers to access registers and data buses without needing to halt the core being debugged. Some toolchains can use ARM Embedded Trace Macrocell (ETM) modules, or equivalent implementations in other architectures to trigger debugger (or tracing) activity on complex hardware events, like a logic analyzer programmed to ignore the first seven accesses to a register from one particular subroutine.
시스템 소프트웨어 디버그 지원은 많은 소프트웨어 개발자들에게 JTAG에 관심을 갖는 주된 이유입니다. PowerPC, MIPS, ARM, x86과 같은 많은 실리콘 아키텍처는 기본 JTAG 프로토콜을 중심으로 전체 소프트웨어 디버그, 명령 추적 및 데이터 추적 인프라를 구축했습니다. 그러나 종종 개별 실리콘 벤더는 이러한 확장 기능의 일부만 구현합니다. ARM CoreSight 및 Nexus는 물론 Intel의 BTS (Branch Trace Storage), LBR (Last Branch Record) 및 IPT (Intel Processor Trace) 구현을 예로들 수 있습니다. NDA를 제외하고는 문서화되지 않은 실리콘 벤더 관련 확장이 많이 있습니다. JTAG 표준을 채택함으로써 JTAG 중심의 디버깅 환경을 초기 프로세서 별 설계에서 벗어나게되었습니다. 프로세서는 일반적으로 정지되거나, 단일 단계로 실행되거나, 자유롭게 실행될 수 있습니다. RAM 코드 (종종 특수 기계 명령어 사용)와 ROM / 플래시 모두에 대해 코드 중단 점을 설정할 수 있습니다. 대량 데이터를 RAM에 다운로드 할 때처럼 데이터 중단 점을 사용할 수 있습니다. 대부분의 설계는 "정지 모드 디버깅"을 가지고 있지만, 일부는 디버거가 디버깅중인 코어를 정지시키지 않고도 레지스터와 데이터 버스에 액세스 할 수 있도록 허용합니다. 일부 툴체인은 ETM (ARM Embedded Trace Macrocell) 모듈 또는 다른 아키텍처의 동등한 구현을 사용하여 하나의 특정 서브 루틴에서 레지스터에 대한 처음 7 개의 액세스를 무시하도록 프로그래밍 된 로직 분석기와 같이 복잡한 하드웨어 이벤트에서 디버거 (또는 추적) 활동을 트리거 할 수 있습니다 .
Sometimes FPGA developers also use JTAG to develop debugging tools.[5] The same JTAG techniques used to debug software running inside a CPU can help debug other digital design blocks inside an FPGA. For example, custom JTAG instructions can be provided to allow reading registers built from arbitrary sets of signals inside the FPGA, providing visibility for behaviors which are invisible to boundary scan operations. Similarly, writing such registers could provide controllability which is not otherwise available.
때때로 FPGA 개발자는 JTAG을 사용하여 디버깅 도구를 개발합니다. CPU 내부에서 실행되는 소프트웨어를 디버깅하는 데 사용되는 것과 동일한 JTAG 기술을 사용하면 FPGA 내의 다른 디지털 설계 블록을 디버깅하는 데 도움이 될 수 있습니다. 예를 들어, 사용자 정의 JTAG 명령어를 제공하여 FPGA 내부의 임의의 신호 세트로 작성된 레지스터를 읽을 수 있으므로 바운더리 스캔 작업에서 볼 수없는 동작을 볼 수 있습니다. 유사하게, 그러한 레지스터를 작성하는 것은 다르게 이용 가능하지 않은 제어 가능성을 제공 할 수있다.
Storing firmware
JTAG allows device programmer hardware to transfer data into internal non-volatile device memory (e.g. CPLDs). Some device programmers serve a double purpose for programming as well as debugging the device. In the case of FPGAs, volatile memory devices can also be programmed via the JTAG port, normally during development work. In addition, internal monitoring capabilities (temperature, voltage and current) may be accessible via the JTAG port.
JTAG는 디바이스 프로그래머 하드웨어가 내부의 비 휘발성 디바이스 메모리 (예 : CPLD)로 데이터를 전송할 수있게한다. 일부 디바이스 프로그래머는 디바이스를 디버깅하는 것뿐만 아니라 프로그래밍을위한 이중 목적을 제공합니다. FPGA의 경우, 일반적으로 개발 작업 중에 JTAG 포트를 통해 휘발성 메모리 장치를 프로그래밍 할 수 있습니다. 또한 내부 모니터링 기능 (온도, 전압 및 전류)은 JTAG 포트를 통해 액세스 할 수 있습니다.
JTAG programmers are also used to write software and data into flash memory. This is usually done using data bus access like the CPU would use, and is sometimes actually handled by a CPU, but in other cases memory chips have JTAG interfaces themselves. Some modern debug architectures provide internal and external bus master access without needing to halt and take over a CPU. In the worst case, it is usually possible to drive external bus signals using the boundary scan facility.
JTAG 프로그래머는 소프트웨어와 데이터를 플래시 메모리에 기록하는데도 사용됩니다. 이것은 일반적으로 CPU가 사용하는 것처럼 데이터 버스 액세스를 사용하여 수행되며 때로는 실제로 CPU에서 처리되지만 다른 경우에는 메모리 칩 자체에서 JTAG 인터페이스를 사용합니다. 일부 최신 디버그 아키텍처는 CPU를 중단하고 CPU를 인계하지 않고도 내부 및 외부 버스 마스터 액세스를 제공합니다. 최악의 경우 바운더리 스캔 기능을 사용하여 외부 버스 신호를 구동 할 수 있습니다.
As a practical matter, when developing an embedded system, emulating the instruction store is the fastest way to implement the "debug cycle" (edit, compile, download, test, and debug).[citation needed] This is because the in-circuit emulator simulating an instruction store can be updated very quickly from the development host via, say, USB. Using a serial UART port and bootloader to upload firmware to Flash makes this debug cycle quite slow and possibly expensive in terms of tools; installing firmware into Flash (or SRAM instead of Flash) via JTAG is an intermediate solution between these extremes.
실제로 임베디드 시스템을 개발할 때 인스트럭션 저장소를 에뮬레이션하는 것이 "디버그 사이클"(편집, 컴파일, 다운로드, 테스트 및 디버그)을 구현하는 가장 빠른 방법입니다. [표창장은 필요 없습니다] 인스트럭션 스토어를 시뮬레이트하는 에뮬레이터는 USB를 통해 개발 호스트에서 매우 빠르게 업데이트 될 수 있습니다. 펌웨어를 플래시에 업로드하기 위해 직렬 UART 포트와 부트 로더를 사용하면이 디버그주기가 상당히 느리고 도구 측면에서 비용이 많이 들게됩니다. JTAG을 통해 플래시 (또는 플래시 대신 SRAM)에 펌웨어를 설치하는 것은 이러한 극단적 인 해결책의 중간 단계입니다.
Boundary scan testing
JTAG boundary scan technology provides access to many logic signals of a complex integrated circuit, including the device pins. The signals are represented in the boundary scan register (BSR) accessible via the TAP. This permits testing as well as controlling the states of the signals for testing and debugging. Therefore, both software and hardware (manufacturing) faults may be located and an operating device may be monitored.
JTAG 바운더리 스캔 기술은 디바이스 핀을 포함한 복잡한 집적 회로의 많은 로직 신호에 대한 액세스를 제공한다. 신호는 TAP를 통해 액세스 할 수있는 바운더리 스캔 레지스터 (BSR)에 표시됩니다. 이것은 테스트와 디버깅을 위해 신호의 상태를 제어 할뿐만 아니라 테스트를 허용합니다. 따라서 소프트웨어 및 하드웨어 (제조) 오류가있을 수 있으며 운영 장치를 모니터링 할 수 있습니다.
When combined with built-in self-test (BIST), the JTAG scan chain enables a low overhead, embedded solution to testing an IC for certain static faults (shorts, opens, and logic errors). The scan chain mechanism does not generally help diagnose or test for timing, temperature or other dynamic operational errors that may occur. Test cases are often provided in standardized formats such as SVF, or its binary sibling XSVF, and used in production tests. The ability to perform such testing on finished boards is an essential part of Design For Test in today's products, increasing the number of faults that can be found before products ship to customers.
BIST (Built-in Self-Test)와 결합하면 JTAG 스캔 체인은 특정 정적 결함 (단락, 개방 및 논리 오류)에 대해 IC를 테스트하는 오버 헤드가 적은 임베디드 솔루션을 가능하게합니다. 스캔 체인 메커니즘은 일반적으로 발생할 수있는 타이밍, 온도 또는 기타 동적 작동 오류를 진단하거나 테스트하는 데 도움이되지 않습니다. 테스트 사례는 SVF 또는 이진 형제 XSVF와 같은 표준화 된 형식으로 제공되며 프로덕션 테스트에 사용됩니다. 완성 된 보드에서 이러한 테스트를 수행하는 기능은 오늘날의 제품에서 Design For Test의 필수적인 부분으로, 제품이 고객에게 출시되기 전에 발견 할 수있는 결함 수를 증가시킵니다.
Electrical characteristics
A JTAG interface is a special interface added to a chip. Depending on the version of JTAG, two, four, or five pins are added. The four and five pin interfaces are designed so that multiple chips on a board can have their JTAG lines daisy-chained together if specific conditions are met.[6] The two pin interface is designed so that multiple chips can be connected in a star topology. In either case a test probe need only connect to a single "JTAG port" to have access to all chips on a circuit board.
JTAG 인터페이스는 칩에 추가 된 특별한 인터페이스입니다. JTAG의 버전에 따라 2 개, 4 개 또는 5 개의 핀이 추가됩니다. 4 핀 및 5 핀 인터페이스는 특정 조건이 충족 될 경우 보드상의 여러 칩이 JTAG 라인을 데이지 체인 방식으로 연결할 수 있도록 설계되었습니다. 두 개의 핀 인터페이스는 다중 칩이 스타 토폴로지로 연결될 수 있도록 설계되었습니다. 두 경우 모두 테스트 프로브는 회로 기판의 모든 칩에 액세스 할 수 있도록 단일 "JTAG 포트"에만 연결하면됩니다.
Daisy-chained JTAG (IEEE 1149.1)
The connector pins are
TDI (Test Data In)
TDO (Test Data Out)
TCK (Test Clock)
TMS (Test Mode Select)
TRST (Test Reset) optional.
Test reset signal is not shown in the image.
The TRST pin is an optional active-low reset to the test logic - usually asynchronous, but sometimes synchronous, depending on the chip. If the pin is not available, the test logic can be reset by switching to the reset state synchronously, using TCK and TMS. Note that resetting test logic doesn't necessarily imply resetting anything else. There are generally some processor-specific JTAG operations which can reset all or part of the chip being debugged.
TRST 핀은 테스트 로직에 대한 선택적 액티브 로우 리셋이다. 일반적으로 칩에 따라 비동기이지만 때로는 동기식이다. 핀을 사용할 수없는 경우 TCK 및 TMS를 사용하여 리셋 상태로 동기식으로 전환하여 테스트 로직을 리셋 할 수 있습니다. 테스트 로직을 리셋한다고해서 반드시 다른 것을 리셋하는 것은 아닙니다. 일반적으로 디버깅중인 칩의 전부 또는 일부를 재설정 할 수있는 일부 프로세서 별 JTAG 작업이 있습니다.
Since only one data line is available, the protocol is serial. The clock input is at the TCK pin. One bit of data is transferred in from TDI, and out to TDO per TCK rising clock edge. Different instructions can be loaded. Instructions for typical ICs might read the chip ID, sample input pins, drive (or float) output pins, manipulate chip functions, or bypass (pipe TDI to TDO to logically shorten chains of multiple chips).
하나의 데이터 회선 만 사용할 수 있으므로 프로토콜은 직렬입니다. 클록 입력은 TCK 핀에있다. 1 비트의 데이터가 TDI에서 전송되고 TCK 상승 클록 에지 당 TDO로 전송됩니다. 다른 지침을로드 할 수 있습니다. 일반적인 IC에 대한 지침은 칩 ID, 샘플 입력 핀, 드라이브 (또는 부동) 출력 핀, 칩 기능 조작 또는 바이 패스 (여러 칩의 체인을 논리적으로 단축하기 위해 TDI에서 TDO로 파이프)를 읽을 수 있습니다.
As with any clocked signal, data presented to TDI must be valid for some chip-specific Setup time before and Hold time after the relevant (here, rising) clock edge. TDO data is valid for some chip-specific time after the falling edge of TCK.
클록 신호와 마찬가지로, TDI에 제공되는 데이터는 관련 클록 에지 이후의 특정 칩 설정 시간 및 홀드 시간에 유효해야합니다. TDO 데이터는 TCK의 하강 에지 이후에 특정 칩 특정 시간 동안 유효합니다.
The maximum operating frequency of TCK varies depending on all chips in the chain (the lowest speed must be used), but it is typically 10-100 MHz (100-10 ns per bit). Also TCK frequencies depend on board layout and JTAG adapter capabilities and state. One chip might have a 40 MHz JTAG clock, but only if it is using a 200 MHz clock for non-JTAG operations; and it might need to use a much slower clock when it is in a low power mode. Accordingly, some JTAG adapters have adaptive clocking using an RTCK (Return TCK) signal. Faster TCK frequencies are most useful when JTAG is used to transfer lots of data, such as when storing a program executable into flash memory.
TCK의 최대 작동 주파수는 체인의 모든 칩에 따라 다르지만 (최저 속도를 사용해야 함) 일반적으로 10-100MHz (비트 당 100-10ns)입니다. 또한 TCK 주파수는 보드 레이아웃과 JTAG 어댑터 기능 및 상태에 따라 달라집니다. 하나의 칩은 40MHz JTAG 클록을 가질 수 있지만 비 JTAG 동작을 위해 200MHz 클럭을 사용하는 경우에만 해당된다. 저전력 모드 일 때 훨씬 느린 클록을 사용해야 할 수도 있습니다. 따라서 일부 JTAG 어댑터에는 RTCK (Return TCK) 신호를 사용하는 적응 형 클럭킹이 있습니다. 빠른 TCK 주파수는 프로그램 실행 파일을 플래시 메모리에 저장할 때와 같이 JTAG을 사용하여 많은 양의 데이터를 전송할 때 가장 유용합니다.
Clocking changes on TMS steps through a standardized JTAG state machine. The JTAG state machine can reset, access an instruction register, or access data selected by the instruction register.
표준화 된 JTAG 상태 머신을 통해 TMS 단계의 클럭 변경. JTAG 상태 머신은 리셋하거나, 명령 레지스터에 액세스하거나, 명령 레지스터에 의해 선택된 데이터에 액세스 할 수있다.
JTAG platforms often add signals to the handful defined by the IEEE 1149.1 specification. A System Reset (SRST) signal is quite common, letting debuggers reset the whole system, not just the parts with JTAG support. Sometimes there are event signals used to trigger activity by the host or by the device being monitored through JTAG; or, perhaps, additional control lines.
JTAG 플랫폼은 종종 IEEE 1149.1 사양에 정의 된 소수에 신호를 추가합니다. 시스템 재설정 (SRST) 신호는 JTAG을 지원하는 부품뿐만 아니라 전체 시스템을 재설정하는 디버거를 허용하는 매우 일반적인 신호입니다. 때로는 JTAG를 통해 모니터링되는 장치 또는 호스트에 의해 활동을 트리거하는 데 사용되는 이벤트 신호가 있습니다. 또는 아마도 추가 제어 라인이 필요합니다.
Even though few consumer products provide an explicit JTAG port connector, the connections are often available on the printed circuit board as a remnant from development prototyping and/or production. When exploited, these connections often provide the most viable means for reverse engineering.
일부 소비자 제품이 명시적인 JTAG 포트 커넥터를 제공하더라도 개발 프로토 타입 및 / 또는 생산의 나머지 부분으로 인쇄 회로 기판에서 종종 연결을 사용할 수 있습니다. 악용 될 때 이러한 연결은 종종 리버스 엔지니어링을위한 가장 실용적인 수단을 제공합니다.
JTAG implements standards for on-chip instrumentation in electronic design automation (EDA) as a complementary tool to digital simulation.[1] It specifies the use of a dedicated debug port implementing a serial communications interface for low-overhead access without requiring direct external access to the system address and data buses. The interface connects to an on-chip test access port (TAP) that implements a stateful protocol to access a set of test registers that present chip logic levels and device capabilities of various parts.
The JTAG standards have been extended by many semiconductor chip manufacturers with specialized variants to provide vendor-specific features.[2]
JTAG (Joint Test Action Group)는 1985 년에 제조 된 전자 산업 협회로, 설계 검증 및 제조 후 인쇄 회로 기판 테스트 방법을 개발했습니다. 1990 년에 전기 전자 기술 연구소 (Institute of Electrical and Electronics Engineers)는 표준 테스트 액세스 포트 및 경계 스캔 아키텍처라는 IEEE 표준 1149.1-1990에서의 노력 결과를 성문화했습니다.
JTAG은 디지털 시뮬레이션에 대한 보완 도구로서 전자 설계 자동화 (EDA)에서 온칩 계측 표준을 구현합니다. 시스템 주소 및 데이터 버스에 직접 외부 액세스하지 않고도 오버 헤드가 적은 액세스를 위해 직렬 통신 인터페이스를 구현하는 전용 디버그 포트를 사용합니다. 이 인터페이스는 상태 로직을 구현하는 온칩 테스트 액세스 포트 (TAP)에 연결되어 칩 로직 레벨 및 다양한 부품의 장치 성능을 나타내는 테스트 레지스터 세트에 액세스한다.
JTAG 표준은 많은 반도체 칩 제조업체들에 의해 특화된 변형으로 확장되어 벤더 특정 기능을 제공합니다. [2]
History
In the 1980s, multi-layer circuit boards and non-lead-frame integrated circuits (ICs) were becoming standard and connections were being made between ICs that were not available to probes. The majority of manufacturing and field faults in circuit boards were due to poor solder joints on the boards, imperfections among board connections, or the bonds and bond wires from IC pads to pin lead frames. The Joint Test Action Group (JTAG) was formed in 1985 to provide a pins-out view from one IC pad to another so these faults could be discovered.
1980 년대에 다층 회로 보드와 비 리드 프레임 IC (non-lead-frame integrated circuits)가 표준화되었고 프로브에 사용할 수 없었던 IC간에 연결이 이루어지고있었습니다. 회로 기판의 제조 및 필드 오류의 대부분은 보드의 납땜 조인트 불량, 보드 연결 불완전 또는 IC 패드에서 핀 리드 프레임으로 본드 및 본드 와이어로 인해 발생했습니다. JTAG (Joint Test Action Group)는 1985 년에 하나의 IC 패드에서 다른 IC 패드로 핀 아웃 뷰를 제공하기 위해 형성되었으므로 이러한 결함을 발견 할 수있었습니다.
The industry standard became an IEEE standard in 1990 as IEEE Std. 1149.1-1990[3] after many years of initial use. In the same year, Intel released their first processor with JTAG (the 80486) which led to quicker industry adoption by all manufacturers. In 1994, a supplement that contains a description of the boundary scan description language (BSDL) was added. Further refinements regarding the use of all-zeros for EXTEST, separating the use of SAMPLE from PRELOAD and better implementation for OBSERVE_ONLY cells were made and released in 2001.[4] Since 1990, this standard has been adopted by electronics companies around the world. Boundary scan is now mostly synonymous with JTAG, but JTAG has essential uses beyond such manufacturing applications.
산업 표준은 1990 년 IEEE 표준으로 IEEE 표준이되었습니다. 1149.1-1990 [3]. 같은 해 인텔은 JTAG (80486)를 탑재 한 첫 번째 프로세서를 출시하여 모든 제조업체의 산업 채택이 빨라졌습니다. 1994 년에는 BSDL (boundary scan description language)에 대한 설명이 포함 된 보완 물이 추가되었습니다. EXTEST에 대해 모두 0을 사용하는 것과 관련된 추가 세부 사항, PRELOAD에서 SAMPLE의 사용을 분리하고 OBSERVE_ONLY 셀에 대한 더 나은 구현이 작성되어 2001 년에 릴리스되었습니다. 1990 년이 표준은 전 세계의 전자 회사에서 채택했습니다. 바운더리 스캔은 현재 JTAG과 거의 동의어이지만 JTAG은 이러한 제조 애플리케이션 이외의 필수 용도로 사용됩니다.
Debugging
Although JTAG's early applications targeted board level testing, the JTAG standard was designed to assist with device, board, and system testing, diagnosis, and fault isolation. Today JTAG is used as the primary means of accessing sub-blocks of integrated circuits, making it an essential mechanism for debugging embedded systems which may not have any other debug-capable communications channel.[citation needed] On most systems, JTAG-based debugging is available from the very first instruction after CPU reset, letting it assist with development of early boot software which runs before anything is set up. An in-circuit emulator (or, more correctly, a "JTAG adapter") uses JTAG as the transport mechanism to access on-chip debug modules inside the target CPU. Those modules let software developers debug the software of an embedded system directly at the machine instruction level when needed, or (more typically) in terms of high level language source code.
JTAG의 초기 응용 프로그램은 보드 레벨 테스트를 대상으로했지만 JTAG 표준은 장치, 보드 및 시스템 테스트, 진단 및 오류 격리를 지원하도록 설계되었습니다. 오늘날 JTAG는 집적 회로의 하위 블록에 액세스하는 주요 수단으로 사용되어 다른 디버그 가능 통신 채널이없는 임베디드 시스템을 디버깅하는 데 필수적인 메커니즘입니다. [표창장은 필요 없습니다] 대부분의 시스템에서 JTAG 기반 디버깅 CPU 리셋 후 첫 번째 명령에서 사용할 수 있으므로 아무 것도 설정되기 전에 실행되는 초기 부팅 소프트웨어 개발을 지원합니다. 인서 킷 에뮬레이터 (또는보다 정확하게는 "JTAG 어댑터")는 JTAG를 전송 메커니즘으로 사용하여 대상 CPU 내부의 온칩 디버그 모듈에 액세스합니다. 이러한 모듈을 통해 소프트웨어 개발자는 필요할 때 기계 명령어 레벨에서 또는 직접 (일반적으로) 고급 언어 소스 코드 측면에서 임베디드 시스템의 소프트웨어를 직접 디버깅 할 수 있습니다.
System software debug support is for many software developers the main reason to be interested in JTAG. Many silicon architectures such as PowerPC, MIPS, ARM, x86 built an entire software debug, instruction tracing, and data tracing infrastructure around the basic JTAG protocol. Frequently individual silicon vendors however only implement parts of these extensions. Some examples are ARM CoreSight and Nexus as well as Intel's BTS (Branch Trace Storage), LBR (Last Branch Record), and IPT (Intel Processor Trace) implementations. There are many other such silicon vendor-specific extensions that may not be documented except under NDA. The adoption of the JTAG standard helped move JTAG-centric debugging environments away from early processor-specific designs. Processors can normally be halted, single stepped, or let run freely. One can set code breakpoints, both for code in RAM (often using a special machine instruction) and in ROM/flash. Data breakpoints are often available, as is bulk data download to RAM. Most designs have “halt mode debugging”, but some allow debuggers to access registers and data buses without needing to halt the core being debugged. Some toolchains can use ARM Embedded Trace Macrocell (ETM) modules, or equivalent implementations in other architectures to trigger debugger (or tracing) activity on complex hardware events, like a logic analyzer programmed to ignore the first seven accesses to a register from one particular subroutine.
시스템 소프트웨어 디버그 지원은 많은 소프트웨어 개발자들에게 JTAG에 관심을 갖는 주된 이유입니다. PowerPC, MIPS, ARM, x86과 같은 많은 실리콘 아키텍처는 기본 JTAG 프로토콜을 중심으로 전체 소프트웨어 디버그, 명령 추적 및 데이터 추적 인프라를 구축했습니다. 그러나 종종 개별 실리콘 벤더는 이러한 확장 기능의 일부만 구현합니다. ARM CoreSight 및 Nexus는 물론 Intel의 BTS (Branch Trace Storage), LBR (Last Branch Record) 및 IPT (Intel Processor Trace) 구현을 예로들 수 있습니다. NDA를 제외하고는 문서화되지 않은 실리콘 벤더 관련 확장이 많이 있습니다. JTAG 표준을 채택함으로써 JTAG 중심의 디버깅 환경을 초기 프로세서 별 설계에서 벗어나게되었습니다. 프로세서는 일반적으로 정지되거나, 단일 단계로 실행되거나, 자유롭게 실행될 수 있습니다. RAM 코드 (종종 특수 기계 명령어 사용)와 ROM / 플래시 모두에 대해 코드 중단 점을 설정할 수 있습니다. 대량 데이터를 RAM에 다운로드 할 때처럼 데이터 중단 점을 사용할 수 있습니다. 대부분의 설계는 "정지 모드 디버깅"을 가지고 있지만, 일부는 디버거가 디버깅중인 코어를 정지시키지 않고도 레지스터와 데이터 버스에 액세스 할 수 있도록 허용합니다. 일부 툴체인은 ETM (ARM Embedded Trace Macrocell) 모듈 또는 다른 아키텍처의 동등한 구현을 사용하여 하나의 특정 서브 루틴에서 레지스터에 대한 처음 7 개의 액세스를 무시하도록 프로그래밍 된 로직 분석기와 같이 복잡한 하드웨어 이벤트에서 디버거 (또는 추적) 활동을 트리거 할 수 있습니다 .
Sometimes FPGA developers also use JTAG to develop debugging tools.[5] The same JTAG techniques used to debug software running inside a CPU can help debug other digital design blocks inside an FPGA. For example, custom JTAG instructions can be provided to allow reading registers built from arbitrary sets of signals inside the FPGA, providing visibility for behaviors which are invisible to boundary scan operations. Similarly, writing such registers could provide controllability which is not otherwise available.
때때로 FPGA 개발자는 JTAG을 사용하여 디버깅 도구를 개발합니다. CPU 내부에서 실행되는 소프트웨어를 디버깅하는 데 사용되는 것과 동일한 JTAG 기술을 사용하면 FPGA 내의 다른 디지털 설계 블록을 디버깅하는 데 도움이 될 수 있습니다. 예를 들어, 사용자 정의 JTAG 명령어를 제공하여 FPGA 내부의 임의의 신호 세트로 작성된 레지스터를 읽을 수 있으므로 바운더리 스캔 작업에서 볼 수없는 동작을 볼 수 있습니다. 유사하게, 그러한 레지스터를 작성하는 것은 다르게 이용 가능하지 않은 제어 가능성을 제공 할 수있다.
Storing firmware
JTAG allows device programmer hardware to transfer data into internal non-volatile device memory (e.g. CPLDs). Some device programmers serve a double purpose for programming as well as debugging the device. In the case of FPGAs, volatile memory devices can also be programmed via the JTAG port, normally during development work. In addition, internal monitoring capabilities (temperature, voltage and current) may be accessible via the JTAG port.
JTAG는 디바이스 프로그래머 하드웨어가 내부의 비 휘발성 디바이스 메모리 (예 : CPLD)로 데이터를 전송할 수있게한다. 일부 디바이스 프로그래머는 디바이스를 디버깅하는 것뿐만 아니라 프로그래밍을위한 이중 목적을 제공합니다. FPGA의 경우, 일반적으로 개발 작업 중에 JTAG 포트를 통해 휘발성 메모리 장치를 프로그래밍 할 수 있습니다. 또한 내부 모니터링 기능 (온도, 전압 및 전류)은 JTAG 포트를 통해 액세스 할 수 있습니다.
JTAG programmers are also used to write software and data into flash memory. This is usually done using data bus access like the CPU would use, and is sometimes actually handled by a CPU, but in other cases memory chips have JTAG interfaces themselves. Some modern debug architectures provide internal and external bus master access without needing to halt and take over a CPU. In the worst case, it is usually possible to drive external bus signals using the boundary scan facility.
JTAG 프로그래머는 소프트웨어와 데이터를 플래시 메모리에 기록하는데도 사용됩니다. 이것은 일반적으로 CPU가 사용하는 것처럼 데이터 버스 액세스를 사용하여 수행되며 때로는 실제로 CPU에서 처리되지만 다른 경우에는 메모리 칩 자체에서 JTAG 인터페이스를 사용합니다. 일부 최신 디버그 아키텍처는 CPU를 중단하고 CPU를 인계하지 않고도 내부 및 외부 버스 마스터 액세스를 제공합니다. 최악의 경우 바운더리 스캔 기능을 사용하여 외부 버스 신호를 구동 할 수 있습니다.
As a practical matter, when developing an embedded system, emulating the instruction store is the fastest way to implement the "debug cycle" (edit, compile, download, test, and debug).[citation needed] This is because the in-circuit emulator simulating an instruction store can be updated very quickly from the development host via, say, USB. Using a serial UART port and bootloader to upload firmware to Flash makes this debug cycle quite slow and possibly expensive in terms of tools; installing firmware into Flash (or SRAM instead of Flash) via JTAG is an intermediate solution between these extremes.
실제로 임베디드 시스템을 개발할 때 인스트럭션 저장소를 에뮬레이션하는 것이 "디버그 사이클"(편집, 컴파일, 다운로드, 테스트 및 디버그)을 구현하는 가장 빠른 방법입니다. [표창장은 필요 없습니다] 인스트럭션 스토어를 시뮬레이트하는 에뮬레이터는 USB를 통해 개발 호스트에서 매우 빠르게 업데이트 될 수 있습니다. 펌웨어를 플래시에 업로드하기 위해 직렬 UART 포트와 부트 로더를 사용하면이 디버그주기가 상당히 느리고 도구 측면에서 비용이 많이 들게됩니다. JTAG을 통해 플래시 (또는 플래시 대신 SRAM)에 펌웨어를 설치하는 것은 이러한 극단적 인 해결책의 중간 단계입니다.
Boundary scan testing
JTAG boundary scan technology provides access to many logic signals of a complex integrated circuit, including the device pins. The signals are represented in the boundary scan register (BSR) accessible via the TAP. This permits testing as well as controlling the states of the signals for testing and debugging. Therefore, both software and hardware (manufacturing) faults may be located and an operating device may be monitored.
JTAG 바운더리 스캔 기술은 디바이스 핀을 포함한 복잡한 집적 회로의 많은 로직 신호에 대한 액세스를 제공한다. 신호는 TAP를 통해 액세스 할 수있는 바운더리 스캔 레지스터 (BSR)에 표시됩니다. 이것은 테스트와 디버깅을 위해 신호의 상태를 제어 할뿐만 아니라 테스트를 허용합니다. 따라서 소프트웨어 및 하드웨어 (제조) 오류가있을 수 있으며 운영 장치를 모니터링 할 수 있습니다.
When combined with built-in self-test (BIST), the JTAG scan chain enables a low overhead, embedded solution to testing an IC for certain static faults (shorts, opens, and logic errors). The scan chain mechanism does not generally help diagnose or test for timing, temperature or other dynamic operational errors that may occur. Test cases are often provided in standardized formats such as SVF, or its binary sibling XSVF, and used in production tests. The ability to perform such testing on finished boards is an essential part of Design For Test in today's products, increasing the number of faults that can be found before products ship to customers.
BIST (Built-in Self-Test)와 결합하면 JTAG 스캔 체인은 특정 정적 결함 (단락, 개방 및 논리 오류)에 대해 IC를 테스트하는 오버 헤드가 적은 임베디드 솔루션을 가능하게합니다. 스캔 체인 메커니즘은 일반적으로 발생할 수있는 타이밍, 온도 또는 기타 동적 작동 오류를 진단하거나 테스트하는 데 도움이되지 않습니다. 테스트 사례는 SVF 또는 이진 형제 XSVF와 같은 표준화 된 형식으로 제공되며 프로덕션 테스트에 사용됩니다. 완성 된 보드에서 이러한 테스트를 수행하는 기능은 오늘날의 제품에서 Design For Test의 필수적인 부분으로, 제품이 고객에게 출시되기 전에 발견 할 수있는 결함 수를 증가시킵니다.
Electrical characteristics
A JTAG interface is a special interface added to a chip. Depending on the version of JTAG, two, four, or five pins are added. The four and five pin interfaces are designed so that multiple chips on a board can have their JTAG lines daisy-chained together if specific conditions are met.[6] The two pin interface is designed so that multiple chips can be connected in a star topology. In either case a test probe need only connect to a single "JTAG port" to have access to all chips on a circuit board.
JTAG 인터페이스는 칩에 추가 된 특별한 인터페이스입니다. JTAG의 버전에 따라 2 개, 4 개 또는 5 개의 핀이 추가됩니다. 4 핀 및 5 핀 인터페이스는 특정 조건이 충족 될 경우 보드상의 여러 칩이 JTAG 라인을 데이지 체인 방식으로 연결할 수 있도록 설계되었습니다. 두 개의 핀 인터페이스는 다중 칩이 스타 토폴로지로 연결될 수 있도록 설계되었습니다. 두 경우 모두 테스트 프로브는 회로 기판의 모든 칩에 액세스 할 수 있도록 단일 "JTAG 포트"에만 연결하면됩니다.
Daisy-chained JTAG (IEEE 1149.1)
The connector pins are
TDI (Test Data In)
TDO (Test Data Out)
TCK (Test Clock)
TMS (Test Mode Select)
TRST (Test Reset) optional.
Test reset signal is not shown in the image.
The TRST pin is an optional active-low reset to the test logic - usually asynchronous, but sometimes synchronous, depending on the chip. If the pin is not available, the test logic can be reset by switching to the reset state synchronously, using TCK and TMS. Note that resetting test logic doesn't necessarily imply resetting anything else. There are generally some processor-specific JTAG operations which can reset all or part of the chip being debugged.
TRST 핀은 테스트 로직에 대한 선택적 액티브 로우 리셋이다. 일반적으로 칩에 따라 비동기이지만 때로는 동기식이다. 핀을 사용할 수없는 경우 TCK 및 TMS를 사용하여 리셋 상태로 동기식으로 전환하여 테스트 로직을 리셋 할 수 있습니다. 테스트 로직을 리셋한다고해서 반드시 다른 것을 리셋하는 것은 아닙니다. 일반적으로 디버깅중인 칩의 전부 또는 일부를 재설정 할 수있는 일부 프로세서 별 JTAG 작업이 있습니다.
Since only one data line is available, the protocol is serial. The clock input is at the TCK pin. One bit of data is transferred in from TDI, and out to TDO per TCK rising clock edge. Different instructions can be loaded. Instructions for typical ICs might read the chip ID, sample input pins, drive (or float) output pins, manipulate chip functions, or bypass (pipe TDI to TDO to logically shorten chains of multiple chips).
하나의 데이터 회선 만 사용할 수 있으므로 프로토콜은 직렬입니다. 클록 입력은 TCK 핀에있다. 1 비트의 데이터가 TDI에서 전송되고 TCK 상승 클록 에지 당 TDO로 전송됩니다. 다른 지침을로드 할 수 있습니다. 일반적인 IC에 대한 지침은 칩 ID, 샘플 입력 핀, 드라이브 (또는 부동) 출력 핀, 칩 기능 조작 또는 바이 패스 (여러 칩의 체인을 논리적으로 단축하기 위해 TDI에서 TDO로 파이프)를 읽을 수 있습니다.
As with any clocked signal, data presented to TDI must be valid for some chip-specific Setup time before and Hold time after the relevant (here, rising) clock edge. TDO data is valid for some chip-specific time after the falling edge of TCK.
클록 신호와 마찬가지로, TDI에 제공되는 데이터는 관련 클록 에지 이후의 특정 칩 설정 시간 및 홀드 시간에 유효해야합니다. TDO 데이터는 TCK의 하강 에지 이후에 특정 칩 특정 시간 동안 유효합니다.
The maximum operating frequency of TCK varies depending on all chips in the chain (the lowest speed must be used), but it is typically 10-100 MHz (100-10 ns per bit). Also TCK frequencies depend on board layout and JTAG adapter capabilities and state. One chip might have a 40 MHz JTAG clock, but only if it is using a 200 MHz clock for non-JTAG operations; and it might need to use a much slower clock when it is in a low power mode. Accordingly, some JTAG adapters have adaptive clocking using an RTCK (Return TCK) signal. Faster TCK frequencies are most useful when JTAG is used to transfer lots of data, such as when storing a program executable into flash memory.
TCK의 최대 작동 주파수는 체인의 모든 칩에 따라 다르지만 (최저 속도를 사용해야 함) 일반적으로 10-100MHz (비트 당 100-10ns)입니다. 또한 TCK 주파수는 보드 레이아웃과 JTAG 어댑터 기능 및 상태에 따라 달라집니다. 하나의 칩은 40MHz JTAG 클록을 가질 수 있지만 비 JTAG 동작을 위해 200MHz 클럭을 사용하는 경우에만 해당된다. 저전력 모드 일 때 훨씬 느린 클록을 사용해야 할 수도 있습니다. 따라서 일부 JTAG 어댑터에는 RTCK (Return TCK) 신호를 사용하는 적응 형 클럭킹이 있습니다. 빠른 TCK 주파수는 프로그램 실행 파일을 플래시 메모리에 저장할 때와 같이 JTAG을 사용하여 많은 양의 데이터를 전송할 때 가장 유용합니다.
Clocking changes on TMS steps through a standardized JTAG state machine. The JTAG state machine can reset, access an instruction register, or access data selected by the instruction register.
표준화 된 JTAG 상태 머신을 통해 TMS 단계의 클럭 변경. JTAG 상태 머신은 리셋하거나, 명령 레지스터에 액세스하거나, 명령 레지스터에 의해 선택된 데이터에 액세스 할 수있다.
JTAG platforms often add signals to the handful defined by the IEEE 1149.1 specification. A System Reset (SRST) signal is quite common, letting debuggers reset the whole system, not just the parts with JTAG support. Sometimes there are event signals used to trigger activity by the host or by the device being monitored through JTAG; or, perhaps, additional control lines.
JTAG 플랫폼은 종종 IEEE 1149.1 사양에 정의 된 소수에 신호를 추가합니다. 시스템 재설정 (SRST) 신호는 JTAG을 지원하는 부품뿐만 아니라 전체 시스템을 재설정하는 디버거를 허용하는 매우 일반적인 신호입니다. 때로는 JTAG를 통해 모니터링되는 장치 또는 호스트에 의해 활동을 트리거하는 데 사용되는 이벤트 신호가 있습니다. 또는 아마도 추가 제어 라인이 필요합니다.
Even though few consumer products provide an explicit JTAG port connector, the connections are often available on the printed circuit board as a remnant from development prototyping and/or production. When exploited, these connections often provide the most viable means for reverse engineering.
일부 소비자 제품이 명시적인 JTAG 포트 커넥터를 제공하더라도 개발 프로토 타입 및 / 또는 생산의 나머지 부분으로 인쇄 회로 기판에서 종종 연결을 사용할 수 있습니다. 악용 될 때 이러한 연결은 종종 리버스 엔지니어링을위한 가장 실용적인 수단을 제공합니다.
피드 구독하기:
글 (Atom)