C
Language
C Language Advanced
Lection 20
Содержание
• STM32F407VG Discovery
• Карта памяти микроконтроллера
• Распределение памяти приложения
• Text
• Stack
• Heap
• Data section (.bss)
23.05.2019 0:36 Advanced 2
STM32F407 Discovery
• Core: ARM® 32-bit Cortex®-
M4 CPU with FPU
• 1 Mbyte of Flash memory
• 192+4 Kbytes of SRAM
• Up to 17 timers
• Up to 140 I/O ports with
interrupt capability
• 3 × I2C interfaces
• 4 USARTs/2 UARTs
• 3 SPIs (42 Mbits/s)
• 2 × CAN interfaces
3
23.05.2019 0:36 Advanced
Block Diagram 1
23.05.2019 0:36 Advanced 4
Block Diagram 2
23.05.2019 0:36 Advanced 5
Block Diagram 3
23.05.2019 0:36 Advanced 6
Clock configuration
23.05.2019 0:36 Advanced 7
Карта памяти МК
8
23.05.2019 0:36 Advanced
Распределение памяти приложения
; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0x08000000 0x00100000 { ; load region size_region
ER_IROM1 0x08000000 0x00100000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
}
RW_IRAM1 0x20000000 0x00020000 { ; RW data
.ANY (+RW +ZI)
}
}
23.05.2019 0:36 Advanced 9
Распределение памяти приложения
10
23.05.2019 0:36 Advanced
Physical Address Range ….... Real Size
0x2001 FFFF
STACK 0x400
HEAP 0x200
DATA 0x20
0x2000 0000
…....
0x080F FFFF
TEXT 0xc9c
0x0800 0000
…....
TEXT Section
23.05.2019 0:36 Advanced 11
Interrupt Vectors
23.05.2019 0:36 Advanced 12
Startup
23.05.2019 0:36 Advanced 13
23.05.2019 0:36 Advanced 14
Куча (Heap)
Динамическое
распределение памяти —
способ выделения
оперативной памяти для
объектов в программе, при
котором выделение памяти
под объект осуществляется
во время выполнения
программы
23.05.2019 0:36 Advanced 15
Работа с кучей
23.05.2019 0:36 Advanced 16
Function Description
malloc allocates the specified number of bytes
realloc
increases or decreases the size of the specified block of memory, moving it
if necessary
calloc allocates the specified number of bytes and initializes them to zero
free releases the specified block of memory back to the system
Стек (Stack)
Стек —
абстрактный тип данных,
представляющий собой
список элементов,
организованных по
принципу LIFO (last in —
first out, «последним
пришёл — первым
вышел»)
23.05.2019 0:36 Advanced 17
Heap vs Stack
23.05.2019 0:36 Advanced 18
Heap vs Stack
23.05.2019 0:36 Advanced 19
STACK Section
23.05.2019 0:36 Advanced 20
STACK Section
23.05.2019 0:36 Advanced 21
HEAP Section
23.05.2019 0:36 Advanced 22
DATA Section
23.05.2019 0:36 Advanced 23
Questions to discuss
• (Static, auto, register, volatile, extern,
variable visibility area)
• Recursion
• Structures for IPC
(sizeof,
packed, standard types, byte order,
byte stuffing, alligment)
23.05.2019 0:36 Advanced 24

C language lect_20_advanced