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

[email protected]

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный
  1. На неком девайсе основанном на процессоре ARM DM3730, работает операционная система Linux (без патчей rt) и моё приложение. В рамках этого приложения множество потоков (планировщик SCHED_RR), основных три: - поток 1: забор данных с устройства (максимальный приоритет); - поток 2: подготовки данных (нормальный приоритет); - поток 3: обработки данных (низкий приоритет); в последнем потоке происходит вызов из сторонеей библиотеки fftw3.h. при этом, когда данных много и происходит вызов обработки этих данных из сторонней библиотеки, поток 3 захватывает ядро на огромный отрезок времени (~550мс) и не вытесняется. Из-за этого первый поток (самый критичный), не успевает забрать данные, что для меня очень критично. Помогите с методами решения данной проблемы.
  2. Всем добрый день! Имеется в наличии 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. Помогите кто сталкивался или у кого есть догадки m60a_4gb_8gb_16gb_ecc_nand.pdf
  3. А как же мне тогда достучаться до буфера из пространства пользователя?
  4. В модуле выделяется память для 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
  5. yocto под винду?? наверное вы имеете ввиду виртуальную машину с yoctoproject по остальному если можно, нормальные гайд по настройке, потому как сроки достаточно сжаты...заранее благодарен. Помимо этого интересует отладка.
  6. Требуется на host-машине с мастдаем скомпилировать бинарничек, который запускается на удалённой машине c embedded linux средствами qt или eclipse. Внимание вопрос! Как это сделать без использования виртуальной машины с линём?
  7. Есть плата на PCI шине. После разрешения прерывания для девайса, начинают сыпаться данные по DMA, по получению каждого пакета выставляется прерывание что данные поступили. Далее требуется передать данные(или указатель, где хранятся данные) в программу из user-spase. Вопрос в том, как сделать это правильно?
×
×
  • Создать...