inflearn logo
강의

講義

知識共有

電動キックボードで学ぶ組み込み実践プロジェクト

Stm32f767 メモリマップを分析してみる

74. 포인터 크기는얼마인가요 ?

13

namkyungnyoon1500

投稿した質問数 26

0

메모리맵에서 code, data, txt는 각각 어떻게 분배되어 저장되나요 ? (ZI, ZW, RO/RW)

그리고 함수 포인터를 사용한다면 메모리상의 몇번지에 저장되어 있고, 그 크기가 얼마인지 어떻게 알수 있을까요 ? 만약 uint8_t라는 포인터 변수를 선언하면, *p+1은 주소 번지 1의 증가를 의미 하나요 ?

임베디드 stm32 hardware motordriver artwork

回答 2

0

namkyungnyoon1500

자세한 답변 감사합니다.

0

insid2embedded

네, 이 부분은 메모리 구조를 같이 보면 이해하기 쉽습니다.

STM32 기준으로 일반적인 배치는 다음과 같습니다. 프로그램 코드인 .text와 상수 데이터인 .rodata는 보통 Flash 영역에 저장되며 RO(Read Only) 영역에 해당합니다. 초기값이 있는 전역/정적 변수인 .data는 초기값 자체는 Flash에 저장되어 있다가 부팅할 때 RAM으로 복사되어 RW(Read/Write) 영역에서 사용됩니다. 초기값이 없거나 0으로 초기화되는 전역/정적 변수는 .bss, 즉 ZI(Zero Initialized) 영역으로 RAM에 배치됩니다. Stack과 Heap 역시 RAM을 사용합니다. 정확한 주소와 크기는 Linker Script와 .map 파일을 보면 확인할 수 있습니다.

함수 포인터의 경우 void (*fp)(void)처럼 선언하면, fp에는 함수 자체가 저장되는 것이 아니라 함수의 주소가 저장됩니다. STM32F767처럼 32-bit Cortex-M MCU에서는 일반적으로 포인터 크기가 4Byte입니다. sizeof(fp)로 직접 확인할 수도 있습니다.

함수 코드는 보통 Flash의 .text 영역에 있고, 함수 포인터 변수 자체가 어디에 저장되는지는 선언 위치에 따라 달라집니다. 지역변수라면 주로 Stack, 전역/정적 변수라면 .data 또는 .bss에 위치합니다.

그리고 uint8_t *p에서 p + 1은 말씀하신 것처럼 주소가 1Byte 증가합니다. 포인터 연산은 가리키는 자료형의 크기만큼 이동하기 때문입니다. 따라서 uint32_t *p라면 p + 1 시 주소가 4Byte 증가합니다.

79. int main(void)선언 없이 어떻게 동작하나요 ?

0

3

0

79. int main(void)선언 없이 어떻게 동작하나요 ?

0

4

0

73. 왜 hex를 사용하나요 ?

0

11

2

71. 40초쯤에 소리가 안납니다.

0

7

1

70. 강의에 사용되는 보드는 어떤것인가요 ?

0

10

2

00. 인버터 회로만 보고 소비전력을 예측 가능하나요 ?

0

16

1

58강, 유니폴라, 바이폴라 방식중 바이폴라가 대세라고 보면 되나요 ?

0

16

2

57강. 모터인데 왜 전압제어를 하나요 ?

0

13

2

57강. PWM은 sine을 만들어 내는 걸로 이해 하면 되나요 ?

0

14

2

49강. 제어이론의 구체적 다이어그램 설명 요청드립니다.

0

17

2

55강. dead time을 고려하면, 원래의 original신호와는 달라지지 않나요 ?

0

10

2

스위칭 주파수 설정

0

29

2

P6KE47CA 이 부품에 대해서 궁금합니다.

0

41

1

교육용 보드 쓰로틀 질문입니다.

0

54

3

모스펫 기생 커패시터에 대한 내용 누락

0

48

1

강의 자료 어디 있을까요?

0

44

2

STM32 보드 연결 방법 없이 바로 코딩으로 넘어가서 당황스러운데

0

57

3

대역폭 강의 없어요.

0

48

2

섹션 3,4. 6,7강의듣고 섹션5나중에 들어도 괜찮은건가요?

0

48

2

아직 stm32F767 보드 없는데.. 펌웨어...

0

61

2

BOM 이 혹시 제공되나요?

0

52

2

36V 배터리가 아닌 24V 전원

0

58

2

타이머 실습

0

62

2

bldc모터에서의 홀센서 위치

0

67

2