Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Окно компиляции CodeVision
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
AndreyVN
Всем привет!

Внизу приведен фрагмент содержимого окна, которое выдает CodeVision после компилляции программы.
Непонятна строка "Hardware Stack area" это что за стек такой???
Судя по размеру, это остаток ОЗУ, но почему его так странно назвали?

Цитата
1129 line(s) compiled
No errors
No warnings

Bit variables size: 0 byte(s)

Data Stack area: 60h to AFh
Data Stack size: 80 byte(s)
Estimated Data Stack usage: 43 byte(s)

Global variables area: B0h to 315h
Global variables size: 614 byte(s)

Hardware Stack area: 316h to 45Fh
Hardware Stack size: 330 byte(s)

EEPROM usage: 0 byte(s) (0,0% of EEPROM)
Program size: 1915 words (46,8% of FLASH)
viael
Цитата(AndreyVN @ Nov 28 2006, 09:34) *
Всем привет!

Внизу приведен фрагмент содержимого окна, которое выдает CodeVision после компилляции программы.
Непонятна строка "Hardware Stack area" это что за стек такой???
Судя по размеру, это остаток ОЗУ, но почему его так странно назвали?

Цитата
1129 line(s) compiled
No errors
No warnings

Bit variables size: 0 byte(s)

Data Stack area: 60h to AFh
Data Stack size: 80 byte(s)
Estimated Data Stack usage: 43 byte(s)

Global variables area: B0h to 315h
Global variables size: 614 byte(s)

Hardware Stack area: 316h to 45Fh
Hardware Stack size: 330 byte(s)

EEPROM usage: 0 byte(s) (0,0% of EEPROM)
Program size: 1915 words (46,8% of FLASH)



У АВР есть т.н. Hardware Stack в котором сохраняются адреса возвратов, и переменные помещаемые туда командой PUSH. Вершиину стека адресует SP, который необходимо проинициализировать при старте программы. Т.о. адресное пространство между верхушкой памяти(обычно CV инициализирует SP=SRAM_END) и последней глабальной переменной и есть Hardware Stack area.
А вобще в хелпе CV данный момент подробно расписан-SRAM Memory Organization.

The Data Stack area is used to dynamically store local variables, passing function parameters and saving registers R0, R1, R15, R22, R23, R24, R25, R26, R27, R30, R31 and SREG during interrupt routine servicing.
The Data Stack Pointer is implemented using the Y register.

The Hardware Stack area is used for storing the functions return addresses.
The SP register is used as a stack pointer and is initialized at start-up with value of of the _HEAP_START_ -1 address.
During the program execution the Hardware Stack grows downwards to the Global Variables area.
AndreyVN
Цитата
The Data Stack area is used to dynamically store local variables, passing function parameters and saving registers R0, R1, R15, R22, R23, R24, R25, R26, R27, R30, R31 and SREG during interrupt routine servicing.
The Data Stack Pointer is implemented using the Y register.

The Hardware Stack area is used for storing the functions return addresses.
The SP register is used as a stack pointer and is initialized at start-up with value of of the _HEAP_START_ -1 address.
During the program execution the Hardware Stack grows downwards to the Global Variables area.


Ну накрутили... Это что-ж получается, два стек-пойнтера надо? Один для Data stck, другой для Hardware stack? И два типа "Пушов" и "Попов" тоже. Короче, пошел читать Manual внимательнее, издеваются над программерами blink.gif .
_Bill
Цитата(AndreyVN @ Nov 28 2006, 14:09) *
Ну накрутили... Это что-ж получается, два стек-пойнтера надо? Один для Data stck, другой для Hardware stack? И два типа "Пушов" и "Попов" тоже. Короче, пошел читать Manual внимательнее, издеваются над программерами blink.gif .

Вся проблема в том, что у AVR нет стековой адресации и, стало быть, доступ к данным в стеке затруднен. Использование Y-регистра (не X или Z, заметьте) выглядит очень логично. Опять же разделение стековой памяти на стек возвратов и стек данных дает определенную свободу программисту и облегчает выяснение причин неккоректности работы программ, особенно в тех случаях, когда стековая память используется интенсивно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.