Использует ли загрузчик SRAM?
Я хочу использовать всю SRAM Arduino, написав код на ассемблере. Но использует ли загрузчик некоторое количество SRAM во время работы программы, и если ответ да, приведет ли изменение этих данных к сбою или данные, хранящиеся там, будут повреждены? Благодарим за обращение.
@markoj, 👍0
1 ответ
Лучший ответ:
Вы не указали, какой тип Arduino вы используете. Мой ответ для основанные на AVR.
Загрузчик использует оперативную память во время работы. Однако, как только это управляет вашей программой, микроконтроллер полностью ваш: вы могут свободно использовать всю оперативную память.
Я не проверял с помощью optiboot, но возможно, что загрузчик оставляет некоторые вещи в стеке. Среда выполнения C avr-libc позаботится из этого: одна из первых вещей, которые он делает, это сбрасывает указатель стека. Если вы скомпонуете avr-libc, вы обнаружите, что стек пуст. если ты нет, я предлагаю вам установить указатель стека на RAMEND в начале вашу программу, на всякий случай.
- Является ли использование malloc() и free() действительно плохой идеей для Arduino?
- Разные и самые быстрые способы вычисления синусов и косинусов в Arduino
- Как использовать ассемблер в ардуино
- Есть ли способ подключить оперативную память компьютера к Arduino?
- Сборка AtMega328p из транзисторов
- Нужна помощь в программировании ардуино на ассемблере
- Как создать задержки на языке ассемблера AVR
- Последовательная печать из флэш-памяти (F() macro, PROGMEM, sprintf_P, SPTR)
Я ожидал, что это не так, но видимо optiboot, поскольку он был скомпилирован для UNO, оставляет 2 байта в стеке, вводя код приложения с SP = 0x8FD. Это не имеет значения по причине, которую вы указали, но я думаю, это забавные бесполезные мелочи. знак равно, @timemage
Нужны ли вам эти два байта, зависит от детали архитектуры: записывается ли указатель стека, затем уменьшается или наоборот на процессоре avr?, @PMF
@PMF: в AVR указатель стека декрементируется при записи в стек., @Edgar Bonet