Skip to content

Commit

Permalink
ЛР13. Обновление скрипта компоновщика
Browse files Browse the repository at this point in the history
Ранее, чтобы секция данных начиналась с адресов, кратных размеру
памяти данных (поскольку при обращении к ячейкам памяти данных мы
отбрасываем старшие биты адреса) в скрипте компоновщика размер секции
.text приравнивался размеру памяти данных, что сбивает с толку.

Вместо этого добавлен тернарный оператор для выбора подходящего
стартового адреса.

Кроме того, добавлена проверка того, что размер памяти инструкций и
данных является степенью двойки.
  • Loading branch information
HepoH3 committed Jan 23, 2024
1 parent 48aaeab commit ab21e22
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions Labs/13. Programming/linker_script.ld
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,18 @@ ENTRY(_start) /* мы сообщаем компоно
находится у метки "start"
*/

_text_size = 0x4000; /* Размер памяти инстр.: 16KiB */
_data_base_addr = _text_size; /* Стартовый адрес секции данных */
_text_size = 0x1000; /* Размер памяти инстр.: 4KiB */
_data_size = 0x4000; /* Размер памяти данных: 16KiB */

ASSERT(!(_text_size & (_text_size-1)), /* Проверка что размеры памяти */
"Instr mem size is not power of 2") /* являются степенью двойки */
ASSERT(!(_data_size & (_data_size-1)),
"Data mem size is not power of 2")

_data_base_addr = _text_size >= _data_size ? /* Стартовый адрес секции данных */
_text_size : _data_size; /* указан как больший из размеров*/
/* секции инструкций/данных */

_data_end = _data_base_addr + _data_size;

_trap_stack_size = 2560; /* Размер стека обработчика перехватов.
Expand Down

0 comments on commit ab21e22

Please sign in to comment.