another_one 0 1 сентября, 2022 Опубликовано 1 сентября, 2022 · Жалоба Здравствуйте! Выскакивает ошибка TLB refill, и так как программа исполняется в ОЗУ нужно конкретно указывать стек и и хип Подскажите пожалуйста как правильно это сделать Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 1 сентября, 2022 Опубликовано 1 сентября, 2022 · Жалоба define region NearData = [from 0x0000 to 0x07FF]; ... define block CSTACK with size = 256 {}; define block HEAP with size = 0 {}; ... place at end of NearData { block CSTACK }; place in NearData { block HEAP, ...}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 2 сентября, 2022 Опубликовано 2 сентября, 2022 · Жалоба что-то этот синтаксис не узнаю Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 2 сентября, 2022 Опубликовано 2 сентября, 2022 · Жалоба Может стоило указать для какого компилятора/линкера? Тогда и будет синтаксис узнаваем. Это конфигурационный файл линкера IAR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 2 сентября, 2022 Опубликовано 2 сентября, 2022 · Жалоба mips-mti-elf 2017.10-08 mips-mti-elf-gcc.exe (Codescape GNU Tools 2017.10-08 for MIPS MTI Bare Metal) 6.3.0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 2 сентября, 2022 Опубликовано 2 сентября, 2022 · Жалоба Открываете линкерскрипт и смотрите название секции стека. Допустим, это будет .reserved_for_stack. Цитата .reserved_for_stack (NOLOAD) : { . = ALIGN(4); PROVIDE(__reserved_for_stack_start__ = .); KEEP(*(.reserved_for_stack)) . = ALIGN(4); PROVIDE(__reserved_for_stack_end__ = .); } > SRAM Создаёте в этой секции массив. Линкер будет обязан выделить под него место. static uint8_t _stack[1024] __attribute__((used, section(".reserved_for_stack"), aligned(8))); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба спасибо, но я не совсем понял как объявить сами границы, то есть __reserved_for_stack_start__ и __reserved_for_stack_end__ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба Зачем вам указывать границы? Задаёте размер, остальное дело линкера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба Согласен, сделаю тогда по размерам и стек из конца перенесу сразу после bss Но так как у меня исполняемая программа также крутиться в рам мне нужно дать линкеру разграничивать bss. stack, heap после 64 КB от начала рам Туда как раз хотел поместить исполняемую программу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба При таких скромных ресурсах ОЗУ, полезно обходиться вообще без heap-ов.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба 23 minutes ago, jcxz said: При таких скромных ресурсах ОЗУ, полезно обходиться вообще без heap-ов.... FreeRTOS... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба 14 минут назад, another_one сказал: FreeRTOS... и...? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба 20 minutes ago, jcxz said: и...? heap2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба Куча в стартапе/скрипте линкера не имеет никакого отношения к куче FreeRTOS. Куча FreeRTOS - это обычный массив static u8, объявленный где-то в heap_x.c, не более. У себя в проектах всегда стандартную кучу библиотеки окружения Си устанавливаю в 0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
another_one 0 5 сентября, 2022 Опубликовано 5 сентября, 2022 · Жалоба куча имеет отношение в выделении памяти Таскам и системным вызовам ртос гдето надо размещатся, а в случае ограниченной памяти лучше это делать через управление от самой ОС Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться