Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2020-окт-22 06:27

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 17 сообщений ]  На страницу 1 2 »
Автор Сообщение
 Заголовок сообщения: Keil не даёт поставить бряк (breakpoint)
СообщениеДобавлено: 2019-окт-29 09:37 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1526
Откуда: Тула
Давно уже (но редко - пару раз) сталкивался с такой проблемой: в режиме отладки кейл не даёт поставить точку останова на строке в исходном коде .c. Просто нет того серого поля, где отображается метка breakpoint'a. При этом в окне дизассемблера бряк поставить можно и останавливается по ним.
Так же не отображает содержимое переменных в окне watch window.
Наводящее замечание: с этой проблемой можно было бы жить, если бы в дизассемблер был бы подмешан исходный код на Си, но его нет (режим Mixed Mode при этом разумеется включён).
Проблема оказалась в том, что имя выходного файла (Name of Executable) было задано с расширением .hex
Без указания расширения - всё работает как обычно.

Потребность указания расширения выходного .hex файла связана со способом прошивки МК на производстве (прошивка распространяется в формате .hex, прошивается программатором/отладчиком через пустой настроенный проект, запускаемый батником со строкой типа C:\Keil_v5\UV4\UV4.exe -f flash.uvprojx -o Log.txt)

Просто оставляю эту заметочку здесь, на память.

_________________
сочувствующий…


Вернуться к началу
СообщениеДобавлено: 2019-окт-29 13:28 
Не в сети

Зарегистрирован: 2009-сен-21 12:39
Сообщения: 547
prostoRoman писал(а):
Потребность указания расширения выходного .hex файла связана со способом прошивки МК на производстве (прошивка распространяется в формате .hex, прошивается программатором/отладчиком через пустой настроенный проект, запускаемый батником со строкой типа C:\Keil_v5\UV4\UV4.exe -f flash.uvprojx -o Log.txt)
Вы это..., контрольную сумму при таком способе прошивки как в .hex заталкиваете?


Вернуться к началу
СообщениеДобавлено: 2019-окт-29 15:37 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 502
у нас такой проблемы нет.
Все должно решатся на вклюдке OUTPUT (в project options)
галки Debug Information и Browse Information добавляют отладочную информацию в *.axf файл (elf-формат)
галка Create HEX file создает hex
поле Name of executable задет имя файла (к которому приделываются расширения axf, hex, map и прочие)
если вы указываете имя с расширением hex, то KEIL грузит hex (и никакой отладки) - я так думаю
Есть случаи, когда НЕКОТОРЫЕ строки кода где нельзя поставить точку останова - но это уже оптимизатор.
Цитата:
Вы это..., контрольную сумму при таком способе прошивки как в .hex заталкиваете?
в project Options на вкладке USER есть поле "Run User Program After Build/rebuld" внего можно вбить команду (например для запуска cmd-файла) для подсчета контрольной суммы и записи в конечный файл.
Здесь главное определиться - сумму считать нужно для hex-файла или для бинарного образа прошивки.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
СообщениеДобавлено: 2019-окт-29 16:12 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1526
Откуда: Тула
редактор писал(а):
у нас такой проблемы нет.
Все должно решатся на вклюдке OUTPUT (в project options)
галки Debug Information и Browse Information добавляют отладочную информацию в *.axf файл (elf-формат)
галка Create HEX file создает hex
поле Name of executable задет имя файла (к которому приделываются расширения axf, hex, map и прочие)
если вы указываете имя с расширением hex, то KEIL грузит hex (и никакой отладки) - я так думаю
Есть случаи, когда НЕКОТОРЫЕ строки кода где нельзя поставить точку останова - но это уже оптимизатор.
Всё правильно Вы написали, но Кейл не подхватывает .hex файл, если не задать расширение - не находя .axf выдаёт ошибку.
Вложение:
Комментарий к файлу: Load "E:\\arm\\path\\uzel_fw_test\\Objects\\flash.axf"
_____^
*** error 56: cannot open file
Error: Flash Download failed - Could not load file 'E:\arm\path\uzel_fw_test\Objects\flash.axf'
Flash Load finished at 15:51:17
[ attachment ]
2019-10-29_15-51-13.png [ 38.91 КБ | 1930 просмотров ]
редактор писал(а):
Цитата:
Вы это..., контрольную сумму при таком способе прошивки как в .hex заталкиваете?
в project Options на вкладке USER есть поле "Run User Program After Build/rebuld" внего можно вбить команду (например для запуска cmd-файла) для подсчета контрольной суммы и записи в конечный файл.
Здесь главное определиться - сумму считать нужно для hex-файла или для бинарного образа прошивки.
Кроме уже предусмотренного форматом intel hex ничего нет.
Контрольная сумма самого файла .hex хранится на бумажке.
Как можно затолкнуть контрольную сумму в прошивку написано тут viewtopic.php?p=20329. У меня был свой собственный вариант, но не TRUEЪ.

_________________
сочувствующий…


Вернуться к началу
СообщениеДобавлено: 2019-окт-29 16:42 
Не в сети

Зарегистрирован: 2009-сен-21 12:39
Сообщения: 547
Цитата:
в project Options на вкладке USER есть поле "Run User Program After Build/rebuld" внего можно вбить команду (например для запуска cmd-файла) для подсчета контрольной суммы и записи в конечный файл.
Кстати да, вопрос съест ли Кейл пережеванный hex.
Цитата:
Как можно затолкнуть контрольную сумму в прошивку написано тут viewtopic.php?p=20329.
Дык, там два ответа на вопрос и один из них мой :). Что касается варианта от vasili, то ИМХО самовычисление с последующей самозаписью порочно по определению.


Вернуться к началу
СообщениеДобавлено: 2019-окт-29 16:51 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1526
Откуда: Тула
ЧумА писал(а):
Цитата:
в project Options на вкладке USER есть поле "Run User Program After Build/rebuld" внего можно вбить команду (например для запуска cmd-файла) для подсчета контрольной суммы и записи в конечный файл.
Кстати да, вопрос съест ли Кейл пережеванный hex.
Съест, если будет соответствовать inel hex и прошиваемому МК.

_________________
сочувствующий…


Вернуться к началу
СообщениеДобавлено: 2019-окт-30 09:40 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 748
Откуда: г. Санкт-Петербург
ЧумА писал(а):
... Что касается варианта от vasili, то ИМХО самовычисление с последующей самозаписью порочно по определению.
Поясните пожалуйста в чем конкретно по Вашему мнению заключена порочность.


Вернуться к началу
СообщениеДобавлено: 2019-окт-30 13:53 
Не в сети

Зарегистрирован: 2009-сен-21 12:39
Сообщения: 547
Например, Вы залили прошивку и при заливке что-то сбойнуло (весьма маловероятно, но не невозможно). Потом она подсчитала себе сумму (неправильную) и живет с таковой. Конечно, на ПСИ должно всплыть, но ОТК тоже иногда ошибается.


Вернуться к началу
СообщениеДобавлено: 2019-окт-30 15:04 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1526
Откуда: Тула
ЧумА писал(а):
Например, Вы залили прошивку и при заливке что-то сбойнуло (весьма маловероятно, но не невозможно). Потом она подсчитала себе сумму (неправильную) и живет с таковой. Конечно, на ПСИ должно всплыть, но ОТК тоже иногда ошибается.
Дело не в ПСИ, ОТК и не "сбойнуло". Дело в том, что Вы правы с точки зрения концепции - файл с прошивкой должен содержать свою контрольную сумму. Однако кроме вышеперечисленных проблем, есть и другие: ни один хеш-алгоритм не защищён от коллизии; нет гарантии, что ничего не "сбойнёт" при расчёте хеша на цели; память "испортилась" после расчёта контрольной суммы (актуально для долго работающих устройств); действия устройства при порче прошивки (кстати, подпрограмма, проверяющая к.с. является частью прошивки и, например, таблица расчёта CRC32 занимает целый килобайт - значимую часть самой программы). Тут много проблем и много что может пойти не так.
Так что исходя из здравого инженерного подхода, выставив галочку "verify", сойдёт и так ;)
А вот что боевая программа содержит код, который может изменить значение к.с. (и не только кс, а вообще может писать в память программ) - это меня смущает.

_________________
сочувствующий…


Вернуться к началу
СообщениеДобавлено: 2019-окт-30 17:47 
Не в сети

Зарегистрирован: 2010-сен-21 12:57
Сообщения: 748
Откуда: г. Санкт-Петербург
1.
ЧумА писал(а):
Например, Вы залили прошивку и при заливке что-то сбойнуло (весьма маловероятно, но не невозможно).

2.
ЧумА писал(а):
Потом она подсчитала себе сумму (неправильную) и живет с таковой.
1. После заливки логично сделать верификацию.
2. Сумма подсчитывается при первом включении. Если она подсчитается неправильно, то при следующем включении программа сама себя забракует.
Перед ОТК, как правило, аппаратура проходит этап регулировки на котором большинство замечаний устраняется.
При этом ни одно техническое решение, как правило, не лишено недостатков.
Но по моему мнению выражение "порочно по определению" в данном случае не совсем корректно.
prostoRoman писал(а):
А вот что боевая программа содержит код, который может изменить значение к.с. (и не только кс, а вообще может писать в память программ) - это меня смущает.
Нас это не смущает потому, что в последнее время возможность изменения ПО без вскрытия аппаратуры всячески приветствуется потребителями , и даже в ТЗ на разработку аппаратуры часто присутствует требование обеспечения возможности коррекции ПО во время эксплуатации.


Вернуться к началу
СообщениеДобавлено: 2019-окт-31 08:51 
Не в сети

Зарегистрирован: 2009-сен-21 12:39
Сообщения: 547
vasili писал(а):
Но по моему мнению выражение "порочно по определению" в данном случае не совсем корректно.
Если обидел - прошу прощения. Меняю формулировку на: "считаю такой способ для своей организации и её производственной кооперации неприемлемым" :).
vasili писал(а):
Нас это не смущает потому, что в последнее время возможность изменения ПО без вскрытия аппаратуры всячески приветствуется потребителями , и даже в ТЗ на разработку аппаратуры часто присутствует требование обеспечения возможности коррекции ПО во время эксплуатации.
Тут есть хороший способ типа встроенного загрузчика от "Миландра", который сам собственно ничего не программирует. Мы такой для CAN реализовали, т.е. в ПЗУ код для самопрограммирования отсутствует.


Вернуться к началу
СообщениеДобавлено: 2019-окт-31 09:42 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1526
Откуда: Тула
vasili писал(а):
prostoRoman писал(а):
А вот что боевая программа содержит код, который может изменить значение к.с. (и не только кс, а вообще может писать в память программ) - это меня смущает.
Нас это не смущает ...
Смущает отсутствие в ф-ции записи к.с. проверки на чистоту ячейки и на правильность адреса записываемой ячейки. Но я вовсе не против, я и сам всякое такое делаю :wink:
vasili писал(а):
... потому, что в последнее время возможность изменения ПО без вскрытия аппаратуры всячески приветствуется потребителями , и даже в ТЗ на разработку аппаратуры часто присутствует требование обеспечения возможности коррекции ПО во время эксплуатации.
А это очень интересно. Не знаю вашего заказчика и специфики изделий, но роль ПО может быть существенна на столько, что при его замене может критически меняться режим работы компонентов самого изделия, физический, уж не говорю про алгоритмы и функции изделия.
Может поделитесь опытом, как регламентирована процедура обновления ПО?
С точки зрения нашего заказчика я обязал бы проводить испытания на "подопытном образце", в т.ч. в составе конечного изделия или его макета в объёме периодических. Т.е. объём работ такой, что ах! Но это моё представление.
ЧумА писал(а):
Тут есть хороший способ типа встроенного загрузчика от "Миландра", который сам собственно ничего не программирует. Мы такой для CAN реализовали, т.е. в ПЗУ код для самопрограммирования отсутствует.
Да, это всё правильные пути!

_________________
сочувствующий…


Вернуться к началу
СообщениеДобавлено: 2019-окт-31 10:20 
Не в сети

Зарегистрирован: 2014-дек-22 11:21
Сообщения: 24
prostoRoman писал(а):
Дело не в ПСИ, ОТК и не "сбойнуло". Дело в том, что Вы правы с точки зрения концепции - файл с прошивкой должен содержать свою контрольную сумму. Однако кроме вышеперечисленных проблем, есть и другие: ни один хеш-алгоритм не защищён от коллизии; нет гарантии, что ничего не "сбойнёт" при расчёте хеша на цели;
Для избежания коллизий можно использовать несколько хешей и контрольных сумм. В свое время стояла подобная задача подписи программного кода для ублажения представителя заказчика. Контрольная сумма выводилась через внешний интерфейс. Так же был случай порчи памяти программ, вызванная не правильным питанием МК при пробое схемы. После чего была вставлена проверка кода. Контрольная сумма храниться в информационной памяти, так что ПО не могло само себя модифицировать. Единственное что доставляет не удобство, это неочищенная информационная память свежих контроллеров, после стирания которой требуется повторная прошивка МК.


Вернуться к началу
СообщениеДобавлено: 2019-окт-31 10:41 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 502
Цитата:
Может поделитесь опытом, как регламентирована процедура обновления ПО?
Если изделие литерное - то так, же как вы и описали.
Цитата:
испытания на "подопытном образце"
в составе конечного изделия - по согласованию с головным исполнителем. После чего прошивка с новыми характеристиками (версия ПО, контрольная сумма) сдается в архив и на производство.
Но чаще всего это требуется при отладке на объекте, потому что наши блоки засовывают в такие места. что не сразу и доберешься, чтобы разъем подключить. А канал связи, чаще всего, выведен в более удобное для доступа место.

По поводу первого поста
Цитата:
C:\Keil_v5\UV4\UV4.exe -f flash.uvprojx -o Log.txt)
Провел эксперименты (Keil 4.72 но думаю не принципиально) C:\Keil\UV4\UV4.exe -f test.uvproj -o Log.txt
1.Собрал проект, закрыл Keil.
2.Удалил hex файл. Запустил командную строку. МК прошился.
3.Собрал проект, закрыл Keil.
4.Удалил axf файл. Keil обругался, что нет axf-файла и послал меня лесом
Может быть в настройках проекта конечная директория указана другая (у меня это обычно папка obj в корне проекта) и все файлы соответственно ищутся в ней. А если на производстве она отсутствует (только файл проекта), то и найти файлы не может, поэтому жестко требует указать hex-файл

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
СообщениеДобавлено: 2019-окт-31 10:44 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 502
Цитата:
ни один хеш-алгоритм не защищён от коллизии;
Все алгоритмы рассчитаны на выявление случайных сбоев. Если вносятся преднамеренные изменения, то корректировка конечной CRC (или что-то другое) это дело техники.

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 17 сообщений ]  На страницу 1 2 »

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB