какое напряжение на контактах FSPI на esp32 s3 n16r8
Нашел документацию по ISA Xtensa
В memory map esp8266 этот вектор заносится по адресу 0x40000050
Не уверен, конечно, что это так
… 75% cpu 2:23,52 total
… 113% cpu 1:22,71 total
… 73% cpu 2:20,75 total
количество потоков в программе равно количеству потоков процессора (в моём случае - 8…
изучаю разработку модулей ядра,попытался скомпилировать модуль использующий структуру file_operation - ошибка,как оказалось в моих хедерах ядра(/usr/include/linux/) нету данной структуры
Можете подсказать причину?
void test(char** array){ array = malloc(sizeof(char*)); array[0] = malloc(255 * sizeof(char)); strcpy(array[0], "Hello world!"); }
void test(char*** array){
*array = malloc(sizeof(char*));
(*array)[0] = malloc(255 * sizeof(char));
strcpy((*array)[0], "Hello world!");
}
char** array; test(array);
char** array;
test(&array);
возможно, я неправильно использую sf флаг?
mov al, mas[si] cmp ax, ax jns positiveOut ;;;;
cmp ax, ax
сравнивает ax с самим собой, результат немного предсказуем: они равны, т.е. sf = 0, zf = 1. Чтобы узнать знак числа нужно либо сравнивать его с нулём, либо использовать вместо cmp
логическую операцию -- test
, or
или and
.mov al, mas[si]
загружает из памяти только al, в ah остаётся мусор от предыдущих операций. По-нормальному после mov нужно сделать знаковое расширение al в ax, если собираешься дальше работать с ax, например так:mov al, mas[si]
cbw
sub ax, 1 not ax
neg ax
? myvar=$(find "/tmp/folders" -iname "App *" -type d -maxdepth 1) count=${#myvar[@]} echo $count
И в ответ получаю число 120, которое означает количество символов, а не строк
2. Почему в моем примере выводится количество символов в переменной, а не количество строк?
${#myvar[@]}
-- это длина массива. Если идея была создать в первой строке массив из имён файлов, то там не хватает пары скобок:myvar=( $(find "/tmp/folders" -iname "App *" -type d -maxdepth 1) )
${#myvar[@]}
выведет длину этого массива, т.е. количество строк в нём. 1. Реально ли подсчитать количество строк в файле или переменной с помощью глобов, как показано тут - https://stackoverflow.com/a/32727260 ?
wc -l
. Почему компьютеры не используют четырехбитный формат для вычислений?
Разве не лучше представлять цифры в полубайтах от 1(0001) до 9(1001)?
мы получим нормальную десятичную систему счисления без приближений в таких числах, как 2,1;3,4;45,9 и т.д.
Как быть?
понял что проект VS обязательно должен быть оконным, в противном случае тупо не будет ресурсов
Нужно как-то переписать ее чтобы можно было переключаться между 3 i2c.
Как обрабатывать прерывания дальномера VL53L0X?
выяснил что проблема в sizeof(buf) который почему то равен 8 после передачи в функцию
как выполнить задержку не понимаю
io_uring_prep_timeout
, но кроме этого нужно сериализовать таймаут и все предыдущие команды (чтобы таймаут начинался после их окончания) и следующую после таймаута команду и сам таймаут (чтобы последующие команды не стартовали вместе с таймаутом). Сериализация делается установкой флага IOSQE_IO_DRAIN
для sqe, почитать об этом можно например здесь. У меня нарисовался следующий пример, который записывает в файл (stderr), делает паузу в одну секунду, а потом записывает ещё:#include <fcntl.h>
#include <liburing.h>
#include <stdio.h>
#include <sys/mman.h>
#define QUEUE_DEPTH 16
int main(int argc, char **argv)
{
int i;
struct io_uring ring;
struct io_uring_cqe *pcqe;
static const char msg0[] = "before timeout\n";
static const char msg1[] = "after timeout\n";
struct io_uring_sqe *sqe;
io_uring_queue_init(QUEUE_DEPTH, &ring, 0);
io_uring_prep_write(io_uring_get_sqe(&ring), 2, msg0, sizeof(msg0), 0);
sqe = io_uring_get_sqe(&ring);
io_uring_prep_timeout(sqe, (struct __kernel_timespec[]){{.tv_sec = 1}},
-1, IORING_TIMEOUT_ETIME_SUCCESS);
io_uring_sqe_set_flags(sqe, IOSQE_IO_DRAIN);
sqe = io_uring_get_sqe(&ring);
io_uring_prep_write(sqe, 2, msg1, sizeof(msg1), 0);
io_uring_sqe_set_flags(sqe, IOSQE_IO_DRAIN);
io_uring_submit(&ring);
for (i = 0; i < 3; ++i) {
int rv = io_uring_wait_cqe(&ring, &pcqe);
if (rv < 0) {
errno = -rv;
perror("io_uring_wait_cqe");
} else {
io_uring_cqe_seen(&ring, pcqe);
}
}
}
Первая проблема что нужно при скорости 9600 бит/c передача одного бита должна происходить прмерно 1/9600 = 104 микорсекунды. HAL_Delay поддерживает минимальный период 1 милисекунда.
какой надо выставлять уровень напряжения на пине в простое