Зачем отключать esp: Когда и зачем отключать ESP

Содержание

Когда и зачем отключать ESP

Не многие уже, наверное, помнят, но в начале 90-х во многих машинах была кнопка отключения ABS. Тогда считалось нормой давать водителю возможность больше контролировать автомобиль. Потом от этой идеи отказались. Сегодня по такому же пути развития идет система ESP, не на всех, но уже на некоторых машинах ее нельзя отключить, либо можно, но лишь частично. Но ESP не ABS, если смысл выключения антиблокировочной системы действительно не очевидный, то вот систему стабилизации деактивировать не только можно, но и в некоторых ситуациях еще и нужно.

Кнопка отключения ESP

Тут стоит сразу добавить, что в современных автомобилях ESP это не только непосредственно система стабилизации с возможностью подтормаживать отдельные колеса в критических ситуациях, но куча других систем, в том числе и противобуксовочная. Все они работают под управлением одного блока и действуют в комплексе. Проблемы от работы электроники обычно возникают в четырех ситуациях.

Для чего нужна система ESP

1. Грязь, песок, снег

Давно замечено, ESP хоть и повышает безопасность, но ухудшает проходимость. Там, где нужно проехать препятствие ходом не сбавляя скорость, система в неудачный момент может обрубить тягу на колесах и «засадить» автомобиль. Вредна для легкого бездорожья и антипробуксовочная система. Без ее вмешательства активно буксуя можно счистить рыхлую поверхность и докопать до твердого грунта или упругого снега, что позволит выехать из препятствия, а с ней машина сразу вязнет.

Подобных сравнений проводилось уже немало, всегда автомобиль с включенной ESP застревает чуть ли не ровном месте, а с отключенной или вообще без нее уверенно «пашет» снежный покров и грязь. В реальной эксплуатации разница глобальная – на машине с неотключаемой системой стабилизации можно застрять в безобидном месте.

Lexus IS застрял на ровном месте

В последнее время производители научили системы стабилизации имитировать блокировку дифференциала, подтормаживая ведущее колесо, что позволяет часть крутящего момента перекинуть на ту сторону, где лучше зацеп. Пока эта система не догнала по эффективности «механические» блокировки, да и у различных автоконцернов работает с разной эффективностью, но смысл в ней уже появился.

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

2. Тронуться в горку

Еще одна ситуация, когда пробуксовка колес вредна – трогание в горку, особенно на скользкой поверхности. Для переднеприводного автомобиля, у которого ведущие колеса разгружаются при старте с места, это и так не самая простая процедура, а тут еще и электроника обрубает тягу и не дает буксовать колесам. А «букс» и мощность для старта в гору ой как нужны. Без них сцепления шин может банально не хватить, и автомобиль никуда не поедет.

Также ESP начинает вредить, когда водитель устанавливает на ведущие колеса цепи противоскольжения. На такую работу электронику никто не настраивал, она откровенно теряется и только мешает нормальной езде.

3. Спорт и дрифт

Конечно, ESP будет вредить в ситуации, когда нужно получить от автомобиля максимальную скорость – на гоночных треках или во время специальных упражнений типа дрифта. Электроника будет тормозить скольжения, ограничивать «подвижность» задней оси, не даст раскручиваться мотору в поворотах. Так что на гоночных трассах ESP нужно отключать.

Зимний дрифт

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

4. Разные колеса на одной оси

Еще одна проблема чисто техническая: если пришлось поставить неполноразмерную запаску или докатку, то ESP нужно отключать, потому что она не сможет адекватно работать. Основа системы – датчики, которые считывают количество оборотов каждого колеса, а коли их диаметр разный, то система начнет сходить с ума. Подобный эффект иногда возникает и при использовании покрышек одинакового размера, но разного износа или протектора, но это все-таки редкий случай.

Отключай не отключай

Как видите, есть сразу четыре ситуации, когда ESP лучше выключить. Однако далеко не на всех автомобилях это можно сделать. У автопроизводителей не выработалось единого подхода к этому вопросу, каждый делает, как считает нужным. Есть четыре варианта.

1. ESP не отключается совсем. Дальше всего в этом вопросе продвинулась компания Renault. На Logan, Sandero и Kaptur, а также соплатформенном Lada Xray не было кнопки отключения. После тонны жалоб, на Xray и Kaptur кнопку внедрили, а вот на Logan нет, что доставляет кучу неудобств владельцам.

Кнопка отключения ESP на Renault Kaptur

2. Антипробуксовочная система отключается, система стабилизации нет. Даже на машинах, где есть кнопка отключения ESP, не факт, что она отключается полностью. Часто это всего лишь противобуксовочная система. Этого достаточно, чтобы избежать проблем с пунктами 1 и 2 из нашего списка, но трудности в 3 и 4 пунктах не решает. Еще бывают варианты, что ESP тоже отключается по нажатию кнопки, но только до какой-то скорости (обычно очень невысокой), а потом автоматически включается, что сводит смысл процедуры на нет.

3. Системой ESP можно управлять. Обычно это либо шайба на торпедо, либо электронная настройка через бортовой компьютер. Водитель может выбирать режим работы системы. Обычно там есть что-то типа «песка», «снега» и другие. Например, как у Lada Xray Cross. Несмотря на наличие «умных» режимов, которые вроде как специально подобраны для определенного типа покрытия, обычно лучше всего автомобиль едет если ESP совсем выключить, так что пока толку от настроек не очень много.

Lada Ride Select с возможностью отключения системы ESP

4. Честное отключение всей системы. Сегодня встречается не так уж и часто.

Тренд использования ESP понятен – автопроизводители хотят обеспечить максимальную безопасность, ограничив водителя. Но, кажется, у этого вектора есть предел, потому что не все ESP одинаково полезны. Если выбираете автомобиль и там есть система стабилизации, убедитесь, что у нее есть хотя бы возможность выключить противобуксовочную систему, иначе эксплуатация машины в межсезонье превратится в головную боль. Владельцы Logan с ESP подтвердят.

Отключаем ESP без кнопки — 3 способа — журнал За рулем

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

Материалы по теме

ESP помогает водителю сохранить контроль над машиной при быстром движении и маневрировании. А для повышения проходимости иногда необходимо движение со значительной пробуксовкой ведущих колес. Тут все зависит от характера грунта, внедорожных возможностей автомобиля и наличия кнопочки ESP OFF. Обратите внимание, что у некоторых моделей систему ESP можно отключить через меню бортового компьютера. Долго, неудобно, но это лучше, чем ничего.

А что же делать владельцам автомобилей, где нет ни кнопки, ни возможности отключить ESP через меню?

Надо вспомнить теорию. Откуда система ESP знает о скорости вращения колес? Правильно, от датчиков системы АБС. Имейте в виду, что если в автомобиле предусмотрена система ESP, то и ABS имеется.

Материалы по теме

Значит, чтобы повысить проходимость автомобиля и ходом, с пробуксовкой проскочить сложный участок пути, надо временно дезактивировать АБС. Это можно сделать несколькими способами:

  • Вынуть предохранитель. Для этого нужно найти в блоке предохранителей плавкую вставку, отвечающую за систему, и вынуть ее. В комбинации приборов загорится сигнализатор неисправности системы, но ESP нам больше мешать не будет.
  • Отсоединить разъем одного, любого колесного датчика АБС. Система тут же полностью вырубится. Только нужно защитить разъем от грязи и влаги.
  • Снять разъем с центрального блока АБС. Эффект тот же. И не забудьте, как и в предыдущем варианте, защитить контакты от попадания на них грязи.
Три ситуации, когда на тормоза нажимать нельзя, хотя и очень хочется, рассмотрены тут.

Для чего нужна кнопка отключения ESP и когда её нажимать?

Фото: www.fnp.de

Системой динамической стабилизации автомобиля, которая чаще всего называется ESP, теперь оборудованы даже бюджетные автомобили. В машинах с этой опцией практически всегда есть клавиша с надписью «ESP OFF» для отключения электронного помощника. Но вот далеко не все автомобилисты знают, когда нужно выключать систему стабилизации и что именно происходит при нажатии такой кнопки.

Что такое ESP?

Система динамической стабилизации, или ESP, появилась как более технически совершенное продолжение системы ABS, которая не позволяла колёсам заблокироваться при торможении. ESP необходима для того, чтобы не позволить колёсам автомобиля пробуксовывать и стабилизировать движение автомобиля в прямолинейном направлении, для этого система управляет тягой двигателя, а также тормозными колодками. По задумке конструкторов, такая система значительно улучшает управляемость автомобиля, так как способна препятствовать возникновению заноса. Действительно, управлять машиной с ESP намного проще, так как пустить её в занос становится довольно проблематично.

Фото: www.arabateknikbilgi.com

В помощниках не нуждаюсь!

Несмотря на то, что ESP — крайне полезная система безопасности, автомобилистам всё же позволяют её отключать. Такая необходимость обусловлена тем, что есть некоторые ситуации, в которых пробуксовка колёс просто необходима. Допустим, для езды по глубокому снегу или песку, а также для того чтобы вытащить засевшую в грязи машину. Для этого в машине предусмотрена отдельная клавиша, например, в автомобилях Hyundai однократное нажатие на «ESP OFF» приводит к отключению противобуксовочной системы, а продолжительное удержание кнопки полностью выключает ESP. Но при разгоне машины до скорости в 40-50 км/ч, эта система опять включится автоматически.

Фото: www.1gai.ru

При обычной эксплуатации автомобиля отключать ESP нет никакой необходимости. Ведь во включенном состоянии она позволяет водителю быть более расслабленным за рулём и не беспокоиться о безопасности прохождения очередного крутого поворота. Однако всё же стоит изучить инструкцию к автомобилю, чтобы знать, как и когда можно выключить ESP, особенно если вы часто съезжаете с асфальтовой дороги.

При использовании любых материалов необходима активная ссылка на DRIVENN.RU

Отключение ESP

В современные автомобили устанавливают множество электронных систем и помощников. Все они призваны помогать водителю в опасных или экстренных ситуациях. Но в некоторых случаях они могут мешать.

Что на самом деле отключает кнопка ESP OFF

Зачем нужна ESP

ESP (Electronic Stability Control) — это электронная система помощи на дороге. Она обеспечивает автомобилю курсовую устойчивость и контролирует работу колес. Этот узел включает в себя разные тормозные и антипробуксовочные системы, такие как: ABS и ASR. Последняя как раз и отвечает за срыв машины в занос. При включении системы на панели приборов загорается соответствующая индикация. В этот момент машина может просто встать колом, не реагируя на педаль газа.

Первые версии данной системы были разработаны BMW совместно с Robert Bosch GmbH и Continental Automotive Systems в 1992 году. Также ее разработку и внедрение проводила компания Mercedes-Benz.

ESP обрабатывает сигналы, идущие от колес, и включает блокировку или подкручивание одного из них. При этом учитывается нагрузка на оси и прочие факторы. Обработка происходит в центральном компьютере. По сути, ESP – это основная система по отработке торможения и заноса колес автомобиля.

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

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

Как выглядит кнопка отключения ESP

Чаще всего на данной кнопке есть одноименная надпись «ESP OFF». Что переводится как «выключение ESP». Но у данной функции есть и свое графическое обозначение. В активном режиме на приборной панели загорается пиктограмма с изображением задней части автомобиля, с расходящимися волнистыми линиями от задних колес. Так схематически изображается занос автомобиля.

Кнопка может располагаться на центральной части торпедо, в части управления климатической системой автомобиля или на рулевой колонке. Также она может находиться в области тоннеля или в районе управления оптикой машины.

Что будет, если нажать кнопку ESP OFF

Если вы случайно встали в вязкой колее или на рыхлом снегу, и машина не хочет ехать дальше, то можно поискать соответствующую кнопку. Стоит сразу оговориться, что данная функция отключается постепенно или поэтапно на разных моделях автомобилей.

Так на старых машинах, скорее всего, отключится только система ASR. Этого не всегда достаточно, чтобы продолжить движение.

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

Когда нужно выключать ESP

Данная система может выручить на дороге при интенсивном движении. Особенно она полезна при первых заморозках, когда на дороге образуется тонкая ледяная корка. Но в некоторых ситуациях использование ESP неоправданно и даже опасно:

  1. При движении по скользкой дороге в медленно идущем потоке. У водителей часто случаются аварии, когда они просто не успевают затормозить за впереди идущим авто. Это происходит не из-за плохой реакции автомобилиста, а по причине некорректной работы ESP. При этом колеса блокируются рывками, и машина со специфическим хрустом тормозов влетает в бампер впереди идущей машины.

  2. На легком бездорожье. Первые системы ESP на внедорожниках и кроссоверах смотрелись немного нелепо. Они блокировали работу колес при попадании машины в колею. Современные системы антизаноса работают точнее, но также могут неправильно расценивать дорожную обстановку.

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

Во всех указанных случаях лучше отключать данную систему и контролировать дорожную обстановку самостоятельно.

Что будет если отключить ESP в автомобиле

Всем привет. Сегодня коснемся такой интересной опции в современных автомобилях, как отключение ESP а именно системы стабилизации в автомобиле. Что будет если отключить ESP в автомобиле, а что продолжает работать при нажатии этой кнопки и зачем это нужно.

Полную видео  версию  Что будет если отключить ПОЛНОСТЬЮ ESP в вашем Авто вы можете посмотреть на моем канале AkerMehanik

Многие автовладельцы твердо уверены, что чем больше в машине всевозможных электронных помощников, это и ASR и BDE. У каждого производителя все эти системы называются по разному НО все они объединены в одну электронную систему которая как правило называется ESP. Однако есть ситуации, в которых вмешательство умных ассистентов помощи водителю только вредит в определенных ситуациях. НО ПОЛНОЕ ОТКЛЮЧЕНИЕ на современных ваших новомодных кроссоверах приведет к тому…. Что вы просто не сможете зимой просто нормально на них ездить.

Знакомы ощущения, когда ваш полноприводный новенький кроссовер видит как какая нибудь жигулевская «классика», бодро удаляется вдаль по раскисшей полевой дороге. А ваша умная электроника вашего полноприводного кроссовера на хорошей зимней резине не дала вам проехать в том же направлении даже 10 метров, напрочь «задушив» мотор и остановив машину.

Полностью отключить вредную в такой ситуации опцию на некоторых автомобилях бывает просто невозможно  В большинстве же приличных современных авто имеется либо кнопка «ESP off», либо соответствующий пункт в меню электронных настроек транспортного средства. Но многие не знают,что даже с нажатой кнопкой ESP система курсовой устойчивости авто в большинстве случаев продолжает функционировать.

А отключается всего лишь противобуксовочная система — ASR, которая работает совместно с ESP, антиблокировочной системой ABS и прочими электронными ассистентами.

Сегодня расскажу, почему так происходит. И  что будет с вашим навороченным полным приводом если реально отключить на современных кроссоверах с полным приводом все электронные  ассистенты помощи водителю.

ИТАК:

Поскольку действуют все эти системы в комплексе, автопроизводители пишут про отключение ESP, чтобы не «забивать» автовладельцу голову.

В реале возможность полного отключения на современных автомобилях имеют далеко не многие модели авто. И как правило это модели которые у того или иного бренда имеют псевдо спортивную направленность либо имеющие реальные блокировки дифференциала и пониженные передачи. А таких моделей на рынке все меньше и меньше. Потому то в реале возможностями таких дорогих систем полного привода а это как правило ТОРСЕН и его модификации в повседневной жизни водители этих автомобилей практически не пользуются за весь срок владения автомобилем. Не зря в последнейм поколении VW Touareg в базе находится система полного привода Халдекс, а старая добрая раздатка с блокировками теперь ставится только как опция, которую вы можете заказать если она вам реально нужна.

У псевдо спортивных тачек, таких как серия  RS и S у АУди, М серия у БМВ и т.д. полное отключение всех систем стабилизации нужны по большому счету, Что бы ВЫ где нибудь на идеальной трассе или лучше трэке могли отключить все системы стабилизации, и ограничения мощности двигателя и в полной мере могли ощутить всю мощность мотора И… при случае… вальнуть бочком… Если конечно вы понимаете что это такое и понимаете чем это может закончиться )))). Это только в инстаграмме и Youtube   сплошь и рядом одни дрифтеры и валят боком на пятачке диаметром 10 метром. В реале все далеко не так. И все как правило заказнчивается встречей либо с забором либо со столбом.

НО речь сегодня не об этом…

  1. Зачем нужно отключать ESP или хотя бы ASR обычному водителю.

Затем, что как правило, именно ASR эффективно мешает машине справиться с небольшим бездорожьем. отключение этой системы зачастую решает все проблемы с проходимостью.

Зимой, когда заледеневшая дорога с подъемом или засыпанный снегом выезд с парковки — дело чуть ли не ежедневное, отключение ESP может стать отличным подспорьем в «скользкой ситуации». Даже на авто с моноприводом.

ПОЧЕМУ ПОМОГАЕТ! А потому что отключаете ограничение крутящего момента при проскальзывании.

И если вы не сели на брюхо… то у вас есть шанс зацепиться, пробить наст где ваше колесо зацепится все таки за твердую поверхность. И в большинсте случаев этого более чем достаточно, т.к. если вам и это не помогло, то пора прицеплять трос.

 

Теперь расскажу про заблуждения….

  1. При отключении ASR у вашего авто будут грести оба колеса на ведущей оси. ))))))! Дилетанское мнение.

Если у вас нет механической (принудительной) блокировки дифференциала, то у вас будет крутиться именно колесо на котором… НАИМЕНЬШИЙ зацеп. Да именно наименьший… Второе будет стоять. Далее…

Если мы говорим про передний мост то как правило в букс уходит колесо с самым коротким приводом до коробки передач…

ПОЧЕМУ? А потому что на ВСЕХ современных кроссоверах обычный дифференциал со свободным вращением… Самоблокировки как на системе полного привода ТОРСЕН у него нет… А принудительная блокировка дифы на большинстве современных кроссоверах отсутствует.

  1. Нормальные водятлы должны ездить с отключенными системами стабилизации… так комфортней и безопасней.

Я скажу что так не ездит НИКТО… если только понтуются у супермаркета дрифтя по кругу…

ПОЧЕМУ? ОТВЕЧАЮ…

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

Так вот именно для этого всю эту мощность душат и постоянно держат вашу подвеску в тисках. Лампочки на приборной панели могут и не моргать кстати… но системы постоянно работают. Поэтому кстати на всех практически современных авто быстрее изнашиваются задние колодки… что многих кстати удивляет…

Вот собственно и все… надеюсь теперь тема нужности отключения систем стабилизации всем понятна. ВСЕМ ПОКА!

3 944

Поделиться ссылкой:

Похожее

Зачем отключают стабилизацию? — TopGear Russia

У них есть масса названий: ESP, DSC, ASC, VSC… Они производятся разными компаниями и имеют разное программное обеспечение, различаются функциями, возможностями и поколениями. Но обычному автолюбителю о них надо знать лишь одно – если на автомобиле есть электроника, которая контролирует курсовую или динамическую стабильность движения, ее лучше просто так не отключать. В подавляющем большинстве дорожных ситуаций программы стабилизации вмешиваются по делу и очень эффективны.

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

Ключевое слово – «по возможности». Даже самая продвинутая ESP не может преодолеть законов физики. Если, например, дорога слишком скользкая, а водитель сильно просчитался со скоростью, то программа в лучшем случае уменьшит последствия ошибки, а шансов удержаться на дороге особо не добавит.

На бездорожье стандартные дорожные алгоритмы работы стабилизации могут подбросить и вовсе неприятный сюрприз. Типичный случай – глубокая зыбкая колея в грязи. Такой участок можно пройти только под тягой, с пробуксовкой колес, невзирая на то, как машина мечется в стороны. Но бдительная электроника может ошибочно распознать аварийную ситуацию, ограничить тягу мотора и тем самым «засадить» автомобиль в самом неподходящем месте.

Чтобы избежать подобных конфузов, придумана заветная кнопка деактивации ESP. На многих автомобилях она имеет две ступени срабатывания. При однократном нажатии на клавишу с пиктограммой программы на приборной панели зажигается желтая иконка с зигзагообразными колеями. Отключается только та часть, которая отвечает за коррекцию тяги. С педали газа спадают «оковы», и программа разрешит пробуксовки, продолжая следить за поведением автомобиля в поворотах. Если развивается занос, она все равно вмешается. Этот алгоритм может быть полезен на гоночном треке для спортивного вождения. Для обычных уличных условий режим небезопасен.

При втором нажатии на кнопку электроника может отключаться полностью (у некоторых систем тот же режим ESP Off активируется длительным нажатием). Вот он как раз и может пригодиться для кратковременных поездок по бездорожью.

Вообще отключение ESP это всегда риск. К счастью, прогресс не стоит на месте, и производители стараются развивать умные системы стабилизации, которые не надо отключать вовсе. У современных кроссоверов они уже дополняются «поведенческими» программами движения для различных условий и покрытий – например, для травы и грязи, гравия или крупных камней, песка или снега. А самые продвинутые внедорожники уже и сами подбирают наилучший алгоритм под бездорожье, не требуя от водителя вообще никаких предварительных действий.

Так же и на мощных легковых автомобилях и спорткарах. Продвинутая электроника следит не только за динамикой и курсом движения, а еще анализирует манеру вождения человека и подстраивается под его стиль управления, помогая «затянуть» автомобиль в поворот, выйти из виража на грани пробуксовки с легким заносом и т. д. И чем дороже автомобиль, тем быстрее забываешь, где расположена кнопка деактивации ESP.

Когда и зачем следует отключать ЕSР в автомобиле — Лайфхак

Алгоритм использования этого средства может быть следующий. Этап первый, когда еще ничего страшного не случилось, но на панели мигает лампочка срабатывания ESP, а машина почему-то не едет вперед, хотя мы жмем на газ. Для начала надо остановиться, выйти из авто и выяснить, что там под колесами и перед бампером. Если никаких существенных преград типа снежного бруствера не наблюдается, садимся за руль и не отключая ESP, но поставив передние колеса прямо «враскачк» пытаемся выскочить из скользкого плена. Не вышло? Отключаем ESP, позволяя ведущим колесам немного буксовать и пробуем проделать то же самое — «раскачка» вперед-назад при оборотах двигателя 2500−3000 в минуту (не больше, иначе можно еще сильнее закопаться).

Не помогает опять? Выходим и смотрим внимательнее подо все колеса — возможно где-то требуется отгрести в сторону горку снега или убрать ледяную глыбу (камень и т. п.). Снова садимся за руль и если вокруг машины есть свободное место, пытаемся сдвинуть ее вбок с отполированного колесами места. Особенно удобно это делать если, если авто переднеприводное и оснащено обычным механическим «ручником», а не электронным «кнопочным» стояночным тормозом: затянул его, руль вбок и — газку. Если и на новом месте не помогла «раскачка», то остается уповать только на помощь извне — крепких прохожих, или другой машины с тросом.

Заметим, что по результатам опроса читателей портала «АвтоВзгляд» выяснилось следующее. 70% из них вообще никогда не пользуются кнопкой отключения ESP. Фактически это означает либо то, что они ни разу не застревали в грязи или снегу, либо застревали, но понятия не имеют, что могли бы выпутаться из ситуации нажав «ESP off».

Еще 14% из числа проголосовавших сообщили, что постоянно ездят с отключенной системой стабилизации. Надо полагать, она у них либо сломана, либо граждане мнят себя «шумахерами», которым электронные помощники не указ. В обоих случаях это — до первого ДТП на скользкой дороге.

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

Распределение прерываний — ESP32 — — Руководство по программированию ESP-IDF последняя документация

Обзор

ESP32 имеет два ядра по 32 прерывания в каждом. Каждое прерывание имеет определенный уровень приоритета, большинство (но не все) прерываний связаны к мультиплексору прерываний. Поскольку существует больше источников прерываний, чем прерываний, иногда имеет смысл разделить прерывание в несколько драйверов. Абстракция esp_intr_alloc существует, чтобы скрыть все эти детали реализации.

Драйвер может выделить прерывание для определенного периферийного устройства, вызвав esp_intr_alloc (или esp_intr_alloc_sintrstatus).Он может использовать флаги, переданные этой функции, чтобы установить тип выделенного прерывания, определяя конкретный уровень или метод триггера. В затем код распределения прерываний найдет подходящее прерывание, будет использовать мультиплексор прерываний, чтобы подключить его к периферийному устройству, и установить указанный обработчик прерывания и ISR к нему.

В этом коде есть два разных типа прерываний, которые он обрабатывает по-разному: общие прерывания и неразделенные прерывания. Простейший из двух прерываний не являются общими: отдельное прерывание выделяется для каждого вызова esp_intr_alloc, и это прерывание используется исключительно для периферийное устройство, подключенное к нему, только с одним ISR, который будет вызван.Совместно используемые прерывания могут запускать несколько периферийных устройств. это с несколькими вызовами ISR, когда одно из подключенных периферийных устройств сигнализирует о прерывании. Таким образом, ISR, предназначенные для общих прерывания должны проверять состояние прерывания периферийного устройства, которое они обслуживают, чтобы увидеть, требуется ли какое-либо действие.

Неразделенные прерывания могут запускаться по уровню или по фронту. Общие прерывания могут быть только прерываниями уровня (из-за вероятности пропущенных прерываний, когда краевые прерывания используемый.) (Логика этого: DevA и DevB совместно используют int. DevB сигнализирует о int. Строка Int переходит в высокий уровень. Обработчик ISR вызывает код для DevA -> ничего не делает. Обработчик ISR вызывает код для DevB, но при этом DevA сигнализирует о int. ISR DevB готов, очищает int для DevB, выходит из кода прерывания. Теперь прерывание для DevA все еще ожидается, но поскольку строка int никогда не снижалась (DevA держала ее на высоком уровне даже когда int для DevB был очищен) прерывание никогда не обслуживается.)

Проблемы с многоядерностью

Периферийные устройства, которые могут генерировать прерывания, можно разделить на два типа:

  • Внешние периферийные устройства внутри ESP32, но за пределами самих ядер Xtensa.Большинство периферийных устройств ESP32 относятся к этому типу.

  • Внутренние периферийные устройства, входящие в состав самих ядер ЦП Xtensa.

Обработка прерываний для этих двух типов периферийных устройств немного отличается.

Внутренние периферийные прерывания

Каждое ядро ​​ЦП Xtensa имеет собственный набор из шести внутренних периферийных устройств:

  • Три таймерных компаратора

  • Монитор производительности

  • Два программных прерывания.

Внутренние источники прерываний определены в esp_intr_alloc.h как ETS_INTERNAL _ * _ INTR_SOURCE .

Эти периферийные устройства можно настроить только с того ядра, с которым они связаны. При генерации прерывания генерируемое ими прерывание жестко связано с соответствующим ядром; невозможно, например, внутренний Компаратор таймера одного ядра генерирует прерывание на другом ядре. Вот почему этими источниками можно управлять только используя задачу, выполняемую на этом конкретном ядре.Внутренние источники прерываний по-прежнему могут быть выделены с помощью esp_intr_alloc как обычно, но они не могут использоваться совместно и всегда будут иметь фиксированный уровень прерывания (а именно тот, который связан в оборудование с периферией).

Внешние периферийные прерывания

Остальные источники прерываний поступают от внешних периферийных устройств. Они определены в soc / soc.h как ETS _ * _ INTR_SOURCE .

Невнутренние слоты прерываний в обоих ядрах ЦП подключены к мультиплексору прерываний, который может использоваться для направить любой внешний источник прерывания в любой из этих слотов прерывания.

  • Выделение внешнего прерывания всегда будет выделять его на ядре, которое выполняет выделение.

  • Освобождение внешнего прерывания всегда должно происходить на том же ядре, на котором оно было выделено.

  • Разрешено отключение и разрешение внешних прерываний от другого ядра.

  • Несколько внешних источников прерывания могут совместно использовать слот прерывания, передав ESP_INTR_FLAG_SHARED в качестве флага esp_intr_alloc ().

Следует проявлять осторожность при вызове esp_intr_alloc () из задачи, которая не привязана к ядру. Во время переключения задач эти задачи могут перемещаться между ядрами. Следовательно, невозможно сказать, на каком процессоре выделено прерывание, что затрудняет освобождение дескриптора прерывания и может также вызвать трудности отладки. Рекомендуется использовать xTaskCreatePinnedToCore () с определенным аргументом CoreID для создания задач, которые будут выделять прерывания. В случае внутренних источников прерывания это необходимо.

Обработчики прерываний, безопасные для IRAM

Флаг ESP_INTR_FLAG_IRAM регистрирует обработчик прерывания, который всегда запускается из IRAM (и считывает все свои данные из DRAM), и поэтому его не нужно отключать во время операций стирания и записи флэш-памяти.

Это полезно для прерываний, которым требуется гарантированная минимальная задержка выполнения, поскольку операции записи и стирания флэш-памяти могут быть медленными (стирание может занять десятки или сотни миллисекунд).

Также может быть полезно сохранить обработчик прерывания в IRAM, если он вызывается очень часто, чтобы избежать промахов флэш-кеша.

Дополнительные сведения см. В документации SPI flash API.

Несколько обработчиков, совместно использующих источник

Несколько обработчиков могут быть назначены одному источнику, при условии, что все обработчики выделяются с использованием флага ESP_INTR_FLAG_SHARED . Все они будут назначены прерыванию, к которому подключен источник, и будут вызываться последовательно, когда источник активен. Обработчики можно отключать и освобождать индивидуально. Источник присоединяется к прерыванию (включен), если один или несколько обработчиков включены, в противном случае отключается.Обработчик никогда не будет вызван, когда он отключен, в то время как его источник все еще может быть запущен , если какой-либо из его обработчиков включен.

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

Хотя фреймворк поддерживает эту функцию, вы должны использовать ее очень осторожно . Обычно существует 2 способа остановить срабатывание прерывания: отключить источник или замаскировать состояние периферийного прерывания . IDF обрабатывает только включение и отключение самого источника, оставляя биты состояния и маски на усмотрение пользователей. Биты состояния всегда должны маскироваться, прежде чем обработчик, ответственный за это, будет отключен, или статус должен обрабатываться правильно в другом разрешенном прерывании . Вы можете оставить некоторые биты состояния необработанными, если просто отключите один из всех обработчиков, не маскируя биты состояния, что приведет к бесконечному срабатыванию прерывания, что приведет к сбою системы.

Ссылка API

Функции

esp_err_t esp_intr_mark_shared (int intno , int cpu , bool is_in_iram )

Пометить прерывание как разделяемое.

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

Возврат

ESP_ERR_INVALID_ARG, если cpu или intno неверны ESP_OK в противном случае

Параметры
  • intno : Номер прерывания (0-31)

  • cpu : CPU, на котором прерывание должно быть помечено как разделяемое (0 или 1)

  • is_in_iram : Общее прерывание предназначено для обработчиков, которые находятся в IRAM, и int можно оставить включенным, в то время как флеш-кеш отключен.

esp_err_t esp_intr_reserve (int intno , int cpu )

Зарезервировать прерывание для использования вне этой структуры.

Это пометит определенное прерывание на указанном процессоре как зарезервированное, не выделяемое по какой-либо причине.

Возврат

ESP_ERR_INVALID_ARG, если cpu или intno неверны ESP_OK в противном случае

Параметры
esp_err_t esp_intr_alloc (int source , int flags , intr_handler_t handler , void * arg , intr_handle_t * ret_handle )

Назначьте прерывание с заданными параметрами.

Это находит прерывание, которое соответствует ограничениям, указанным в параметре flags, сопоставляет с ним данный источник прерывания и также подключает данный обработчик прерывания (с необязательным аргументом). При необходимости он также может вернуть дескриптор прерывания.

Прерывание всегда выделяется на ядре, которое выполняет эту функцию.

Если используется флаг ESP_INTR_FLAG_IRAM и адрес обработчика отсутствует в IRAM или RTC_FAST_MEM, то возвращается ESP_ERR_INVALID_ARG.

Вернуть

ESP_ERR_INVALID_ARG, если комбинация аргументов недопустима. ESP_ERR_NOT_FOUND Свободное прерывание не найдено с указанными флагами ESP_OK иначе

Параметры
  • источник : Источник прерывания. Один из источников мультиплексирования прерываний ETS _ * _ INTR_SOURCE, как определено в soc / soc.h, или один из внутренних источников ETS_INTERNAL _ * _ INTR_SOURCE, как определено в этом заголовке.

  • flags : маска ORred для ESP_INTR_FLAG_ * определяет.Они ограничивают выбор прерываний, из которых может выбирать эта процедура. Если это значение равно 0, по умолчанию будет выделено нераспределенное прерывание уровня 1, 2 или 3. Если это ESP_INTR_FLAG_SHARED, оно выделит разделяемое прерывание уровня 1. Установка ESP_INTR_FLAG_INTRDISABLED вернет эту функцию с отключенным прерыванием. .

  • обработчик : обработчик прерывания. Должен быть ПУСТО (NULL), если запрашивается прерывание уровня> 3, потому что эти типы прерываний не могут быть вызваны C.

  • arg : необязательный аргумент для передачи обработчику прерывания

  • ret_handle : указатель на intr_handle_t для хранения дескриптора, который позже может быть использован для запроса деталей или освобождения прерывания. Может иметь значение NULL, если дескриптор не требуется.

esp_err_t esp_intr_alloc_intrstatus (int , источник , int , флаги , uint32_t , intrstatusreg , uint32_t intrstatusmask , intr_handler_t 90_109, обработчик обработчика , intr_handler_t 90_109, обработчик обработчика , , обработчик , обработчик обработчика

Назначьте прерывание с заданными параметрами.

По сути, делает то же самое, что и esp_intr_alloc, но позволяет указать комбинацию регистра и маски. Для общих прерываний обработчик вызывается только в том случае, если чтение из указанного регистра, связанное операцией AND с маской, возвращает ненулевое значение. Посредством передачи адреса регистра состояния прерывания и подходящей маски это можно использовать для ускорения обработки прерывания в случае срабатывания общего прерывания; сначала проверяя статусы прерывания, код может решить, какие ISR можно пропустить

Вернуть

ESP_ERR_INVALID_ARG, если комбинация аргументов недопустима.ESP_ERR_NOT_FOUND Свободное прерывание не найдено с указанными флагами ESP_OK иначе

Параметры
  • источник : Источник прерывания. Один из источников мультиплексирования прерываний ETS _ * _ INTR_SOURCE, как определено в soc / soc.h, или один из внутренних источников ETS_INTERNAL _ * _ INTR_SOURCE, как определено в этом заголовке.

  • flags : маска ORred для ESP_INTR_FLAG_ * определяет. Они ограничивают выбор прерываний, из которых может выбирать эта процедура.Если это значение равно 0, по умолчанию будет выделено нераспределенное прерывание уровня 1, 2 или 3. Если это ESP_INTR_FLAG_SHARED, оно выделит разделяемое прерывание уровня 1. Установка ESP_INTR_FLAG_INTRDISABLED вернет эту функцию с отключенным прерыванием. .

  • intrstatusreg : Адрес регистра состояния прерывания

  • intrstatusmask : маска. Если чтение адреса intrstatusreg имеет какой-либо из битов, равных 1 в наборе маски, будет вызвана ISR.В противном случае он будет пропущен.

  • обработчик : обработчик прерывания. Должен быть ПУСТО (NULL), если запрашивается прерывание уровня> 3, потому что эти типы прерываний не могут быть вызваны C.

  • arg : необязательный аргумент для передачи обработчику прерывания

  • ret_handle : указатель на intr_handle_t для хранения дескриптора, который позже может быть использован для запроса деталей или освобождения прерывания. Может иметь значение NULL, если дескриптор не требуется.

esp_err_t esp_intr_free (intr_handle_t ручка )

Отключить и освободить прерывание.

Используйте дескриптор прерывания, чтобы отключить прерывание и освободить связанные с ним ресурсы. Если текущее ядро ​​не является ядром, которое зарегистрировало это прерывание, эта процедура будет назначена ядру, которое выделило это прерывание, блокируя и ожидая, пока ресурс не будет успешно освобожден.

Примечание

Когда обработчик совместно использует свой источник с другими обработчиками, биты состояния прерывания, за которые он отвечает, должны обрабатываться должным образом, прежде чем освободить его. см. esp_intr_disable для более подробной информации. Пожалуйста, не вызывайте эту функцию в esp_ipc_call_blocking .

Возврат

ESP_ERR_INVALID_ARG дескриптор NULL ESP_FAIL не удалось освободить этот дескриптор ESP_OK иначе

Параметры
int esp_intr_get_cpu (intr_handle_t дескриптор )

Получить номер процессора, к которому привязано прерывание.

Возврат

Номер ядра, на котором выделено прерывание

Параметры
int esp_intr_get_intno (intr_handle_t дескриптор )

Получить выделенное прерывание для определенного дескриптора.

Возврат

Номер прерывания

Параметры
esp_err_t esp_intr_disable (intr_handle_t ручка )

Отключить прерывание, связанное с дескриптором.

Примечание
  1. Для локальных прерываний (источники ESP_INTERNAL_ *) эта функция должна вызываться на ЦП, которому назначено прерывание. Другие прерывания не имеют такого ограничения.

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

Вернуть

ESP_ERR_INVALID_ARG, если комбинация аргументов недопустима. ESP_OK иначе

Параметры
esp_err_t esp_intr_enable (intr_handle_t ручка )

Разрешить прерывание, связанное с дескриптором.

Примечание

Для локальных прерываний (источники ESP_INTERNAL_ *) эта функция должна вызываться на ЦПУ, которому назначено прерывание.Другие прерывания не имеют такого ограничения.

Вернуть

ESP_ERR_INVALID_ARG, если комбинация аргументов недопустима. ESP_OK иначе

Параметры
esp_err_t esp_intr_set_in_iram (intr_handle_t handle , bool is_in_iram )

Установить статус обработчика «в IRAM».

Примечание

Не работает с разделяемыми прерываниями.

Вернуть

ESP_ERR_INVALID_ARG, если комбинация аргументов недопустима. ESP_OK иначе

Параметры
  • handle : дескриптор, полученный с помощью esp_intr_alloc или esp_intr_alloc_intrstatus

  • is_in_iram : находится ли обработчик, связанный с этим дескриптором, в IRAM. Обработчики, находящиеся в IRAM, могут быть вызваны, когда кеш отключен.

void esp_intr_noniram_disable (void)

Отключить прерывания, которые не помечены как выполняемые из IRAM.

void esp_intr_noniram_enable (void)

Повторное включение прерываний отключено esp_intr_noniram_disable.

Макросы

ESP_INTR_FLAG_LEVEL1

Флаги выделения прерывания.

Эти флаги могут использоваться, чтобы указать, какие качества прерывания необходимы для кода, вызывающего esp_intr_alloc *. Принять вектор прерывания уровня 1 (самый низкий приоритет)

ESP_INTR_FLAG_LEVEL2

Принять вектор прерывания уровня 2.

ESP_INTR_FLAG_LEVEL3

Принять вектор прерывания уровня 3.

ESP_INTR_FLAG_LEVEL4

Принять вектор прерывания уровня 4.

ESP_INTR_FLAG_LEVEL5

Принять вектор прерывания уровня 5.

ESP_INTR_FLAG_LEVEL6

Принять вектор прерывания уровня 6.

ESP_INTR_FLAG_NMI

Принять вектор прерывания уровня 7 (наивысший приоритет)

ESP_INTR_FLAG_SHARED

Прерывание может быть разделено между ISR.

ESP_INTR_FLAG_EDGE

Прерывание по фронту.

ESP_INTR_FLAG_IRAM

ISR может вызываться, если кэш отключен.

ESP_INTR_FLAG_INTRDISABLED

Возврат с отключенным прерыванием.

ESP_INTR_FLAG_LOWMED

Низкие и средние приоритетные прерывания.С ними можно обращаться в C.

.
ESP_INTR_FLAG_HIGH

Прерывания высокого уровня. Нужно заниматься сборкой.

ESP_INTR_FLAG_LEVELMASK

Маска для всех флажков уровня.

ETS_INTERNAL_TIMER0_INTR_SOURCE

Источник прерывания таймера 0 Xtensa.

Функции esp_intr_alloc * могут выделять int для всех источников прерываний ETS _ * _ INTR_SOURCE, которые маршрутизируются через мультиплексор прерываний.Помимо этих источников, каждое ядро ​​также имеет некоторые внутренние источники, которые не проходят через мультиплексор прерываний. Чтобы выделить прерывание для этих источников, передайте эти псевдоисточники функциям.

ETS_INTERNAL_TIMER1_INTR_SOURCE

Источник прерывания таймера 1 Xtensa.

ETS_INTERNAL_TIMER2_INTR_SOURCE

Источник прерывания таймера 2 Xtensa.

ETS_INTERNAL_SW0_INTR_SOURCE

Программное обеспечение int source 1.

ETS_INTERNAL_SW1_INTR_SOURCE

Программное обеспечение int source 2.

ETS_INTERNAL_PROFILING_INTR_SOURCE

Интервал для профилирования.

ETS_INTERNAL_INTR_SOURCE_OFF

Предоставляет SystemView с положительными идентификаторами IRQ, в противном случае события планировщика не отображаются должным образом

ESP_INTR_ENABLE (дюйм)

Разрешить прерывание по номеру прерывания

ESP_INTR_DISABLE (дюйм)

Отключить прерывание по номеру прерывания

Описание типов

typedef void (* intr_handler_t ) (void * arg)

Функциональный прототип для функции обработчика прерывания

typedef struct intr_handle_data_t intr_handle_data_t

Структура данных, связанная с обработчиком прерывания

typedef intr_handle_data_t * intr_handle_t

Дескриптор обработчика прерывания

.

фатальных ошибок — ESP32 — — Руководство по программированию ESP-IDF последняя документация

[中文]

Обзор

В определенных ситуациях выполнение программы не может быть продолжено четко определенным образом. В ESP-IDF эти ситуации включают:

  • Исключения ЦП: недопустимая инструкция, ошибка выравнивания загрузки / сохранения, ошибка запрета загрузки / сохранения, двойное исключение.

  • Проверки и меры безопасности на системном уровне:

  • Неудачные утверждения, через assert , configASSERT и аналогичные макросы.

В этом руководстве объясняется процедура, используемая в ESP-IDF для обработки этих ошибок, и даются предложения по их устранению.

Обработчик паники

Каждая причина ошибки, указанная в обзоре, будет обработана обработчиком паники .

Обработчик паники запустит вывод на консоль причины ошибки. Для исключений ЦП сообщение будет иметь вид:

 Ошибка медитации гуру: ядро ​​0 в панике (IllegalInstruction).Необработанное исключение.
 

Для некоторых проверок системного уровня (сторожевой таймер прерываний, ошибка доступа к кешу) сообщение будет иметь вид:

 Ошибка медитации гуру: паника в ядре 0 (кэш отключен, но доступ к кэшированной области памяти)
 

Во всех случаях причина ошибки указывается в скобках. См. «Ошибки медитации гуру» для получения списка возможных причин ошибок.

Последующее поведение обработчика паники может быть установлено с помощью выбора конфигурации CONFIG_ESP_SYSTEM_PANIC.Доступные варианты:

  • Распечатать регистры и перезагрузить ( CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT ) — опция по умолчанию.

    Это напечатает значения регистров в точке исключения, напечатает обратную трассировку и перезапустит микросхему.

  • Печать регистров и остановка ( CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT )

    Аналогично описанному выше варианту, но остановка вместо перезагрузки. Для перезапуска программы требуется внешний сброс.

  • Тихая перезагрузка ( CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT )

    Не печатайте регистры или трассировку, немедленно перезапустите чип.

  • Вызов заглушки GDB ( CONFIG_ESP_SYSTEM_PANIC_GDBSTUB )

    Запустите сервер GDB, который может связываться с GDB через консольный порт UART. См. GDB Stub для более подробной информации.

На поведение обработчика паники влияют два других параметра конфигурации.

  • Если CONFIG_ESP32_DEBUG_OCDAWARE включен (по умолчанию), обработчик паники определит, подключен ли отладчик JTAG.Если это так, выполнение будет остановлено, и управление будет передано отладчику. В этом случае регистры и обратная трассировка не выгружаются на консоль, а функции GDBStub / Core Dump не используются.

  • Если функция Core Dump включена, то состояние системы (стеки задач и регистры) будет сброшено во флэш-память или UART для последующего анализа.

  • Если CONFIG_ESP_PANIC_HANDLER_IRAM отключен (отключен по умолчанию), код обработчика паники помещается во флэш-память, а не в IRAM.Это означает, что если ESP-IDF выйдет из строя, когда кэш флэш-памяти отключен, обработчик паники автоматически повторно включит флэш-кеш перед запуском GDB Stub или Core Dump. Это добавляет некоторый незначительный риск, если состояние флеш-кеша также будет повреждено во время сбоя.

    Если эта опция включена, код обработчика паники помещается в IRAM. Это позволяет обработчику паники работать без необходимости сначала повторно включать кеш. Это может быть необходимо для отладки некоторых сложных проблем со сбоями, когда кэш флэш-памяти отключен (например, при записи во флэш-память SPI).

На следующей диаграмме показано поведение обработчика паники:

Блок-схема обработчика паники (щелкните, чтобы увеличить)

Дамп регистра и обратная трассировка

Если опция CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT не включена, обработчик паники выводит на консоль некоторые регистры ЦП и обратную трассировку:

 Дамп регистра ядра 0:
ПК: 0x400e14ed PS: 0x00060030 A0: 0x800d0805 A1: 0x3ffb5030
A2: 0x00000000 A3: 0x00000001 A4: 0x00000001 A5: 0x3ffb50dc
A6: 0x00000000 A7: 0x00000001 A8: 0x00000000 A9: 0x3ffb5000
A10: 0x00000000 A11: 0x3ffb2bac A12: 0x40082d1c A13: 0x06ff1ff8
A14: 0x3ffb7078 A15: 0x00000000 SAR: 0x00000014 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT: 0xffffffff

Трассировка: 0x400e14ed: 0x3ffb5030 0x400d0802: 0x3ffb5050
 

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

Дамп регистра не печатается, если обработчик паники был запущен в результате вызова abort () .

В некоторых случаях, таких как тайм-аут сторожевого таймера прерывания, обработчик паники может распечатать дополнительные регистры ЦП (EPC1-EPC4) и регистры / трассировку кода, выполняемого на другом ЦП.

Строка Backtrace содержит пары PC: SP, где PC — это счетчик программ, а SP — указатель стека, для каждого кадра стека текущей задачи.Если фатальная ошибка происходит внутри ISR, обратная трассировка может включать пары PC: SP как из задачи, которая была прервана, так и из ISR.

Если используется IDF Monitor, значения счетчика программ будут преобразованы в ячейки кода (имя функции, имя файла и номер строки), а выходные данные будут аннотированы дополнительными строками:

 Дамп регистра ядра 0:
ПК: 0x400e14ed PS: 0x00060030 A0: 0x800d0805 A1: 0x3ffb5030
0x400e14ed: app_main в / Users / user / esp / example / main / main.cpp: 36

A2: 0x00000000 A3: 0x00000001 A4: 0x00000001 A5: 0x3ffb50dc
A6: 0x00000000 A7: 0x00000001 A8: 0x00000000 A9: 0x3ffb5000
A10: 0x00000000 A11: 0x3ffb2bac A12: 0x40082d1c A13: 0x06ff1ff8
0x40082d1c: _calloc_r в /Users/user/esp/esp-idf/components/newlib/syscalls.c:51

A14: 0x3ffb7078 A15: 0x00000000 SAR: 0x00000014 EXCCAUSE: 0x0000001d
EXCVADDR: 0x00000000 LBEG: 0x4000c46c LEND: 0x4000c477 LCOUNT: 0xffffffff

Трассировка: 0x400e14ed: 0x3ffb5030 0x400d0802: 0x3ffb5050
0x400e14ed: app_main в / Users / user / esp / example / main / main.cpp: 36

0x400d0802: main_task в /Users/user/esp/esp-idf/components/esp32/cpu_start.c:470
 

Чтобы найти место, где произошла фатальная ошибка, посмотрите на строки, следующие за линией «Backtrace». Местоположение фатальной ошибки — это верхняя строка, а последующие строки показывают стек вызовов.

Заглушка GDB

Если опция CONFIG_ESP_SYSTEM_PANIC_GDBSTUB включена, обработчик паники не сбросит микросхему при возникновении фатальной ошибки. Вместо этого он запустит сервер удаленного протокола GDB, обычно называемый GDB Stub.Когда это происходит, экземпляр GDB, работающий на главном компьютере, может получить указание подключиться к порту ESP32 UART.

Если используется IDF Monitor, GDB запускается автоматически при обнаружении приглашения GDB Stub на UART. Результат будет выглядеть так:

 Вхожу в заглушку GDB.
$ T0b # e6GNU gdb (crossstool-NG crossstool-ng-1.22.0-80-gff1f415) 7.10
Авторское право (C) 2015 Free Software Foundation, Inc.
Лицензия GPLv3 +: GNU GPL версии 3 или выше 
Это бесплатное программное обеспечение: вы можете изменять и распространять его.НИКАКИХ ГАРАНТИЙ в той степени, в которой это разрешено законом. Типа "показать копирование"
и "показать гарантию" для подробностей.
Этот GDB был настроен как «--host = x86_64-build_apple-darwin16.3.0 --target = xtensa-esp32-elf».
Введите "показать конфигурацию" для получения подробной информации о конфигурации.
Инструкции по сообщению об ошибках см. В следующих разделах:
.
Найдите руководство GDB и другие ресурсы документации в Интернете по адресу:
.
Для получения справки введите «help».
Введите «apropos word» для поиска команд, связанных с «словом»...
Чтение символов из /Users/user/esp/example/build/example.elf...done.
Удаленная отладка с использованием /dev/cu.usbserial-31301
0x400e1b41 в app_main ()
    в /Users/user/esp/example/main/main.cpp:36
36 * ((int *) 0) = 0;
(GDB)
 
Приглашение

GDB можно использовать для проверки регистров ЦП, локальных и статических переменных и произвольных мест в памяти. Невозможно установить точки останова, сменить ПК или продолжить выполнение. Чтобы перезагрузить программу, выйдите из GDB и выполните внешний сброс: Ctrl-T Ctrl-R в IDF Monitor или с помощью кнопки внешнего сброса на плате разработки.

Ошибки медитации гуру

В этом разделе объясняется значение различных причин ошибок, напечатанных в скобках после сообщения Guru Meditation Error: Core panic'ed .

Незаконная инструкция

Это исключение ЦП указывает, что выполненная инструкция не является допустимой. Наиболее частые причины этой ошибки:

  • Функция задачи FreeRTOS вернулась. В FreeRTOS, если функция задачи должна завершиться, она должна вызвать функцию vTaskDelete () и удалить себя вместо возврата.

  • Не удалось загрузить следующую инструкцию из флэш-памяти SPI. Обычно это происходит, если:

    • Приложение перенастроило контакты флэш-памяти SPI как некоторые другие функции (GPIO, UART и т. Д.). Обратитесь к Руководству по проектированию оборудования и Техническому описанию микросхемы или модуля для получения подробной информации о выводах флэш-памяти SPI.

    • Некоторое внешнее устройство было случайно подключено к контактам флэш-памяти SPI и препятствовало обмену данными между ESP32 и флэш-памятью SPI.

InstrFetchProhibited

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

Обычно это означает попытку вызвать указатель функции, который не указывает на действительный код. Регистр PC (Program Counter) может использоваться как индикатор: он будет равен нулю или будет содержать мусорное значение (не 0x4xxxxxxx ).

LoadProhibited, StoreProhibited

Это исключение ЦП возникает, когда приложение пытается выполнить чтение или запись в недопустимую область памяти. Адрес, который был записан / прочитан, находится в регистре EXCVADDR в дампе регистра.Если этот адрес равен нулю, это обычно означает, что приложение пыталось разыменовать нулевой указатель. Если этот адрес близок к нулю, это обычно означает, что приложение пыталось получить доступ к члену структуры, но указатель на структуру был NULL. Если этот адрес является чем-то другим (значение мусора, не в диапазоне 0x3fxxxxxx 0x6xxxxxxx ), это, вероятно, означает, что указатель, используемый для доступа к данным, либо не инициализирован, либо был поврежден.

IntegerDivideByZero

Приложение попыталось выполнить целочисленное деление на ноль.

LoadStoreAlignment

Приложение попыталось прочитать или записать ячейку памяти, но выравнивание адреса не соответствует размеру загрузки / сохранения. Например, 32-битная загрузка может быть выполнена только из 4-байтового выровненного адреса, а 16-битная загрузка может быть выполнена только из 2-байтового выровненного адреса.

LoadStoreError

Приложение попыталось выполнить 8- или 16-битную загрузку / сохранение из области памяти, которая поддерживает только 32-битную загрузку / сохранение. Например, разыменование указателя char * , который указывает на память вторжений, приведет к такой ошибке.

Необработанное исключение отладки

Обычно за этим следует сообщение типа:

 Причина исключения отладки: сработала точка наблюдения за стеком (имя_задачи)
 

Эта ошибка указывает на то, что приложение выполнило запись после конца стека задачи имя_задачи . Обратите внимание, что не каждое переполнение стека гарантированно вызывает эту ошибку. Возможно, что задача выполняет запись в стек за пределами канареечного местоположения стека, и в этом случае точка наблюдения не будет запущена.

Тайм-аут прерывания wdt на CPU0 / CPU1

Указывает, что истекло время ожидания сторожевого таймера прерывания. См. Watchdogs для получения дополнительной информации.

Кэш отключен, но доступ к области кэшированной памяти

В некоторых ситуациях ESP-IDF временно отключает доступ к внешней SPI Flash и SPI RAM через кеши. Например, это происходит с spi_flash, API-интерфейсы используются для чтения / записи / стирания / mmap областей SPI Flash. В этих ситуациях задачи приостанавливаются, а обработчики прерываний, не зарегистрированные в ESP_INTR_FLAG_IRAM , отключаются.Убедитесь, что все обработчики прерываний, зарегистрированные с этим флагом, имеют весь код и данные в IRAM / DRAM. Дополнительные сведения см. В документации SPI flash API.

Другие фатальные ошибки

Затухание

ESP32 имеет встроенный детектор пониженного напряжения, который включен по умолчанию. Детектор отключения электроэнергии может вызвать сброс системы, если напряжение питания упадет ниже безопасного уровня. Детектор перебоев в работе можно настроить с помощью параметров CONFIG_ESP32_BROWNOUT_DET и CONFIG_ESP32_BROWNOUT_DET_LVL_SEL.

При срабатывании детектора пониженного напряжения выводится следующее сообщение:

 Сработал детектор отключения электроэнергии
 

Чип сбрасывается после печати сообщения.

Обратите внимание, что если напряжение питания падает с большой скоростью, на консоли можно увидеть только часть сообщения.

Поврежденная куча

Реализация кучи ESP-IDF содержит ряд проверок структуры кучи во время выполнения. Дополнительные проверки («Отравление кучи») можно включить в menuconfig.Если одна из проверок завершится неудачно, будет напечатано сообщение, подобное следующему:

 CORRUPT HEAP: Плохой хвост на 0x3ffe270a. Ожидаемый 0xbaad5678 получил 0xbaac5678
утверждение «head! = NULL» не удалось: файл «/Users/user/esp/esp-idf/components/heap/multi_heap_poisoning.c», строка 201, функция: multi_heap_free
abort () был вызван на ПК 0x400dca43 на ядре 0
 

За дополнительной информацией обратитесь к документации по отладке памяти кучи.

Разрушение стека

Защита от разрушения стека (на основе флагов GCC -fstack-protector * ) может быть включена в ESP-IDF с помощью параметра CONFIG_COMPILER_STACK_CHECK_MODE.При обнаружении разрыва стека будет напечатано сообщение, подобное следующему:

 Разрушение стека защитит отказ!

abort () был вызван на ПК 0x400d2138 на ядре 0

Backtrace: 0x4008e6c0: 0x3ffc1780 0x4008e8b7: 0x3ffc17a0 0x400d2138: 0x3ffc17c0 0x400e79d5: 0x3ffc17e0 0x400e79a7: 0x3ffc1840 0x400e79df: 0x3ffc18a0 0x400e2235: 0x3ffc18c0 0x400e1916: 0x3ffc18f0 0x400e19cd: 0x3ffc1910 0x400e1a11: 0x3ffc1930 0x400e1bb2: 0x3ffc1950 0x400d2c44: 0x3ffc1a80
0
 

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

.

Watchdogs — ESP32 — — Руководство по программированию ESP-IDF последняя документация

Обзор

ESP-IDF поддерживает два типа сторожевых таймеров: Сторожевой таймер прерывания. и сторожевой таймер задач (TWDT). Сторожевой таймер прерывания и TWDT оба могут быть включены с помощью меню конфигурации проекта, однако TWDT также может быть включен во время выполнения. Сторожевой таймер прерываний отвечает за обнаружение случаи, когда переключение задач FreeRTOS заблокировано на длительный период время.TWDT отвечает за обнаружение экземпляров задач, запущенных без урожайность в течение длительного периода.

Устройство контроля прерываний

Сторожевой таймер прерываний гарантирует, что прерывание переключения задач FreeRTOS не заблокировано в течение длительного времени. Эта плохо, потому что никаких других задач, в том числе потенциально важных, таких как задача WiFi и задача бездействия, не может получить время выполнения ЦП. Заблокированное прерывание переключения задачи может произойти из-за того, что программа столкнется с ошибкой. бесконечный цикл с отключенными прерываниями или зависание в прерывании.

По умолчанию сторожевой таймер прерываний вызывает обработчик паники. вызывая дамп реестра и возможность для программиста, чтобы узнать, используя OpenOCD или gdbstub, какой бит кода застрял с прерываниями отключен. В зависимости от конфигурации обработчика паники он также может вслепую перезагружать ЦП, что может быть предпочтительнее в производственной среде.

Сторожевой таймер прерываний построен вокруг аппаратного сторожевого таймера в группе таймеров 1. Если этот сторожевой таймер для по какой-то причине не может выполнить обработчик NMI, который вызывает обработчик паники (например,г. потому что IRAM перезаписан мусором), произойдет полный сброс SOC. Если обработчик паники запущен, он отобразит Причина паники — «Тайм-аут прерывания wdt на CPU0» или «Interrupt wdt timeout on CPU1» (как применимо).

Конфигурация

Сторожевой таймер прерываний включен по умолчанию через конфигурацию CONFIG_ESP_INT_WDT флаг. Тайм-аут настраивается установкой CONFIG_ESP_INT_WDT_TIMEOUT_MS. По умолчанию таймаут больше, если включена поддержка PSRAM, как критический раздел или процедура прерывания, которая доступ к большому объему PSRAM может занять больше времени в некоторых случаях.INT WDT таймаут всегда должен быть больше, чем период между тиками FreeRTOS (см. CONFIG_FREERTOS_HZ).

Тюнинг

Если вы обнаружите, что таймаут сторожевого таймера прерывания срабатывает из-за прерывания или критической секции работает дольше периода ожидания, подумайте о переписывании кода: критические разделы должны быть сделать как можно короче, с некритическими вычислениями, происходящими за пределами критических раздел. Обработчики прерываний также должны выполнять минимально возможный объем вычислений. помещать данные в очередь из ISR и вместо этого обрабатывать их в задаче.Ни критично секции или обработчики прерываний должны когда-либо блокироваться в ожидании другого события.

Если изменение кода для сокращения времени обработки невозможно или нежелательно, можно вместо этого увеличьте параметр CONFIG_ESP_INT_WDT_TIMEOUT_MS.

Сторожевой таймер задач

Сторожевой таймер задач (TWDT) отвечает за обнаружение экземпляров задач работает в течение длительного периода времени без податливости. Это симптом Недостаток ЦП и обычно вызван зацикливанием задач с более высоким приоритетом без уступая задачу с более низким приоритетом, таким образом, задача с более низким приоритетом Процессорное время.Это может быть признаком плохо написанного кода, циклически повторяющегося на периферийное устройство, или задача, застрявшая в бесконечном цикле.

По умолчанию TWDT будет отслеживать неактивные задачи каждого процессора, однако любая задача может подпишитесь на просмотр TWDT. Каждая отслеживаемая задача должна «сбрасывать» TWDT. периодически, чтобы указать, что им было выделено процессорное время. Если задача выполняет не сброшен в течение периода ожидания TWDT, будет напечатано предупреждение с информация о том, какие задачи не смогли вовремя сбросить TWDT, а какие задачи в настоящее время выполняются.

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

TWDT построен на основе аппаратного сторожевого таймера в группе таймеров 0. TWDT можно инициализировать, вызвав esp_task_wdt_init () , который настроит аппаратный таймер. Затем задача может подписаться на TWDT, используя esp_task_wdt_add () для наблюдения. Каждая подписанная задача должна периодически вызывайте esp_task_wdt_reset () для сброса TWDT.Отказ от любые подписанные задачи для периодического вызова esp_task_wdt_reset () указывает, что одной или нескольким задачам не хватает процессорного времени или они застряли в петля где-нибудь.

Наблюдаемое задание можно отменить подписку на TWDT с помощью esp_task_wdt_delete () . Задача, подписка на которую была отменена, не должна более длительный вызов esp_task_wdt_reset () . Как только все задачи отписались из TWDT, TWDT можно деинициализировать, позвонив esp_task_wdt_deinit () .

Период ожидания по умолчанию для TWDT устанавливается с помощью элемента конфигурации CONFIG_ESP_TASK_WDT_TIMEOUT_S. Это должно быть установлено как минимум столько, сколько вы ожидаете для отдельной задачи потребуется монополизировать ЦП (например, если вы ожидаете, что приложение будет выполнять долгую интенсивный расчет и не должен уступать другим задачам). Также можно изменить это тайм-аут во время выполнения, вызвав esp_task_wdt_init () .

Следующие параметры конфигурации управляют конфигурацией TWDT при запуске.Все они включены по умолчанию:

JTAG и сторожевые таймеры

При отладке с использованием OpenOCD процессоры будут останавливаться каждый раз при достижении точки останова. достигнуто. Однако, если сторожевые таймеры продолжают работать, когда точка останова встречаются, они в конечном итоге вызовут сброс, что очень затруднит код отладки. Поэтому OpenOCD отключит аппаратные таймеры обоих сторожевые таймеры прерываний и задач в каждой точке останова. Более того, OpenOCD не будет включите их повторно после выхода из точки останова.Это означает, что сторожевой таймер прерывания и функция наблюдения за задачами будет отключена. Никаких предупреждений или паника от любого сторожевого таймера будет генерироваться, когда ESP32 подключен к OpenOCD через JTAG.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *