215 / 0 / 2
Регистрация: 26.02.2020
Сообщений: 241
1

Определение размера прошивки

20.09.2021, 11:43. Показов 1000. Ответов 19
Метки нет (Все метки)

Добрый день! Подскажите пожалуйста, юзаю Stm8, почитав статьи и форумы для опр. размера прошивки открываю файл с расширением map, также скачал программу stvp (в стм32 есть похожая, не помню как называется), так вот размер почему-то разный. Я уже полностью удалил весь код и файле map вижу

start 00008080 end 00008080 length 0 segment .const
start 00008083 end 000080d6 length 83 segment .text (я так понимаю 83 байта)
start 00004000 end 00004000 length 0 segment .eeprom
start 00000000 end 00000000 length 0 segment .bsct
.....................
а в stvp ничего абсолютно не меняется, с адреса 8000 до А006 все занято, в чем прикол?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.09.2021, 11:43
Ответы с готовыми решениями:

Определение версии прошивки на samsung-scx-3400
Всем привет, заправили сегодня картридж на принтер SAMSUNG SCX-3400,его теперь необходимо прошить,...

Определение размера
Здравствуйте. Нужно считать из файла сообщение, в котором заранее известны что будут пробелы....

Определение размера файла
Здравствуйте, я учусь на программиста, нужна помощь в программе. #include <fstream.h> #include...

Определение размера Edit
Добрый день! Подскажите пожалуйста, как можно узнать размер и положение контрола (эдита к примеру)?

Определение размера выборки
Помогите, пожалуйста, решить практическую задачу. Основная задача - рассчитать индекс цен для...

19
3350 / 1928 / 368
Регистрация: 09.09.2017
Сообщений: 7,812
20.09.2021, 12:34 2
Так посмотрите в эльфе чем оно занято. С stm8 не работал, но могу предположить, что там таблица векторов прерываний и инициализация памяти.
Для компьютерных эльфов команда objdump -D -S prog.elf > prog.txt
Для stm32 arm-none-eabi-objdump -D -S prog.elf > prog.txt
Ну или как там в вашем случае кросскомпилятор называется.
0
1927 / 1242 / 124
Регистрация: 04.01.2010
Сообщений: 4,450
20.09.2021, 14:32 3
Цитата Сообщение от mixa88 Посмотреть сообщение
юзаю Stm8
тут надо понимать, какой Вы используете компилятор. Некоторые из них откровенно прячут некоторые компоненты стартапа. Соответственно, Вам их просто "не показывают". Например, KEIL нигде не анонсирует инициализацию памяти. Если я правильно помню - даже при дебаге вы перескакиваете этот кусок кода - данные просто волшебным образом появляются в RAM. Подобные фишки могут быть и в IAR (я раньше его юзад для STM8)
0
215 / 0 / 2
Регистрация: 26.02.2020
Сообщений: 241
20.09.2021, 19:58  [ТС] 4
Вот скрин этой программы. Я насчитал около 8кБ, с пустым проектом. Не думаю, что это могут быть все 8кБ векторов прерываний. Причем, если я компилирую проект с кодом (не пустой), то всё равно эти ячейки заполнены также. Я думал, что может программа что-то не читает, загрузил в ЕЕПРОМ данные, нажал на вкладку с еепром и там отобразилось верное значение в первой ячейке, т.е. программа работает.
0
Миниатюры
Определение размера прошивки  
1927 / 1242 / 124
Регистрация: 04.01.2010
Сообщений: 4,450
21.09.2021, 07:34 5
Цитата Сообщение от mixa88 Посмотреть сообщение
Вот скрин этой программы
я ее использовал только для прошивки, если надо HEX закинуть, а не код - код програмился через дебаггер в IAR. Но как показывает инфа - у stvp есть и компилятор даже. Скорее всего занятое пространство - это стартап контроллера, что бы это ни значило.
0
215 / 0 / 2
Регистрация: 26.02.2020
Сообщений: 241
21.09.2021, 20:44  [ТС] 6
Цитата Сообщение от Voland_ Посмотреть сообщение
пространство - это стартап контроллера
А почему же когда я записываю прошивку большего размера, содержимое ячеек не меняется и дальше не заполняется? Т.е. картинка остается та же
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
21.09.2021, 21:01 7
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Для stm32 arm-none-eabi-objdump -D -S prog.elf > prog.txt
У топикстартера stm8. Для этой серии gnu тулчейн sdcc называется.
0
1927 / 1242 / 124
Регистрация: 04.01.2010
Сообщений: 4,450
22.09.2021, 07:37 8
Цитата Сообщение от mixa88 Посмотреть сообщение
А почему же когда я записываю прошивку большего размера, содержимое ячеек не меняется и дальше не заполняется?
Вопрос, думаю, совсем не относится к изначальному? И тем не менее - скорее всего, в памяти МК при попытке записи ничего не меняется. Что-то Вы не так делаете, значит.
0
3350 / 1928 / 368
Регистрация: 09.09.2017
Сообщений: 7,812
22.09.2021, 11:41 9
Цитата Сообщение от paskal Посмотреть сообщение
У топикстартера stm8. Для этой серии gnu тулчейн sdcc называется.
А что, для stm8 дизассемблера не существует? Ему же всего лишь нужно посмотреть команды, которые компилятор добавил в прошивку.
0
215 / 0 / 2
Регистрация: 26.02.2020
Сообщений: 241
22.09.2021, 13:05  [ТС] 10
Цитата Сообщение от Voland_ Посмотреть сообщение
И тем не менее - скорее всего, в памяти МК при попытке записи ничего не меняется. Что-то Вы не так делаете, значит.
Ну так я записывал разные прошивки и МК работает по программе и все в порядке.
А для чтения памяти я в STVP нажимаю на одну и ту же кнопку, меняется только вкладка Flash или eeprom, в том и другом случае программа считывает ячейки, только в eeprom все понятно, т.к. я записываю то, что мне нужно, а в случае флэша ничего не меняется. Может очередной баг от ST??

Добавлено через 6 минут
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А что, для stm8 дизассемблера не существует? Ему же всего лишь нужно посмотреть команды, которые компилятор добавил в прошивку.
В командах ассемблера я не особо разбираюсь (хотя STVP показывает их в режиме отладки), но неужели этих команд будет на 8кБ при пустом проекте (в т.ч. без подкючения библиотек )??
0
1927 / 1242 / 124
Регистрация: 04.01.2010
Сообщений: 4,450
22.09.2021, 13:07 11
Цитата Сообщение от mixa88 Посмотреть сообщение
а в случае флэша ничего не меняется. Может очередной баг от ST??
вполне вероятно. Они ведь тоже люди ). А может, у вас не тот где-то чип выбран в настройках? Ведь тогда память будет хз как читаться, т.к. карта памяти (memory map) может быть ошибочной. В итоге, вы будете читать совсем не из тех адресов, что нужно.

Добавлено через 2 минуты
Цитата Сообщение от mixa88 Посмотреть сообщение
но неужели этих команд будет на 8кБ при пустом проекте (в т.ч. без подкючения библиотек )??
попробуйте использовать "full erase" при следующей прошивке, если такой пункт имеется. Ведь тула может не обновлять весь контент памяти, а менять только фрагмент, по размеру использованной памяти в прошивке
0
3350 / 1928 / 368
Регистрация: 09.09.2017
Сообщений: 7,812
22.09.2021, 16:30 12
Цитата Сообщение от mixa88 Посмотреть сообщение
В командах ассемблера я не особо разбираюсь (хотя STVP показывает их в режиме отладки), но неужели этих команд будет на 8кБ при пустом проекте (в т.ч. без подкючения библиотек )??
Ассемблер штука простая, достаточно положить рядом справочник по командам чтобы начать разбираться. 8 кБ для пустой прошивки многовато, конечно. Даже в stm32 начальный код на Си занимает не более килобайта. Но тут можно долго и бесполезно гадать, а можно взять и посмотреть.
Цитата Сообщение от mixa88 Посмотреть сообщение
А для чтения памяти я в STVP
Так вы откуда прошивку берете, из компилятора или из камня? Если из компилятора, то никаких фокусов с переиспользованием быть не должно. А из камня вообще смысла брать не вижу
0
215 / 0 / 2
Регистрация: 26.02.2020
Сообщений: 241
22.09.2021, 20:31  [ТС] 13
Цитата Сообщение от Voland_ Посмотреть сообщение
у вас не тот где-то чип выбран в настройках?
Уже 100 раз перепроверял.
Цитата Сообщение от Voland_ Посмотреть сообщение
попробуйте использовать "full erase" при следующей прошивке
есть такой пункт, но он не работает, причем не только у меня, еще находил подобные случаи, ответ так и не нашел нигде
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
из камня
программа читает камень

Добавлено через 24 минуты
Вроде разобрался. Путем тыкания, перешел во вкладку option byte, насколько я понял, в ней можно конфигурировать некоторые биты, так вот в самом начале можно выбрать Read out protection off (так стояло изначально)/Read out protection on.
Я щелкнул второй вариант и программа перестала читать память (походу какая-то защита от чтения), потом вернул назад и уже тогда программа прочитала правильно и вот так щелкая туда-сюда этот бит показывает все как есть.....
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
23.09.2021, 01:09 14
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
А что, для stm8 дизассемблера не существует?
objdump дизассемблирует. Но надо это делать родным дизассемблером естественно. Таковым sdcc является.
0
1927 / 1242 / 124
Регистрация: 04.01.2010
Сообщений: 4,450
23.09.2021, 07:37 15
Цитата Сообщение от paskal Посмотреть сообщение
objdump
это относится к gcc. Но его, вроде бы, нет для STM8. По крайней мере официально.
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
23.09.2021, 21:22 16
Цитата Сообщение от Voland_ Посмотреть сообщение
это относится к gcc. Но его, вроде бы, нет для STM8.
Есть, я еще пример мигающий светодиодом для STM8 discovery когда то писал.
0
1927 / 1242 / 124
Регистрация: 04.01.2010
Сообщений: 4,450
24.09.2021, 10:02 17
Цитата Сообщение от paskal Посмотреть сообщение
Есть,
ссылка осталась, может?

PS: с GCC вопросы отпали бы сразу. А тут чужая тула. Лезть в документацию ни ТС, никто из нас не хочет. Соответственно, вопросов больше чем ответов ).
0
215 / 0 / 2
Регистрация: 26.02.2020
Сообщений: 241
25.09.2021, 18:53  [ТС] 18
Вот еще давно такой вопрос возник, в stm32 самый нижний уровень это cmsis, а в stm8?
C
1
2
3
4
5
GPIOB->CR1 |= 0x3F;
GPIOC->DDR |= 0xFE;
GPIOC->CR1 |= 0xFE;
FLASH->DUKR = FLASH_RASS_KEY2; /* Warning: keys are reversed on data memory !!! */
FLASH->DUKR = FLASH_RASS_KEY1
0
Тутошний я
2079 / 1145 / 211
Регистрация: 03.11.2009
Сообщений: 4,052
Записей в блоге: 2
26.09.2021, 00:40 19

Не по теме:

Цитата Сообщение от mixa88 Посмотреть сообщение
в stm32 самый нижний уровень это cmsis
ещё ассемблер есть :)



Добавлено через 7 минут
про адреса прерываний выше писали.
а не будет так, что разные программы просто начинают запись с разных адресов?

Добавлено через 5 минут
ну да, Voland_, про это уже написал.
0
460 / 309 / 29
Регистрация: 15.08.2011
Сообщений: 968
27.09.2021, 21:17 20
Цитата Сообщение от Voland_ Посмотреть сообщение
ссылка осталась, может?
SDCC это
http://sdcc.sourceforge.net/
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.09.2021, 21:17

Определение размера файла
Нужно определить размер файла, который в данный момент скачивается. Но почему-то у меня всегда...

Определение размера изображения
pitajus opredelit razmer photo. vot code: strUpload='C:Inetpubwwwrootsexymailimagesprofiles ' ...

Определение размера JTable
Есть такой диалог: public class SaveDialog extends JDialog { private final JTable...

Определение размера файла
Здравствуйте! Имеем NodeJS + Windows10 + WebStorm :) Мне нужно делать запись в файл, каждый...

Определение размера pipe
Здравствуйте! Помогите пожалуйста, нужен программа для определения размера pipe для операционной...

Определение размера масива
Возможно задача прроста, но я уже запутался. Есть масив: $mas elem(1) elem(2) elem(3) ... elem(n)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.