• Могу ли я использовать свой ноут вместо микроконтроллера?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Если этот ваш ноут старый, имеет на борту принтерный порт LPT, и количество управляемых устройств не превышает 8, то ответ положительный. Дело в том, что портом LPT легко управлять программно, причём знание всяких протоколов обмена информацией не потребуется. Надо просто записывать нули и единицы в определённые регистры порта (по фиксированным адресам, которые настраиваются в BIOS), и на восьми линиях порта будут появляться сигналы с уровнями +5 и 0 вольт. А как именно использовать эти сигналы, показано на этой картинке:
    173761955_10c290c499961becdda517c5dec2e4Все остальные способы сильно сложнее, там без протоколов не обойтись.
    Ответ написан
  • Почему происходит крах сервера на Linux?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Дайте хоть какую то пищу для размышления, а то прямо не знаю что думать.

    Происходит переполнение чего-то. Возможно, новые соединения не успевают устанавливаться или старые закрываются недостаточно быстро. Возможно переполняются некие ядерные буфера. Но на факт, что это переполнение чего-то указывает характер ошибки - сначала быстро, потом медленнее и медленнее и потом бэмц.
    Ответ написан
    Комментировать
  • Как передать двумерный статический массив в функцию на Си?

    wisgest
    @wisgest
    Не ИТ-специалист
    Целиком массив в функцию не передаётся (если только не обернуть его в структуру), а передаётся указатель на его 0-й элемент и формальный аргумент функции должен быть указателем на тип элементов массива, передаваемого фактическим аргументом.
    n-мерный массив — это 1-мерный массив (n-1)-мерных массивов и, соответственно, формальным аргументом функции должен быть указатель на (n-1)-мерный массив.
    В данном случае
    int fun(char (*)[1024]);
    int fun(char (*m)[1024]) {/*...*/}
    Ответ написан
    1 комментарий
  • Какая разница дескриптор файла и файловый дескриптор?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Нет никакой разницы. Правильно - файловый дескриптор.
    Это просто число - идентификатор конкретного потока ввода-вывода.
    В юниксе под дескрипторами 0, 1, 2 для каждого процесса обычно по умолчанию сразу открываются STDIN, STDOUT, STDERR.
    Ответ написан
    Комментировать
  • С помощью какого устройства можно организовать передачу данных с нескольких машин на одну и в обратном порядке)?

    Therapyx
    @Therapyx
    Data Science
    Суть в том, что в Ipv4 максимальный размер дейтаграмма = 65кб. Ты физически в него не сможешь засунуть больше. Из выходов на моей памяти вижу только следующее
    - Разделять пакеты.
    - Если использовать Ipv6, то есть Jumbogram с огромнейшим размером.
    - Использовать TCP заместо UDP, но только не будет поддержки мультикаста.
    Ответ написан
    Комментировать
  • Как настроить сокеты беркли на разрыв соединения через определенное время?

    @res2001
    Developer, ex-admin
    Никак. Сокеты тут ни при чем - это логика вашего приложения. Взводите таймер и по срабатыванию закрывайте сокет сами.
    Ответ написан
    4 комментария
  • Как тестировать драйвера?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Сразу скажу, комп у меня слабенький и ждать 3-4 часа чтоб понять что забыл в конце оператора точку с запятой поставить, это не хорошо?!

    При разработке необязательно использовать конфигурацию ядра со всеми включёнными опциями. Типичный конфиг который я использую при разработке собирается с нуля за 2 минуты.
    Кроме того, ядерный Makefile понимает цели вида *.o. Т.е. можно взять и откомпилировать один файл из дерева исходников ядра. Например: make init/main.o.
    Если ты меняешь что-то в исходниках, перекомпилироваться будет только то, что действительно зависит от того, что ты поменял. Поменяешь .c -- перекомпилируется единственный соответствующий ему файл .o.

    как можно тестировать компоненты ядра

    Это совсем другой вопрос. Под просто тестированием понимают проверку того, что код работает правильно, а не то, что он собрался.
    Ответ написан
    Комментировать
  • Как настроить интернет на бесперебойную работу в LINUX?

    flapflapjack
    @flapflapjack
    на треть я прав
    гляньте логи, что pppd пишет при неподключении?
    Ответ написан
    Комментировать
  • Как настроить интернет на бесперебойную работу в LINUX?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Нормально настроить pppd. Были времена, когда у меня тырнет приходил во FreeBSD, и там было pppoe ("Дом.Сру") - все работало как положено.
    Ответ написан
    Комментировать
  • Как назвать функцию, которая печатает приветствие?

    @AlexSku
    не буду отвечать из-за модератора
    string2pseudoGraphics
    Ответ написан
    Комментировать
  • Кто нибудь использовал технологию "autosleep" | "Opportunistic sleep"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    А RTFM -- не модно уже?:
    What:		/sys/power/autosleep
    Date:		April 2012
    Contact:	Rafael J. Wysocki <rjw@rjwysocki.net>
    Description:
    		The /sys/power/autosleep file can be written one of the strings
    		returned by reads from /sys/power/state.  If that happens, a
    		work item attempting to trigger a transition of the system to
    		the sleep state represented by that string is queued up.  This
    		attempt will only succeed if there are no active wakeup sources
    		in the system at that time.  After every execution, regardless
    		of whether or not the attempt to put the system to sleep has
    		succeeded, the work item requeues itself until user space
    		writes "off" to /sys/power/autosleep.


    Что у тебя в /sys/power/state?

    в файле /sys/power/autosleep -стоит "off", файл не редактируется

    Как редактируешь?
    Ответ написан
    7 комментариев
  • Очень быстрый алгоритм умножения длинных чисел, куда копать?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    При умножении на маленькое число всякие хитрые алгоритмы типа преобразования Фурье или Карацубы лаже медленнее тупого умножения в лоб: Просто проходитесь по большому числу от младших разрядов к старшим, умножете на маленький множитель, прибавляете перенос. Потом берете остаток от деления на базу (если множитель маленький, то быстрее будет просто вычесть несколько раз в цикле вместо модуля), а результат целочисленного деления записываете в перенос.
    Ответ написан
    Комментировать
  • Как в system V amd64 abi поместить метку в регистр?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    я хочу поместить метку "L0" в регистр %rbx.
    relocation R_X86_64_32S against `.text' can not be used when making a shared object

    Если это локальная метка -- то по смещению от PC:
    leaq L0(%rip), %rbx
    Если это метка из другой динамической библиотеки -- то через plt:
    movq L0@gotpcrel(%rip), %rbx
    Ответ написан
    1 комментарий
  • Как с помощью make собрать исполняемый файл из 2-x исходников?

    @Alexander1705
    Как вам уже ответили в комментарии, вы просто не указали параметр для -o.
    cc -o tr main_0.o main_1.o

    Вообще, никогда не нужно использовать абсолютные пути в Makefile.
    И ещё, если вы поменяете свой header.h, то make об этом не узнает.
    У компиляторов есть специальные опции, чтобы сгенерировать зависимости .c файлов от заголовков.
    Вот вам универсальный Makefile для простых проектов:
    PROJECT = tr
    SOURCES = main_0.c main_1.c
    OBJECTS = $(SOURCES:.c=.o)
    HEADER_DEPS = $(SOURCES:.c=.d)
    
    .PHONY: all
    
    all: $(PROJECT)
    
    $(PROJECT): $(OBJECTS)
    	$(CC) $(CFLAGS) $^ -o $@
    
    -include $(HEADER_DEPS)
    
    %.o: %.c
    	$(CC) $(CFLAGS) -MM -MT $@ -MF $(patsubst %.o,%.d,$@) $<
    	$(CC) $(CFLAGS) -c $< -o $@
    
    .PHONY: clean
    
    clean:
    	$(RM) $(PROJECT) $(OBJECTS) $(HEADER_DEPS)
    Ответ написан
    3 комментария
  • Объясните процесс написания драйвера под линукс?

    POS_troi
    @POS_troi
    СадоМазо Админ, флудер, троль.
    Данная статья должна ответить на ваш вопрос
    https://habr.com/post/117654/
    Ответ написан
    Комментировать
  • Объясните процесс написания драйвера под линукс?

    leahch
    @leahch Куратор тега Linux
    3D специалист. Dолго, Dорого, Dерьмово.
    Нет, систему перекомпилировать совсем не нужно!
    Для написания драйвера ядра нужды исходники ядра (точнее, только хереды) и компилятор.
    Что касается сетевого драйвера, рекомендую начать с изучения драйвера ne2000, как одного из самы простых.

    Начать же что-то писать под ядро - начните с кижки Померанца The Linux Kernel Module Programming Guide - https://www.tldp.org/LDP/lkmpg/2.6/lkmpg.pdf
    А вот тут и на русском - citforum.ru/operating_systems/linux/lkmpg
    Также в исходниках ядра есть темплейты (шаблоны) драйверов, правда сейчас не упомню где точно...
    Вот есть и такой ресурс - https://github.com/ngtkt0909/linux-kernel-module-t... (кросскомпиляторы ставить не обязательно, если не разрабатываете модуль под платформу отличную от x86)
    Вот, вообще отличная статья, типа делай раз-два-три - https://blog.sourcerer.io/writing-a-simple-linux-k...
    Ответ написан
    1 комментарий
  • Как увидеть входные параметры ассемблер?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Есть исходный код на Си, который вызывает функцию на ассемблере, но передаваемые аргументы как получить,

    Гуглить словосочетание "имя целевой процессорной архитектуры" + ABI.
    Например: x86_64 abi, x86 abi, arm64 abi...
    В найденном документе искать раздел "parameter passing", "function calling" или с похожим по смыслу названием.
    Ответ написан
    2 комментария
  • Какими способами проверяется подлинность ssl сертификата мобильным браузером?

    CityCat4
    @CityCat4 Куратор тега Цифровые сертификаты
    Внимание! Изменился адрес почты!
    Это типичная проблема LE - его корневой сертификат не прописан в списке корневых Вашего телефона, соответственно доверия к нему не будет. В зависимости от того, какой телефон - его либо можно добавить в корневые, либо можно с предупреждением либо нельзя.
    Наличие OCSP задается сервером, он либо есть, либо нет. CRL самому сгенерить нельзя, но CA может предоставлять ссылку, где его можно скачать (иногда она встроена в сертификат)
    Ответ написан
    Комментировать
  • Как писать makefile?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как бы Вы написали в makefile если бы у Вас имелось 0.c 1.c 2.c 3.h? Заголовочник 3.h для всех исходников


    OBJS := 0.o 1.o 2.o                     # список объектников, который нам понадобится в двух местах
    all: exe                                # традиционно сборка всего называется all. all зависит от единственного файла: exe
    exe: $(OBJS)                            # файл exe зависит от объектникоа
            $(CC) $(LDFLAGS) -o $@ $^       # чтобы собрать exe -- вызвать компилятор, передать ему LDFLAGS, выводить в $@ (т.е. в exe), на вход брать $^ (т.е. всё от чего зависит $@)
    %.o: %.c 3.h                            # объектники зависят от исходников с таким же именем, а так же от 3.h
            $(CC) -c $(CFLAGS) -o $@ $<     # чтобы собрать объектник -- вызвать компилятор с ключом -c, передать ему CFLAGS, выводить в $@ (т.е. в %.o), компилировать $< (т.е. %.с с тем же именем)
    clean:                                  # традиционно очистка всего называется clean
            -rm -f $(OBJS) exe              # для очистки удалить объектники и exe
    .PHONY: all clean                       # all и clean -- это не файлы
    Ответ написан
    1 комментарий
  • Здравствуйте! Проблемы с make?

    @dedalqq
    Наоборот: Makefile включает в себя шел. Грубо говоря это обертка над shell которая позволяет разбивать shell на блоки и указывать зависимости относительно разных блоков кода shell.

    `gcc -c -o main.o main.c` - Эта команда ни как не относится к Makefile в чем конкретно вопрос?

    И на сколько я помню, если просто вызвать make то выполнится Makefile из текущей директории, по этому пути и должны быть прописаны относительно текущей директории. Но есть возможность вызвать make указав где нужно искать Makefile но какие именно поведение будет тут я сказать не смогу =( никогда так не делал, надо смотреть.
    Ответ написан
    3 комментария