Home  |   ¹æ¸í·Ï 2022-05-28 (Åä) 
Untitled Document
  S e a r c h
M e n u
ÇÁ·Î±×·¥
°³¹ßÀÚ·á
°íÀüÀ½¾Ç½Ç
´ëû¸¶·ç
ÁýÁÖÀÎ
ºñ¸Á·Ï
°¶·¯¸®
  B o a r d
°Ô½ÃÆÇ
Untitled Document
°³¹ßÀÚ·á Software / Hardware °³¹ß °ü·Ã Á¤º¸

STMicroelectronics ARM Cortex-M3 STM32F103

STM32F103

32ºñÆ®ÀÇ ¼º´ÉÀ» 8ºñÆ® °¡°Ý¿¡ Á¦°øÇÏ´Â ARM ÄÚ¾î ¸¶ÀÌÅ©·ÎÄÁÆ®·Ñ·¯ÀÌ´Ù. ($2 ~ $4 ´ë·Î AVR °ú À¯»çÇÑ °¡°Ý WOW!!)

Ư¡

  • ÃֽŠARM 32ºñÆ® Cortex-M3 CPU ÄÚ¾î·Î ARM7 Thumb ´ëºñ 30% °í¼Ó ¹× ÀúÀü·ÂÈ­
  • 72 MHz (90 DMIPS) ¼Óµµ
  • 128KB Ç÷¡½Ã, 20KB SRAM
  • 12ºñÆ® AD ÄÁ¹öÅÍ x 2
  • 7 ä³Î DMA ÄÁÆ®·Ñ·¯
  • 3 UART, USB, 2 SPI
  • ¹èÅ͸® Àü¿ø °ø±ÞÀÌ °¡´ÉÇÑ RTC ºí·°, ¿Âµµ ¼¾¼­ ³»Àå
  • 36, 48, 64, 100 ÇÉ ÆÐŰÁö - ÆÐ¹Ð¸®°£ pin-to-pin ¹× ¼ÒÇÁÆ®¿þ¾î ȣȯ

GCC ÄÄÆÄÀÏ·¯

WinARM ¿¡¼­´Â ¾ÆÁ÷ Áö¿øÇÏÁö ¾ÊÀ¸¸ç (*Å×½ºÆ® ¹öÀüÀ» WinARM 20080331 ºÎÅÍ Á¦°øÇϰí ÀÖ´Ù.) Cortex-M3°¡ Áö¿øµÇ´Â GCC toolchainÀº ¾Æ·¡ ÁÖ¼Ò¿¡¼­ ´Ù¿î·ÎµåÇÒ ¼ö ÀÖ´Ù.
http://www.codesourcery.com/gnu_toolchains/arm/download.html (EABI¸¦ ´Ù¿î¹Þ´Â´Ù.)
(2012.1.22 È®ÀÎÇØ º¸´Ï MentorGraphics·Î º¯°æ µÊ)
(https://sourcery.mentor.com/public/gnu_toolchain/arm-none-eabi/arm-2012.03-56-arm-none-eabi.exe)
¶Ç´Â,
Ride7: GCC°¡ ³»ÀåµÈ IDE

* Codesourcery Lite´Â Cortex-M4ÀÇ Çϵå¿þ¾î FPU¸¦ Áö¿øÇÏÁö ¾Ê´Â´Ù°í ÇÔ
https://launchpad.net/gcc-arm-embedded: Çϵå¿þ¾î FPU Áö¿ø

Cortex-m GCC°³¹ß ȯ°æ
http://cafe.naver.com/ArticleRead.nhn?clubid=17219286&articleid=6809
http://gandalf.arubi.uni-kl.de/avr_projects/arm_projects/index_cortex.html

STM32F40x ±âº» ÇÁ·ÎÁ§Æ® (GCC, IAR, KEIL)
http://cafe.naver.com/ArticleRead.nhn?clubid=10750951&articleid=200077

³»Àå ºÎÆ®·Î´õ

ºÎÆ®¿É¼Ç ÇÉÀÌ BOOT0 = high, BOOT1 = low À¸·Î ¼³Á¤µÈ °æ¿ì¿¡´Â ½Ã½ºÅÛ ·Ò¿¡ ³»ÀåµÈ ºÎÆ®·Î´õ°¡ ½ÇÇàµÇ°í UART1 Æ÷Æ®¸¦ ÅëÇØ »ç¿ëÀÚ ÇÁ·Î±×·¥À» ´Ù¿î·Îµå ÇÒ ¼ö ÀÖ´Ù. BOOT0 = low ÀÎ °æ¿ì¿¡´Â »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÈ´Ù.

STM32flash bootloader

´Ù¾çÇÑ ±â´ÉÀ» °¡Áø ºÎÆ®·Î´õÀÔ´Ï´Ù.
1. »ç¿ëÀÚ ÇÁ·Î±×·¥¿¡ ÅëÇÕµÉ ¼öµµ ÀÖ°í,
2. ROM ¿µ¿ªÀÇ ¾ÕºÎºÐ¿¡ Á¸ÀçÇϸ鼭 »ç¿ëÀÚ ÇÁ·Î±×·¥À» ´Ù¿î·Îµå ÇÒ ¼öµµ ÀÖÀ¸¸ç,
3. RAM ¿µ¿ª¿¡ »ç¿ëÀÚ ÇÁ·Î±×·¥À» ´Ù¿î·ÎµåÇÏ¿© Å×½ºÆ® ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
4. ÀÚµ¿À¸·Î ÀûÀýÇÑ ½ÃÀÛ À§Ä¡·Î »ç¿ëÀÚ ÇÁ·Î±×·¥À» ´Ù¿î·Îµå ÇÕ´Ï´Ù.
5. High-density device (2K ÆäÀÌÁö »çÀÌÁî)µµ Áö¿øÇÕ´Ï´Ù.
GCC¸¦ »ç¿ëÇØ °³¹ßµÇ¾ú½À´Ï´Ù.

stm32flash.zip ver2.0 (344KB)

STM32 downloader

STÀÇ Flash Loader¸¦ ´ëüÇÒ ¼ö ÀÖ´Â ½Ã¸®¾ó ´Ù¿î·Îµå ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
°³¹ß½Ã »Ó¸¸¾Æ´Ï¶ó ¾ç»ê½Ã¿¡µµ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Ä«¿îÅÍ ±â´É µîÀÌ ÀÖ½À´Ï´Ù..

STM32Downloader.zip ver1.1 (92.6KB)

JTAG µð¹ö±ë

Àú·ÅÇÑ FT2232¸¦ »ç¿ëÇÑ º¸µå¿Í openocd¸¦ ÀÌ¿ëÇÑ µð¹ö±ë ¹æ¹ýµµ ÀÖÁö¸¸
J-Link¸¦ »ç¿ëÇϰí ÀÖ´Ù¸é J-Link Debugger ÇÁ·Î±×·¥À» »ç¿ëÇÏ¸é º¸´Ù Æí¸®ÇÕ´Ï´Ù.
https://www.segger.com/j-link-debugger.html

JTAG ¾ç»êÁö¿ø ÀÚµ¿È­ ÇÁ·Î±×·¥ (JlinkAuto)

JTAGÀ» ÀÌ¿ëÇÏ´Â °ÍÀÌ °¡Àå ºü¸£°Ô ÇÁ·Î±×·¥À» ´Ù¿î·Îµå ÇÒ ¼ö ÀÖ½À´Ï´Ù.
J-Link¸¦ »ç¿ë½Ã ´Ù¿î·Îµå¸¦ ÀÚµ¿È­ ÇØ ÁÖ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù.
http://cafe.naver.com/carroty/230465

HardFaultException ó¸®

HardFaultException Àº ÁÖ·Î stack overflow ³ª À߸øµÈ ¸Þ¸ð¸® ¾ï¼¼½º½Ã ¹ß»ýÇÕ´Ï´Ù.
½ºÅà ũ±â¸¦ ´Ã·ÁÁ൵ HardFaultExceptionÀÌ °è¼Ó ¹ß»ýÇÏ¸é ¾îµò°¡ ¸Þ¸ð¸®ÂÊ ¹®Á¦°¡ ¹ß»ýÇÑ °ÍÀε¥, À§Ä¡¸¦ ¾Ë±â ¾î·Æ½À´Ï´Ù.
¿¡·¯³­ À§Ä¡¸¦ ãÀ»¶§ ´ÙÀ½°ú °°Àº ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù.
The Definitive Guide to the ARM Cortex-M3 ¶ó´Â Ã¥¿¡ ³ª¿Â ó¸® ¹æ¹ýÀÔ´Ï´Ù.

// GCC ÄÄÆÄÀÏ·¯ÀÇ °æ¿ì
void HardFaultException(void)
{
 asm (//"IMPORT hard_fault_handler_c \n"
      "TST LR, #4 \n"
      "ITE EQ \n"
      "MRSEQ R0, MSP \n"
      "MRSNE R0, PSP \n"
      "B hard_fault_handler_c");
}

// IAR ÄÄÆÄÀÏ·¯ÀÇ °æ¿ì
void HardFault_Handler(void)
{
      __ASM("TST LR, #4");
      __ASM("ITE EQ");
      __ASM("MRSEQ R0, MSP");
      __ASM("MRSNE R0, PSP");
      __ASM("B hard_fault_handler_c");
}

// hard fault handler in C, with stack frame location as input parameter
void hard_fault_handler_c(unsigned int * hardfault_args)
{
	printf("\r\n\r\n[Hard fault handler]\r\n");
	printf("R0 = %x\r\n", (unsigned long) hardfault_args[0]);
	printf("R1 = %x\r\n", (unsigned long) hardfault_args[1]);
	printf("R2 = %x\r\n", (unsigned long) hardfault_args[2]);
	printf("R3 = %x\r\n", (unsigned long) hardfault_args[3]);
	printf("R12 = %x\r\n", (unsigned long) hardfault_args[4]);
	printf("LR [R14] = %x  subroutine call return address\r\n", (unsigned long) hardfault_args[5]);
	printf("PC [R15] = %x  program counter\r\n", (unsigned long) hardfault_args[6]);
	printf("PSR = %x\r\n", (unsigned long) hardfault_args[7]);
	printf("BFAR = %x\r\n", (*((volatile unsigned long *)(0xE000ED38))));
	printf("CFSR = %x\r\n", (*((volatile unsigned long *)(0xE000ED28))));
	printf("HFSR = %x\r\n", (*((volatile unsigned long *)(0xE000ED2C))));
	printf("DFSR = %x\r\n", (*((volatile unsigned long *)(0xE000ED30))));
	printf("AFSR = %x\r\n", (*((volatile unsigned long *)(0xE000ED3C))));
	printf("SCB_SHCSR = %x\r\n", SCB->SHCSR);

	NVIC_SystemReset();
}
HardFaultException ÀÌ ¹ß»ýÇÑ °æ¿ì ½ºÅÿ¡¼­ ÀÌÀü PC°ªÀ» Ãâ·ÂÇØ ÁÖ´Â °ÍÀÔ´Ï´Ù.
½ºÅñîÁö ±úÁø °æ¿ì´Â ¼Ò¿ëÀÌ ¾ø°ÚÁö¸¸¿ä.
PC°ªÀÌ PC = 8005C18 ¶ó°í ³ª¿Â´Ù¸é *.lss ÆÄÀÏ¿¡¼­ ÀÌ ÁÖ¼Ò¸¦ ã¾Æº¸¸é ¾î´À ºÎºÐÀ» ½ÇÇàÇÏ´Ù°¡ ¿¡·¯°¡ ¹ß»ýÇÑ °ÍÀÎÁö ¾Ë ¼ö ÀÖ½À´Ï´Ù.

´Ù¸¥ Cortex-M3 Á¦Ç°

NXP, TI (Luminary Micro), Toshiba, Atmel µî ¿¡¼­µµ Á¦Ç°ÀÌ ³ª¿À°Å³ª ³ª¿Ã ¿¹Á¤ÀÔ´Ï´Ù.
ÇöÀç´Â Cortex-M4 ÄÚ¾îÀÎ STM32F4 ½Ã¸®Áî±îÁö ³ª¿Í¼­ 168MHz ±îÁö °¡´ÉÇϸç NXP¿¡¼­´Â 180MHz, TI¿¡¼­´Â 200MHz Á¦Ç°ÀÌ ³ª¿À°í ÀÖ½À´Ï´Ù.
486 66MHz, ÆæÆ¼¾ö 200MHz ½ÃÀýÀ» »ý°¢Çϸé MCU°¡ 200MHz·Î µ¹¾Æ °£´Ù´Ï ²Þ¸¸ °°Àº ¼Óµµ ÀÔ´Ï´Ù.

¸µÅ©

STM32 Application Note
STM32 User Forum
STM32 Primer Community
[PDF] Cortex-M3 Technical Reference Manual
RT-Thread RTOS
CooCox CoOS RTOS

2008-01-07 [Á¶È¸: 32767]

ÀÌÀü±Û: ±¹»ê 32ºñÆ® MCU ¿¡À̵ðĨ½º TG471
´ÙÀ½±Û: 8ºñÆ®·ÎÀÇ ±Íȯ(?) 100MIPS Ãʰí¼Ó C8051F130

¸ñ·Ïº¸±â
 
À̸§ ¾ÏÈ£ Ȩ
(½ºÆÔ ¹æÁö¿ë)¿À´ÃÀÇ ³¯Â¥¸¦ ¼ýÀÚ¸¸À¸·Î ÀÔ·ÂÇϼ¼¿ä.(¿¹: 12)

ºñ¹Ð¹øÈ£
¸ñ·Ïº¸±â
 
Copyright ¨Ï 2022 All Rights Reserved.