Jump to content

    

sheynmanyu

Участник
  • Content Count

    76
  • Joined

  • Last visited

Community Reputation

0 Обычный

About sheynmanyu

  • Rank
    Частый гость

Recent Profile Visitors

361 profile views
  1. То есть я могу собрать и запустить любое ядро, пользуясь петалинуксом? Я вас правильно поняла?
  2. Я до конца еще не разобралась с петалинуксом. Но, как мне представляется, он ставит ту версию, которая ему соответствует. в общем, когда я запускаю петалинукс на своей плате, то в ответ на команду uname -a он мне выдает 4.14.0-xilinx
  3. У меня ядро 4.14 :) Можно и на втором ядре процессора попробовать baremetal application запустить. Это тоже как вариант :) Спасибо!
  4. Cама и разобралась. Помогло применить патч к исходникам линукса напрямую. Перейти в директорию linux-xlnx (с github xilinx) и выполнить команду patch -p1 < /путь/к патчу/patch-4.14-rt1.patch
  5. Здравствуйте! У меня petalinux 2018.3 и zedboard. Хочу добавить патч. Нашла вот такое замечательное описание (google в помощь) https://linux.incomeself.com/在petalinux中加入real-time修補檔/ Но есть одна проблема: делаю как написано, а желаемого выбора при настройке свойств ядра не появляется. Есть только Preemptible Kernel (Low-Latency Desctop). Как применить патч, чтобы все заработало? Почему может не получаться?
  6. Именно их я и сделала. В итоге на карте - измененный файл, а в оперативной памяти - какой-то дефолтный. Чуть попозже вернусь к этому вопросу и напишу о том, что вышло после поиска в /usr и /etc файлов настроек и инициализации.
  7. Среди layers проекта yocto есть matplotlib. Хочу его поставить к себе на petalinux 2018.3. Но при попытке в интерпретаторе python импортировать matplotlib вываливается ошибка, что нет модуля python-cycler. В гите open-embedded есть вот такой патч: https://patchwork.openembedded.org/patch/144425/ Как поступить с патчем, как его наложить? Подскажите, пожалуйста. Может, кому удавалось на петалинуксе запустить python-matplotlib? Буду признательна за помощь.
  8. С карты в оперативную память.
  9. Где они водятся и как их быстро искать? Через grep? В init.d?
  10. Как добавить/убрать список серверов в /etc/ntp.conf? Есть собранный petalinux, который грузится с SD карточки. В нем добавен демон ntpd. После сборки петалинукса монтирую rootfs.ext3, правлю файл /etc/ntp.conf, копирую все файлы на загрузочную флешку, загружаю zedboard и обнаруживаю дефолтный /etc/ntp.conf. На флешке - измененный, а при загрузке воспроизводится дефолтный. Подскажите, пожалуйста, где и что исправить, чтобы настройки для ntp брались из моего файла? И второе непонятное обстоятельство. Почему-то, прописав в /project-spec/meta-user/recipes-core/images/petalinux-image-full.bbappend IMAGE_INSTALL_append = " ntp" я получила собранным только ntpd (без ntpq, а хотелось бы). Файлы для сборки брала из http://petalinux.xilinx.com/sswreleases
  11. Система спокойно отдает нужный объем памяти. Я необходимые настройки для ядра выставила :) Ниже в программе я вызываю mmap для этого региона и после спокойно в него пишу и из него читаю... uint32_t *mem=(uint32_t *) mmap(NULL, 0x2000000, PROT_READ | PROT_WRITE, MAP_SHARED, fd_mem, 0x17000000); И операции вида mem[0] =5 ошибок не вызывают :laughing:
  12. Здравствуйте! Есть zedboard (zynq7000), на которой запущен petalinux. Надо по ssh передать файл с компм на zedboard, и чтобы этот файл в конце-концов оказался в буфере с известной физической памятью (в DDR). Копирование файла через ssh проблем не вызывает. А вот как ьбеспечить помещение этого файла в извастную область ddr памяти? Пока пробую с splice, но при этом зависает petalinux. Device tree (часть, касающаяся буфера, в который хочу поместить файл) reserved-memory { #address-cells = <1>; #size-cells = <1>; ranges; reserved: axi-buffer@0x17000000 { compatible = "shared-dma-pool"; no-map; //reusable; reg = <0x17000000 0x2000000>; //size 32 MB linux,dma-default; }; }; Код программы на C int filedes[2]; static int buf_size = 4096; loff_t in_off = 2; loff_t uuu = 0x17000000; off_t len; int fd_mem = open("/dev/mem",O_RDWR); int fd_file = open(argv[1],O_RDONLY); struct stat stbuf; if(pipe(filedes) < 0) return -1; if(fstat(fd_file, &stbuf) < 0) return -1; len = stbuf.st_size; while(len > 0) { if(buf_size > len) buf_size = len; /* * move to pipe buffer. */ ret = splice(fd_file, &in_off, filedes[1], NULL, buf_size, SPLICE_F_MOVE | SPLICE_F_MORE); printf("ret is %d\n",ret); if(ret < 0) return -1; len -= ret; } len = stbuf.st_size; printf("len = %d\n",len); while(len > 0) { if(buf_size > len) buf_size = len; /* * move from pipe buffer to out_fd */ ret = splice(filedes[0], NULL, fd_mem, &uuu, buf_size, SPLICE_F_MOVE | SPLICE_F_MORE); if(ret < 0) { close... return -1; } len -= ret; } На втором splice ядро выдает панику: Unable to handle kernel paging request at virtual address d7000000 pgd = db754000 [d7000000] *pgd=00000000 Internal error: Oops - BUG: 805 [#1] PREEMPT SMP ARM Modules linked in: CPU: 0 PID: 1316 Comm: libgannet Not tainted 4.14.0-xilinx #1 Hardware name: Xilinx Zynq Platform task: db6d8680 task.stack: db648000 PC is at arm_copy_from_user+0xd4/0x39c LR is at 0x6c6c6548 pc : [<c062b9b8>] lr : [<6c6c6548>] psr: 00070013 sp : db649dfc ip : 0000001c fp : ffffe000 r10: d7000000 r9 : db649ed0 r8 : 17000000 r7 : c788a000 r6 : 00000007 r5 : 00000000 r4 : 00000007 r3 : 00000000 r2 : ffffffe7 r1 : c788a004 r0 : d7000000 Flags: nzcv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 18c5387d Table: 1b75404a DAC: 00000055 Process libgannet (pid: 1316, stack limit = 0xdb648210) Stack: (0xdb649dfc to 0xdb64a000) Почему линукс зависает? Из-за no-map или из-за неправильного использования splice? Как грамотно решить задачу копирования файла в область с известным физическим адресом?
  13. По 1 вопросу: меняем файл myapp-init.bb INITSCRIPT_PARAMS = "start 87 5 ." После чего скрипт запустился тогда, когда это было нужно.
  14. C udev rule разобралась так: Создаем install прирложение с помощью команды petalinux-create -t apps --template install -n 95-local.rules --enable Правим файл 95-local.rules.bb S = "${WORKDIR}" FILESEXTRAPATHS_prepend := "${THISDIR}/files:" do_install() { install -d ${D}/${sysconfdir}/udev/rules.d install -m 0755 ${S}/95-local.rules ${D}/${sysconfdir}/udev/rules.d } FILES_${PN} += "${sysconfdir}/*" и сам файл скрипта 95-local.rules, записав в него желаемые udev rules. (Кстати, ATTRS{label} у него не существует. пришлось поменять.) После этого собираем петалинукс, например, с помощью petalinux-build -c rootfs & petalinux-build -x package. Копируем обновленные файлы на SD карту, загружаемся... И все работает. А вот с запуском myinit все еще зависаю. Как ему прописать, чтобы он запускался после появления надписи (в процессе загрузки) INIT: Entering runlevel: 5 Configuring network interfaces... udhcpc (v1.24.1) started Sending discover... Sending discover... macb e000b000.ethernet eth0: link up (1000/Full)