Userscript примеры: Учимся писать userscript’ы / Хабр

Содержание

Блог KazanQAComm: UserScript — ленивая автоматизация

UserScript — ленивая автоматизация

Всем привет! Продолжаем бороться с рутиной на нашей работе (как мы начинали, можно почитать тут, тут и тут

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

Есть такая полезная штука как userscript ( они же userJS, юзерскрипты,
пользовательские срипты). Кратко говоря, юзерскрипт это кусок javascript кода, который хранится на компьютере
пользователя. Этот скрипт сидит себе тихо, до тех пор пока пользователь не
зайдет на страницу, которая указаны в самом скрипте. Как только появится нужная
страница, юзерскрипт выполняется и делает всякие полезные вещи на которые
только способен javascript.

Более подробно можно посмотреть на известном портале тут. (кстати, после
этой статьи я и начал изучать userscript, так что, mrMig он же Алексей, спасибо
😉 ).

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

А что же можно автоматизировать с помощью такого скрипта? Ну,
например

— Заполнение полей формы на странице

— И, вытекающее из первого, заполнение логина и пароля при
авторизации в приложении

— Еще много чего на что только способен яваскрипт (можно самим
придумать и написать в комментах).

Мы же рассмотрим только самый простой случай, заполнения логина и
пароля.

С userscript проще всего работать при помощи дополнения для Fx под
названием GreaseMonkey.

Итак, код скрипта для заполнения полей логина и пароля на сайте
будет выглядеть так: 

// ==UserScript==

// @name  
        LoginVkontakte

// @namespace
     userScripts

// @include
       http://vkontakte.ru/login*

//Маска url на которых будет выполнятся скрипт

//
==/UserScript==

document.getElementById(’email’).value
= ’[email protected]’;

document.getElementById(‘pass’).value
= ‘pass’;

При переходе на страницу, адрес
который соответствует выражению  «http://vkontakte.ru/login*».
Выполнится скрипт, и автоматически заполнятся поля логин и пароль.
Все, вам останется нажать только кнопку логин.

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

P.S. жду комментариев про то что еще можно автоматизировать на
userscript.

Следующее
Предыдущее
Главная страница

Подписаться на:
Комментарии к сообщению (Atom)

Что такое Userscripts. Чуть чуть теории. 8 960 просмотров — InstantCMS Community

Статья рассказывает о возможности юзерскриптов (они же пользовательские скрипты, или надстройки, или мезонины).

Постановка задачи

Рано или поздно у любого программера или сайтостроителя возникает зудящая мысль: что-то подправить на сайте, где он гость или пользователь. Увы, на чужом сайте он сделать ничего не может. Он просто элементарно не имеет доступа к коду.

Тем не менее, поправить очень хочется. Например, на неком сайте с полезным контентом вдруг сверху, как гильотина, падает рекламный блок. После испуга возникает раздражение: «Я это здесь разве просил? Оно мне нужно?»

Или такой пример. Когда число знакомых в некой социальной сети (наш instantcms. ru тому пример) превышает некое пороговое значение, их уже тяжело удержать в голове. Хотелось бы иметь некую записную книжку. Держать описания сетевых знакомых на отдельном файле, открывать его, когда сидишь в социальной сети и сверяться с ним? Фи, как пОшло в 21-м веке, в мире автоматизации и прогресса…

Хотелось бы иметь на сайте социальной сети автоматическую записную книжку, которая была бы всегда под рукой, в которую Вы можете вписать краткую характеристику о неком юзере: «Обманула меня в феврале 2015 года, заказала компонент, отказалась, когда он был уже готов, не выплатила гонорар», или «Этот ваще идиот и толстый тролль, сперва приписывает оппоненту гадости, потом заявляет, что оппонент в них уже уличен, а потом приписывает себе победу, хотя оппонент находится оффлайн», или «Потрясающе умная девочка, отличный программер, жалко, редко появляется», или «Мутное чмо с прогрессирущим ПГМ».

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

Но, как говорится, фигвам.

Однако, если нельзя, но очень хочется, то все-таки можно )))

По крайней мере, три основных браузера (Opera, FireFox и Chrome) поддерживают Usercripts. Ходят слухи, что их поддерживает даже Осел, но сам я этим браузером пользуюсь лишь раз в полгода. И то, когда мне нужно загрузить Оперу, после переустановки Винды. Поэтому ничего определенного сказать об этом уродце мелкомягких не могу. Safari тоже, говорят, их поддерживает, но там нужны дополнительные телодвижения.

Что это такое — Userscripts, и зачем они нафиг нужны?

Usercripts — это пользовательский скрипт. Я для него нашел несколько прозвищ — юзерсрипт, мезонин, надстройка, пользовательское расширение.

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

Пролегомены к всемогуществу* ©

Работает эта машинерия так. Браузер при своем запуске загружает в память userscript’ы и применяет их к КАЖДОЙ открытой странице. Таким образом, после загрузки страницы к ней дополнительно подсаживается ваш userscript на js или jquery. А js (а уж, тем более, jquery) позволяет делать с DOM страницы вообще все что угодно. Смекаете, как вкусно пахнет?

Поскольку этот скрипт хранится на локальной машине, и на ней же запускается, никто не в силах (даже великий и ужасный Fuze) запретить мне вешать поверх страниц instantcms.ru заметки из моей записной книжки про разных юзеров. Естественно, поскольку мезонин применяется ко всем открытым в браузере страницам, в коде следует предусмотреть простое условие, чтобы ваше пользовательское расширение применялось к странице с конкретным доменным именем.

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

Если все так хорошо, почему все так плохо?

Набрав в поиске на instantcms.ru слово «userscripts» я получил сакральную фразу «По запросу «userscripts» ничего не найдено». Аналогичную фразу я получил, набрав «пользовательский скрипт». А получив, сел писать эту статью.

Удивительно, что никто из наших гениальных разработчиков до сих пор не напал на эту золотую жилу. А тем не менее, множество продвинутых людей во всем мире этим всемогуществом пользуются. Ведь, если скрипт написан, он может быть опубликован. Например, множество скриптов можно найти на сайте userscripts.org. Более того, существуют репозитории с удобными API, где можно скачать нужный скрипт или удаленно хранить информацию.

Например, FireFox позволяет загрузить расширение GreaseMonkey. После этого использование пользовательских скриптом вообще переходит в детскую забаву — достаточно перетащить иконку скрипта из репозитория себе в браузер.

Chrome ( а с недавних пор и Opera, которая перехала на webKit) поддерживает расширение TamperMonkey, использование которого аналогично GreaseMonkey. Увы, часто бывает, что скрипты, работающие в одной «Обезьяне» не работают на другой.

Чтобы написать действительно кроссбраузерный скрипт, приходится отказываться от API, и полагаться на свои силы.

Структура пользовательского скрипта

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

Первому файлу имя вы даете сами, но расширение у файла должно быть обязательно *. user.js. Его вы пишете сами, на js, применяя для его оформления несколько простых правил. Или скачиваете из сети.

Второй файл, manifest.json или манифест, или заголовок, идет в комплекте к первому. Это обычный json-объект, куда помещается вся инфа о вашем пользовательском скрипте. Он должен быть в родительской папке единственным (иначе файловая система, которая ненавидит держать в одной папке два файла с одним именем, один из них переименует в manifest(1).json. Браузер «схватит» файл manifest.json, а не ваш manifest(1).json, что может привести к косякам). Переименовывать или удалять этот файл — означает вызвать недоумение у браузера и ругань с его стороны.

Как ставить userscript себе в браузер

Полагаю, пользовательский скрипт у вас уже есть (сами написали или где-то скачали) и вам нужно его просто подключить.

Opera

Для новой Oper’ы, на движке wenKit. Для старой… увы.
Настройка и управление (кнопка с красной буквой О) — >Расширения -> Менеджер расширенией (или Ctrl + Shift +E ), нажать кнопку «Режим разработчика». Появятся дополнительные кнопки, одна из которых «Загрузить распакованное расширение». Нажимаете на нее, и у вас откроется проводник, где вы указываете ту папку, где лежат упомянутые два файла. Если все в порядке, скрипт появится тут же, в списке подключенных пользовательских расширений. Начинает он работать сразу после перезагрузки браузера.

Chrome

Настройка и управление (кнопка «Три Полоски») -> Дополнительные инструменты -> Расширения. Поставить галку «Режим разработчика». Откроются дополнительные кнопки, одна из которых — «Загрузить распакованное расширение». Нажимаете на нее, и у вас откроется проводник, где вы указываете ту папку, где лежат упомянутые два файла. Если все в порядке, скрипт появится тут же, в списке подключенных пользовательских расширений. Начинает он работать сразу после перезагрузки браузера.

FireFox

Открыть меню (кнопка «Три Полоски») -> иконка «Дополнения». Нажав на нее, попадаем в addon’ы откуда ставим GreaseMonkey. Из этого аддона уже можно установить свой пользовательский скрипт.

О подводных камнях

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

Вся загвоздка в том, что скрипт попадает на ВАШУ локальную машину и запускается на ней. Скрипт получает полный контроль над ВСЕМИ страницами, которые открыты в браузере. Например, чужой скрипт может попытаться стырить у вас пароли, переслав их хозяину (аякс для того и придуман!). Короче, запуская у себя посторонние скрипты, хотя бы откройте их код и почитайте, что натворил там его автор. Не можете разобраться сами — попросите профи, который пишет на js и которому Вы доверяете. Другими словами, будьте осторожны.

Прощание

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

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

пользовательских скриптов. Что, если бы вы могли использовать любую Машину… | Энтони Саркис

Я очень рад представить пользовательские скрипты.

Что, если бы вы могли использовать любую модель машинного обучения для улучшения обучающих данных? Бесплатно? Знакомство с пользовательскими скриптами.

Пользовательские скрипты — это JavaScript (JS). Идея высокого уровня заключается в том, что мы можем создавать собственные функции внутри Diffgram. Вот несколько примеров того, чего вы можете добиться:

Хотите увидеть код?

Получить полный код

Бесплатно, невероятно мощно и быстро!!

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

Это мощно, потому что на самом деле это код. Вы можете запустить любую из последних моделей на NPM. Твой собственный. Комбинируйте их. и т.д. Все в браузере — моментально.

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

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

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

Например, (в сценарии) вы можете выбрать создание экземпляров. Представьте, что вы решили запустить модель сегментации. Затем вы можете использовать opencv для обработки сегментации в точки многоугольника и передать это в Diffgram, чтобы иметь интерактивные экземпляры пользователя.

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

Вы можете загрузить любые модели, которые вам нужны!

Мы стремимся сделать процесс разработки и исполнения максимально эффективным. Еще код модуля. Больше хуков событий. Больше встроенных функций. Более высокая производительность во время выполнения.

В целом, для упрощения создания мощных сценариев и обмена ими.

О, еще один подход к ускорению, верно? Ну не совсем.

Дело в том, что просто запуск модели, которая уже хорошо что-то обнаруживает, мало что значит.

Вместо этого думайте об этом больше как:

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

Другой пример: используйте что-то вроде bodypix (или буквально bodypix) для предварительной маркировки людей. Тогда настоящая супервизия состоит в том, чтобы спросить: «Этот человек разговаривает по телефону?». Модель рисует свое пространственное положение (то, что она уже знает) и мы контролируем новую информацию (по телефону).

Шкала.

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

Вы можете построить все, что захотите. Быстро. И немедленно разверните его для аннотаторов.

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

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

Зарегистрируйте учетную запись diffgram.

У нас скоро будет еще БОЛЕЕ ОГРОМНОЕ (по крайней мере, для нас) объявление! Следите за обновлениями! 🙂

Best,

Anthony

Пользовательские сценарии — pyOCD

Индекс документации

Введение

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

Если файл с именем pyocd_user.py или .pyocd_user.py помещен в каталог проекта, pyOCD
автоматически обнаружит его и загрузит как пользовательский скрипт. Если вы предпочитаете другое имя, вы можете установить
параметр сеанса user_script , например, в файле конфигурации, или
путем передачи аргумента командной строки --script=<путь> . Если относительный путь задан с помощью
параметр или командную строку, он будет найден в каталоге проекта.

Примеры

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

 # Этот пример относится к устройствам Nordic nRF52.
def will_connect (доска):
    # Создайте новую область ПЗУ для FICR. 
    ficr = RomRegion(
                имя="фикр",
                старт=0x10000000,
                длина = 0x460
                )
    # Добавляем регион FICR на карту памяти.
    target.memory_map.add_region(ficr)
 

В этом примере показано, как переопределить алгоритм флэш-памяти для внешней флэш-памяти.

 # Этот пример относится к устройствам NXP i.MX RT10x0.
# В отличие от предыдущего примера, здесь исключен аргумент board.
определение will_connect():
    # Найдите регион внешней флэш-памяти.
    extFlash = target.memory_map.get_first_matching_region(name="flexspi")
    # Установить путь к алгоритму флэш-памяти .FLM.
    extFlash.flm = "MIMXRT105x_QuadSPI_4KB_SEC.FLM"
 

В этом примере демонстрируется настройка регистра DBGMCU_CR после подключения для устройств STM32.

 # Этот пример относится к устройствам ST STM32L0x1.
DBG_CR = 0x40015804
определение did_connect():
    # Установите все биты STANDBY, STOP и SLEEP в 1.
    target.write32 (DBG_CR, 0x7)
 

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

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

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

Определяемые пользователем команды создаются с помощью декоратора @command() функции. Имя новой команды может
либо совпадать с именем оформленной функции, либо может быть задано явно с помощью имени (или первая позиция)
аргумент декоратору. Например, либо @command('mycmd') , либо @command(name='anothercmd') . Обратите внимание, что
декоратор требует круглых скобок (он должен вызываться как функция), даже если нет параметров.

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

Поддерживаемые типы параметров:

  • целое число
  • поплавок
  • ул
  • Переменные аргументы, например. *аргументы .

Параметры ключевого слова не разрешены.

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

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

Справку для новой команды можно указать, передав аргумент help декоратору @command .

Пример:

 @command(help="Расшифровать и распечатать первые несколько векторов")
def vectable (база: int):
    vecs = target. read_memory_block32 (база, 4)
    print(f"Исходный SP: {vecs[0]:#010x}")
    print(f"ResetHandler: {vecs[1]:#010x}")
    print(f"NMI: {vecs[2]:#010x}")
    print(f"HardFault: {vecs[3]:#010x}")
 

Глобальные переменные сценария

Ряд полезных символов доступен в глобальном пространстве имен пользовательских сценариев. Это включает
оба нацелены на связанные объекты, а также на части API pyOCD Python.

Доступны обычные встроенные модули Python.

Объекты и функции

Символ Описание
апс Словарь объектов CoreSight Access Port (AP). Ключи представляют собой значение APSEL.
доска Объект Board .
команда Декоратор для определения новых команд. Подробнее см. в разделе Пользовательские команды.
отладка Зарегистрировать отладочное сообщение.
дп Объект порта отладки CoreSight (DP).
ошибка Вывести журнал ошибок.
информация Вывести сообщение журнала информационного уровня.
ЖУРНАЛ Logger Объект для пользовательского скрипта.
опции Словарь параметров сеанса.
зонд Подключенный объект отладочной пробы.
сессия Объект сеанса, который является корнем графа объекта подключения.
цель Экземпляр CoreSightTarget или подкласса, представляющий MCU.
предупреждение Зарегистрировать предупреждение.

Модули и классы

Символ Описание
Тип точки останова Перечисление типов точек останова.
DeviceRegion Класс области памяти типа устройства.
Ошибка Базовый класс для всех исключений pyOCD.
Событие Перечисление типов событий уведомления.
исключения Модуль, содержащий классы исключений.
Программатор файлов Служебный класс для программирования файлов для целевой флэш-памяти.
FlashEraser Вспомогательный класс для стирания целевой вспышки.
FlashLoader Служебный класс для программирования необработанных двоичных данных в целевую память. Устарело, вместо этого используйте MemoryLoader .
FlashRegion Область флэш-памяти.
Причина остановки Перечень причин остановки.
Загрузчик памяти Служебный класс для программирования необработанных двоичных данных в целевую память.
Карта памяти Класс, представляющий карту памяти устройства.
Тип памяти Перечисление типа области памяти.
пйокд Корневой модуль pyOCD.
RamRegion Область оперативной памяти.
Тип сброса Перечисление типа сброса.
RomRegion Область памяти ПЗУ.
Тип запуска Перечисление типов операций прогона (шаг или прогон).
SecurityState Перечисление основных состояний безопасности.
Государственный Перечисление целевого состояния.
Цель Базовый целевой класс.
TransferError Класс исключения для всех ошибок передачи.
TransferFaultError Исключение подкласса TransferError для ошибок передачи памяти.
ВекторКэтч Класс пространства имен, содержащий константы битовой маски для параметров захвата вектора.
Тип точки наблюдения Перечисление типов точек наблюдения.

Функции делегирования

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

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

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

will_connect

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

 will_connect(board: Board) -> Нет
 

Параметры
board — Экземпляр Board , который должен быть инициализирован.
Результат
Игнорируется.

did_connect

Уведомление платы после инициализации.

 did_connect (плата: плата) -> нет
 

Параметры
плата — A Бортовой экземпляр.
Результат
Игнорируется.

will_init_target

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

 will_init_target (цель: SoCTarget, init_sequence: CallSequence) -> нет
 

Параметры
цель — объект SoCTarget , который должен быть инициализирован.
init_sequence CallSequence , который будет вызываться. Поскольку последовательности вызовов
mutable, этот параметр можно изменить перед возвратом, чтобы изменить вызовы инициализации.
Результат
Игнорируется.

did_init_target

Уведомление после инициализации.

 did_init_target (цель: SoCTarget) -> нет
 

Параметры
цель — Объект SoCTarget .
Результат
Игнорируется.

will_start_debug_core

Перехватчик уведомлений перед включением отладки ядра.

 will_start_debug_core (ядро: CoreTarget) -> Нет
 

Параметры
core — Объект CoreTarget , который должен быть инициализирован.
Результат
Игнорируется.

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

start_debug_core

Хук для включения отладки для данного ядра.

 start_debug_core(ядро: CoreTarget) -> Дополнительно[bool]
 

Параметры
core — Объект CoreTarget , который должен быть инициализирован.
Результат
Истинно Не выполняйте обычную процедуру запуска отладки ядра.
Ложь/Нет Продолжайте вести себя нормально.

did_start_debug_core

Уведомление о том, что отладка ядра включена.

 did_start_debug_core (ядро: CoreTarget) -> Нет
 

Параметры
core — объект CoreTarget .
Результат
Игнорируется.

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

will_stop_debug_core

Хук уведомления об отключении перед ядром для ядра.

 will_stop_debug_core (ядро: CoreTarget) -> Нет
 

Параметры
core — Объект CoreTarget .
Результат
Игнорируется.

stop_debug_core

Перехватчик отключения основной отладки.

 stop_debug_core (ядро: CoreTarget) -> Необязательный [bool]
 

Параметры
core — Объект CoreTarget .
Результат
Истинно Не выполняйте обычную процедуру отключения отладки ядра.
Ложь/Нет Продолжайте вести себя нормально.

did_stop_debug_core

Перехват уведомления об отключении ядра для ядра.

 did_stop_debug_core (ядро: CoreTarget) -> Нет
 

Параметры
core — Объект CoreTarget .
Результат
Игнорируется.

will_disconnect

Уведомление перед отключением.

 will_disconnect (цель: SoCTarget, резюме: bool) -> Нет
 

Параметры
цель — Объект SoCTarget .
резюме — Значение опция отключения_на_резюме .
Результат
Игнорируется.

did_disconnect

Уведомление после отключения.

 did_disconnect (цель: SoCTarget, резюме: bool) -> Нет
 

Параметры
цель — Объект SoCTarget .
резюме — значение параметра , отключите_на_резюме .
Результат
Игнорируется.

will_reset

 will_reset (ядро: CoreTarget, reset_type: Target.ResetType) -> Дополнительно [bool]
 

Крюк предварительной установки.

Параметры
core — экземпляр CoreTarget .
reset_type — одно из перечислений Target.ResetType .
Результат
Истинно Крючок выполнил сброс.
False/None Вызывающий абонент должен выполнить обычную процедуру сброса.

did_reset

Уведомление после сброса.

 did_reset (ядро: CoreTarget, reset_type: Target.ResetType) -> Нет
 

Параметры
core — Экземпляр CoreTarget .
reset_type — одно из перечислений Target.ResetType .
Результат
Игнорируется.

set_reset_catch

Хук для подготовки цели к остановке при сбросе.

 set_reset_catch (ядро: CoreTarget, reset_type: Target.ResetType) -> Необязательный [bool]
 

Параметры
ядро ​​ — A CoreTarget 9экземпляр 0074.
reset_type — одно из перечислений Target.ResetType .
Result
True Этот хук обрабатывает настройку перехвата сброса, вызывающая сторона ничего не должна делать.
False/None Выполнение набора перехвата сброса по умолчанию с использованием векторного перехвата.

clear_reset_catch

Хук для очистки цели после сброса и остановки.

 clear_reset_catch (ядро: CoreTarget, reset_type: Target.ResetType) -> Нет
 

Параметры
core — Экземпляр CoreTarget .
reset_type — одно из перечислений Target.ResetType .
Результат
Игнорируется.

Imacros | Все права защищены © 2021