'STM32F103C6T6'에 해당되는 글 2건

  1. 2009.12.24 STM32 Memory Map 1
  2. 2009.10.05 STM32F103C6T6
2009. 12. 24. 14:16

STM32 Memory Map



STM32는 총 4G의 메모리 공간을 갖고, 각각은 512 MB로 된 8개의 블록으로 이루어져 있다.

다음은 4G의 메모리 영역이 각각 어떻게 사용되고 있는지를 보여준다.

코드 영역(0x00000000 ~ 0x1FFFFFFF)은 I-Code bus와 D-Code bus를 사용해 명령어 패치와 데이터 접근을 수행한다.
코드 영역은 프로그램 코드를 실행할 수 있고, 데이터를 저장 할 수 도 있는 영역으로 사용된다. 이 영역에서 캐시 속성은 WT(Write Through)인 쓰기 버퍼 영역이다. 이 곳은 on-chip Flahs memory 가 사용되고 있으며, 현재 본인이 사용하고 있는 보드에는 32KBytes 크기의 Flash memory가 장착되어 있다.
일반적으로 프로그램 코드는  이 코드 영역, SRAM 영역, 또는 외부 RAM(External RAM)영역에 위치할 수 있는데, 일반적으로 코드 영역에 위치시키면 두 개의 분리된 버스 인터페이스(I-Code, D-Code)를 통해 명령어 페치와 데이터 접근을 동시에 수행할 수 있어 좋다고 한다.

SRAM 메모리 영역(0x20000000 ~ 0x3FFFFFFF) 내부 SRAM과 연결하기 위해 존재한다.
이 영역은 쓰기 버퍼 영역이고, 캐시 속성은 WB-WA(Write Back, Write Allocated)이다. 프로그램 코드는 코드 영역과 마찬가지로 SRAM 영역에서도 실행 될 수 있다. 하지만, 코드 영역에서 실행하는 것보다는 느리다고 한다. 그래서, 프로그램 실행코드는 코드 영역에 위치시키고 실행시키기를 권고(?)한다.
이 영역은 on-chip RAM을 사용하기 위한 공간이고 현재 사용하고 있는 보드에는 10 KBytes SRAM이 장착되어 있다. 이 영역은 System bus(시스템 버스)를 통해 접근을 하게 된다. 이 영역에는 32 MB의 Bit Band Alias 영역이 존재한다. Bit Banding에 관한 내용은 여기를 참고하면 될 듯 하다.

주변장치(Peripheral) 영역(0x40000000 ~ 0x5FFFFFFF)은 시스템에 장착되어 있는 주변장치(RTC, I2C, ADC, GPIO, USART 등) 에 대해 접근을 하는 용도로 사용된다. ARM의 경우, 이 영역에 데이터를 쓰고 읽는 방법을 통해 장치를 제어할 수 있다. 예를 들어 LED를 켤 때에는 LED 장치가 물려 있는 GPIO의 핀에 1 혹은 0의 값을 쓰는 것을 통해 LDE를 끄고 켤 수 있다. 이 영역 또한 SRAM 메모리 영역과 마찬가지로 32 MB 의 Bit Band Alias 영역이 존재한다. 주변정치 영역은 System bus(시스템 버스)를 통해 접근을 하게 된다.
이 영역은 캐시 불가능 영역이고, 명령어 코드를 실행할 수 없다(Excute Never).

외부 RAM(External RAM) 영역(0x60000000 ~0x9FFFFFFF)은 외부 RAM을 위해 할당된 1G의 메모리 영역이다.
이 영역 중(0x60000000 ~ 0x7FFFFFFF)은 이 영역은 on-chip 또는 off-chip 메모리를 위한 공간이다. 캐시가능 영역(WB-WA)이고, 코드를 실행할 수 있다.
나머지 영역(0x80000000 ~ 0x9FFFFFFF)은 on-chip 또는 off-chip 메모리를 위한 공간이다. 캐시가능 영역(WT) 이고, 이 영역에서는 코드를 실행할 수 있다.

외부 장치(External Device) 영역(0xA0000000 ~ 0xDFFFFFFF)은 외부 장치를 위해 할당된 1G의 메모리 공간이다. 이 영역은 순차적이면서 버퍼 기능이 없는 접근을 요구하는 외부 장치들과 공유 메모리를 위해 만들어졌다. 코드 실행 불가한 메모리 영역이다.

마지막 0.5 GB의 메모리 공간(0xE0000000 ~ 0xFFFFFFFF)은 시스템 레벨 컴포넌트들과 내부의 주변장치 버스들, 외부의 주변장치 버스, 그리고 벤더의 특화된 시스템 주변장치들을 위한 메모리 공간이다.
이 영역은 캐시/버퍼 불가능한 영역이고, 전용 주변장치 버스 메모리 범위하에서 순차적으로 접근이 이루어 진다.





'혼자서 놀기... > STM32' 카테고리의 다른 글

STM32 보드에 펌웨어 퓨징  (0) 2009.12.26
STM32 개발 환경  (0) 2009.12.26
Cortex-M3(STM32) System Architecture  (0) 2009.10.06
STM32F103C6T6  (0) 2009.10.05
Cortex M3 - Bit Banding  (0) 2009.09.29
2009. 10. 5. 11:37

STM32F103C6T6



현재 가지고 있는 STM32 보드에 대해서 알아보았다.
푸우님의 블로그를 참고하여 이것 저것을 하다 보니깐.. 흐름이 그 비슷하게 가고 있는 것 같다.

현재 사용하고 있는 STM32 칩의 ID는 STM32F103C6T6 이다.
이 ID가 무엇을 의미하는지 살펴보자.
From Datasheet STM32F103x6(15060)

현재 살펴볼 부분은 위 그림 중 붉은색 박스로 된 부분일 것이다. STM32F103은 동일하게 적용되는 부분이고, 나머지 부분들은 칩의 기능/성능에 따라 변경 되는 부분이다.

C는 48 핀을 의미하고,
6는 내부 Flash Memory 가 32 Kbyte라는 것을 의미하고,
T는 칩의 Package type이 LQFP라는 것을 의미하고,
6은 온도 범위의 정도를 나타낸다. 산업용으로 사용되는 칩이고, 6의 경우 -40 ~ 85 도 에서 정확한 동작유무 보장이 된다는 것을 의미하는 듯 하다.

다른 형식으로 표현된 그림이다.
Flash, SRAM, 가용한 각 device의 개수, CPU frequency ... 등에 대해 알 수 있다.
From Datasheet STM32F103x6(15060)

마지막 그림..
현재 사용하고자 하는 칩이 Low-density devices에 속하는 칩임을 알 수 있다.
From Datasheet STM32F103x6(15060)

이 문서는 일단 사용하는 칩이 어떤 녀석인지 알고자 하는 목적으로 작성했다.

'혼자서 놀기... > STM32' 카테고리의 다른 글

STM32 개발 환경  (0) 2009.12.26
STM32 Memory Map  (1) 2009.12.24
Cortex-M3(STM32) System Architecture  (0) 2009.10.06
Cortex M3 - Bit Banding  (0) 2009.09.29
STM32F103C6  (0) 2009.09.23