Pull to refresh
50
-3
Евгений @ser-mk

Разработчик, исследователь, аналитик

Send message

И 17см тоже по видимому к стандарту

А с защитой памяти получается, что защищенные участки они просто перенаправляется в unmapped_ff регион и пишется лог? Никакого исключения/сигнала здесь не создается?

Спасибо за туториал!
Есть вопрос по последнему листингу

simics> controller.cpu_core->r0
0x2
simics> run 700
simics> controller.cpu_core->r0
0x4

Что за команда run 700

В гайде к симексу нет таковой. Остальные из скрипта (run-command-file к примеру имеется). Еще очень неочевидный аругмент у этой команды (700)

"Я разработчик из ST - я так вижу!"

Глаз алмаз... Поэтому тут и нет второго чтения =)

Я почему-то поленился скопировать полностью структуру GPIO_TypeDef

typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
  __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;

Там __IO - это и есть volatile

#define     __IO    volatile                  /*!< defines 'read / write' permissions   */

Для одного раз это норм отработает, дальше никто не обязан лезть еще раз в память(при определенном уровне оптимизации, разумеется!)

Спасибо что заметили, грамотное замечание

Согласен, можно и для таких тестов гонять, но я в основном использовал для тестирования сторонних чипов на плате на их работоспособность(акселерометры, езернет, звуковые синтезаторы и проч)

Кстати, спасибо за добрые слова из вашей статьи)

Суть этой технологии изложена в культовом тексте
Как перестать писать прошивки для микроконтроллеров и начать жить https://habr.com/ru/articles/433504/

Согласен, это хорошее рабочее решение для Linux c поддержкой user mode KVM :)

Спасибо за документацию. Судя по написанному в режимеUFFDIO_REGISTER_MODE_MINOR можно такое провернуть

  • For UFFDIO_REGISTER_MODE_MINOR faults, there is an existing page (in the page cache). Userspace has the option of modifying the page's contents before resolving the fault. Once the contents are correct (modified or not), userspace asks the kernel to map the page and let the faulting thread continue with UFFDIO_CONTINUE.

В 2018-ом такой штуки еще не было, исходя из этого поста https://lwn.net/Articles/844443/ это явилось в начале 21-ого

В случае записи в регистр, можно ловить и делать через userfaultfd, а если чтение из регистра требуется, то как в этом случае возвращать значение в то место где оно запрашивалось?

К примеру:

int pin_PC0_value = GPIOC->IDR & 0x1;

что бы стало в рантайме

int pin_PC0_value = 0xA5 & 0x1;

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

Да ножку можно и заMock'aть у себя в коде)

А вот аналоговую часть или что-то по шине гоняется(не быстро) вот тут помогает (мое субъективные мнение)

Прерываний нет, но тем не менее их поддерживать можно. Конечно такой скорости реакции не дождешься, но переносимость обеспечить можно.
Если переходить на polling(опрос) не хочется, то он все равно выручит с прерываниями. Можно сделать в отдельном потоке примерно такой код:

while(true){
  if(check(IRQ_flag_UART))
    IRQ_UART_Handler();
  else if(check(IRQ_flag_TIM1))
    IRQ_TIM1_Handler();
  else if(check(IRQ_flag_DMA1))
    IRQ_DMA1_Handler();
  ...
}

Вот так банально можно сделать иммитатор. Есть более сложные схемы, в зависимости от микроконтроллера и его системы прерываний.

Интересное замечание, о такой интерпретации названия не подумал)
Надеюсь оригинальное название в статье memfault понятнее звучит

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

Все сильно зависит от конфигурации вашего ПК железа, отладчика и софта отладчика

Максимум что мне пока удалось вытянуть это пару КГц переключения пина

Обычная настольная система Windows/Linux/MacOs это не реалтаймовые системы, поэтому задержка и джиттер не регламентированы, ну а так стоит готовиться скорее всего к паре миллисекунд

Если мы про первый случай с PinTool, там МК находится под отладкой

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

прошивки на нем лучше не иметь? 

Можно и иметь, через отладчик можно сбросить чип в режим halt и прошивка не будет выполняться

А вы не думали делать тестирование на основе собранного дампа обмена между устройством и вашим драйвером от пользователей?
К примеру в дампе:
устройcтво шлет пакет ААА112
Дрйвер в ответ ВВВ3232
....
Драйвер в ответ 23432432

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

Самому интересно как так получилось, но вот недавно нашел у себя локально репозиторий и перезалил

Больше не было, даже одна игра отнимала уйма времени для разработки и разбрасываться ресурсами не было возможности

Имхо, камерам в санузлах не место (от взлома устройств никто не защищен).

Фронтальную камеру можно заклеить и тогда все гениталии будут анонимны :)

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

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

Ошибся веткой

Я ничего не тырил, все в лежит в open-source можете посмотреть)

1
23 ...

Information

Rating
Does not participate
Location
Москва и Московская обл., Россия
Registered
Activity