Modded/Hacked App: CarX Street By KAR IKS TEKHNOLODZHIS, OOO
Bundle ID: com.carxtech.sr
iTunes Store Link: https://apps.apple.com/ru/app/carx-street/id1458863319?uo=4
Mod Requirements:
— Jailbroken iPhone/iPad/iPod Touch.
— iGameGod / Filza / iMazing or any other file managers for iOS.
— Cydia Substrate, Substitute or libhooker depending on your jailbreak.
— PreferenceLoader (from Cydia, Sileo or Zebra).
Hack Features:
— Custom Gold
— Custom Cash
— Custom XP
— Custom Fuel
— Custom Nitro
— Enable/Disable Traffic
— Change Your Car → check the list below → enable then quickly disable switch to not freeze your device
Note: click nitro button to activate cheat
Car List:
Non-Jailbroken & No Jailbreak required hack(s): https://iosgods.com/forum/79-no-jailbreak-section/
Modded Android APK(s): https://iosgods.com/forum/68-android-section/
For more fun, check out the Club(s): https://iosgods.com/clubs/
iOS Hack Download Link:
Hidden Content
Download Hack
Download IPA
Installation Instructions:
STEP 1: Download the .deb Cydia hack file from the link above. Use Safari/Google Chrome or other iOS browsers to download.
STEP 2: Once the file has downloaded, tap on it and then you will be prompted on whether you want to open the deb with iGameGod or copy it to Filza.
STEP 3: If necessary, tap on the downloaded file, and then, you will need to press ‘Install’ from the options on your screen.
STEP 4: Let iGameGod/Filza finish the cheat installation. Make sure it successfully installs, otherwise see the note below.
STEP 5: If the hack is a Mod Menu — which is usually the case nowadays — the cheat features can be toggled in-game. Some cheats have options that can be enabled from your iDevice settings.
STEP 6: Turn on the features you want and play the game. You may need to follow further instructions inside the hack’s popup in-game.
NOTE: If you have any questions or problems, read our Troubleshooting topic & Frequently Asked Questions & Answers topic. If you still haven’t found a solution, post your issue down below and we’ll do our best to help! If the hack does work for you, please post your feedback below and help out other fellow members that are encountering issues.
Credits:
— Zahir
Cheat Video/Screenshots:
N/A
Instantly share code, notes, and snippets.
rampfox/Sideloadly-Error.md
Last active
February 3, 2023 20:48
-
Star
2
-
Fork
0
Star
Embed
What would you like to do?
Learn more about clone URLs
Download ZIP
Sideloadly Error windows 10, Guru Meditation [Errno 22]
Raw
Sideloadly-Error.md
Guru Meditation [Errno 22]
the error showed in screen
ERROR: Guru Meditation 8d61e2@1069:2d389a [Errno 22] Invalid argument
in windows security
turned the «Real-time protection» setting to «off«.
That fixed the problem immediately.
source : lkjhgfdsapoiuytrewq from iosgods
Copy link
qwert-zxn
commented
Apr 1, 2022
qwert-zxn
commented
Apr 1, 2022
感谢
Copy link
zimowuer
commented
Aug 23, 2022
zimowuer
commented
Aug 23, 2022
thanks to this
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Содержание
- Русские Блоги
- [esp32] Анализ ошибок медитации гуру и решения
- esp32 Решение ошибки медитации гуру
- Guru Meditation
- IllegalInstruction
- InstrFetchProhibited
- LoadProhibited, StoreProhibited
- IntegerDivideByZero
- LoadStoreAlignment
- LoadStoreError
- Unhandled debug exception
- Debug exception reason: Stack canary watchpoint triggered (task_name)
- Interrupt wdt timeout on CPU0 / CPU1
- Cache disabled but cached memory region accessed
- Guru meditation error codes
- Help/Support Guru Meditation Error Sideloadly: codesig offset mismatch
- 17 posts in this topic
- Recommended Posts
- Join the conversation
- Our picks
- GODDESS OF VICTORY: NIKKE v103.8(7) +3 Cheats
- Guru Meditation Error: Core 1 panic’ed (LoadProhibited) on Adafruit Huzzah ESP32 #1411
- Comments
- Hardware:
- Description:
- Sketch:
- Debug Messages:
- Exception Decoder
Русские Блоги
[esp32] Анализ ошибок медитации гуру и решения
esp32 Решение ошибки медитации гуру
Guru Meditation
- Этот раздел будет напечатан на Guru Meditation Error: Core panic’ed Причины ошибок в скобках будут объяснены одна за другой.
IllegalInstruction
Это исключение ЦП означает, что текущая выполняемая инструкция не является допустимой. Распространенные причины этой ошибки:
- Функция задачи в FreeRTOS вернулась. В FreeRTOS, если вы хотите завершить функцию задачи, вам нужно вызвать vTaskDelete() Функция освобождает ресурсы текущей задачи вместо прямого возврата.
- Не удается загрузить следующую инструкцию из SPI Flash, обычно это происходит:
- Прикладная программа перенастраивает контакты SPI Flash на другие функции (такие как GPIO, UART и т. Д.). Для получения подробной информации о выводах SPI Flash, пожалуйста, обратитесь к руководству по проектированию оборудования и спецификации микросхемы / модуля.
- Некоторые внешние устройства случайно подключаются к контактам SPI Flash, что мешает обмену данными между ESP32 и SPI Flash.
InstrFetchProhibited
Это исключение ЦП означает, что ЦП не может загрузить инструкцию, потому что адрес инструкции не находится в допустимой области IRAM или IROM.
Обычно это означает, что в коде вызывается указатель функции, который не указывает на действительный блок кода. В этом случае вы можете проверить PC (Программный счетчик) значение регистра и сделайте дальнейшее суждение: если это 0 или другое недопустимое значение (то есть, если оно не 0x4xxxxxxx Обстоятельства) подтверждается, что это действительно причина.
Если указатель ПК указывает на недопустимую область в большом масштабе, возможная причина дамп памятиПлохой контакт на булавкеИ другие причины.
Для получения подробной информации вы можете проверить карту esp32 ниже, чтобы определить положение указателя компьютера (не ограничиваясь этим разделом).
LoadProhibited, StoreProhibited
Этот тип исключения ЦП возникает, когда приложение пытается прочитать или записать в недопустимую область памяти. Такие недопустимые адреса памяти могут быть сброшены в регистр EXCVADDR Нашел в. Если адрес равен нулю, это обычно означает, что приложение пытается разыменовать NULL указатель. Если адрес близок к нулю, это обычно означает, что приложение пытается получить доступ к члену структуры, но указатель структуры NULL , Если адрес является другим недопустимым значением (не в 0x3fxxxxxx — 0x6xxxxxxx В пределах диапазона) это может означать, что указатель, используемый для доступа к данным, не инициализирован или поврежден.
IntegerDivideByZero
Приложение пыталось разделить целое число на ноль.
LoadStoreAlignment
Ячейка памяти, которую приложение пытается читать / писать, не соответствует требованиям к размеру с выравниванием по байтам для инструкций загрузки / сохранения. Например, 32-разрядная инструкция загрузки может обращаться только к 4-разрядным адресам памяти, в то время как 16-разрядная инструкция загрузки может обращаться только к 2-байтовый адрес памяти с выравниванием.
LoadStoreError
Приложение пытается выполнить 8-битные или 16-битные операции загрузки / сохранения из области памяти, которая поддерживает только 32-битную загрузку / сохранение, например, разыменование области памяти команд. char* Указатель вызовет такую ошибку.
Unhandled debug exception
Обычно за этим следует сообщение:
Debug exception reason: Stack canary watchpoint triggered (task_name)
Эта ошибка указывает на то, что позиция, записанная приложением, находится за концом стека задач имя_задачи. Обратите внимание, что эта ошибка не запускается каждый раз при переполнении стека. Задача может обойти канарейку стека (stack canary) для доступа к стеку, в этом случае точка мониторинга не будет запущена.
Interrupt wdt timeout on CPU0 / CPU1
Это указывает на то, что истекло время ожидания сторожевого таймера прерывания.
Cache disabled but cached memory region accessed
@ С этой проблемой сталкивались многие люди, особенно здесь, чтобы подвести итог, эта часть контента благодарна Чжану, которому неудобно раскрывать свое имя, за его помощь
Причина этой проблемы в том, что во время отключения кеша (например, при использовании spi_flash API для чтения / записи / стирания / отображения SPI Flash) возникает прерывание IRAM-Safe, и программа прерывания обращается к ресурсам флэш-памяти. Обычно это происходит, когда обработчик прерывания вызывает программу во флэш-памяти и ссылается на константы во флэш-памяти. Стоит отметить, что при использовании в обработчике прерывания double Переменная типа из-за double Реализация операции переменной типаПрограммная реализацияДа, поэтому часть реализации также хранится во флэш-памяти (например, операции приведения).
Решение:
- Добавить к функции, доступ к которой осуществляется в прерывании IRAM_ATTR Модификатор
- Добавить к константе, доступ к которой осуществляется в прерывании DRAM_ATTR Модификатор
- Не используется в обработчике прерывания double Тип операция
- нужно знать:
1. Это исключение возникает только в прерывании IRAM-Safe, то есть при использовании ESP_INTR_FLAG_IRAM Зарегистрированный обработчик прерывания.
2. Это исключение будет возникать только при отключении кеша, поэтому оно не произойдет, если кеш не отключен, другими словами, исключение является случайным.
3. Компилятор может поместить некоторые переменные, которые не будут изменены, в раздел .rodata, даже если программист не добавит модификатор const. Для приложений ESP32 .rodata означает, что деталь находится во флэш-памяти. Для строковых переменных эту ситуацию легко обнаружить, но для некоторых констант обнаружить не так просто. Например, следующая ситуация
Здесь определяется массив указателей TG.Элемент массива является первым адресом регистра двух аппаратных таймеров 0 и 1. Элемент массива указателей не будет изменен, поэтому он будет помещен в .rodata компилятором. В это время TG работает в прерывании от таймера, и это прерывание происходит во время запретного периода кеширования, тогда ЦП генерирует исключение.
- Навыки отладки проблемы
- Когда ЦП выдает этот тип исключения, обычно местоположение исключения является местоположением ошибки, и вам нужно внимательно изучить
В этом примере место возникновения исключения — 0x4011b808 , вот __fixunssfdi Место хранения функции, и это место находится во внешней памяти (см. Раздел 1.3.3 esp32_technical_reference_manual). Эта функция используется для преобразования числа с плавающей запятой в 64-битное целое число без знака, что означает, что обработчик прерывания использует double Тип операции приведения данных. Эта операция не разрешена, когда кеш отключен.
- Если вы не знаете, находится ли переменная в разделе .data / .bss или .rodata, вы можете использовать команду readelf для просмотра сведений о символах в .elf
Используйте команду readelf для извлечения таблицы символов в файле elf. Чтобы узнать, как просмотреть таблицу символов, обратитесь к структуре хранения переменных языка C. С помощью таблицы символов вы можете точно увидеть место хранения и размер каждой переменной и функции. С помощью этой информации вы можете проверить, находятся ли переменные и функции, используемые в обработчике прерываний IRAM-Safe, во флэш-памяти.
Источник
Guru meditation error codes
Transcribed from an old document. Author and year unknown. Stamped by «Megadisc», a small Australian magazine-on-a-disc.
It’s not always obvious why your Amiga guru’s. With the codes below, you can break the meaning down to its basic components and get to the bottom of things.
Probably all Amiga owners have seen the guru at one time or another. The guru meditation is what your Amiga does when the low level error trapping routines catch an error before the computer crashes. When the higher-level routines detect the error you are given a requestor saying: ‘Software Failure. Task held. Finish ALL disk activity’, with two gadgets saying retry and cancel. Retry usually does nothing and cancel causes a guru.
The proper term for the guru is an alert. The alerts give you some useful information about why the Amiga crashed and what program caused the program to crash.
FORMAT OF ALERT ERROR NUMBER: #DSGeCode.TADDRESS
D :This indicates whether or not the software failure is recoverable or not (with the current OS none are really). A zero means that it is recoverable and any non-zero value means that it isn’t.
S :This (together with D) indicates the subsystem that generated the alert. The various subsystems are (DS):
00 .. Processor or none
01 .. Exec.Library
02 ..Graphics.Library
03 .. Layers.Library
04 .. Intuition.Library
05 .. Math.Library
06 .. Clist.Library
07 .. DOS.Library
08 .. RAM.Library
09 .. Icon.Library
10 .. Audio.device
11 .. Console.device
12 .. GamePort.device
13 .. Keyboard.device
14 .. Trackdisk.device
15 .. Timer.device
20 .. CIA.resource
21 .. Disk.resource
22 .. Misc.resource
0A .. Expansion.Library
30 .. Bootstrap
31 .. Workbench
32 .. Diskcopy
Ge :This indicates the general error. Basically telling you what went wrong. The various defined General Errors are (Ge):
01 .. No memory
02 .. Make Library
03 .. Open Library
04 .. Open Device
05 .. Open Resident
06 .. I/O Error
07 .. No Signal
Code :This gives more detail as to what went wrong. The value that appears here depends on the subsystem and general error.
TAddress :This is the Address of the task that caused the guru (where applicable).
Quite often the processor with trap an error. The operating system will then display a guru. These errors will only contain two digits (the right-most two digits in ‘Code’) and their meanings are:
00 .. Reset (SP). /Technically, these shouldn’t occur, but
01 .. Reset (PC). /they do pop up occassionally
02 .. Bus Error.
03 .. Address Error. A word or Long Word access was attempted on an odd address boundary.
04 .. Illegal Instruction. A program probably made a jump to somewhere it shouldn’t have.
05 .. Divide by zero. A program has attempted to divide a number by zero (a mathematical impossibility).
06 .. CHK instructions.
07 .. TRAPV Instruction. Overflow.
08 .. Privilege Violation. A program in user mode attempted to execute a privileged Instruction.
09 .. Trace. Used in some debugging.
0A & 0B .. A & F Line Emulation. Used with some coprocessors. Usually program is out of control.
18 .. Spurious interrupt.
19 to 1F .. Auto-Vector Interrupts — These should not happen as the OS uses them to detect what is going on with the hardware, but as with all others they do appear sometimes.
20 to 2F .. Trap Vectors — Usually a program is out of control.
30 to 3F .. These are reserved by Motorola. Any program causing these is probably out of control.
40 to FF .. User Interrupt Vectors — Usually a program is out of control.
Attachments Guru Meditation Errors
Источник
Help/Support Guru Meditation Error Sideloadly: codesig offset mismatch
By KevinGOD123 ,
October 23, 2020 in Help & Support
17 posts in this topic
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Our picks
GODDESS OF VICTORY: NIKKE v103.8(7) +3 Cheats
Modded/Hacked App: GODDESS OF VICTORY: NIKKE By PROXIMA BETA PTE.LIMITED
Bundle ID: com.proximabeta.nikke
iTunes Store Link: https://apps.apple.com/us/app/goddess-of-victory-nikke/id1585915174?uo=4
Mod Requirements:
— Jailbroken iPhone/iPad/iPod Touch.
— iGameGod / Filza / iMazing or any other file managers for iOS.
— Cydia Substrate, Substitute or libhooker depending on your jailbreak.
— PreferenceLoader (from Cydia, Sileo or Zebra).
Hack Features:
— God Mode
— Unlimited Ammo
— JB Check Removed
Non-Jailbroken & No Jailbreak required hack(s): https://iosgods.com/forum/79-no-jailbreak-section/
Modded Android APK(s): https://iosgods.com/forum/68-android-section/
For more fun, check out the Club(s): https://iosgods.com/clubs/
iOS Hack Download Link:
Hidden Content
Download Hack
Installation Instructions:
STEP 1: Download the .deb Cydia hack file from the link above. Use Safari/Google Chrome or other iOS browsers to download.
STEP 2: Once the file has downloaded, tap on it and then you will be prompted on whether you want to open the deb with iGameGod or copy it to Filza.
STEP 3: If necessary, tap on the downloaded file, and then, you will need to press ‘Install’ from the options on your screen.
STEP 4: Let iGameGod/Filza finish the cheat installation. Make sure it successfully installs, otherwise see the note below.
STEP 5: If the hack is a Mod Menu — which is usually the case nowadays — the cheat features can be toggled in-game. Some cheats have options that can be enabled from your iDevice settings.
STEP 6: Turn on the features you want and play the game. You may need to follow further instructions inside the hack’s popup in-game.
NOTE: If you have any questions or problems, read our Troubleshooting topic & Frequently Asked Questions & Answers topic. If you still haven’t found a solution, post your issue down below and we’ll do our best to help! If the hack does work for you, please post your feedback below and help out other fellow members that are encountering issues.
Источник
Guru Meditation Error: Core 1 panic’ed (LoadProhibited) on Adafruit Huzzah ESP32 #1411
Hardware:
Board: Adafruit Huzzah ESP32
Core Installation/update date: May 14 2018 (this is when I installed the board)
IDE name: Arduino IDE
Flash Frequency: 80Mhz
Upload Speed: 921600
Description:
I’m trying to connect to adafruit io and control an LED from the website. Doesn’t work, and get Guru Meditation Error in serial monitor
Sketch:
// digital pin A5
#define LED_PIN A5
// set up the ‘digital’ feed
AdafruitIO_Feed *digital = io.feed(«digital»);
// set led pin as a digital output
pinMode(LED_PIN, OUTPUT);
// start the serial connection
Serial.begin(115200);
// wait for serial monitor to open
while(! Serial);
// connect to io.adafruit.com
Serial.print(«Connecting to Adafruit IO»);
io.connect();
// set up a message handler for the ‘digital’ feed.
// the handleMessage function (defined below)
// will be called whenever a message is
// received from adafruit io.
digital->onMessage(handleMessage);
// wait for a connection
while(io.status() get();
// io.run(); is required for all sketches.
// it should always be present at the top of your loop
// function. it keeps the client connected to
// io.adafruit.com, and processes any incoming data.
io.run();
// this function is called whenever an ‘digital’ feed message
// is received from Adafruit IO. it was attached to
// the ‘digital’ feed in the setup() function above.
void handleMessage(AdafruitIO_Data *data) <
Serial.print(«received toPinLevel() == HIGH)
Serial.println(«HIGH»);
else
Serial.println(«LOW»);
// write the current state to the led
digitalWrite(LED_PIN, data->toPinLevel());
Debug Messages:
Adafruit IO connected.
Guru Meditation Error: Core 1 panic’ed (LoadProhibited)
. Exception was unhandled.
Core 1 register dump:
PC : 0x400d2eaf PS : 0x00060630 A0 : 0x800d2510 A1 : 0x3ffd1ec0
A2 : 0xfefefefe A3 : 0x3f400020 A4 : 0x3ffc109c A5 : 0x00000003
A6 : 0x00000001 A7 : 0x00000000 A8 : 0x800d4690 A9 : 0x3ffd1ea0
A10 : 0x00000002 A11 : 0x3f401301 A12 : 0x00000002 A13 : 0x0000ff00
A14 : 0x00ff0000 A15 : 0xff000000 SAR : 0x00000020 EXCCAUSE: 0x0000001c
EXCVADDR: 0xfefeff06 LBEG : 0x400014fd LEND : 0x4000150d LCOUNT : 0xffffffff
Backtrace: 0x400d2eaf:0x3ffd1ec0 0x400d250d:0x3ffd1ee0 0x400d1ed3:0x3ffd1f00 0x401317f3:0x3ffd1f20
Rebooting.
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:812
load:0x40078000,len:0
load:0x40078000,len:11572
entry 0x40078a5c
Connecting to Adafruit IOAdafruitIO::connect()
.
Adafruit IO connected.
Guru Meditation Error: Core 1 panic’ed (LoadProhibited)
Exception Decoder
PC: 0x400d2eaf: Adafruit_MQTT_Publish::publish(char const*) at C:UsersKeithDocumentsArduinolibrariesAdafruit_MQTT_LibraryAdafruit_MQTT.cpp line 797
EXCVADDR: 0xfefeff06
Decoding stack results
0x400d2eaf: Adafruit_MQTT_Publish::publish(char const*) at C:UsersKeithDocumentsArduinolibrariesAdafruit_MQTT_LibraryAdafruit_MQTT.cpp line 797
0x400d250d: AdafruitIO_Feed::get() at C:UsersKeithDocumentsArduinolibrariesAdafruit_IO_ArduinosrcAdafruitIO_Feed.cpp line 128
0x400d1ed3: setup() at C:UsersKeithDocumentsArduinoadafruitio_07_digital_out_ESP32/adafruitio_07_digital_out_ESP32.ino line 59
0x401317f3: loopTask(void*) at C:UsersKeithDocumentsArduinohardwareespressifesp32coresesp32main.cpp line 15
The text was updated successfully, but these errors were encountered:
Источник
esp32 Решение ошибки медитации гуру
Guru Meditation
- Этот раздел будет напечатан на
Guru Meditation Error: Core panic'ed
Причины ошибок в скобках будут объяснены одна за другой.
IllegalInstruction
Это исключение ЦП означает, что текущая выполняемая инструкция не является допустимой. Распространенные причины этой ошибки:
- Функция задачи в FreeRTOS вернулась. В FreeRTOS, если вы хотите завершить функцию задачи, вам нужно вызвать
vTaskDelete()
Функция освобождает ресурсы текущей задачи вместо прямого возврата. - Не удается загрузить следующую инструкцию из SPI Flash, обычно это происходит:
- Прикладная программа перенастраивает контакты SPI Flash на другие функции (такие как GPIO, UART и т. Д.). Для получения подробной информации о выводах SPI Flash, пожалуйста, обратитесь к руководству по проектированию оборудования и спецификации микросхемы / модуля.
- Некоторые внешние устройства случайно подключаются к контактам SPI Flash, что мешает обмену данными между ESP32 и SPI Flash.
InstrFetchProhibited
Это исключение ЦП означает, что ЦП не может загрузить инструкцию, потому что адрес инструкции не находится в допустимой области IRAM или IROM.
Обычно это означает, что в коде вызывается указатель функции, который не указывает на действительный блок кода. В этом случае вы можете проверитьPC
(Программный счетчик) значение регистра и сделайте дальнейшее суждение: если это 0 или другое недопустимое значение (то есть, если оно не0x4xxxxxxx
Обстоятельства) подтверждается, что это действительно причина.
Если указатель ПК указывает на недопустимую область в большом масштабе, возможная причина дамп памятиПлохой контакт на булавкеИ другие причины.
Для получения подробной информации вы можете проверить карту esp32 ниже, чтобы определить положение указателя компьютера (не ограничиваясь этим разделом).
LoadProhibited, StoreProhibited
Этот тип исключения ЦП возникает, когда приложение пытается прочитать или записать в недопустимую область памяти. Такие недопустимые адреса памяти могут быть сброшены в регистрEXCVADDR
Нашел в. Если адрес равен нулю, это обычно означает, что приложение пытается разыменоватьNULL
указатель. Если адрес близок к нулю, это обычно означает, что приложение пытается получить доступ к члену структуры, но указатель структурыNULL
, Если адрес является другим недопустимым значением (не в0x3fxxxxxx
— 0x6xxxxxxx
В пределах диапазона) это может означать, что указатель, используемый для доступа к данным, не инициализирован или поврежден.
IntegerDivideByZero
Приложение пыталось разделить целое число на ноль.
LoadStoreAlignment
Ячейка памяти, которую приложение пытается читать / писать, не соответствует требованиям к размеру с выравниванием по байтам для инструкций загрузки / сохранения. Например, 32-разрядная инструкция загрузки может обращаться только к 4-разрядным адресам памяти, в то время как 16-разрядная инструкция загрузки может обращаться только к 2-байтовый адрес памяти с выравниванием.
LoadStoreError
Приложение пытается выполнить 8-битные или 16-битные операции загрузки / сохранения из области памяти, которая поддерживает только 32-битную загрузку / сохранение, например, разыменование области памяти команд.char*
Указатель вызовет такую ошибку.
Unhandled debug exception
Обычно за этим следует сообщение:
Debug exception reason: Stack canary watchpoint triggered (task_name)
Эта ошибка указывает на то, что позиция, записанная приложением, находится за концом стека задач имя_задачи. Обратите внимание, что эта ошибка не запускается каждый раз при переполнении стека. Задача может обойти канарейку стека (stack canary) для доступа к стеку, в этом случае точка мониторинга не будет запущена.
Interrupt wdt timeout on CPU0 / CPU1
Это указывает на то, что истекло время ожидания сторожевого таймера прерывания.
Cache disabled but cached memory region accessed
@ С этой проблемой сталкивались многие люди, особенно здесь, чтобы подвести итог, эта часть контента благодарна Чжану, которому неудобно раскрывать свое имя, за его помощь
Причина этой проблемы в том, что во время отключения кеша (например, при использовании spi_flash API для чтения / записи / стирания / отображения SPI Flash) возникает прерывание IRAM-Safe, и программа прерывания обращается к ресурсам флэш-памяти. Обычно это происходит, когда обработчик прерывания вызывает программу во флэш-памяти и ссылается на константы во флэш-памяти. Стоит отметить, что при использовании в обработчике прерыванияdouble
Переменная типа из-заdouble
Реализация операции переменной типаПрограммная реализацияДа, поэтому часть реализации также хранится во флэш-памяти (например, операции приведения).
Решение:
- Добавить к функции, доступ к которой осуществляется в прерывании
IRAM_ATTR
Модификатор - Добавить к константе, доступ к которой осуществляется в прерывании
DRAM_ATTR
Модификатор - Не используется в обработчике прерывания
double
Тип операция
- нужно знать:
1. Это исключение возникает только в прерывании IRAM-Safe, то есть при использованииESP_INTR_FLAG_IRAM
Зарегистрированный обработчик прерывания.
2. Это исключение будет возникать только при отключении кеша, поэтому оно не произойдет, если кеш не отключен, другими словами, исключение является случайным.
3. Компилятор может поместить некоторые переменные, которые не будут изменены, в раздел .rodata, даже если программист не добавит модификатор const. Для приложений ESP32 .rodata означает, что деталь находится во флэш-памяти. Для строковых переменных эту ситуацию легко обнаружить, но для некоторых констант обнаружить не так просто. Например, следующая ситуация
static timg_dev_t *TG[2] = {&TIMERG0, &TIMERG1};
Здесь определяется массив указателей TG.Элемент массива является первым адресом регистра двух аппаратных таймеров 0 и 1. Элемент массива указателей не будет изменен, поэтому он будет помещен в .rodata компилятором. В это время TG работает в прерывании от таймера, и это прерывание происходит во время запретного периода кеширования, тогда ЦП генерирует исключение.
- Навыки отладки проблемы
- Когда ЦП выдает этот тип исключения, обычно местоположение исключения является местоположением ошибки, и вам нужно внимательно изучить
Guru Meditation Error: Core 1 panic'ed (Cache disabled but cached memory region accessed)
Core 1 register dump:
PC : 0x4011b808 PS : 0x00060034 A0 : 0x8008c664 A1 : 0x3ffbeca0
0x4011b808: __fixunsdfdi at /builds/idf/crosstool-NG/.build/src/gcc-5.2.0/libgcc/config/xtensa/ieee754-df.S:2041
A2 : 0x0099fd28 A3 : 0x00000000 A4 : 0x3ffbf6a0 A5 : 0x3f7909f1
A6 : 0x00000000 A7 : 0x00013ffc A8 : 0x80086136 A9 : 0x3ffbec80
A10 : 0xfffffffc A11 : 0x40ddd57f A12 : 0x000007fe A13 : 0x00000000
A14 : 0x65580000 A15 : 0x00000000 SAR : 0x00000014 EXCCAUSE: 0x00000007
EXCVADDR: 0x00000000 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0x00000000
Core 1 was running in ISR context:
EPC1 : 0x40086914 EPC2 : 0x00000000 EPC3 : 0x00000000 EPC4 : 0x4011b808
0x40086914: spi_flash_enable_interrupts_caches_and_other_cpu at /home/chenzhengwei/esp/esp-idf/components/spi_flash/cache_utils.c:147
0x4011b808: __fixunsdfdi at /builds/idf/crosstool-NG/.build/src/gcc-5.2.0/libgcc/config/xtensa/ieee754-df.S:2041
Backtrace: 0x4011b808:0x3ffbeca0 0x4008c661:0x3ffbecd0 0x4008c69d:0x3ffbecf0 0x400857e5:0x3ffbed10 0x40086911:0x3ffd0970 0x40086cc9:0x3ffd0990 0x40117789:0x3ffd09e0 0x4011785e:0x3ffd0a10 0x401179ea:0x3ffd0a30 0x40116c51:0x3ffd0aa0 0x40117109:0x3ffd0b20 0x40116729:0x3ffd0b90 0x40105c36:0x3ffd0bd0 0x401057d7:0x3ffd0c10 0x401058ce:0x3ffd0c40 0x4008dfb5:0x3ffd0c90
0x4011b808: __fixunsdfdi at /builds/idf/crosstool-NG/.build/src/gcc-5.2.0/libgcc/config/xtensa/ieee754-df.S:2041
0x4008c661: gpio_isr_loop at /home/chenzhengwei/esp/esp-idf/components/driver/gpio.c:433
0x4008c69d: gpio_intr_service at /home/chenzhengwei/esp/esp-idf/components/driver/gpio.c:433
0x400857e5: _xt_lowint1 at /home/chenzhengwei/esp/esp-idf/components/freertos/xtensa_vectors.S:1154
0x40086911: spi_flash_enable_interrupts_caches_and_other_cpu at /home/chenzhengwei/esp/esp-idf/components/spi_flash/cache_utils.c:147
...
В этом примере место возникновения исключения —0x4011b808
, вот__fixunssfdi
Место хранения функции, и это место находится во внешней памяти (см. Раздел 1.3.3 esp32_technical_reference_manual). Эта функция используется для преобразования числа с плавающей запятой в 64-битное целое число без знака, что означает, что обработчик прерывания используетdouble
Тип операции приведения данных. Эта операция не разрешена, когда кеш отключен.
- Если вы не знаете, находится ли переменная в разделе .data / .bss или .rodata, вы можете использовать команду readelf для просмотра сведений о символах в .elf
# Перезаписать таблицу символов в build / empty-project.elf в файл empty-project.out
readelf -a build/empty-project.elf > empty-project.out
Используйте команду readelf для извлечения таблицы символов в файле elf. Чтобы узнать, как просмотреть таблицу символов, обратитесь к структуре хранения переменных языка C. С помощью таблицы символов вы можете точно увидеть место хранения и размер каждой переменной и функции. С помощью этой информации вы можете проверить, находятся ли переменные и функции, используемые в обработчике прерываний IRAM-Safe, во флэш-памяти.