Вопросы с тегами [kernel]

0

голосов
0

ответ
5

Просмотры

Как извлечь и собрать мои устройства проприетарных двоичные файлы вместе с исходным кодом Android?

У меня есть Samsung A3 (2015), и я хочу, чтобы построить андроид от источника и загрузить его на устройство. После довольно простых шагов по https://source.android.com/ меня настроить среду на моем Mac и загрузить исходный код для леденца (5.0.2) в рабочем каталог. Теперь следующий шаг, чтобы получить проприетарные двоичные файлы для моего устройства от Samsung, который я сделал. Файлы я извлекаемые из Samsung являются: -> Kernel.tar.gz -> Platform.tar.gz Сделав эти вещи, я не могу понять, как связать их с андроид источника и компилировать это такое, что я могу успешно установить андроид от источника на устройстве. Я тщательно просмотрел в Интернете что-то, что бы мне точку в правильном направлении, но не смог найти ничего конкретного. Я понимаю, что для пиксельных устройств Googles, двоичные файлы доступны на веб-сайте и прийти в виде самораспаковывающийся сценария, который должен быть запущен из корня дерева исходных текстов. Однако, когда я распаковать два tar.gz файлов от Samsung я получаю кучу других файлов вместе с несколькими сценариями, и я не знаю, куда девать их. При поиске ресурсов в Интернете, я читал о чем-то называется деревом устройств и удался найти дерево устройств для моего A3 по этой ссылке: - https://github.com/vlw/android_device_samsung_a3-common Однако, я не знает, как использовать его. Я пробовал много других поисков, но ни один из них не был в состоянии ответить на мой вопрос не уверен, куда поместить их. При поиске ресурсов в Интернете, я читал о чем-то называется деревом устройств и удался найти дерево устройств для моего A3 по этой ссылке: - https://github.com/vlw/android_device_samsung_a3-common Однако, я не знает, как использовать его. Я пробовал много других поисков, но ни один из них не был в состоянии ответить на мой вопрос не уверен, куда поместить их. При поиске ресурсов в Интернете, я читал о чем-то называется деревом устройств и удался найти дерево устройств для моего A3 по этой ссылке: - https://github.com/vlw/android_device_samsung_a3-common Однако, я не знает, как использовать его. Я пробовал много других поисков, но ни один из них не был в состоянии ответить на мой вопрос
Varun
1

голосов
0

ответ
271

Просмотры

resizing file size with ftruncate() after mmap()

Фрагмент кода отлично работает на моей машине (Linux / x86-64) INT основной () {символ * адр; INT гс; INT Fd; сопзЬ size_t PAGE_SIZE = 4096; // предполагая, что размер страницы 4096 символ BUF [PAGE_SIZE]; MemSet (BUF, 'х', SizeOf (BUF)); // проверка ошибок игнорируется, для демонстрационных целей FD = открытый ( "ABC", O_RDWR | O_CREAT, S_IWUSR | S_IRUSR); ftruncate (FD, 0); написать (FD, ЬиЕ, 4090); // размер файла меньше, чем одна страница, но мы выделяем 2 страницы адресного пространства эл = ММАП (NULL, PAGE_SIZE * 2, PROT_WRITE, MAP_SHARED Ф.Д., 0); // это будет катастрофа, если чтение / запись из адр [4096] // увеличить размер после MMAP ftruncate (FD, PAGE_SIZE * 2); // теперь мы можем получить доступ (чтение / запись) адр [4096] ... адр [4096 * 2 -1] munmap (адрес, PAGE_SIZE * 2); близко (FD); Выход (EXIT_SUCCESS); } Но POSIX говорит: Если размер отображенных изменений файлов после вызова MMAP () в результате какой-либо другой операции на отображенный файл, эффект ссылок на участки отображенной области, которые соответствуют добавлен или удалены частям файла не определен. Таким образом, я предполагаю, что это не является переносимым способом. Но это гарантировано будет работать на Linux?
tristan
1

голосов
0

ответ
67

Просмотры

Призовите execvp из драйвера Linux

В настоящее время, я хочу, чтобы позвонить execvp из ядра стороны. Моя программа запрограммирована, чтобы перейти в режим прекращения. Так что я пытался настроить код ниже: символ * ARGV [] = { "/ SBIN / привале", "-f", NULL}; символ * envp [] = { "SHELL = / бен / ш", "HOME = /", "PATH =.: / SBIN: / USR / SBIN: / бен: / USR / бен", "PWD = /", НОЛЬ }; гс = call_usermodehelper (ARGV [0], ARGV, envp, UMH_WAIT_EXEC); Кажется, что код может выполнить команду HALT хорошо. Но это не соответствует требованию о электрическом сигнале. Я проверил, когда я называю execvp из пользовательского пространства: execvp ( «Привал», ARGV); Он работал хорошо, как ожидалось. Я знаю, что execvp заменит ток, протекающий программирование на новый указанный при переходе аргумента. Когда я использую call_usermodehelper, что не произойдет, я думаю, что это может быть разница. Кто-нибудь знает, как я могу решить эту проблему? Как сделать execvp работу водителя аналогично пространства пользователя. Спасибо!
Tiktac
1

голосов
1

ответ
1.7k

Просмотры

How to activate bcm2835_wdt watchdog kernel module for raspberry pi 3?

Я пытался активировать bcm2835_wdt сторожевой модуль Raspberry Pi 3 в течение 6 часов, но я не мог. Modprobe bcm2835_wdt не возвращает ошибки, но lsmod команда не возвращает bcm2835_wdt модуля в списке. Я загружен сторожевой и затем chkconfig; SUDO chkconfig сторожевые когда я пытаюсь запустить службу Sudo /etc/init.d/watchdog начала я получил ошибку [....] Запуск сторожевого таймера (через systemctl): watchdog.service Работа для watchdog.service не удалась, поскольку в процессе управления завершался с кодом ошибки. Смотрите «systemctl watchdog.service статус» и «journalctl -xe» для деталей. не удалось! journalctl -xe возвращается; - Ядро запуска требуется 2093448 микросекунд. - - первоначальный RAM диск запуска требуется INITRD_USEC микросекунд. - - В пространстве пользователя запуска требуется 5579375635 микросекунд. 11 января 16:03:45 аль Судо [935]: корень: Телетайп = очки / 1; PWD = /; USER = корень; КОМАНДА = / и т.д. / init.d / сторожевой запуск Jan 11 16:03:45 аль Sudo [935]: pam_unix (Sudo: сессия): сеанс открыт для корневого пользователя от корня (UID = 0) Jan 11 16:03:46 аль Systemd [1]: Запуск сторожевого демона ... - Тема: блок watchdog.service начался запуск - Defined-By: Systemd - Поддержка: https://www.debian.org/support - - - блок watchdog.service начала запуска. 11 января 16:03:46 аль ш [949]: Modprobe: ** FATAL: Модуль не dcm2835_wdt найден в каталоге /lib/modules/4.9.59-v7+** 11 января 16:03:46 аль Systemd [1]: watchdog.service: процесс управления вышел, код = выход из состояния = 1 11 января 16:03:46 аль Systemd [1]: Не удалось запустить сторожевого демона. - Тема: Блок watchdog.service не удалось - Defined-By: Systemd - Поддержка: https://www.debian.org/support - - Блок watchdog.service не удалось. Мой вопрос заключается в том, как включить сторожевой модуль ядра bcm2835_wdt для малинового PI3? Заранее спасибо...
user1712451
1

голосов
0

ответ
273

Просмотры

Как отключить ведение журнала в dmesg (/ Proc / kmsg) для конкретного устройства / драйвера?

Я использую TechnoTrend TT-подключить S2-3600, который известен для рассылки спама dmesg (соответственно / Proc / kmsg) со следующими ошибками: [+8360,122449] pctv452e: ошибка I 2 C -121; AA A1 CC 00 01 -> 55 a1 31 03 куб.см 00 00 [8360,135079] pctv452e: I2C ошибка -121; АА В8 CC 00 01 -> 55 B8 31 03 00 00 куб.см [8360,202210] pctv452e: I 2 C ошибка -121; АА Д4 CC 00 01 -> 55 d4 31 03 00 00 куб.см [8360,936229] pctv452e: I 2 C ошибка -121; АА 42 CC 00 01 -> 55 42 31 03 00 00 куб.см [8360,951637] pctv452e: I 2 C ошибка -121; АА 59 CC 00 01 -> 55 59 31 03 00 00 куб.см [8361,019133] pctv452e: I 2 C ошибка -121; AA 75 CC 00 01 -> 55 75 31 03 00 00 куб.см Поскольку ошибка I2C не будет исправлена, что я могу сделать, чтобы избежать спама в dmesg? Есть ли возможность / Дев / нуль сообщений для конкретных устройств?
schmodd
1

голосов
0

ответ
85

Просмотры

Ядро аварии ошибка вызвана ixgbevf модуля ядра из CentOS-3.10.0-229.20.1.el7?

I found a bug about ixgbevf kernel module on centos-3.10.0-229.20.1.el7. And I think this bug is fixed in 3.10.0-514.10.2.el7. So could someone tell me which patch fix this bug, or how to find this patch? BUG: [308026.586026] ixgbevf 0000:01:10.0: NIC Link is Down [308026.586037] ixgbevf 0000:01:10.1: NIC Link is Down [308026.683724] bonding: bond1: link status definitely down for interface enp1s16, disabling it [308026.683728] bonding: bond1: now running without any active interface ! [308026.683729] bonding: bond1: link status definitely down for interface enp1s16f1, disabling it [308028.266060] bonding: bond1: Removing slave enp1s16. [308028.266135] bonding: bond1: Warning: the permanent HWaddr of enp1s16 - 4e:cd:a6:59:26:2c - is still in use by bond1. Set the HWaddr of enp1s16 to a different address to avoid conflicts. [308028.266139] bonding: bond1: releasing active interface enp1s16 [308028.359872] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 [308028.361319] IP: [] ixgbevf_alloc_rx_buffers+0x60/0x160 [ixgbevf] [308028.362049] PGD 0 [308028.362777] Oops: 0000 [#1] SMP [308028.363481] Modules linked in: ixgbevf(OF) igb_uio(OF) iptable_mangle iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_filter nbd(OF) vhost_net macvtap macvlan udp_diag unix_diag af_packet_diag netlink_diag tun tcp_diag inet_diag uio bonding ext4 mbcache jbd2 intel_powerclamp coretemp kvm_intel kvm crct10dif_pclmul crc32_pclmul crc32c_intel ghash_clmulni_intel mgag200 aesni_intel iTCO_wdt lrw dcdbas gf128mul syscopyarea sysfillrect iTCO_vendor_support glue_helper sysimgblt ablk_helper ttm cryptd ipmi_devintf igb ixgbe drm_kms_helper drm i2c_algo_bit ptp i2c_core ipmi_si pps_core sg mdio ipmi_msghandler dca sb_edac mei_me mei shpchp lpc_ich pcspkr mfd_core edac_core wmi acpi_power_meter acpi_pad ip_tables xfs libcrc32c sd_mod crc_t10dif crct10dif_common ahci libahci [308028.368487] libata megaraid_sas [last unloaded: ixgbevf] [308028.369345] CPU: 0 PID: 21971 Comm: kworker/0:1 Tainted: GF W O-------------- 3.10.0-229.el7.x86_64 #1 [308028.370226] Hardware name: Dell Inc. PowerEdge R720/068CDY, BIOS 2.5.2 01/28/2015 [308028.371132] Workqueue: events ixgbevf_service_task [ixgbevf] [308028.372038] task: ffff88022b0dad80 ti: ffff88010905c000 task.ti: ffff88010905c000 [308028.372965] RIP: 0010:[] [] ixgbevf_alloc_rx_buffers+0x60/0x160 [ixgbevf] [308028.373949] RSP: 0018:ffff88010905fd10 EFLAGS: 00010287 [308028.374900] RAX: 0000000000000200 RBX: 0000000000000000 RCX: 0000000000000000 [308028.375895] RDX: 0000000000000000 RSI: 00000000000001ff RDI: ffff8800b82061c0 [308028.376841] RBP: ffff88010905fd48 R08: 0000000000000282 R09: 0000000000000001 [308028.377780] R10: 0000000000000004 R11: 0000000000000005 R12: 0000000000000000 [308028.378702] R13: 00000000fffffe00 R14: 00000000000001ff R15: ffff8800b82061c0 [308028.379628] FS: 0000000000000000(0000) GS:ffff882f7fa00000(0000) knlGS:0000000000000000 [308028.380540] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [308028.381471] CR2: 0000000000000008 CR3: 000000000190a000 CR4: 00000000001427f0 [308028.382376] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [308028.383291] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [308028.384180] Stack: [308028.385051] ffff8832d1b58bc0 ffff88010905fd28 ffff8832d1b588c0 0000000000000009 [308028.385933] ffff8832d1b58bc0 ffff8800b82061c0 0000000000001028 ffff88010905fdb8 [308028.386804] ffffffffa0496ba3 ffff8832d1b58e58 000000022b1e2000 00000000819e2108 [308028.387693] Call Trace: [308028.388520] [] ixgbevf_configure+0x5d3/0x7d0 [ixgbevf] [308028.389363] [] ixgbevf_reinit_locked+0x65/0x90 [ixgbevf] [308028.390213] [] ixgbevf_service_task+0x324/0x420 [ixgbevf] [308028.391043] [] process_one_work+0x17b/0x470 [308028.391888] [] worker_thread+0x11b/0x400 [308028.392728] [] ? rescuer_thread+0x400/0x400 [308028.393576] [] kthread+0xcf/0xe0 [308028.394434] [] ? kthread_create_on_node+0x140/0x140 [308028.395339] [] ret_from_fork+0x7c/0xb0 [308028.396205] [] ? kthread_create_on_node+0x140/0x140 [308028.397068] Code: c5 41 89 f6 49 89 c4 48 8d 14 40 48 8b 47 28 49 c1 e4 04 4c 03 67 20 48 8d 1c d0 0f b7 47 4c 41 29 c5 66 0f 1f 84 00 00 00 00 00 83 7b 08 00 74 73 8b 53 10 48 8b 03 48 01 d0 49 83 c4 10 48 [308028.398959] RIP [] ixgbevf_alloc_rx_buffers+0x60/0x160 [ixgbevf] [308028.399910] RSP [308028.400846] CR2: 0000000000000008
batmancn
1

голосов
1

ответ
511

Просмотры

What is kernel dynamic memory in linux systems and how to free it

Этот вопрос связан с https://serverfault.com/questions/896282/cannot-explain-memory-occupancy-in-linux/896525#896525 и Как правильно определить и устранить утечку памяти на сервере? Что такое ядро ​​динамической памяти? Я никогда практически не процесс, запущенный в моей рабочей станции теперь $ пс Окс --sort -rss | глава USER PID% CPU% MEM VSZ RSS TTY STAT START TIME COMMAND корень 987 0,0 0,0 54284 15932? Сс Feb09 0:03 / Библиотека / Systemd / Systemd-journald imoline + 49734 0,0 0,0 24640 8672 PTS / 0 SS + Feb13 0:05 / бен / Баш rstudio + 4803 0,0 0,0 7400 128608? Ssl Feb09 0:39 / USR / Библиотека / rstudio-сервер / бен / rserver imoline + 53699 0,0 0,0 23356 7224 PTS / 2 Ss Feb13 0:04 / бен / Баш imoline + 68563 0,0 0,0 23200 6876 очки / 1 Сс 10:37 0: 00 -bash корень 1 0.0 0. 0 204660 6804? Сс Feb09 0:05 / SBIN / INIT корень 68556 0,0 0,0 99308 6800? Ss 10:37 0:00 SSHd: imolineris [собств] корень 4770 0,0 0,0 69944 6484? Ss Feb09 0:00 / USR / SBIN / SSHD -D, но до сих пор я память, занимаемую в соответствии с свободным $ бесплатно -g Использовано свободного общего бафф / кэш доступен Mem: 125 67 56 0 1 57 Swap: 119 0 119 и SMEM $ Sudo SMEM -t -w -p Область Б кэш Noncache прошивки / оборудование 0.00% 0.00% 0.00% образ ядра 0.00% 0.00% 0.00% ядро ​​динамической памяти 54,68% 1,25% 53,43% 0,06 памяти в пользовательском пространстве% 0,03% 0,03% свободной памяти 45 ,
mox
1

голосов
1

ответ
511

Просмотры

How to trun on graphics acceleration (kernel-module-imx-gpu-viv) on i.Mx6Q (buildroot)?

Я ввожу эти команды на i.Mx6Q (Buildroot) с qt5 # экспорт QT_QPA_EGLFS_INTEGRATION = eglfs_viv # CinematicExperience-демо -platform eglfs демо приложение работает нормально, но он показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции EGL устройства «eglfs_viv» Я нашел это сказал, эта ошибка означает, что я не ускорение графики на доске. И это говорит, что мне нужно, чтобы включить ядро-модуль-IMX-ГП-Львов libgles2-mx6 libegl-mx6 Наконец, я нашел это сказало, версия ядра должна от 3.10.x до 4.1.x. Таким образом, я могу изменить его в 4.1.15, как это в конфигурационном меню (оригинальная версия 4.14.14): Ядро версия (Пользовательский Git репозиторий) (мерзавец: //git.freescale.com/imx/linux-imx.git) URL обычая хранилище (rel_imx_4.1.15_2.0.0_ga) Выборочный хранилище версия (imx_v7_mfg) имя Defconfig (доска / Freescale / imx6-sabresd / linux_qt5. фрагмент) Дополнительный фрагмент файлы конфигурации ядра двоичный формат (zImage) [*] построить устройство дерева Blob (DTB) (imx6q-sabresd) имена файлов устройств Tree Source Это компилировать успешно, но когда я разворачивать на SD-карту и попытаться запустить QT демо он показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции устройств EGL «eglfs_viv» MESA-ПОГРУЗЧИК: не удалось получить информацию об устройстве GBM: не удалось открыть драйвер (пути поиска / USR / Lib / DRI) GBM: Последняя dlopen ошибка: Файл не найден не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Вопросы неисправностей Сегментация: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? но когда я раскрываю на SD-карту и попробуйте запустить QT демо показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции устройств EGL «eglfs_viv» MESA-ПОГРУЗЧИК: не удалось получить информацию об устройстве GBM: не удалось открыть любой драйвер (пути поиска / USR / Lib / DRI) GBM: Последняя dlopen ошибка: Файл не найден не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Сегментация Вопросы неисправностей: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? но когда я раскрываю на SD-карту и попробуйте запустить QT демо показывает: qt.qpa.egldeviceintegration: Не удалось загрузить интеграции устройств EGL «eglfs_viv» MESA-ПОГРУЗЧИК: не удалось получить информацию об устройстве GBM: не удалось открыть любой драйвер (пути поиска / USR / Lib / DRI) GBM: Последняя dlopen ошибка: Файл не найден не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Сегментация Вопросы неисправностей: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? Файл не найден Не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Вопросы неисправностей Сегментация: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо? Файл не найден Не удалось загрузить драйвер: Vivante drmModeGetResources не удалось Вопросы неисправностей Сегментация: Как включить ускорение графики на i.Mx6Q (Buildroot)? Есть ли включить «ядро-модуль-IMX-ГП-Вив» является правильным шаг? Если это верно, чем то, как установить ядро ​​с более низкой версией, чтобы успешно запустить QT демо?
Julia Ding
1

голосов
1

ответ
150

Просмотры

Как функция работает cdev_add ()?

Правильно ли я понимаю, что, когда структура инициализируется структура dev_t Dev; DEV = MKDEV (основной, minor_first); Я создаю только файл устройства, это правильно сказать - к узлу. Далее, я должен указать, как я буду работать с этим устройством? Для этого вам понадобится функция cdev_add (& my_ch_dev, Dev, minor_count); после того, как cdev_init (& my_ch_dev, & dev_fops); Таким образом, я имею в виду, что мой водитель будет работать с созданным узлом в качестве символьного устройства? Заранее спасибо!
Ayrat Arifullin
0

голосов
0

ответ
5

Просмотры

Могу ли я обновить ядро ​​с ядром для другого распределения?

У меня есть малину на Raspbian и виртуальную машину на Kali Linux. Мой вопрос прост: Kali основан на Debian. Kali последнее ядро ​​4,19, но Debian последний ядро ​​составляет около 4,9. Таким образом, я могу добавить DEBiAN sources.list к моему Кали и обновить ядро ​​до Debian 4.9? Я попробовал, и это, кажется, работает. Является ли обновление ядра возможно только с распределениями, которые имеют один и тот же менеджер пакетов (ни, кв ...)? Спасибо ! процедура
processus thief
1

голосов
1

ответ
261

Просмотры

Как установить оценку плотности ядра на колонке pyspark dataframe и использовать его для создания нового столбца с оценками

Мое использование заключается в следующем. Рассмотрим У меня есть pyspark dataframe, который имеет следующий формат: df.columns: 1. чч: Содержит час дня (тип INT) 2. идентификатор пользователя: некоторые уникальный идентификатор. То, что я хочу сделать, я хочу, чтобы выяснить список UserIds, которые имеют аномальные хиты на страницу. Поэтому я сначала сделать GroupBy, как так: DF = df.groupby ( "чч", "идентификатор пользователя) .count () псевдоним. (" LoginCounts) Теперь формат dataframe будет: 1. чч 2. USERID 3.LoginCounts : Количество раз конкретный пользователь входит в систему на определенный час. Я хочу использовать функцию Kde pyspark следующим образом: от pyspark.mllib.stat импорта KernelDensity Kd = KernelDensity () kd.setSample (df.select ( "LoginCounts") РДД.) Kd.estimate ([13.0,14.0]). Я получаю ошибку: Py4JJavaError: Произошла ошибка при вызове o647.estimateKernelDensity. : Org.apache.spark.SparkException: Работа прервана из-за сбоя стадии Теперь моя конечная цель заключается в подгонке на KDE говорят данные, основанные на один день в час, а затем использовать данные на следующий день, чтобы получить оценку вероятности для каждого счетчика входа. Например: Я хотел бы, чтобы достичь чего-то такого рода:. Df.withColumn ( "kdeProbs", kde.estimate (седловины ( "LoginCounts))) Таким образом, kdeProbs столбец будет содержать P (LoginCount = х | оценивается Kde) Я попытался поиск для примера тот же, но я всегда перенаправлены на стандартный пример Kde на странице spark.apache.org, который не решает мой случай. LoginCounts))) Таким образом, kdeProbs столбец будет содержать P (LoginCount = х | оценивается KDE). Я попытался найти пример такой же, но я всегда перенаправлены на стандартный пример Kde на spark.apache.org странице, которая не решает мой случай. LoginCounts))) Таким образом, kdeProbs столбец будет содержать P (LoginCount = х | оценивается KDE). Я попытался найти пример такой же, но я всегда перенаправлены на стандартный пример Kde на spark.apache.org странице, которая не решает мой случай.
knagesh
1

голосов
0

ответ
215

Просмотры

Отладка ядра с помощью kgdb / GDB на целевой руке?

Я получил vmlinux.uimg и vmlinux от моего друга. Vmlinux построен с Linux версии 4.14.10. У меня есть две машины: мишень (рычаг 32 разрядная архитектура) и хост (архитектура x86) Обе системы соединены с проводом, номера портов / DEV / ttySAC3 и / DEV / ttyUSB0 соответственно. Target загрузки путем чтения файла изображения vmlinux.uimg с сд карты. Я хочу, чтобы отладить эту vmlinux от моего хозяина машины. Шаги я следующие являются: Начало Миником в хосте. Тип эхо ttySAC3,115200> / SYS / модуль / kgdboc / параметры / kgdboc в Minicom. Я получаю «KGDB: Registered драйвер ввода / вывода kgdboc». Введите эхо г> / Труды / SysRq-триггера в Minicom я получаю «SYSRQ DEBUG и Ввод KGDB». Закрыть Миником. Перейти к vmlinux папку через терминал в хост-машине. Тип GDB vmlinux [Примечание: это GDB я использую 7. 10 версия для руки] В типа GDB целевого пульта дистанционного управления / DEV / ttyUSB0 Это дает мне сообщение Удаленная отладка с помощью / DEV / ttyUSB0 0xc0d14f5 в sysrq_dbg_op () В GDB типа б do_mmap_pgoff я получаю сообщение точки останова 1 в хххх: do_map_pgoff (4 месте ) В продолжении типа GDB Это дает мне сообщение Continuing. а затем ничего не делает .. Проблемы: GDB продолжать не работает, как ожидалось. Я ожидаю, последний шаг (9) для продолжения целевого рестарта и попал в точку останова вместо этого он получает аварию. GDB шаг и следующий не работает, как ожидалось. Пошагово до выхода из sysrq_dbg_op (), который не имеет никакой информации номер строки. «Предупреждение: неверный удаленный ответ». GDB «беги» тоже не работает. Он отображает сообщение «Удаленный адресат не поддерживает запуск» Как я могу вызвать модуль на моей цели, на которую я поставил точку останова, как я не могу использовать Миник и GDB одновременно. Что все шаги, которые я должен следовать после того, как заморозить ядро. Что плохого в этом процессе?
Aparna Kumari
1

голосов
1

ответ
21

Просмотры

Изменение аргумента командной строки из самого ядра

Я столкнулся с вопросом, где BIOS всегда игнорировать все, что я установил для CmdLine. Она использует только жёстко CmdLine где отправить неправильный параметр. В «консоли = ttyS0» «S» имеет строчными. У меня нет исходного кода BIOS, следовательно, не может изменить там. Я пытался изменить нижний «S» в Верхний «S» из самого ядра. Однако я не увенчались успехом до сих пор. Вот то, что я пытался. недействительным __init setup_arch (символ ** cmdline_p) {* cmdline_p = command_line; / * Пробовал менять command_line до этой строки * /} внесены изменения, как показано ниже. недействительным __init setup_arch (символ ** cmdline_p) {{символ * PTR = NULL; PTR = strstr (command_line, "ttyS0"); если (PTR) PTR [3] = 'S'; } * Cmdline_p = command_line; } Когда я пытаюсь загрузиться с этим изменением, кажется, зависание ядра. Похоже, сейчас я стараюсь изменить command_line, ядро ​​зависает. command_line объявляется, как показано ниже. статический символ __initdata command_line [COMMAND_LINE_SIZE]; Есть ли __initdata ставит какие-либо ограничения? Любое предложение, как я могу добиться того, что я пытаюсь сделать?
Dipak Das
1

голосов
0

ответ
82

Просмотры

ECN отметка в убунту

Требования У меня есть две машины Ubuntu, и я хочу, чтобы ECN пометить все пакеты, поступающие из первого и обнаружить его в другой машине. Попытка я изменил ан-очереди sch_tbf.c (Qdisc) и добавляют INET_ECN_set_ce (SKB); Я могу видеть внутри машина 1 (генератора), что ECN установлен, но когда пакеты достигают другую машину, этот знак исчез (TOS = 0). Мне было интересно, если кто-то может мне помочь в реализации this.I включена переадресация и я вижу, пакеты достигают второго one.I также позволило ECN с помощью прок.
mojtaba malekpour
1

голосов
0

ответ
79

Просмотры

Применение висит в вызове ZwWriteFile

У меня есть проблема с приложением Java (Eclipse RCP) работает на 64-битной Window (проблема не возникает, если приложение работает с 32-битной JVM) Проблема также не возникает, если приложение работает в отладчике. В приложении отладочный вывод сделан с System.err.print (...). Если приложение, то не работает под управлением отладчика, то поток UI просто случайно замерзает. Я приложил к процессу с помощью GDB и увидел, что процесс висит в вызове ZwWriteFile. (GDB), где # 0 0x000000007745bdba в NTDLL! ZwWriteFile () из /cygdrive/c/windows/SYSTEM32/ntdll.dll # 1 0x000007fefd3a1b3b в WriteFile () из /cygdrive/c/windows/system32/KERNELBASE.dll # 2 0x0000000077311f66 в WriteFile () из /cygdrive/c/windows/system32/kernel32.dll # 3 0x000000006651cb65 в Java! handleRead () из /cygdrive/d/Programme/Razorcat/Shared/1.3/JRE_1.8/bin/java.dll # 4 0x000000006651c31e в Java! JNI_OnLoad () из /cygdrive/d/Programme/Razorcat/Shared/1.3/JRE_1 +0,8 / бен / java.dll # 5 0x0000000066512dc9 в Java! Java_java_io_FileOutputStream_writeBytes () из /cygdrive/d/Programme/Razorcat/Shared/1.3/JRE_1.8/bin/java.dll (БГД) disass Свалка ассемблера для функции Ntdll ZwWriteFile: 0x000000007745bdb0: мов% RCX,% r10 0x000000007745bdb3: мов $ 0x5,% EAX 0x000000007745bdb8: системный вызов => 0x000000007745bdba: retq 0x000000007745bdbb: nopl 0x0 (% Ракс,% Ракс, 1) кто-нибудь когда-нибудь была такая проблема? Есть ли способ (отладчик ядра?), Чтобы исследовать эту проблему более подробно. Ниже функция (io_util_md.c), которая вызывает функцию API WriteFile Windows. Может быть, что Windows, имеет проблемы с перекрытым вводом-выводом на псевдо ручках. (Я предполагаю, что процесс имеет никакого стандарта не обрабатывает, когда он не работает в отладчике) статический JINT writeInternal (FD дескриптор, сопзИте пустоту * ЬаЯ, JINT длина, jboolean Append) {результат BOOL = 0; DWORD записывается = 0; РУЧКА ч = (HANDLE) FD; если (ч = INVALID_HANDLE_VALUE!) {ПЕРЕКРЫВАЕТСЯ OV; LPOVERLAPPED lpOv; если (добавить == JNI_TRUE) {ov.offset = (DWORD) 0xFFFFFFFF; ov.OffsetHigh = (DWORD) 0xFFFFFFFF; ov.hEvent = NULL; lpOv = & OV; } Еще {lpOv = NULL; } Результат = WriteFile (ч / * дескриптор файла для записи * / БУФ, / * указатели на буфера * / LEN, / * Количество байт для записи * / & написано, / * Получает число записанных байт * / lpOv); / * Перекрывается структура * /} если ((ч == INVALID_HANDLE_VALUE) ||| (результат == 0)) {возвращают -1; } Возвращение (JINT) записывается; }
Der Appit
1

голосов
0

ответ
177

Просмотры

Как отлаживать инициализации Segfault во время загрузки в Linux

Контекст: Загрузка Android в эмуляторе (QEMU), используя ядро ​​пользовательского Linux. В какой-то момент во время загрузки, dmesg показывает: [...] INIT [1]: в 14 выдаёт ошибку сегментации ф 0000000000566abb зр 00007ffc181a8670 ошибки 4 в инициализации [400000 + 22e000], а затем ядро ​​входит в bootloop с [...] INIT : Reboot окончание, переход к ядру [...] перезагрузка: перезапуск системы с командой «загрузчиком» [...] перезагрузки: перезагрузка машины Итак, мне нужно несколько советов о том, как отладить эту вещь. Как я могу знать, что является причиной этой ошибки в инициализации? Спасибо!
Dimitrius J
1

голосов
1

ответ
1.1k

Просмотры

Как создать панику ядра в RHEL без перезагрузки после паники

Мне нужно, чтобы создать панику ядра, и я попытался следующим SYSCTL kernel.panic = 0 && эхо с> / Труды / SysRq-триггер Когда я побежал команды выше. Я вижу, система всегда перезагружается. Мне нужна система находиться в режиме паники без перезагрузки
Azhar Hussain
1

голосов
1

ответ
110

Просмотры

PALLOC Linux Kernel 4.4

Пытается получить PALLOC (https://github.com/heechul/palloc) для кэш-разбиения работать на ядре Linux 4.4.123. Мы используем Ubuntu 16.04. Проблема заключается в том, что мы не можем создать контрольную группу в соответствии с согласованными официальной документацией (Attached выше). Мы пытались запуска команды, но первый не может быть выполнена. Это возвращение мы получаем: крепление: ххх уже установлен или / SYS / фс / контрольная группа занята Есть некоторые процессы обниматься / SYS / фс / контрольная группа, но когда пытался убить их, они просто появляются. Мы также попытались создать новый каталог / SYS / фс / контрольной группы, но он отвечает с высказыванием, что это только для чтения файловой системы. Мы опробовали следующие без успеха: перемонтажа / SYS / фс / контрольной группы, как для чтения и записи, которые преуспели, но при создании реж. part1 он пуст. Документация предполагает, что это должно содержать множество файлов. Установка контрольной группы в качестве временной файловой системы в соответствии с инструкциями по Kernel документации (https://www.kernel.org/doc/Documentation/cgroup-v1/cgroups.txt). А смонтированный контрольной группы фс к нему, это работало, но не включает в себя файл palloc.bins который нуждается в PALLOC. Кто есть какие-либо советы / решения для обмена на эту проблему? Заранее спасибо!
Janne Suuronen
1

голосов
0

ответ
31

Просмотры

Резервный и нулевой заполнения области системной памяти для PCIE устройства в драйвере

У меня есть PCIE устройство, которое требует (физически непрерывную область) царапина памяти, чтобы быть размещенной в системной памяти. Проблема возникла из его размера: он должен быть 16 MiB. Я искал какое-то время, но ни один из способов, описанных здесь, не может выделить такой большой блок памяти: https://kernelnewbies.org/KernelMemoryAllocation В качестве временного решения я пытался зарезервировать память с memmap = пп [РД] $ сс [РД] команда ядра вариант строки, но область защищены таким образом, не может быть отображен в виртуальное адресное пространство, и мне нужно обнулить заполнить его, прежде чем передать его на устройство. Я ищу способ, который: способен выделять 16 МиБ из непрерывной физической памяти не требует дополнительных параметров ядра CMD строки, ни ядра перекомпиляции выделенной памяти может быть отображен в виртуальное адресное пространство и, таким образом, может быть нулевым заполненными
András Gajdács
1

голосов
0

ответ
48

Просмотры

Какие имена потоков ядра, которые представляют собой ISR верхнюю половину и нижнюю половину?

С помощью Google, я знаю, что ядро ​​Linux обработки прерываний нить делится на две части, верхней половины резьбы и нижней половины резьбы. Я хочу видеть, на котором CPU находятся эти два ядра нити. Я использую верхнюю команду на Fedora 19, чтобы найти процедуру обслуживания прерывания (ISR). Принимая NIC ISR в качестве примера, можно увидеть следующую информацию в верхних результатах «627 корня -51 0 0 0 0 S 0,000 0,000 0: 00,35 IRQ / 76-EM1 4», где EM1 это имя сетевого адаптера, и его номер прерывания 76 (/ Труды / прерывания имеет информацию для прерываний). Мы можем увидеть NIC ISR работает на CPU4. Но на моей недавно установленную Fedora 26, верхняя не показывает такую ​​запись. Версия ядра для Fedora 26 является 4.11.8-300. На CentOS7 с ядром 3.10, я до сих пор не могут видеть эту информацию. Как я могу найти темы ядра для ISR, и какие имена для ISR потоков? Является ли это вызвано версией ядра Linux? Заранее спасибо.
cwang.sh
1

голосов
0

ответ
109

Просмотры

Как do_async_page_fault называется?

Я искал в Линукс внутренностей, как прерывания обрабатываются ядром. Я не мог найти путь do_async_page_fault апи называется. Насколько я понимаю, идет, это хранится в виде указателя функции и вызывается, когда происходит прерывание. Вы можете объяснить, как именно?
Ishwar Chandra
1

голосов
1

ответ
292

Просмотры

Как получить выход панического Linux на последовательную консоль USB, когда система имеет также видеоадаптер

У меня возникли проблемы с паникой ядра Linux, который мне нужно исследовать дальше. Когда это произойдет, то выход паники ядра всегда идет только видеоадаптер и отображается на мониторе. Мне нужно, чтобы иметь выход ядро ​​панического к последовательной консоли USB, а не только на видеоадаптере. В ситуации, когда паника происходит нет монитора доступны. У меня есть серийный USB консоль работает, может войти оттуда, и я также вижу некоторые сообщения ядра там иногда. Однако, когда я спровоцировать панику ядра с эхом-с> / Труды / SysRq-triggerthe выходом ядра панического только на адаптере дисплея видно, не на консоли USB. Я использую Debian 8 с ядром 4,14. ttyUSB0 работает с Systemd. Ядро CmdLine содержит ... консоль = tty0 консоль = ttyUSB0,9600n8 Что я могу сделать, чтобы получить панику ядра писаться последовательный порт USB?
Franz
1

голосов
0

ответ
92

Просмотры

what IIO channel type in Linux kernel driver is appropriate for the LED current regulator?

при реализации драйвера ядра Linux, для приближения и светимости зондирования полупроводника с LED регулятором тока, позволяющим регулировать расстояние эффективности измерения против нарушения экологического света, хотели бы поддержать методы read_raw / write_raw, чтобы иметь возможность получить / установить текущее значение регулятора. тип канала установлен в IIO_PROXIMITY Теперь. что является правильным способом определения тока светодиода: через канал информацию перечислимого применить для данного типа настроек? доступные варианты: перечисление iio_chan_info_enum {IIO_CHAN_INFO_RAW = 0, IIO_CHAN_INFO_PROCESSED, IIO_CHAN_INFO_SCALE, IIO_CHAN_INFO_OFFSET, IIO_CHAN_INFO_CALIBSCALE, IIO_CHAN_INFO_CALIBBIAS, IIO_CHAN_INFO_PEAK, IIO_CHAN_INFO_PEAK_SCALE, IIO_CHAN_INFO_QUADRATURE_CORRECTION_RAW, IIO_CHAN_INFO_AVERAGE_RAW, IIO_CHAN_INFO_LOW_PASS_FILTER_3DB_FREQUENCY, IIO_CHAN_INFO_HIGH_PASS_FILTER_3DB_FREQUENCY, IIO_CHAN_INFO_SAMP_FREQ, IIO_CHAN_INFO_FREQUENCY, IIO_CHAN_INFO_PHASE, IIO_CHAN_INFO_HARDWAREGAIN, IIO_CHAN_INFO_HYSTERESIS, IIO_CHAN_INFO_INT_TIME, IIO_CHAN_INFO_ENABLE, IIO_CHAN_INFO_CALIBHEIGHT, IIO_CHAN_INFO_CALIBWEIGHT, IIO_CHAN_INFO_DEBOUNCE_COUNT, IIO_CHAN_INFO_DEBOUNCE_TIME, IIO_CHAN_INFO_CALIBEMISSIVITY, IIO_CHAN_INFO_OVERSAMPLING_RATIO,}; действительно ли это IIO_CHAN_INFO_HARDWAREGAIN один? или, возможно, лучше определить индивидуальный светодиодный тип текущего канала из следующих вариантов: перечислений iio_chan_type {IIO_VOLTAGE, IIO_CURRENT, IIO_POWER, IIO_ACCEL, IIO_ANGL_VEL, IIO_MAGN, IIO_LIGHT, IIO_INTENSITY, IIO_PROXIMITY, IIO_TEMP, IIO_INCLI, IIO_ROT, IIO_ANGL, IIO_TIMESTAMP, IIO_CAPACITANCE, IIO_ALTVOLTAGE, IIO_CCT, IIO_PRESSURE, IIO_HUMIDITYRELATIVE, IIO_ACTIVITY, IIO_STEPS, IIO_ENERGY, IIO_DISTANCE, IIO_VELOCITY, IIO_CONCENTRATION, IIO_RESISTANCE,}; при использовании IIO_CURRENT один для типа, то с помощью IIO_CHAN_INFO_RAW для информации?
Oleg Kokorin
1

голосов
0

ответ
45

Просмотры

Блочное устройство - Получить STRUCT устройство без использования функции зонда

Я в настоящее время обучения Linux устройство программирования драйверов, и я хотел бы управлять аппаратным устройством, используя драйвер блочного устройства. Мое аппаратное устройство использует три контакта для взаимодействия с окружающей среды Часы - выход -> Часы данных Data - Двунаправленный -> Линия, передачи данных в / из устройства питания - выход -> Блок питания устройства Данное устройство использует патентованный протокол. Он хранит данные, которые могут быть разделены на несколько файлов. То, что я сделал, я в настоящее время разработал символьное устройство, которое экспортируется в пользовательском приложении и реализует несколько IOCTLs. Я тогда чтение / записи из / в устройство с приложением, которое абстрагируется пользовательским пространством разделенной памяти устройства в виде одной зоны памяти. Следующие IOCTLs реализованы: POWER_ON power_off СБРОС SEND_COMMAND Эта реализация полностью функционален, и я хотел бы пойти дальше в программирование драйверов устройств путем преобразования пара {char_driver, userspace_app} в единый блок драйвера устройства, которые будут доступны для чтения / записи непосредственно. То, что я хочу сделать для водителя полукокса, я заполнила дерево устройств с соответствующей информацией, чтобы использовать его в качестве platform_device. Информация о ввода / вывода были загружены из него, и я использовал оба GPIO и регулятор подсистемы для определения ввода / вывода. Я хотел бы реализовать драйвер блока по-разному, давая соответствующие контакты драйвера при вставке. Я затем использовать его как platform_device тоже, но моя главная цель состоит в том, чтобы понять основные механизмы, так что я хочу попробовать несколько решений. Вот что я сделал еще #define АВАРИЙНАЯ (FMT, ...) printk (KERN_EMERG FMT, #define GPIO_RST_PIN 73 статического знака INT device_counter = 0; ЬурейаЯ структура {Const символа * имя; ИНТ основных; ИНТ минор; структура устройства * DEV; структура регулятора * power_reg; } Devtest_dev_t; статические INT devtest_io_init (devtest_dev_t * DevTest, беззнаковый INT io_pin, беззнаковый INT clk_pin, беззнаковый INT rst_pin) {INT RET = 0; если (0> devm_gpio_request (devtest-> DEV, io_pin, GPIO_IO_NAME)) {ОШИБКА ( "% s: Не удалось выделить IO штифт (% d) \ N", driver_name, clk_pin); RET = -EIO; } Иначе, если (0> gpio_direction_input (io_pin)) {ОШИБКА ( "% s: Невозможно установить IO направление штифта (% d) \ N", driver_name, io_pin); RET = -EIO; } Иначе, если (0> devm_gpio_request (devtest-> DEV, clk_pin, GPIO_CLK_NAME)) {ОШИБКА ( "% s: если (NULL == (само = vmalloc (SizeOf (devtest_dev_t)))) {ОШИБКА ( "% s: Не удалось выделить память для устройства \ п", driver_name); вернуться -1; } MemSet (я, 0, SizeOf (devtest_dev_t)); ОТЛАДКА ( "% s: Устройство выделяется и инициализируется \ п", driver_name); если (NULL == (само-> DEV = vmalloc (SizeOf (структура устройства)))) {ОШИБКА ( "% s: Не удалось выделить память для структуры устройства \ п", driver_name); вернуться -2; } ОТЛАДКА ( "% S: структура устройства выделяется (% р) \ п", driver_name, само-> DEV); если (NULL == (pwr_reg = devm_regulator_get (само-> DEV, "power_regulator"))) {ОШИБКА ( "% s: Не удалось выделить регулятор мощности \ N", driver_name); вернуться -EIO; } Само-> power_reg = pwr_reg; DEBUG ( "% s: e3500000 012fff1e e92d4070 e1a06002 (e5904018) --- [конец следа 39a2cd9292b80271] --- Очевидно, есть что-то я не понимаю. Я думаю, что проблема связана с тем, что устройство структуры Я использую выделяются, но никогда не инициализируется, так что функция devm_regulator_get не может найти регулятор под названием «power_regulator» в него. Так что мои вопросы: Является ли мое предположение верно? Это можно использовать регулятор STRUCT, когда драйвер устройства не тестируется? Если да, то как это сделать? Если нет то, что не является лучшей альтернативой? power_regulator»в него. Так что мои вопросы: Является ли мое предположение верно? Это можно использовать регулятор STRUCT, когда драйвер устройства не тестируется? Если да, то как это сделать? Если нет то, что не является лучшей альтернативой? power_regulator»в него. Так что мои вопросы: Является ли мое предположение верно? Это можно использовать регулятор STRUCT, когда драйвер устройства не тестируется? Если да, то как это сделать? Если нет то, что не является лучшей альтернативой?
Arkaik
1

голосов
0

ответ
750

Просмотры

how to solve Kernel configuration is invalid issues

Я пытаюсь построить модуль. Но вот некоторые вопросы. ОШИБКА: Конфигурация ядра недопустима. включить / сгенерированного / autoconf.h или включить / конфигурации / auto.conf отсутствуют. Run «сделать oldconfig && сделать подготовить» на ядре ЦСИ, чтобы исправить это. ВНИМАНИЕ: Символ версия дампа ./Module.symvers отсутствует; ? Модули не будут иметь никаких зависимостей и modversions.` А вот мой Makefile ifeq ($ (KERNELRELEASE)) KERNELDIR = / Библиотека / модули / $ (uname -r оболочки) / построить PWD: = $ (оболочки PWD) модули: $ ( MAKE) -C $ (KERNELDIR) M = $ (PWD) модули modules_install: $ (MAKE) -C $ (KERNELDIR) M = $ (PWD) modules_install очистки:. гт -rf * .o * ~ ядро ​​.depend *. CMD * .ko * .mod.c .tmp_versions .PHONY: модули modules_install чистые еще # вызывается из системы сборки ядра: просто объявить, что наши модули OBJ-м: = привет.
Woo-Hyun
1

голосов
0

ответ
377

Просмотры

модуль ядра частота прерываний таймера Linux?

Я просто оценивая возможности в Raspberry Pi и, следовательно, имеют (может быть глупый) вопрос только, чтобы понять, если это возможно, что я думаю о. Я хочу использовать GPIOs на Pi с некоторыми дополнительными аппаратными средствами и сделать некоторые немного стучать с ним. Для этого мне нужно довольно быстрый таймер. SoC с тактовой частотой 1 ГГц> часы и доступные аппаратные таймеры абсолютно способны обеспечить соответствующую частоту таймера. Но: я хочу использовать Pi с системой Linux и прерыванием таймера из модуля ядра. Так что мой вопрос: есть ли возможность создать ядро-внутренний таймер, например, 2 МГц? Является ли ядро ​​может это делать? Или один из аппаратных таймеров свободно доступных и может быть использован для этой работы?
1

голосов
1

ответ
57

Просмотры

Поиск эффекта оригинальных черт для основных компонентов, используемых в качестве входных данных в ядре PCA

Я пытаюсь реализовать Kernel PCA в моем наборе данных, который имеет как категориальные (кодируется одним горячим кодером) и числовые функции и уменьшает число измерений от 22 до 3 размеров в общей сложности. После этого, я буду продолжать реализацию кластерной. Я использую Spyder, как IDE. Для того, чтобы понять структуру моих Поддавшись кластеров из алгоритма, я хочу, чтобы интерпретировать, какие функции влияют на полученные основные компоненты и как они влияют на них. Является ли это возможным? Если да, то как я могу интерпретировать это, есть ли способ?
Beg
1

голосов
1

ответ
325

Просмотры

Использование драйвера I2C Dev

Я хочу настроить датчик по шине I2C с использованием модуля I2C-DEV. Требуемая I2C шина и работает, однако, я не могу показаться, чтобы получить какие-либо данные от датчика. Может кто-нибудь, пожалуйста, помогите мне отлаживать код, приведенный ниже. Все регистры датчика 8 бит. INT основных () {INT devFile = 0; Const символ * devFileName = "/ DEV / I2C-1"; символ writeBuf [2]; uint16_t readBuf [2]; uint16_t tempReading = 0; / * Инициализировать I2C интерфейс * / devFile = hdc2010_i2c_init (devFileName, HDC2010_ADDR); / * Настройка датчика и trigerring измерения * / writeBuf [0] = HDC2010_CONFIG; writeBuf [1] = 0x57; hdc2010_i2c_write (devFile, writeBuf, 2); writeBuf [0] = HDC2010_INTERRUPT_CONFIG; writeBuf [1] = 0x78; hdc2010_i2c_write (devFile, writeBuf, 2); writeBuf [0] = HDC2010_MEASUREMENT_CONFIG; writeBuf [1] = 0x03; hdc2010_i2c_write (devFile, writeBuf, 2); / * Температура чтения данных из регистров * / writeBuf [0] = HDC2010_TEMP_LOW; hdc2010_i2c_write (devFile, writeBuf, 1); readBuf [0] = hdc2010_i2c_read (devFile, 1); writeBuf [0] = HDC2010_TEMP_HIGH; hdc2010_i2c_write (devFile, writeBuf, 1); readBuf [1] = hdc2010_i2c_read (devFile, 1); / * * Преобразование температуры до читаемого формата * Формула Источник: HDC2010 Технического паспорт * / tempReading = ((readBuf [1] readBuf [1] = hdc2010_i2c_read (devFile, 1); / * * Преобразование температуры до читаемого формата * Формула Источник: HDC2010 Технического паспорт * / tempReading = ((readBuf [1] readBuf [1] = hdc2010_i2c_read (devFile, 1); / * * Преобразование температуры до читаемого формата * Формула Источник: HDC2010 Технического паспорт * / tempReading = ((readBuf [1]
Khilav
1

голосов
1

ответ
46

Просмотры

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

Если есть файл linux.img, я могу увидеть фактический размер изображения. если есть Linux.img.xz файл, как я могу сказать размер его, когда XZ = Popen ([ "/ USR / бен / XZ", "-cdk", "Linux.img.xz"], стандартный вывод = ТРУБА) выполняется. Распакованный файл записывается в стандартный вывод, не будет сам файл на диске, который я могу проверить с командой FDisk -l. Почему я делаю это потому, что изображение собирается записать на SD-карту. Прямо перед тем, что я хочу, чтобы проверить, если изображение больше, чем SD-карты. Использование стандартного ввода и стандартный вывод можно избежать написания диска, который может ускорить процесс немного.
Jason Liu
1

голосов
0

ответ
40

Просмотры

Как определить Linux Kernel начальный адрес загрузки для x86?

Я работал с некоторыми платами ARM на базе, где я буду указать начальный адрес внутри Makefile.boot: zreladdr-у + = 0x30008000 params_phys-у: = 0x30000100, Что эквивалентно способ указать начальный адрес в архитектуре x86? Точка входа с загрузчиком.
anikhan
1

голосов
0

ответ
69

Просмотры

elasticsearch 2.2.x не поддерживается v2 контрольных групп

Elasticsearch <5.2.x есть ошибка, которая не позволяет ему работать с ядром Linux> 4,5, так как контрольная группа v2 введение https://www.kernel.org/doc/Documentation/cgroup-v2.txt это не будет исправлено, так как она является фиксированной в новой версии: отчет ошибки против версии 5.2.2, так что я вижу это как «не исправлю» для филиала 5.2.x. https://github.com/elastic/elasticsearch/issues/23486 Поскольку проблема состоит в том, чтобы в контрольной группе v2 / Proc / я / контрольной группы для elasticsearch, и это должно быть возможно запустить контрольную группу v1 и v2 в одной машине, делает кого знает способ «заставить» elasticsearch в контрольной группе v1 так, чтобы он работать с ядром 5.2 (не используя VirtualBox / VMware)?
alex
1

голосов
0

ответ
66

Просмотры

Can't set voltage on GPU msm8953

Я пытаюсь OVERVOLT графического процессора Adreno 506 в процессоре Snapdragon 625, но у меня возникают проблемы по установке gfx_vreg_corner напряжения: LDO @ 0185f000 {совместимого = "QCOM, msm8953-GFX-LDO"; р =,; REG-имена = "ldo_addr", "efuse_addr"; Регулятор имя = «msm_gfx_ldo»; Регулятор-мин-микровольт =; Регулятор-макс-микровольт =; QCOM, напряжения LDO-потолочный =; QCOM, LDO-напряжение-пол =; QCOM, число-углы =; QCOM, число-LDO-углы =; QCOM, включить LDO-угловую-карту =; QCOM, INIT-угол =; VDD-сх-питания =; QCOM, VDD-ая-угловая-карта =,,,,,,; MEM-АСС-снабжение =; QCOM, мем-акк угла карта =; QCOM,-LDO инициализации напряжения регулировка =; Это регулятор, который управляет часами и QCOM напряжения, напряжения LDO-потолком =; QCOM, LDO-напряжение-пол =; QCOM, число-углы =; QCOM, число-LDO-углы =; QCOM, включить LDO-угловую-карту =; Редактирование эти значения должны влиять на напряжение направляется в ОГПУ, но независимо от того, какое значение я ставлю здесь не будет просто игнорировать, хотя после предела напряжения написано в инструкции: #define MIN_LDO_VOLTAGE 375000 #define MAX_LDO_VOLTAGE 980000 Я знаю, что риски overvolting в смартфонах, но я настаиваю на том, чтобы найти способ установить напряжение, becouse телефон я использую имеет очень хорошую теплопроводность
Luan Halaiko
1

голосов
1

ответ
633

Просмотры

как исправить ш: 1 не локон найдены

Я взял функцию питона, что я нашел в Интернете четкости sh_escape (ы):. Возвратный s.replace (. "(", "\\ (") заменить ( ")", "\\)") заменить (»" , "\\") И я использовал его с os.system (). Это выглядит следующим образом: os.system (sh_escape ( 'локон -X PUT HTTP: // админ: [email protected]: 5984 / тест /') + файл + sh_escape (»-d @ / главная / пользователя / Загрузки / «) + файл) файл имя, которое он читает с os.walk () Когда я запускаю его, я становлюсь ш: 1: завиток -X PUT HTTP: // админ: [email protected]: 5984 / тест / файл -d @ / главная / пользователя / Загрузки / файл: не найдены знаете ли вы, где моя ошибка есть? если я запускаю команду непосредственно в терминале работает. Python 3 используется
1

голосов
1

ответ
35

Просмотры

Проверка использования стек процесса в Linux

Я использую версию 3.12.10 в Linux. Я пишу простой модуль, который перебирает список задач и проверяет использование стека для каждого процесса, чтобы увидеть, если какие-либо находятся в опасности переполнения стека. Чтобы получить предел стека процесса я использую: tsk-> SIGNAL-> RLIM [RLIMIT_STACK] .rlim_cur Для получения адреса памяти для начала стека я использую: tsk-> мм-> start_stack тогда я subract из него результат этого макроса: KSTK_ESP (ТСК) Большую часть времени это, кажется, работает нормально, но по случаю I ситуации, когда процесс использует больше, чем его предел стека (обычно 8 МБ), но процесс продолжает работать и сам Linux не сообщает о каком-либо вопросе. Мой вопрос, я использую правильные переменные, чтобы проверить это использование стека?
tpotter01
1

голосов
0

ответ
20

Просмотры

Minix 3.2 Kernel вызовов для доступа на регистры процессора

Я MINIX начинающего разработчика. Я хочу работать на MCE (Machine Check Exception) в MINIX. Я прочитал и применил учебники, чтобы сделать системные вызовы и вызовы ядра, но до сих пор я не обнаружил никаких документов на вызовах ядра, которые считывают информацию на определенный адрес реестра. Мне нужна ваша помощь, чтобы продвинуть свои исследования.
hfmlcode
1

голосов
0

ответ
113

Просмотры

Проблемы в Linux ядра портирования, застряли в функции paging_init

000000] percpu: Встроенный 15 страниц / CPU @ f6eb6000 s31040 r8192 d22208 u61440 [0.000000] Встроенные 1 zonelists в порядке зоны, мобильность группировки на. Всего страниц: 260368 [0,000000] Ядро командной строки: консоль = ttymxc0,115200 INIT = / INIT earlyprintk видео = mxcfb0: DEV = БОД, fbpix = RGB32, БПП = 32 видео = mxcfb1: от видео = mxcfb2: от видео = mxcfb3: выкл vmalloc = 128M androidboot.console = ttymxc0 consoleblank = 0 androidboot.hardware = Freescale CMA = 448M galcore.contiguousSize = 33554432 buildvariant = userdebug androidboot.serialno = 071f21d4d72d7372 androidboot.soc_type = imx6q androidboot.storage_type = сд GPT [0.000000] PID хэш-таблицу записи: 4096 (порядок: 2, 16384 байт) [0.000000] Dentry кэша хэш записей таблиц: 131 072 (заказ: 7, 524288 байт) [0.000000] Дескриптор-кэша хеш-записей таблиц: 65536 (порядка: 6, 262144 байт) [0.000000 ] Объем памяти: 556280K / 1048576K доступен (13312K код ядра, 1121K rwdata, 4300K ​​rodata, 1024K первонач, 612K ПБС, 33544K зарезервирован, 458752K CMA-заповедного, 139264K Highmem) [0,000000] Виртуальный макет памяти ядра: [0,000000] вектор: 0xffff0000 - 0xffff1000 (4 кБ) [0.000000] fixmap: 0xffc00000 - 0xfff00000 (3072 кБ) [0.000000] vmalloc: 0xf8000000 - 0xff800000 (120 MB) [0.000000] Lowmem: 0xC0000000 - 0xf7800000 (888 MB) Над журналы из рабочего sabresd платы. Мой источник, взяты из андроида источника компании NXP O. Я портирование Android на нашем пользовательском борте, который похож на sabresd и на основе imx6q. Моя портирована ядро ​​застревает. Вот журналы, Распаковка Linux ... сделано, загрузка ядра. [0.000000] Загрузка Linux на физическом 0x0 CPU [0.000000] Linux версии 4.9.17 (mrigendra. 000000] ## DEBUGmmu.c: build_mem_type_table сделано [0,000000] ## DEBUGmmu.c: prepare_page_table сделано [0,000000] ## DEBUGmmu.c: map_lowmem сделано [0,000000] ## DEBUGmmu.c: memblock_set_current_limit сделано [0,000000] ## DEBUGdna- mapping.c: dma_contiguous_remap1 [0.000000] ## DEBUGdna-mapping.c: dma_contiguous_remap2 [0.000000] ## DEBUGsmb_tlb.c: flush_tlb_kernel_range1 [0.000000] ## DEBUGsmb_tlb.c: старт: da000000 конец: f6000000 Обе платы выполнены с возможностью vmsplit_3g. Мой setup_arch вызов не завершен из-за какой-то вопрос, что я не смог найти, это поток вызовов start_kernel> setup_arch> paging_init> dma_contiguous_remap> flush_kernel_tlb_range> local_flush_tlb_range одна вещь, я не могу понять, где эта функция идти local_flush_tlb_kernel_range (старт, конец); начало и конец я напечатал чуть выше local_flush_tlb_kernel_range (начало, конец) вызова в функции flush_tlb_kernel_range. В моем случае и в случае сабли NXP это local_flush_tlb_kernel_range становится STRUCT cpu_tlb_fns {недействительным (* flush_user_range) (без знака долго, неподписанные долго, структура vm_area_struct *); недействительным (* flush_kern_range) (неподписанных долго, неподписанные долго); неподписанные длинные tlb_flags; }; / * * Выберите способ вызова * / #ifdef MULTI_TLB #define __cpu_flush_user_tlb_range cpu_tlb.flush_user_range #define __cpu_flush_kern_tlb_range cpu_tlb.flush_kern_range #else ого #define __cpu_flush_user_tlb_range __glue (_TLB, _flush_user_tlb_range) #define __cpu_flush_kern_tlb_range __glue (_TLB, _flush_kern_tlb_range) ехЬегп недействительного __cpu_flush_user_tlb_range (без знака долго, неподписанные долго, структура vm_area_struct *); ехЬегп недействительного __cpu_flush_kern_tlb_range (без знака длина, без знака длиной); Поэтому я подумал, что где-то в ядре flush_kern_range будет определен, но я не могу найти, что определение Поскольку обе рабочие области различны есть некоторые дополнительные ## DEBUGfile.c в моих журналах. У меня есть идея, что не setup_arch имеют ничего общего с моим борту конкретных функций и его общего вызова всех архитектур ARM. Я пытался поставить sabresd DTB в UBoot, так что если что-то связанное с памятью делается внутри него, по крайней мере, что много инициализации будет, такой же результат, как это. Пробовал ставить pr_info, пока я не смог найти Defenition функции flush_kern_range. В сабли NXP эта функция вызывается снова и снова. Может кто-нибудь помочь мне с некоторыми из пунктов. Поэтому я подумал, что где-то в ядре flush_kern_range будет определен, но я не могу найти, что определение Поскольку обе рабочие области различны есть некоторые дополнительные ## DEBUGfile.c в моих журналах. У меня есть идея, что не setup_arch имеют ничего общего с моим борту конкретных функций и его общего вызова всех архитектур ARM. Я пытался поставить sabresd DTB в UBoot, так что если что-то связанное с памятью делается внутри него, по крайней мере, что много инициализации будет, такой же результат, как это. Пробовал ставить pr_info, пока я не смог найти Defenition функции flush_kern_range. В сабли NXP эта функция вызывается снова и снова. Может кто-нибудь помочь мне с некоторыми из пунктов. Поэтому я подумал, что где-то в ядре flush_kern_range будет определен, но я не могу найти, что определение Поскольку обе рабочие области различны есть некоторые дополнительные ## DEBUGfile.c в моих журналах. У меня есть идея, что не setup_arch имеют ничего общего с моим борту конкретных функций и его общего вызова всех архитектур ARM. Я пытался поставить sabresd DTB в UBoot, так что если что-то связанное с памятью делается внутри него, по крайней мере, что много инициализации будет, такой же результат, как это. Пробовал ставить pr_info, пока я не смог найти Defenition функции flush_kern_range. В сабли NXP эта функция вызывается снова и снова. Может кто-нибудь помочь мне с некоторыми из пунктов. У меня есть идея, что не setup_arch имеют ничего общего с моим борту конкретных функций и его общего вызова всех архитектур ARM. Я пытался поставить sabresd DTB в UBoot, так что если что-то связанное с памятью делается внутри него, по крайней мере, что много инициализации будет, такой же результат, как это. Пробовал ставить pr_info, пока я не смог найти Defenition функции flush_kern_range. В сабли NXP эта функция вызывается снова и снова. Может кто-нибудь помочь мне с некоторыми из пунктов. У меня есть идея, что не setup_arch имеют ничего общего с моим борту конкретных функций и его общего вызова всех архитектур ARM. Я пытался поставить sabresd DTB в UBoot, так что если что-то связанное с памятью делается внутри него, по крайней мере, что много инициализации будет, такой же результат, как это. Пробовал ставить pr_info, пока я не смог найти Defenition функции flush_kern_range. В сабли NXP эта функция вызывается снова и снова. Может кто-нибудь помочь мне с некоторыми из пунктов. В сабли NXP эта функция вызывается снова и снова. Может кто-нибудь помочь мне с некоторыми из пунктов. В сабли NXP эта функция вызывается снова и снова. Может кто-нибудь помочь мне с некоторыми из пунктов.
mrigendra
1

голосов
1

ответ
57

Просмотры

ftrace + addr2line на малиновом пи 3

Я хочу, чтобы получить исходные тексты ядра имя код файла и номер строки функции ядра от функции адреса, что ftrace outputed на rapberry пи 3. Я попытался addr2line -e /boot/kernel8.img [адрес] функция на Raspberry Pi 3. Но это вернулся addr2line: /boot/kernel8.img: формат файла не распознается. Примечание: kernel8.img является Customed ядро, которое я компиляции. Я клонировать исходный код ядра из https://github.com/raspberrypi/linux.git, checkouted к RPI-4.18.y, включил CONFIG_DEBUG_INFO и запустить сделать ARCH = arm64 CROSS_COMPILE = aarch64-линукс-gnu- -j4. Эта работа выполняется на этапе компиляции Ubuntu x86_64 Linux ядра 4.15.0-23-родового. Тип kernel8.img заключается в следующем. $ Файл kernel8.img kernel8.img: MS-DOS исполняемый благодаря
70 sititou
1

голосов
0

ответ
228

Просмотры

Нормированная Сглаживание с ядром

Я пытаюсь сгладить шумный одномерный физический сигнал, у, сохраняя при этом соответствие между амплитудой сигнала и его подразделениями. Я применяя Gaussian ядро ​​и нормализации самого Гаусса на основе его собственного интеграла. импорт numpy.random импорт matplotlib.pyplot в PLT импорт NumPy как нп от scipy.integrate импорта четырехъядерного #Gaussian ядра (не нормализованы здесь) Защита гауссовой (х, сигма): возвращение np.exp (- (х / сигма) ** 2 / 2) #convolution защиту гладкие (у, box_pts): х = (np.linspace (-box_pts / 2., box_pts / 2., box_pts + 1)) #Gaussian сосредоточены на 0 std_norm = 3. # 3. является произвольным значением для нормализации сигма сигма = box_pts / std_norm интеграл = четырехъядерный (гауссовым, х [0], х [-1], Args = (сигма)) [0] = гауссово окно (х, сигма) / интеграл y_smooth = np.convolve (у, коробка, режим = 'равно' ) Возвращают y_smooth box_size = 10 длина = 100 у = numpy.random.randn (длина) y_smooth = гладкая (у, box_size) plt.plot (у) plt.show () plt.plot (y_smooth) plt.show () В этот пример, у есть сигнал Я хочу, чтобы сгладить, box_pts ширина или область, над которой применяется гауссово ядро, как это переводится. И нормализовать свою свертку, я просто разделить на интеграл от гауссовой сам по себе. Так как гауссова имеет определенную ширину (дается box_pts) и равна нулю вне этого интервала по сравнению с физической оси у, я нормализуя гауссовой к области, над которой она отлична от нуля, в отличие от $ - \ infty $ до $ \ infty $. Этот метод оказывается достаточно простым и нормализация, кажется, работает, но деление на самом «право» интеграл ядра или предложенный подход принять при нормализации свертка / ядер? Основываясь на простом примере, это не кажется держать интеграл примерно такой же, но амплитуды не более последовательно, как визуализируется ниже которого немного проблематично, так как я хочу, чтобы сохранить сглаженный сигнал, удаляя шум: Оригинал: сглаженная: я получить улучшенные амплитуды когда я уменьшить box_size по отношению к длине, но это держит сигнал шумным. Уменьшение std_norm также, кажется, помогает снизить уровень шума, но это влияет на амплитуду. Мой вопрос сводится к тому, решая, как один выбирает оптимальный std_norm и box_norm для данного шумного сигнала у длины размера так, что я могу уменьшить шум, сохраняя при этом выхода физически звук (т.е. сглажена амплитуда сигнала несколько согласуется с исходным сигналом и интегралом под сглаженной кривой довольно похоже, тоже).
Mathews24
1

голосов
1

ответ
68

Просмотры

How can I fix these mismatches?

Used GCC: Linaro-GCC 4.7/4.8/4.9.3/6.4/7.3 but version seems to be meaningless OS: updated Linux Mint 19 and 4.17.2-ext73-57.2 kernel. I have tried to compile a few sources (e.g. official LineageOS source) and everytime I got that: WARNING: vmlinux.o(.data+0x10f40): Section mismatch in reference from the variable gdsc_driver to the (unknown reference) .init.data:(unknown) The variable gdsc_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console WARNING: vmlinux.o(.data+0x1c064): Section mismatch in reference from the variable msm_cpu_pm_snoc_client_driver to the (unknown reference) .init.data:(unknown) The variable msm_cpu_pm_snoc_client_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console WARNING: vmlinux.o(.data+0x1c0b4): Section mismatch in reference from the variable msm_cpu_pm_driver to the (unknown reference) .init.data:(unknown) The variable msm_cpu_pm_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console WARNING: vmlinux.o(.data+0x1c104): Section mismatch in reference from the variable msm_cpu_status_driver to the (unknown reference) .init.data:(unknown) The variable msm_cpu_status_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console WARNING: vmlinux.o(.data+0x1c4e0): Section mismatch in reference from the variable msm_rpm_device_driver to the (unknown reference) .init.data:(unknown) The variable msm_rpm_device_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console WARNING: vmlinux.o(.data+0x1c648): Section mismatch in reference from the variable cpu_modes_driver to the (unknown reference) .init.data:(unknown) The variable cpu_modes_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console WARNING: vmlinux.o(.data+0x1c698): Section mismatch in reference from the variable system_modes_driver to the (unknown reference) .init.data:(unknown) The variable system_modes_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console WARNING: vmlinux.o(.data+0x1c6e8): Section mismatch in reference from the variable lpm_levels_driver to the (unknown reference) .init.data:(unknown) The variable lpm_levels_driver references the (unknown reference) __initdata (unknown) If the reference is valid then annotate the variable with __init* or __refdata (see linux/init.h) or name the variable: *_template, *_timer, *_sht, *_ops, *_probe, *_probe_one, *_console To build the kernel despite the mismatches, build with: 'make CONFIG_NO_ERROR_ON_MISMATCH=y' (NOTE: This is not recommended) /home/laptopfalcon/android_kernel_motorola_msm8226-oreo-turbo/scripts/Makefile.modpost:98: recipe for target 'vmlinux.o' failed make[1]: *** [vmlinux.o] Error 1 Makefile:961: recipe for target 'vmlinux.o' failed make: *** [vmlinux.o] Error 2 What should I do? I tried to search returned variables but I didn't find any tips. I couldn't compile properly ANY sources so I bet that something is wrong with my PC but I don't know how to debug that.
User9123
1

голосов
0

ответ
48

Просмотры

Linux ядра сети сообщение убунту отладки не показан с printk / pr_debug

Я перекомпилировать ядро ​​Linux на Ubuntu и теперь обновлен до 4.17.6. Мне нужно изменить элементы стека TCP / IP, в определенной одной из алгоритмов управления перегрузкой (например. Vegas). После успешной перекомпиляции в 4.17.6, я попытался изменить код и только пересобрать соответствующие модули, но не могу видеть никаких сообщений о dmesg. Я последовал за следующие действия, чтобы проверить, является ли printk и pr_debug работ, но ни один из них не работал. Я добавил #define DEBUG поверх измененных файлов, а затем я добавил следующие строки в желаемые функции нетто / ipv4 / ip_input.c и сеть / ipv4 / ip_output.c: printk (KERN_DEBUG «Тест:»); printk ( "тест:"); pr_debug ( "тест:"); Я побежал следующие команды: Sudo сделать -j8 нетто Sudo сделать -j8 M = чистая Sudo сделать -j8 модули SUBDIRS = чистая Sudo сделать -j8 modules_install SUBDIRS = чистая Судо перезагрузка После перезагрузки я изменил printk файл, чтобы показать все уровни сообщений, выполнив эхо 8 | Sudo дд от = / Proc / SYS / ядро ​​/ printk. Затем попытался пинг от VM и виртуальной машины и попытались открытие веб-страниц. Затем попытался увидеть сообщение, выполнив dmesg | Grep теста: Но никаких сообщений не отображаются, где проблема?
nettech

Просмотр дополнительных вопросов

Связанные вопросы