Jump to content

    

IAR Embedded. Работа с исключениями LPC2214.

 

4 часа назад, xvr сказал:

использовать в качестве отладочных плат MCU металообрабатывающие станки (пусть даже и простаивающие). Остальной мир начинает осваивать новые для себя области embedded программирования с мигания светодиодиком :)

:thank_you2:Судя по Вашему профилю, Вы человек опытный, но для чего Вы это написали? Светодиодиком я уже давно поморгал.  Вопрос задавал чисто с технической (программной) точки зрения. Специально искал рубрику для начинающих. И потом, в конце концов, этот станок ведь может быть моим личным имуществом. Кому какое дело до него. Кстати, во втором своем посте  я же написал что зависания прекратились.

В 25.07.2019 в 22:02, mrVladimir сказал:

И решил я проверить RC-цепи (штатные) на станке, и оказалось, что резисторы сгорели (именно на этом станке; на других с проблемными контроллерами все RC-цепи в порядке. Восстановил RC-цепи и зависания пропали. Теперь работает как часы.  А я решил углубиться в изучение данного семейства. Вот в двух словах моя история.

Вопрос был связан с исключениями. Раз Вы проявляете внимание к моей скромной персоне, то лучше подскажите пожалуйста как можно на столе в лаборатории сымитировать Undefined instruction, Prefetch abort и  Data abort. 

Share this post


Link to post
Share on other sites
15 hours ago, mrVladimir said:

сымитировать Undefined instruction, Prefetch abort и  Data abort

- исполнить мусор вместо инструкции

- передать управление по кривому адресу

- прочитать/записать что-либо по кривому адресу

Share this post


Link to post
Share on other sites
15 hours ago, mrVladimir said:

Судя по Вашему профилю, Вы человек опытный, но для чего Вы это написали?

Для того, что бы вы поняли, что программа для управления станком координально отличается от программы для моргания светодиодиком. Лично я , несмотря на всю мою опытность, не возмусь писать такую программу.

При написании программ для физичски опасных объектов применяют специальные методики (защитное программирование, MISRA, верификаторы кода, обязательные unit тесты и куча другого)

Если у вас вообще возникают вопросы про Undefined instruction, Prefetch abort и  Data abort, то вам категорически нельзя что либо запускать на реальном станке - достаньте плату из станка и запускайте на столе (правда придётся сделать эмулятор станка).

Или поставьте станок в обитую железом комнату, из которой всех предварительно выгоните :biggrin:

15 hours ago, mrVladimir said:

этот станок ведь может быть моим личным имуществом. Кому какое дело до него.

Вопрос не в станке, а в вас и окружающих - можете покалечится сами и покалечить кого нибудь рядом.

 

Ну в конце концов я не отдел по надзору за ТБ, и не страховая компания - у вас есть своя голова на плечах, решайте сами.

Share this post


Link to post
Share on other sites
2 hours ago, xvr said:

у вас есть своя голова на плечах, решайте сами

Ну вот уже здравые мысли какие-то. Автор вопроса занимается наладкой этих самых станков. И можно предположить (обратное пока не доказано), что он УМЕЕТ с ними обращаться.

По-хорошему (опять же, никаких сведений) всевозможные защиты в станке сделаны отдельно, и максимум что может случиться - запоротая заготовка. Ну так пусть играется, пока не надоест...

Edited by esaulenka
опечатка

Share this post


Link to post
Share on other sites

esaulenka, может быть опять у меня глупый вопрос, но как же я исполню мусор вместо инструкции, если на этапе компиляции  на этот мусор ругается сам компилятор. 

 А почему вы ничего не говорите про обнаруженные мной неисправные RC-цепи. Ведь благодаря им зависания ПРЕКРАТИЛИСЬ.

Share this post


Link to post
Share on other sites
3 часа назад, mrVladimir сказал:

но как же я исполню мусор вместо инструкции, если на этапе компиляции  на этот мусор ругается сам компилятор.

Например, передайте управление на текстовую строку "люблю грозу в начале мая". Возьмите указатель на строку, приведите его тип к типу "указатель на функцию" и вызовите функцию по этому указателю.

Share this post


Link to post
Share on other sites
3 hours ago, mrVladimir said:

А почему вы ничего не говорите про обнаруженные мной неисправные RC-цепи.

А тут нечего говорить. Ведь схему вы нам не предоставили. И трассировку печатной платы тоже.

On 7/26/2019 at 3:02 AM, mrVladimir said:

И решил я проверить RC-цепи (штатные) на станке

Что это за "штатные" цепи, и где они стоят?

Share this post


Link to post
Share on other sites
23 минуты назад, Сергей Борщ сказал:

Например, передайте управление на текстовую строку "люблю грозу в начале мая". Возьмите указатель на строку, приведите его тип к типу "указатель на функцию" и вызовите функцию по этому указателю.

Вы уверены? А вдруг выполнится?  :biggrin:  Ведь у ARM-а довольно хорошо заполненная таблица кодов команд - это ещё надо умудриться попасть на Undefined instruction...

Помнится во времена MS-DOS и COM-файлов, ходил по сети такой COM-файл, который являлся просто ASCII-текстом и который нормально выполнялся если ему передать управление.  :drinks:

PS: По уму надо открывать мануал и читать, что такое Undefined instruction, Data abort и т.п. Но почему-то тут у начинающих крышу срывает от советов открыть доку. Видимо считают это ниже своего достоинства....  :king:

Share this post


Link to post
Share on other sites

Да нет. Зависания происходили в разные моменты по времени, но всегда в момент смены инструмента. Смена инструмента делается обычным асинхронным двигателем. С помощью двух пускателей, которые управляются указанным контроллером. Первый пускатель включается во время поиска инструмента, второй - при фиксации револьверной головки. RC цепи стоят паралельно обмоткам двигателя в шкафу станка. Из-за того, что они были в обрыве при начале вращения двигателя на поиск или на фиксацию возникали броски, которые передавались на плату контроллера, ну и далее - зависания. Двигатели примерно такой же мощности стоят и на подачу эмульсии, и на смазку. Они тоже управляются указанным контроллером, но при их включении бросков и зависаний не было с самого начала. С RC-цепями я конечно  ступил немного. Надо было сразу обратить на них внимание. 

Share this post


Link to post
Share on other sites
3 минуты назад, jcxz сказал:

А вдруг выполнится? 

Тогда дописываем следом и скармливаем "когда весенний первый гром". К концу поэмы обязательно попадется что-нибудь, чем ядро подавится.

Edited by Сергей Борщ

Share this post


Link to post
Share on other sites
3 минуты назад, jcxz сказал:

Видимо считают это ниже своего достоинства....

Разве я хоть чем-то попытался показать свое достоинство?

Share this post


Link to post
Share on other sites
2 минуты назад, mrVladimir сказал:

Из-за того, что они были в обрыве при начале вращения двигателя на поиск или на фиксацию возникали броски, которые передавались на плату контроллера, ну и далее - зависания.

Так там не только с программой проблемы, но ещё и с аппаратной частью... :dash2:

1 минуту назад, mrVladimir сказал:

Разве я хоть чем-то попытался показать свое достоинство?

Я не про вас....  :smile:

Share this post


Link to post
Share on other sites
1 minute ago, Сергей Борщ said:

Тогда дописывам следом и скармливаем "когда весенний первый гром". К концу поэмы обязательно попадется что-нибудь, чем ядро подавится.

Предлагаю сразу "Войну и мир". От неё многим крышку сносит))) Будем надеятся, что МК окажется несильнее людей)

3 minutes ago, mrVladimir said:

Из-за того, что они были в обрыве при начале вращения двигателя на поиск или на фиксацию возникали броски, которые передавались на плату контроллера, ну и далее - зависания.

ИМХО такого быть не должно. Помехи, это конечно плохо. Но железо контроллера должно быть спроектировано так, тчобы минимизировать влияние внешних помех.

Приведите уже ради интереса фото этого чуда. Изнутри тоже.

Share this post


Link to post
Share on other sites

Плату контроллера я не разрабатывал. Говорю же, разобрался со схемотехникой уже приобретенного у сторонней фирмы. Выпаял LPC2214. Запаял чистый . Залил свою программу. Схемотехника простая. 24->5в - AM5T-2405sz. Затем из 5В делается 3.3 и 1.8 (LM1117). Входы/выходы для контроллера LPC управляются с помощью оптронов. А насчет RC-цепей, даже с родными контроллерами, которые были выполнены еще на 511 серии советских микросхем при неисправности RC-цепей наблюдались сбои необъяснимой природы. 

 PS: так как аппаратная часть нисколько не моя, то и фото я  приводить не могу. Извините.

Share this post


Link to post
Share on other sites
52 minutes ago, mrVladimir said:

Плату контроллера я не разрабатывал.

А почему вы решили, что я думаю по иному?

52 minutes ago, mrVladimir said:

Говорю же, разобрался со схемотехникой уже приобретенного у сторонней фирмы.

И это я давно понял.

52 minutes ago, mrVladimir said:

Схемотехника простая. 24->5в - AM5T-2405sz.

Ну с таким уровнем дальше можете не продолжать. Без обид.

52 minutes ago, mrVladimir said:

то и фото я  приводить не могу.

Это в силу каких убеждений??? Вы купили изделие, вольны делать с ним, что хотите.

52 minutes ago, mrVladimir said:

наблюдались сбои необъяснимой природы.

Ого! Ну если 511 серия так себя вела, то да, по другому и быть не может.

 

Объясню причину сарказма: вы просите помощи, вам пытаюстя помочь разносторонне. Потому что контроллер станка это не только ПО. Но вы постоянно маскируетесь за какими-то абстрактными высказываниями и "категорическими" нежеланиями вести дискуссию. При этом рассуждаете о "Undefined instruction, Prefetch abort и  Data abort. " Каким образом они вам могут помочь я не понимаю. Ну получите вы их на столе, и что дальше? Проц в эти исключения на станке может улетать по причине плохо разведённой земли. Приведя здесь фото платы, вы можете пролить свет на это. И вам можно будет порекомендовать, к примеру, "упрочнить" землю куском напаянного провода. Почитайте вот эту тему.

56 minutes ago, mrVladimir said:

Входы/выходы для контроллера LPC управляются с помощью оптронов.

Ага. А куда делись конденсаторы, резисторы, транзисторы, которые там стоят?

Читаем раз.

Читаем два.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now