Перейти к содержанию

    

matyushov.a.a@gmail.com

Участник
  • Публикаций

    8
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Не вытесняется поток

    На неком девайсе основанном на процессоре ARM DM3730, работает операционная система Linux (без патчей rt) и моё приложение. В рамках этого приложения множество потоков (планировщик SCHED_RR), основных три: - поток 1: забор данных с устройства (максимальный приоритет); - поток 2: подготовки данных (нормальный приоритет); - поток 3: обработки данных (низкий приоритет); в последнем потоке происходит вызов из сторонеей библиотеки fftw3.h. при этом, когда данных много и происходит вызов обработки этих данных из сторонней библиотеки, поток 3 захватывает ядро на огромный отрезок времени (~550мс) и не вытесняется. Из-за этого первый поток (самый критичный), не успевает забрать данные, что для меня очень критично. Помогите с методами решения данной проблемы.
  2. dm3730 не заводится как я хочу

    Всем добрый день! Имеется в наличии VAR-SOM-OM37 модуль от компании Varicsite. Как все "Порядочные люди", разработчики этой компании выложили на свой FTP ядро, u-boot, x-load b rootfs. Последний в формате jffs2. Залил на модуль, запускается->работает. Потребовалось поправить конфигурирование I2C при старте системы. Поиск нужных исходников->наложение патчей->правка кода->сборка-> заливка на плату->работает.Теперь требуется ускорить процесс разработки с помощью Qt, поэтому решил, написать bsp в Yoctoproject. Итак вопрос: по какой причине может не грузится rootfs.jffs2. x-load, u-boot, kernel не трогал, перезаливаю jffs2->ничего не работает(Starting kernel... и всё) со старым rootfs работает. Подозрения пали на некий параметр EXTRA_IMAGECMD_jffs2 = "-lnp -e 0x20000 -s 2048". В плате используется микросхема Nand: MT29F4G16ABBDAH4:D (файл прикреплён ниже). Параметр был поправлен так: EXTRA_IMAGECMD_jffs2 = "-lnp -e 0x210000 -s 0x840". Но и это не спасло ситуацию, возможно я вообще копаю не туда. Помимо этого есть ещё проблема при успешной загрузке ядра, а именно во времязагрузки никакой информации в Uart не поступает, т.е. Starting Kernel... -> (30 сек паузы) -> dm3730 login: _. Далее только если dmesg. Помогите кто сталкивался или у кого есть догадки
  3. не получатся замапить DMA буфер

    Цитата(Tarbal @ Nov 9 2015, 13:35) Никак ни в первом ни во втором случае. Вот почитайте как это делается: https://www.quora.com/Linux-Kernel/How-does...py_to_user-work По-русски: https://www.ibm.com/developerworks/ru/libra...-memory-access/ Насколько я понимаю, вы должны сделать аллокацию буфера в пространстве пользователя и передать указатель на буфер как параметр системного вызова, а в драйвере (ядре) просто скопировать буфер. Спасибо!
  4. не получатся замапить DMA буфер

    Цитата(Tarbal @ Nov 5 2015, 17:12) Нет необходимости замапивать. dma_alloc_coherent возвращает оба адреса и виртуальный как возвращаемое значение и физический в параметрах. А как же мне тогда достучаться до буфера из пространства пользователя?
  5. не получатся замапить DMA буфер

    В модуле выделяется память для DMA транзакций через ioctl(): Кодkbuf = dma_alloc_coherent(NULL, CRU_DMA_BUF0_SIZE, &dma_handle, 0); далее возвращается физический адрес в user space: Кодret = put_user(virt_to_phys(kbuf), (unsigned long __user *)arg/*адрес переменной dma_buf в приложении*/); в приложении пытаюсь замапить эту область памяти: Код   int fd = open("/dev/mem", O_RDWR|O_SYNC); if(mmap_dma = (unsigned long*) mmap(NULL, CRU_DMA_BUF0_SIZE, PROT_READ, MAP_SHARED, fd, dma_buf)) printf("Can't mapping DMA buffer\n"); и попадаю в условие. Люди добрые, что я делаю не так, где накуралесил? Код#define        CRU_DMA_BUF0_SIZE    (0x00800000) dmesg
  6. компиляция бинарного файла linux из под windows

    Цитата(krux @ Oct 21 2015, 11:59) yocto под винду или cygwin + crosstool-ng но стоит сначала подумать. у вас линковка с динамическими библиотеками будет? glibc? или всё в статику запихнёте? yocto под винду?? наверное вы имеете ввиду виртуальную машину с yoctoproject по остальному если можно, нормальные гайд по настройке, потому как сроки достаточно сжаты...заранее благодарен. Помимо этого интересует отладка.
  7. компиляция бинарного файла linux из под windows

    Требуется на host-машине с мастдаем скомпилировать бинарничек, который запускается на удалённой машине c embedded linux средствами qt или eclipse. Внимание вопрос! Как это сделать без использования виртуальной машины с линём?
  8. Есть плата на PCI шине. После разрешения прерывания для девайса, начинают сыпаться данные по DMA, по получению каждого пакета выставляется прерывание что данные поступили. Далее требуется передать данные(или указатель, где хранятся данные) в программу из user-spase. Вопрос в том, как сделать это правильно?