Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 14 из 14 ПерваяПервая ... 411121314
Показано с 131 по 140 из 140

Тема: Программное обеспечение для websdr

  1. #131
    Цитата Сообщение от RV0APS Посмотреть сообщение
    The plan is that the next version will do multi-core, but only 1 core
    per band.
    Скорее всего он имеет в виду, что одно ядро будет работать с одним потоком (данных с сдр-приемника), т.е. какую полосу малина тянет на свистке так и останется ( Единственное, что по числу ядер процессора можно будет запустить соотв. число свистков (или других ШП приемников).
    Т.о. малины второй версии не получат значительной прироста производительности при использовании веб-сдр, но с несколькими USB-звуковыми картами или AFEDRI наверно облегчение ситуации будет, против того, что есть сейчас.


  2. #132
    Цитата Сообщение от rolin Посмотреть сообщение
    RV0APS, а я думал ядро линукса само заботится о распределении нагрузки по ядрам. Всегда, как ни посмотрю, ядра равномерно загружены.
    К сожалению это не так, если ПО поддерживает много поточность и в нём прописано как это делать то без проблем. Логически очень сложно одно поточные алгоритмы разделить на несколько процессоров.
    Последний раз редактировалось uh6abj; 20.03.2016 в 23:39.

  3. #133
    Аватар для RV0APS
    Регистрация
    15.10.2005
    Адрес
    Красноярск
    Сообщений
    1,742
    Позывной
    RV0APS
    Serg, хотябы так. В текущей версии привязать один процесс к конкретному ядру нельзя.

  4. #134
    По моему вы начинаете искать проблемы на пустом месте...
    1. websdr довольно эффективная программа в существующей реализации,
    2. Косвенные данные говорят за то, что скорее появится новая версия RaspBerry , например PI 4 с 8 ядерным 128 битным процессором ARM, чем новая версия websdr,
    тогда и пол-ядра хватит для полосы в 30Мгц
    Последний раз редактировалось RU9CA; 15.06.2020 в 13:24. Причина: П.6.2 правил

  5. #135
    На базе китайских плат Cyclone IV starter kit на EP4CE15 от QMTECH и AD6645, тактированной от генератора 60 МГц, сделал оцифровщик полосы 30 МГц. Набортный гигабитный интерфейс отправляет в сеть сформированные UDP пакеты. Почти гигабитный поток, MTU 2048. Комп его сохраняет в файл нормально, но openwebrx не успевает в реальном времени, только 10 МГц. Надо поднимать производительность.

  6. #136
    Аватар для rolin
    Регистрация
    08.11.2007
    Адрес
    Seattle, WA
    Сообщений
    4,277
    Позывной
    N7DDC
    romanetz, так у автора давно уде есть готовое решение, которое еще позволяет 1024 пользователям крутить виртуальный приемник одновременно и отдавать данные в сеть.

  7. #137
    rolin, не понял, о чём вы. У автора чего есть готовое решение? PA3WFM его, видимо, продаёт, и явно не радиолюбителям. Там есть упоминание CUDA, что уже само по себе интересно: вместо плисины принимать (в смысле, алгоритм DDC выполнять) видеокартой.
    Последний раз редактировалось romanetz; 15.06.2020 в 07:00.

  8. #138
    Цитата Сообщение от romanetz Посмотреть сообщение
    На базе китайских плат Cyclone IV starter kit на EP4CE15 от QMTECH
    а что за плата, можно ссылочку?

  9. #139
    https://aliexpress.ru/item/33007471265.html плата
    плата AD6645 втыкается в неё с торца в разъём JP1

  10. Спасибо от XOR


  11. #140
    Тестовый проект под эту плату
    плиска загоняет весь поток с АЦП в UDP пакеты по адресу 172.17.255.255
    arp/dhcp не стал делать: исходя из используемой полосы, все равно только в линке точка-точка будет работать
    формат пакетов:
    int16_t adc_samples[1024];
    MTU больше стандартного (2048), иначе не влазит по полосе с кварцем 60 МГц
    https://drive.google.com/file/d/1JEf...ew?usp=sharing
    синхронизируется по сигналу drdy от АЦП, в силу чего должно работать и с любым другим более медленным кварцем

    код тестового приложения

    Код:
    #include <stdio.h>      /* for printf() and fprintf() */
    #include <sys/socket.h> /* for socket(), connect(), sendto(), and recvfrom() */
    #include <arpa/inet.h>  /* for sockaddr_in and inet_addr() */
    #include <stdlib.h>     /* for atoi() and exit() */
    #include <string.h>     /* for memset() */
    #include <unistd.h>     /* for close() */
    #include <pthread.h>
    #include <math.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    
    /* Longest chunk of data to receive */
    #define max_chunk_length 2097152 
    
    #define total_length 100*1048576 
    
    
    #define max(a,b) \
       ({ __typeof__ (a) _a = (a); \
           __typeof__ (b) _b = (b); \
         _a > _b ? _a : _b; })
    
    #define min(a,b) \
       ({ __typeof__ (a) _a = (a); \
           __typeof__ (b) _b = (b); \
         _a < _b ? _a : _b; })
    
    
    void DieWithError(char *errorMessage)
    {
        printf("%s",errorMessage);
        exit(1);
    }  /* External error handling function */
    
    int main(int argc, char *argv[])
    {
    
        int sock;                         /* Socket */
        struct sockaddr_in broadcastAddr; /* Broadcast Address */
        unsigned short broadcastPort;     /* Port */
        long recvChunkLen;                /* Length of received string */
        void *megabuf=NULL;
        unsigned long dataLength=0;
        int fh2;
        int res;    
        int a=max_chunk_length;
        megabuf=malloc(total_length); //1 gbyte of data
    
        if (!megabuf) DieWithError("didn't get memory");
    
        
        if (argc != 2)    /* Test for correct number of arguments */
        {
            fprintf(stderr,"Usage: %s <Broadcast Port>\n", argv[0]);
            exit(1);
        }
    
        broadcastPort = atoi(argv[1]);   /* First arg: broadcast port */
    
        /* Create a best-effort datagram socket using UDP */
        if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
            DieWithError("socket() failed");
    
        /* Construct bind structure */
        memset(&broadcastAddr, 0, sizeof(broadcastAddr));   /* Zero out structure */
        broadcastAddr.sin_family = AF_INET;                 /* Internet address family */
        broadcastAddr.sin_addr.s_addr = htonl(INADDR_ANY);  /* Any incoming interface */
        broadcastAddr.sin_port = htons(broadcastPort);      /* Broadcast port */
    
        setsockopt(sock, SOL_SOCKET,SO_RCVBUF,&a,sizeof(a));
        /* Bind to the broadcast port */
        if (bind(sock, (struct sockaddr *) &broadcastAddr, sizeof(broadcastAddr)) < 0)
            DieWithError("bind() failed");
        /* Receive a single datagram from the server */
        while(1)
        {
            if ((recvChunkLen = recvfrom(sock, &megabuf[dataLength], min(max_chunk_length,total_length-dataLength), 0, NULL, 0)) < 0)
                DieWithError("recvfrom() failed");
            dataLength+=recvChunkLen;
                /* Print count of received bytes */        
            if (dataLength>=total_length) {printf("Received %lu bytes\n", dataLength); dataLength=0;} 
        }
        close(sock);
        fh2 = open("data.raw", O_WRONLY | O_CREAT | O_TRUNC, 0777);    
        dataLength=0;
        while(dataLength<total_length)
        {
        res=write(fh2, &megabuf[dataLength], 1048576);
        if (res == -1)
            {   
                close(fh2);
                free(megabuf);
                perror("Error during writing wave data"); 
                exit(1);
            }
        dataLength+=1048576;    
        }        
        close(fh2);
        free(megabuf);
        exit(0);
    }


  12. Спасибо от XOR

Страница 14 из 14 ПерваяПервая ... 411121314

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Icom IC-FR5000 Программное обеспечение
    от Mun в разделе Модификация радиостанций
    Ответов: 22
    Последнее сообщение: 21.04.2017, 09:22
  2. Программное обеспечение для радиолюбителя
    от ASK в разделе Для начинающих
    Ответов: 1
    Последнее сообщение: 16.10.2013, 13:18
  3. Программное обеспечение для портативки UV-5R
    от ua6bqn в разделе Программное обеспечение
    Ответов: 1
    Последнее сообщение: 26.07.2012, 08:35
  4. Програмное обеспечение
    от Магомед в разделе Цифровые виды связи Новые технологии в электронике и связи
    Ответов: 0
    Последнее сообщение: 25.06.2011, 11:00
  5. Программное обеспечение PSP
    от RZ6FE в разделе Софт для мобильных устройств
    Ответов: 5
    Последнее сообщение: 20.11.2009, 14:20

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •