embeded/ARM2012. 3. 23. 10:16
리셋이 안된다고 배째는데
아무튼 TAP 값은 맞으니까 칩 종류를 받아오는 것일테고 -_-
의심이 가는건 nTRST 연결 상태?

  • nSRST bi-directional (open collector)
    This pin serves two purposes. It can be used by the adapter to reset the target board, which is most useful during remote debugging. Furthermore, the adapter is able to detect that the reset is triggered on the target by another event, like pressing the reset button or a watchdog timeout.
  • nTRST from adapter to target
    According to the JTAG standard, the TAP controller is reset to a known state by keeping TMS high for five consecutive TCK cycles. However, some targets have problems with this sequence and thus require a hardware reset, which is marked optional in the IEEE specification. On several chips, like the AT91R40008 used on Ethernut 3, nSRST and nTRST are internally tied together. The disadvantage with this design is, that you can’t trigger a breakpoint immediately after a target hardware reset. If this signal is not used on the target, it is recommended to pull up this line with 10kOhm.
[링크 : http://www.jtagprogrammer.com/jtag-signals/]
2010/06/26 - [embeded/ARM] - ARM JTAG - Wiggler 14pin , 20pin pinout

arm 설명에서는 반드시있을 이유는 없지만, 하는걸 권장한다고 한다.
2012/03/23 - [embeded/ARM] - KEIL MDK(ARM)에 H-JTAG 사용하기

[링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3887.html]
    [링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3894.html] nTRST 
    [링크 : http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3895.html] nSRST

nTRST는 Target ReSeT 인거 같은데
nSRST는 무슨 리셋이려나? 
Posted by 구차니
embeded/ARM2012. 3. 23. 09:50
MDK with Wiggler parallel jtag

Step 1. H-JTAG을 설치하고 메뉴에서 ToolConf 를 실행한다.
           기본값대로 KEIL MDK를 설치했다면 "C:\Keil" 경로를 선택한다.


Step 2. Utilities 와 Debug 탭에서 Target Driver를 H-JTAG 으로 변경한다.



Step 3. H-JTAG를 실행하여 tray에 들어갔는지 확인한다.
          H-JTAG 프로그램을 실행하지 않은 상태라면 아래와 같은 에러가 발생한다.


Step 4. 굽는다.




그런데 회사에서 사용하는 보드가 JTAG 케이블이 잘못 연결되었는지
장치 인식은 되지만 TAP configuration을 확인하라면서 정작 구워지지는 않는다.


[링크 : http://www.hjtag.com/en/upimg/H-JTAG%20USER%20MANUAL%20(EN).rar]
2012/01/27 - [embeded/ARM] - Cortex-M3 LM3S1968 Evaluation board

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

TI LM3S1607 time epoch  (0) 2012.03.27
H-JTAG 에러이유?  (0) 2012.03.23
lm flash example  (0) 2012.03.13
TI LM3S 시리즈 특징 - hibernate module / non-volatile memory  (0) 2012.03.06
arm-linux-gcc 와 arm-elf-gcc의 차이점  (2) 2012.01.16
Posted by 구차니
embeded/ARM2012. 3. 13. 07:47
TI LM 시리즈(?)에서 플래시 EEPROM은 별도로 존재하지 않고
프로그램 영역의 write protect를 해제하고 프로그램이 없는 영역을 임의로
삭제/읽음으로서 EEPROM을 흉내낼수 있다.

읽는 방법은 0x0000 0000 에서 0x0001 FFFF 까지 (lm3s1607 기준 128KB FLASH)
포인터 변수를 이용하거나 직접 번지로 읽으면 된다.
*(0x00000000) 하면 bin 파일의 첫 글자인 0xB0가 보인다.

쓰는건 아직 안해봐서.. 패스?! ㅋㅋ

[링크 : http://irmus.tistory.com/entry/%EB%82%B4%EC%9E%A5-flash-%EB%A9%94%EB%AA%A8%EB%A6%AC]
[링크 : http://mycortex.springnote.com/pages/2110058 ] 
[링크 : http://www.withrobot.com/entry/myCortex-LM8962]
 
---
2012.3.27 추가
char Flash_read(unsigned int *addr, char *data, int len)
{	// addr - sizeof(char) addressing (1 byte width)
		memcpy(	data, addr, len);
}

char Flash_write(unsigned int *addr, char *data, int len)
{	//	addr - sizeof(long) addressing(4 byte width)
		FlashErase((unsigned long)addr);
		FlashProgram((unsigned long*)data, (unsigned long)addr, len);
}

char Flash_unProtect(unsigned int *addr)
{
	return FlashProtectSet((unsigned long)addr, FlashReadWrite);
}

char Flash_Protect(unsigned int *addr)
{
	return FlashProtectSet((unsigned long)addr, FlashReadOnly);
}

char Flash_Erase(unsigned int *addr)
{
	return FlashErase((unsigned long)addr); // & 0x0000FC00
}


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

H-JTAG 에러이유?  (0) 2012.03.23
KEIL MDK(ARM)에 H-JTAG 사용하기  (0) 2012.03.23
TI LM3S 시리즈 특징 - hibernate module / non-volatile memory  (0) 2012.03.06
arm-linux-gcc 와 arm-elf-gcc의 차이점  (2) 2012.01.16
winARM  (0) 2012.01.12
Posted by 구차니
embeded/ARM2012. 3. 6. 09:55
ATMEL AVR을 쓰면 EEPROM이 있어서 무언가 저장할 공간이 있었는데
TI LM3S 시리즈를 보니 스펙상으로는 EEPROM이 존재를 하지 않는다.
편법일수도 있고, 가능할진 모르겠지만, 256byte의 NV memory가 존재하니 대신 사용해도 될듯?

10 Hibernation Module
10.1 Introduction

The Hibernate API provides a set of functions for using the Hibernation module on the Stellaris
microcontroller. The Hibernation module allows the software application to cause power to be
removed from the microcontroller, and then be powered on later based on specific time or a signal
on the external WAKE pin. The API provides functions to configure wake conditions, manage
interrupts, read status, save and restore program state information, and request hibernation mode.
Some of the features of the Hibernation module are:

32-bit real time clock
Trim register for fine tuning the RTC rate
Two RTC match registers for generating RTC events
External WAKE pin to initiate a wake-up
Low-battery detection
64 32-bit words of non-volatile memory
Programmable interrupts for hibernation events
This driver is contained in driverlib/hibernate.c, with driverlib/hibernate.h containing the API definitions for use by applications.  


아무튼 NVRAM을 사용하기 위한 함수는 다음과 같다. 
void HibernateDataGet (unsigned long ∗pulData, unsigned long ulCount)
void HibernateDataSet (unsigned long ∗pulData, unsigned long ulCount) 

---
2012.3.7 추가


hibernate module이 없는 모델도 있으니 주의!

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

KEIL MDK(ARM)에 H-JTAG 사용하기  (0) 2012.03.23
lm flash example  (0) 2012.03.13
arm-linux-gcc 와 arm-elf-gcc의 차이점  (2) 2012.01.16
winARM  (0) 2012.01.12
ARM infocenter  (0) 2011.12.10
Posted by 구차니
embeded/ARM2012. 1. 16. 10:33
http://www.gnuarm.com/  에서 다운로드 받은 gcc toolchain의 압축을 풀어보니 arm-elf-gcc 라고 나오는데..
일반적으로 사용하던 툴체인이 arm-linux-gcc 여서  검색을 해보니 아래와 같은 차이점이 있다고 한다.

 The difference is that the linked output from the arm-elf-xxx toolchain is a linux loadable binary, while arm-linux-xxx outputs a kernel object (ko), which is a blob with its own linkage format (for modules), or the main kernel itself, which doesn't need a packaging format. I.e., for user space you want the final dynamically linked object to be an ELF executable, library, or shared object. For kernel space, you want the final object (kernel or module) to be in the linux-arm-kernel linkage format.

You'll notice that the intermediate objects (.o files) of both targets are probably all ELF, since that is what the toolchain is expecting.
 
[링크 : http://stackoverflow.com/questions/390099/arm-linux-gcc-vs-arm-elf-gcc]  

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

lm flash example  (0) 2012.03.13
TI LM3S 시리즈 특징 - hibernate module / non-volatile memory  (0) 2012.03.06
winARM  (0) 2012.01.12
ARM infocenter  (0) 2011.12.10
ARM NEON  (0) 2011.08.04
Posted by 구차니
embeded/ARM2012. 1. 12. 19:44
winavr 처럼 윈도우용으로 만든(포팅한) avr gcc 이다.

[링크 : http://pinkwink.kr/28]
    [링크 : http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/#winarm]
[링크 : http://www.gnuarm.com/]

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

TI LM3S 시리즈 특징 - hibernate module / non-volatile memory  (0) 2012.03.06
arm-linux-gcc 와 arm-elf-gcc의 차이점  (2) 2012.01.16
ARM infocenter  (0) 2011.12.10
ARM NEON  (0) 2011.08.04
arm용 linux 패치  (0) 2011.06.20
Posted by 구차니
embeded/ARM2011. 12. 10. 21:15
ARM 에서 부동소수점 지원하나 검색하다가 걸려나온
의외의 득템이다! 싶은 링크

[링크 : http://infocenter.arm.com/help/index.jsp]

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

arm-linux-gcc 와 arm-elf-gcc의 차이점  (2) 2012.01.16
winARM  (0) 2012.01.12
ARM NEON  (0) 2011.08.04
arm용 linux 패치  (0) 2011.06.20
ARM JTAG / Wiggler + H-JTAG  (0) 2010.07.16
Posted by 구차니
embeded/ARM2011. 8. 4. 16:57
NEON은 ARM 코어를 위한 SIMD 엔진이다.
ffmpeg 등이 ARM용 NEON을 지원하는듯 하다.

The ARM® NEON™ general-purpose SIMD engine efficiently processes current and future multimedia formats, enhancing the user experience.

NEON technology can accelerate multimedia and signal processing algorithms such as video encode/decode, 2D/3D graphics, gaming, audio and speech processing, image processing, telephony, and sound synthesis by at least 3x the performance of ARMv5 and at least 2x the performance of ARMv6 SIMD.

NEON technology is cleanly architected and works seamlessly with its own independent pipeline and register file.

NEON technology is a 128 bit SIMD (Single Instruction, Multiple Data) architecture extension for the ARM Cortex™-A series processors, designed to provide flexible and powerful acceleration for consumer multimedia applications, delivering a significantly enhanced user experience.  It has 32 registers, 64-bits wide (dual view as 16 registers, 128-bits wide.


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


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

winARM  (0) 2012.01.12
ARM infocenter  (0) 2011.12.10
arm용 linux 패치  (0) 2011.06.20
ARM JTAG / Wiggler + H-JTAG  (0) 2010.07.16
ARM용(암용) 툴체인, 컴파일러 - arm-linux-gcc : tool chain for ARM  (0) 2010.07.03
Posted by 구차니
embeded/ARM2011. 6. 20. 00:13

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

ARM infocenter  (0) 2011.12.10
ARM NEON  (0) 2011.08.04
ARM JTAG / Wiggler + H-JTAG  (0) 2010.07.16
ARM용(암용) 툴체인, 컴파일러 - arm-linux-gcc : tool chain for ARM  (0) 2010.07.03
ARM JTAG 14pin / 20pin 변환하기  (0) 2010.07.01
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 구차니