Rivas 0 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба Здравствуйте. Обзавелся Stm32H743IITx. Это мой первый МК. В программировании я не ас(школьный уровень), всех терминов не знаю. Пытаюсь программировать в Keil. У Keil, есть особенность(по крайней мере, у меня она есть), он ставит: bss, кучу и стек, друг за другом(в том порядке в котором я написал). Я пытаюсь сделать так, что бы: в начале памяти был bss, за ним куча, а вверху был стек. Так как линкер скрипт, у Keil, не доступен для редактирования и к нему можно подобраться через scatter file, я отредактировал scatter file. Заглянул в map файл и вроде как все получилось, но с моими знаниями по данному вопросу, меня терзают смутные сомнения. И если я сейчас ошибусь в дальнейшем могут быть проблемы и их причину сложно будет отыскать, поэтому прошу взглянуть на все, что я написал и подвергнуть конструктивной критики, что-то посоветовать? Прилагаю scatter и map файлы. Дано: Начало оперативной памяти: 0x24000000 Конец оперативной памяти: 0x24080000 Размер стека: 0x00000400 Размер кучи: 0x00000200 1.sct 1.map Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 2 часа назад, Rivas сказал: Я пытаюсь сделать так, что бы: в начале памяти был bss, за ним куча, а вверху был стек. Зачем? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rivas 0 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 12 минут назад, jcxz сказал: Зачем? bss и так в низу, куча и так после bss, а вот стек... я как понял лучше что бы он был вверху и рос вниз. С помощью MPU, можно установить зону в низу стека и тогда будет проще ловить ошибки переполнения стека. Я делаю для себя удобный шаблон, который будет мне понятен, что бы от него уже двигаться дальше, я не использую библиотеки типа HAL, LL и затактировать МК хочу сам, что бы во всем разобраться.(может это глупо, но другого выхода научиться я не вижу). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 14 минут назад, Rivas сказал: С помощью MPU, можно установить зону в низу стека и тогда будет проще ловить ошибки переполнения стека. Тогда потеряете часть ОЗУ впустую. Если уж что-то ловить через MPU, то тогда стек нужно в самом низу ОЗУ располагать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rivas 0 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 1 минуту назад, jcxz сказал: Тогда потеряете часть ОЗУ впустую. Если уж что-то ловить через MPU, то тогда стек нужно в самом низу ОЗУ располагать. Может и так. Только для того, что бы куда-то ставить стек, нужно уметь править scatter fail, вот я попробовал поправить его и теперь интересуюсь у знающих людей, правильно ли я все сделал? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 37 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба уметь править scatter fail Править сбой\отказ scatter-файла (scatter file) никто не умеет ;-) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rivas 0 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 5 минут назад, Obam сказал: Править сбой\отказ scatter-файла (scatter file) никто не умеет ;-) Я, ни строчки не понял, из того что Вы написали. Мой вопрос был в самом начале темы, жду человека который может ответить на него или подсказать.... Ответы в стиле: " Я очень крутой специалист, и сейчас я расскажу много терминов и вообще, такими мелочами я не занимаюсь, а занимаюсь я серьезными вещами и появляюсь когда всему пи...ец, и тут же все налаживаю", вот такие ответы, как китайский язык. Про сбой\отказ, я вообще нечего не писал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 6 минут назад, Rivas сказал: как китайский язык. Про сбой\отказ, я вообще нечего не писал. Или не выёживайтесь и пишите по-русски раз английского не знаете или воспользуйтесь гугл-переводчиком хотя-бы. Чтоб вздор всякий не писать. Тогда может вас поймут... А про сбой это не вы, а ваша рука видимо сама упорно пишет. По Фрейду просто.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rivas 0 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 1 минуту назад, jcxz сказал: Или не выёживайтесь и пишите по-русски раз английского не знаете или воспользуйтесь гугл-переводчиком хотя-бы. Чтоб вздор всякий не писать. Тогда может вас поймут... Пишу на русскому: "Если Вы, прочитали мой вопрос и не поняли, что там написано, не пишите ответ, не надо отвечать." Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x893 55 20 августа, 2020 Опубликовано 20 августа, 2020 · Жалоба 6 hours ago, Rivas said: проще ловить ошибки переполнения стека Сделайте стек первым (от 20000000) и при переполнении получите HardFault. Я ничего не понял по scatter fail. Похоже русский второй язык. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 21 августа, 2020 Опубликовано 21 августа, 2020 · Жалоба scatter fail -- отказ scatter. А файл scatter -- это scatter file. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 21 августа, 2020 Опубликовано 21 августа, 2020 · Жалоба Вот тут https://m.habr.com/ru/post/425071/ описано то что вам нужно. У меня по этой инструкции все получилось. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rivas 0 21 августа, 2020 Опубликовано 21 августа, 2020 (изменено) · Жалоба 1 час назад, uriy сказал: Вот тут https://m.habr.com/ru/post/425071/ описано то что вам нужно. У меня по этой инструкции все получилось. Да, я уже создавал тему, с вопросом: - "как поместить указатель стека, в другое место?" И Вы, мне скидывали эту ссылку(спасибо Вам за это). Как раз, прочитав эту статью, я дописывал в scatter file дополнительные регионы. И теперь хочу узнать, достиг я чего хотел или нет? Там к вопросу прилагается scatter file и map, может кто из знающих взглянет и ответит. Пока что, появляются специалисты по грамматике...))) 2 часа назад, SII сказал: scatter fail -- отказ scatter. А файл scatter -- это scatter file. Я понял, у меня в вопросе есть грамматическая ошибка, сейчас исправлю. Спасибо. Изменено 21 августа, 2020 пользователем Rivas Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
uriy 5 24 августа, 2020 Опубликовано 24 августа, 2020 · Жалоба Вот из вашего мап файла .bss 0x24000000 Section 96 libspace.o(.bss) HEAP 0x24000060 Section 512 startup_stm32h743xx.o(HEAP) Heap_Mem 0x24000060 Data 512 startup_stm32h743xx.o(HEAP) STACK 0x2407fc00 Section 1024 startup_stm32h743xx.o(STACK) __initial_sp 0x24080000 Data 0 startup_stm32h743xx.o(STACK) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 24 августа, 2020 Опубликовано 24 августа, 2020 · Жалоба Вообще, организация памяти у этого чипа несколько сложнее. Цитата с сайта производителя Цитата Up to 1 Mbyte of RAM: 192 Kbytes of TCM RAM (inc. 64 Kbytes of ITCM RAM + 128 Kbytes of DTCM RAM for time critical routines), Up to 864 Kbytes of user SRAM, and 4 Kbytes of SRAM in Backup domain По хорошему, все эти типы памяти надо описать и использовать по назначению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться