Feed for discussion OSTech in project QNX Operating System. http://community.qnx.com/sf/discussion/do/listTopics/projects.core_os/discussion.newcode Posts for OSTech post122515: QXN 7.0 Screen Does Not Working on R-Car http://community.qnx.com/sf/go/post122515 Hello, I have Renesas R-Car M3W board. I installed screen graphics from QNX Software Center for SDP 7.0 and I used default graphics build file. The board working but screen does not work. I saw this error on slog2info: ``` Jan 01 00:00:02.090 screen.77843 slog* 300 screen: starting up... Jan 01 00:00:02.090 screen.77843 slog 300 screen: Configuration file: /usr/lib/graphics/rcarm3/graphics.conf Jan 01 00:00:02.094 screen.77843 slog 200 [rcardu]ERR : Did not detect a supported revision of chip: 5220 ``` My chip revision is: ``` NOTICE: PPR is R-Car M3 Ver.3.0 ``` How can I resolve this issue? Best Regards, Faruk Mon, 01 Apr 2024 11:50:18 GMT http://community.qnx.com/sf/go/post122515 Faruk Kilavuz 2024-04-01T11:50:18Z post122514: Read from and write to I/O registers and memory http://community.qnx.com/sf/go/post122514 Hello all, BACKGROUND: -------------------------------- I am working on a project that is using QNX 7.1.0 2023/07/14-18:28:39EDT NXP_i.MX8QXP_CPU_Board aarch64le I am currently working on features related to IFS authentication, and will eventually want to program the OTP memory with public keys to allow authentication to proceed with correctly signed IFSs. Before burning the OTP fuses, I would like to test that my pki/signing/authentication are functioning correctly. For this reason, I'd like to leverage the i.MX8QXP shadow registers to simulate writing/reading the OTP memory. As per page 194, section 7.1.2 of the reference manual, this should be possible: "If not locked then it can be read sensed and programmed and the shadow registers can be overwritten (to allow emulation of programming without actually blowing fuses)." QUESTION: ---------------- I am unable to use QNX utilities like `io` or even `dd` to read from these shadow registers. For example, I have tried to read the default (unprogrammed) UNIQUE_ID value from shadow register 0x0900 with the following commands as root user: # io b 0x0900 # dd if=/dev/mem skip=$((0x0900)) bs=16 count=1 Both commands fail. I have attached the error output for both commands to this forum post. Any ideas about what I might be misunderstanding/overlooking would be greatly appreciated! Thu, 28 Mar 2024 19:44:08 GMT http://community.qnx.com/sf/go/post122514 Ibrahim Youssef 2024-03-28T19:44:08Z post122512: Re: How to get performance metrics from API http://community.qnx.com/sf/go/post122512 You're right, there isn't a universally portable C API for monitoring process memory and CPU utilization. However, for Linux you can definitely leverage the /proc filesystem. Here's how to monitor your process's memory utilization and CPU utilization on Linux using /proc: 1. Memory Utilization: a. Read the contents of the virtual memory statistic file /proc/self/statm. This file contains information about the memory usage of the process. 2. CPU Utilization: a. You can't access your process's specific CPU utilization from /proc. However, you can get system-wide CPU usage statistics by reading files like /proc/stat or /proc/loadavg. Monitor Linux Process Memory Usage Using C/C++: https://stackoverflow.com/questions/669438/how-to-get-memory-usage-at-runtime-using-c For a more comprehensive approach that might involve fetching data from various sources and platforms, consider using B2B data providers and their APIs. B2B data providers offer business data that can be integrated into your application using APIs (Application Programming Interfaces). This data can include business contact information, firmography data, and even industry trends, depending on the provider. By leveraging B2B data APIs, you can enrich your application with valuable business insights and potentially improve your application's functionality. See this article for more details on using B2B data integration APIs: B2B Data Integration APIs for Your App: https://www.globaldatabase.com/why-use-b2b-data-providers-apis-when-building-your-app Wed, 20 Mar 2024 12:35:20 GMT http://community.qnx.com/sf/go/post122512 Evan Dellani 2024-03-20T12:35:20Z post122508: Re: QNX 6.5 setrlimit not working and allocating more than 2Gig seems impossible http://community.qnx.com/sf/go/post122508 The available user address space on a 32bit system on qnx depends on the architecture. see http://www.qnx.com/developers/docs/6.6.0_anm11_wf10/#com.qnx.doc.neutrino.user_guide/topic/limits_PlatformSpecific.html so having 2/3.5g available user address space doesn't mean you are able to do a contiguous virtual address space allocation of that size. There is space also used for the stack, heap, executable, libs, etc... you can use something like pidin mem to see the memory layout in the process. http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.utilities/topic/p/pidin.html Tue, 12 Mar 2024 08:16:12 GMT http://community.qnx.com/sf/go/post122508 John Kearney 2024-03-12T08:16:12Z post122507: Re: QNX 6.5 setrlimit not working and allocating more than 2Gig seems impossible http://community.qnx.com/sf/go/post122507 &gt; I've been working with a client who has some 16Gig 6.6 machines and they want 6.5 or 6.6? (confusion between Subject and text here) &gt; to use all of the memory and be able to allocate the maximum amount for the &gt; address space. Somewhere I read that this is 3.5Gig. &gt; &gt; We are using -x on startup-* and we see the memory. &gt; We start test programs with "on -P". This works. We can allocate all the &gt; memory, just not more than 2Gig per process. &gt; &gt; We've try to use setrlimit(RLIMIT_AS, ...) and it doesn't work. We read after &gt; writing the limit and it doesn't change. can you describe in detail how you're testing this? From what you write, it seems you're assuming that this will change the size of the process's address space right away ... is that the case? &gt; Mysteriously "ulimit -a" show that memory is unlimited. &gt; &gt; We've tried allocating using malloc() which will only handle 2Gig at a time &gt; and mmap() with the same results. Tue, 12 Mar 2024 06:16:49 GMT http://community.qnx.com/sf/go/post122507 Michael Schuster 2024-03-12T06:16:49Z post122506: QNX 6.5 setrlimit not working and allocating more than 2Gig seems impossible http://community.qnx.com/sf/go/post122506 I've been working with a client who has some 16Gig 6.6 machines and they want to use all of the memory and be able to allocate the maximum amount for the address space. Somewhere I read that this is 3.5Gig. We are using -x on startup-* and we see the memory. We start test programs with "on -P". This works. We can allocate all the memory, just not more than 2Gig per process. We've try to use setrlimit(RLIMIT_AS, ...) and it doesn't work. We read after writing the limit and it doesn't change. Mysteriously "ulimit -a" show that memory is unlimited. We've tried allocating using malloc() which will only handle 2Gig at a time and mmap() with the same results. Tue, 12 Mar 2024 02:14:53 GMT http://community.qnx.com/sf/go/post122506 Mitchell Schoenbrun 2024-03-12T02:14:53Z post122505: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122505 &gt; &gt; Hi Michael Schuster , &gt; &gt; I have provided the details. Is this sufficient for you to narrow down the &gt; issue. no, you provided code snippets. Code that compiles and runs and demonstrates what you claim to see is something different. In addition to actual runnable code, show how to run it to reproduce the behaviour. regards &gt; Please let us know . &gt; &gt; Thanks &gt; Sayooj Mandodi &gt; Mon, 04 Mar 2024 10:11:59 GMT http://community.qnx.com/sf/go/post122505 Michael Schuster 2024-03-04T10:11:59Z post122504: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122504 Hi Michael Schuster , I have provided the details. Is this sufficient for you to narrow down the issue. Please let us know . Thanks Sayooj Mandodi Mon, 04 Mar 2024 09:49:34 GMT http://community.qnx.com/sf/go/post122504 Sayooj M(deleted) 2024-03-04T09:49:34Z post122503: Re: Video decode on RPi4 http://community.qnx.com/sf/go/post122503 No luck so far. Seems like video decoding plugins exist for x86 and i.MX8, but have not been successful seeing how to do this on the pi. If anyone has gstreamer libs working, that would be awesome. The kmscube example running on Raspian works well for video decode and it uses the gstreamer pipeline (which I realize is quite involved). Sun, 03 Mar 2024 18:38:26 GMT http://community.qnx.com/sf/go/post122503 David Sheinberg 2024-03-03T18:38:26Z post122501: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122501 &gt; we had printed FD value... in case of issue, FD was less than 255. I mean, FD was coming random value , which was always less than 255 . Thu, 29 Feb 2024 12:39:55 GMT http://community.qnx.com/sf/go/post122501 Sayooj M(deleted) 2024-02-29T12:39:55Z post122500: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122500 we had printed FD value... in case of issue, FD was less than 255. Thu, 29 Feb 2024 12:33:32 GMT http://community.qnx.com/sf/go/post122500 Sayooj M(deleted) 2024-02-29T12:33:32Z post122499: Virtio shmem http://community.qnx.com/sf/go/post122499 Hello everyone , I am having a difficulty to implement the virito shmem between guest and host. I have done the configuraiton part in the VM qvmconf file and issued the commands guest-shmem with same address and interrupt number that are in the configuration file. The problem is in the host i can see the share area created under /dev/shmem/SHMEM_GUEST but when i try to cd or do any operation i can`t do it. How can i write to that area from either host or guest and read it back ? Tue, 27 Feb 2024 15:15:06 GMT http://community.qnx.com/sf/go/post122499 Muhammed Alaaeddin(deleted) 2024-02-27T15:15:06Z post122498: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122498 &gt; Do you specify the file system type when mounting? &gt; QNX6FS is the default, other file systems must be specified at the mount &gt; command, e.g. "-t dos" Ok, I think I was mislead by the documentation. The utility reference of mount says: If you don't specify the filesystem, mount tries to determine which to use. If it can't figure out which to use, it uses qnx6. Mounting with -t dos makes the partition accessible I can see the files. Many thanks guys, fantastic support (both info and speed)! Tue, 27 Feb 2024 14:30:18 GMT http://community.qnx.com/sf/go/post122498 Zsolt Nagy 2024-02-27T14:30:18Z post122497: Re: Video decode on RPi4 http://community.qnx.com/sf/go/post122497 Did you get anywhere with that? My naive assumption is that if both screen and mm-renderer work on the platform, then there is no reason why video wouldn't. --Elad Tue, 27 Feb 2024 14:23:03 GMT http://community.qnx.com/sf/go/post122497 Elad Lahav 2024-02-27T14:23:03Z post122496: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122496 Silly question - are you sure your mount command is correct for a FAT partition? Can you share it? --Elad Tue, 27 Feb 2024 14:20:01 GMT http://community.qnx.com/sf/go/post122496 Elad Lahav 2024-02-27T14:20:01Z post122495: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122495 Do you specify the file system type when mounting? QNX6FS is the default, other file systems must be specified at the mount command, e.g. "-t dos" Tue, 27 Feb 2024 14:19:27 GMT http://community.qnx.com/sf/go/post122495 Gerd Wetzel 2024-02-27T14:19:27Z post122494: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122494 If you got this far then the SD card clearly works properly. The second problem I mentioned results in not being able to mount any partition. There's a chkdosfs utility in the SDP. Perhaps it can shed some light on what's wrong with the FAT partition. --Elad Tue, 27 Feb 2024 14:17:40 GMT http://community.qnx.com/sf/go/post122494 Elad Lahav 2024-02-27T14:17:40Z post122493: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122493 &gt; There are two known issues with the SD card driver: &gt; &gt; 1. Newer revision boards (silently) changed the DMA range for the hardware. &gt; You probably have the C0 version. We have recently fixed that so that the &gt; driver now detects things automatically. For now just dropping that option &gt; from the command line should be fine (unless you are building an image that &gt; needs to support both hardware versions). &gt; 2. Not all SD cards work properly. I have no idea why, but then again I'm not &gt; a hardware/driver guy. I have had no issues with SanDisk cards, but many &gt; people have had issues with some other brands. &gt; &gt; Finally, you may want to use a more robust file system than FAT. &gt; &gt; I love Raspberry Pi - it's a technological marvel in terms of price/ &gt; performance. But the foundation does a really lousy job at publishing &gt; information about the hardware. &gt; &gt; --Elad Thanks Elad for the quick follow-up. I am just dropping the option for now, I do not need to support other HW, so that works. About file systems: I've tried to create two additional partitions, one FAT32 (type 14) and one qnx6fs (type 179). Here are my observations: - both partitions created via the QNX host and persist in the partition table after a reboot - both partitions formatted with their respective formatting tool (mkdosfs and mkqnx6fs) - both partitions mount - the qnx6 one can be accessed fine after mounting - the fat32 says "Corrupted file system detected" I am also checking the card with GParted on my Ubuntu PC, I can see all three partitions (the FAT32 with the IFS, and the two created by the QNX host). The second one shows up with "unknown" file system, as expected, and the third one is recognized as FAT32. It seems like everything is working fine except actually reading the file system. The preference towards FAT32 is motivated by a need: I would like to be able to copy files to this "data" partitions using a Windows machine... Should I just buy more SD cards and hope for the best? I would really like to understand at least what's wrong. The HW should be ok as the partitions are created as expected, it is really only just accessing them after mounting... Tue, 27 Feb 2024 14:13:30 GMT http://community.qnx.com/sf/go/post122493 Zsolt Nagy 2024-02-27T14:13:30Z post122492: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122492 There are two known issues with the SD card driver: 1. Newer revision boards (silently) changed the DMA range for the hardware. You probably have the C0 version. We have recently fixed that so that the driver now detects things automatically. For now just dropping that option from the command line should be fine (unless you are building an image that needs to support both hardware versions). 2. Not all SD cards work properly. I have no idea why, but then again I'm not a hardware/driver guy. I have had no issues with SanDisk cards, but many people have had issues with some other brands. Finally, you may want to use a more robust file system than FAT. I love Raspberry Pi - it's a technological marvel in terms of price/performance. But the foundation does a really lousy job at publishing information about the hardware. --Elad Tue, 27 Feb 2024 00:38:29 GMT http://community.qnx.com/sf/go/post122492 Elad Lahav 2024-02-27T00:38:29Z post122491: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122491 I am attaching the slog for the build without the "bs=bmstr_base=0xc0000000 " I can immediately see a difference under the SD SW CAPS portion: Not working, bmstr_base present: slog 1800 SD SW CAPS: slog 1800 bus mode 0x0, cmd sys 0x0 slog 1800 drv type 0x0, curr limit 0x0 slog 1800 dtr 0 slog 1800 CFG: Timing LS, DTR 25000000, Bus Width 1 bit Somewhat working, bmstr_base removed: slog 1800 SD SW CAPS: slog 1800 bus mode 0x3, cmd sys 0x1 slog 1800 drv type 0x1, curr limit 0x1 slog 1800 dtr 50000000 slog 1800 CFG: Timing HS, DTR 50000000, Bus Width 4 bit Mon, 26 Feb 2024 22:38:12 GMT http://community.qnx.com/sf/go/post122491 Zsolt Nagy 2024-02-26T22:38:12Z post122490: Re: sdmmc driver on rpi4 version http://community.qnx.com/sf/go/post122490 Hi guys, new to the forum, I am having the same issue with the RPi4 BSP. The driver is started with: devb-sdmmc-bcm2711 cam pnp,verbose mem name=below1G sdio addr=0xfe340000,irq=158,bs=bmstr_base=0xc0000000, verbose=4 sdmmc verbose=4 disk name=sd sd0 shows up in /dev but no partitions, fdisk confirms. Interestingly, if I remove the busmaster base option, I can see the partitionts (sd0t11 and sd0t12 as expected, two FAT32 partitions) but upon mounting and accessing them, it still complains about corrupted file system. I am attaching the slog. Any help would be greatly appreciated. RPi4 8GB, SD card is a 64GB Samsung. First partition ~650MB (contains the IFS), second partition 1GB. Mon, 26 Feb 2024 21:54:17 GMT http://community.qnx.com/sf/go/post122490 Zsolt Nagy 2024-02-26T21:54:17Z post122479: Video decode on RPi4 http://community.qnx.com/sf/go/post122479 I've got mm-renderer working on the Pi (QNX 7.1) and can playback audio from various media (including video files). Works well. But as of now it seems there is no video playback supported on the Pi - is that right? (The system reports no decoder found, and I see the hardware decoder plugins for some platforms, but not the VideoCore that's on the Pi.) Thanks! Sun, 11 Feb 2024 00:56:02 GMT http://community.qnx.com/sf/go/post122479 David Sheinberg 2024-02-11T00:56:02Z post122478: Re: PCI/PCIe interrupts don't work as expected http://community.qnx.com/sf/go/post122478 HI, I tried the InterruptQuery() function and it showed that the source was masked more than once sometimes. However, it shows the same for PCI and PCIe devices and PCIe devices do work. I made a mistake in saying that one of the Optilex's worked. I tested it again today and it didn't. However I found a computer in which all devices (PCI/PCIe) seem to work correctly even when interrupts are shared. Maybe it's an issue with the hardware (DELL Optiplex 9010, Intel(R) 7 Series/C216 Chipset) or the BSP is not fully configured. For now this works for me. Thanks for your help. Mon, 05 Feb 2024 13:19:16 GMT http://community.qnx.com/sf/go/post122478 Alexander Minor 2024-02-05T13:19:16Z post122477: Re: PCI/PCIe interrupts don't work as expected http://community.qnx.com/sf/go/post122477 I am not a PCI expert, but one thing to watch out for when sharing interrupts is that the source will remain masked as long as at least one attached handler has it masked. You can use the new InterruptQuery() call to see if the source is masked while your driver is waiting for it. --Elad Fri, 02 Feb 2024 13:05:17 GMT http://community.qnx.com/sf/go/post122477 Elad Lahav 2024-02-02T13:05:17Z post122476: PCI/PCIe interrupts don't work as expected http://community.qnx.com/sf/go/post122476 Hi, I am currently porting a device driver from QNX7.1 to QNX8.0 and am observing weird behavior (maybe a bug?) when it comes to PCI/PCIe interrupts. When I only use PCIe devices, the interrupt handling using InterruptAttachThread() or InterruptAttachEvent() and InterruptWait() works like expected. When I add a PCI device to this combination, this device will stay inside InterruptWait() and not return anymore. I am using the x86_64 BSP and I tried it on two DELL Optiplex 9010. Using only a single PCI device (no PCIe) in those PC's also shows different results. In one of them it worked as expected, in the other it also stayed inside InterruptWait(). Flags used for InterruptAttachThread/Event: _NTO_INTR_FLAGS_NO_UNMASK | _NTO_INTR_FLAGS_END. Flags used for InterruptWait: _NTO_INTR_WAIT_FLAGS_UNMASK | _NTO_INTR_WAIT_FLAGS_FAST. The devices use legacy interrupts, not MSI. I attached the output of pci-tool for the working (pcie_only) and failing (pcie_and_pci) environment. The only thing I see is, that they share an interrupt. The devices have the vid 15cf and use IRQ 16 &amp; 18. There is also an Intel USB Controller that uses IRQ 16. Are there any known PCI/PCIe issues for specific CPU/chipsets? Does somebody know a way I could debug/resolve this issue? Fri, 02 Feb 2024 12:52:35 GMT http://community.qnx.com/sf/go/post122476 Alexander Minor 2024-02-02T12:52:35Z post122475: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122475 That's not what I asked. What is the numerical value of the fd? select() has an upper limit of 255. Thu, 01 Feb 2024 12:57:53 GMT http://community.qnx.com/sf/go/post122475 Elad Lahav 2024-02-01T12:57:53Z post122474: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122474 We have verified that during issue scenario correct FD is being passed to pselect. Same doubt was raised and when pselect was getting blocked we printed the FD and made sure its valid one . Thu, 01 Feb 2024 12:54:56 GMT http://community.qnx.com/sf/go/post122474 Sayooj M(deleted) 2024-02-01T12:54:56Z post122473: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122473 What is the highest fd in this case? Note that select() uses a fixed value for the fd set, and is generally considered as a bad interface as a result. If the highest fd is greater than 255 then you need to re-define FD_SETSIZE. Better yet, switch to poll(). --Elad Thu, 01 Feb 2024 12:04:06 GMT http://community.qnx.com/sf/go/post122473 Elad Lahav 2024-02-01T12:04:06Z post122472: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122472 we have a use case where multiple clients are writing data to same socket which is receiver end. Socket type used is SOCK_DGRAM Operating System: QNX 7 Platform: Qualcomm 6145 setsockopt BUFFER_SIZE: 246000 We encountered no buffer exception in our code. Below is the syntax for pselect system call.. and we are using send/recv apis to send and received the data. pselect((maxFd + 1), &amp;mFdSet, NULL, NULL, NULL, NULL) send(mFd,buffer,uiSize, MSG_WAITALL); recv(fd, buffer,uiSize,MSG_WAITALL); when multiple clients were trying to write the data, send api was returning "no buffer" exception. when we checked in detail and added log before and after pselect system call, we observed that initially when we were pushing data before and after pselect prints were coming and then suddenly "after pselect" print stopped coming although data was being pushed from client side, after some time when socket buffer becomes full, clinets started getting "no buffer". Thu, 01 Feb 2024 11:56:59 GMT http://community.qnx.com/sf/go/post122472 Sayooj M(deleted) 2024-02-01T11:56:59Z post122471: Re: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122471 Hi, side note: one message would have been quite enough :-) &gt; Facing one issue where PSELECT system call is getting blocked.. although data &gt; is being pushed continuously from one end , However PSELECT is not getting &gt; unblocked. After some time we see socket buffer gets completely filled and it &gt; starts throwing no buffer exception. &gt; &gt; As a recovery , we added timeout, &gt; We would like to know if there is any such known issue with PSELECT. I'd suggest you try to create a minimal reproduction case that clearly demonstrates the behaviour you're describing. Also make sure to add information about version of QNX and the platform you're using. HTH Michael Thu, 01 Feb 2024 06:47:51 GMT http://community.qnx.com/sf/go/post122471 Michael Schuster 2024-02-01T06:47:51Z post122470: Re: PSELECT System Call Getting Blocked Forever http://community.qnx.com/sf/go/post122470 Facing one issue where PSELECT system call is getting blocked.. although data is being pushed continuously from one end , However PSELECT is not getting unblocked. After some time we see socket buffer gets completely filled and it starts throwing no buffer exception. As a recovery , we added timeout, We would like to know if there is any such known issue with PSELECT. Thu, 01 Feb 2024 06:16:14 GMT http://community.qnx.com/sf/go/post122470 Sayooj M(deleted) 2024-02-01T06:16:14Z post122469: PSelect Getting Blocked For A Long Time http://community.qnx.com/sf/go/post122469 Facing one issue where PSELECT system call is getting blocked.. although data is being pushed continuously from one end , However PSELECT is not getting unblocked. After some time we see socket buffer gets completely filled and it starts throwing no buffer exception. As a recovery , we added timeout, We would like to know if there is any such known issue with PSELECT. Thu, 01 Feb 2024 06:13:07 GMT http://community.qnx.com/sf/go/post122469 Sayooj M(deleted) 2024-02-01T06:13:07Z post122467: RPi4+screen with two displays http://community.qnx.com/sf/go/post122467 I see in the release notes that the driver seems to support two outputs and I see the firmware loaded (the gradient colored square) if I plug two in. Any pointers for setting up the config file to support two pipelines? I'm just trying to see gles2-gears appear on the second display (using the -display= option). And if anyone could verify if the eglSwapBuffers() actually waits for the vertical sync (or if screen_wait_vsync() works on the RPi), I'd be most appreciative. Trying to get good timing on display refreshes, but can't quite get that working. Thanks! Sat, 27 Jan 2024 18:31:25 GMT http://community.qnx.com/sf/go/post122467 David Sheinberg 2024-01-27T18:31:25Z post122447: Re: to get cpu percentage for each threads, not process http://community.qnx.com/sf/go/post122447 Hi,there I'm encountering an issue: at time t1, let t1_cpu = debug_thread_t.sutime, and at time t2, t2_cpu = debug_thread_t.sutime, with t2 - t1 = 1 being a constant value. Simultaneously, Δt_cpu is also a stable value. However, when I invoke settimeofday() to modify the system time, Δt_cpu immediately becomes a relatively small value. Could you please help me with the following questions: 1) What is the relationship between debug_thread_t.sutime and the system time, and why is it influenced by changes in the system time? 2) Are there any methods to obtain thread execution time that remains unaffected by changes in the system time? Mon, 08 Jan 2024 10:28:48 GMT http://community.qnx.com/sf/go/post122447 zhao weikun(deleted) 2024-01-08T10:28:48Z post122442: Production System protection - QNX 7.1 http://community.qnx.com/sf/go/post122442 Hello, We are now getting to the stage where we need to consider what protection mechanisms we want (or need) to employ with our system that will within the next few months (hopefully) enter production phase. I am very aware of the unique features provided by QNX to lock down the system (such as encrypted IFS, read-only IFS, procmgr abilities, etc). In our case we have an additional "security" mechanism and that is on our Xilinx (ARM64le) system the SD card is read-only. Despite our attempts to rectify it using guidance provided in the ZCU-104 release notes (another story). FYI, only the ZCU-102 allows us to write to SDMMC. Also, we are intending to use an Enclustra XU1 Mercury MP-SoC which is basically identical to the Xilinx products. (We need to use these expensive products because we have rather hefty FPGA requirements). I am actually not too upset about this as ordinarily I would be happy for no writable mass storage device to be employed (by the production system). Except for one case scenario. What is a generally accepted approach taken to lock down modern QNX systems that ordinarily require no write to non-volatile storage capability except when updating "firmware"? While (as I said) I would ordinarily be content with a read-only SD based file system, for this purpose I think we really need it to be writable in certain but controlled circumstances (such as system updates). But the intent would be for it to be normally read-only. As a result we need to get these SD cards writable and we're working on that. But I am concerned that by doing so we open up a possible "back door". We have tried to get eMMC working but like the SDMMC we can't write to it. We ran into all sorts of problems actually so we dropped that idea. Should we be looking at employing QSPI (FLASH)? If so, how easy is it to provide a procedure for customers to use in order to update system firmware/software (whatever)? I'm not sure if providing JTAG capability and instructions would be a good idea. I haven't tried using QSPI before and am not sure how the IPL gets to find it and run the IFS from it. As I understand things there is no need to copy the IFS into memory - just the startup code. So what is the recommended approach in this situation? If necessary, if QSPI is deemed to be the way forward we can look at that (it has certain attractions as at least it can't be removed for nefarious purposes)! The IPL provided in the BSP makes it easy to boot from SDMMC but I'm not sure what would need to be done to run from QSPI. Thanks, and Cheers, Geoff. Wed, 29 Nov 2023 04:33:44 GMT http://community.qnx.com/sf/go/post122442 Geoffrey Roberts 2023-11-29T04:33:44Z post122441: Re: Video Play Error http://community.qnx.com/sf/go/post122441 You have various errors in the log, the first, AFAICT, being a SCSI I/O error, which usually points to trouble with HW. -- Michael Mon, 27 Nov 2023 11:10:31 GMT http://community.qnx.com/sf/go/post122441 Michael Schuster 2023-11-27T11:10:31Z post122440: Video Play Error http://community.qnx.com/sf/go/post122440 Hello, I have Salvator-XS board(m3n processor) and I try play .mp4 video on this board. I installed below package on qnxsoftware: - QNX SDP 7.1 Multimedia - Encode and Casting - QNX SDP 7.1 Multimedia - Media Renderer API - QNX SDP 7.1 Multimedia - MP4 Container Support - QNX SDP 7.1 Multimedia - MP4 Muxer Support - QNX SDP 7.1 Multimedia - Playback - QNX SDP 7.1 Multimedia - Resource Arbiter - QNX SDP 7.1 Multimedia - RTP Input Support - QNX SDP 7.1 Multimedia - RTP Output Support - QNX SDP 7.1 Multimedia - RTSP Input Support - QNX SDP 7.1 Multimedia - Screen Output Support - QNX SDP 7.1 Multimedia - Stream Buffering Support - QNX SDP 7.1 Multimedia - Stream Reading Support - QNX SDP 7.1 Multimedia - Stream and Casting Server - QNX SDP 7.1 Multimedia - Video Thumbnail Output Support And I added .scripts on this site to my .build file https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.mm.target_images/topic/script.html Also I added code lines on this site to my .build file: https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.mm.target_images/topic/contents.html After I copied test.mp4 file to USB-Flash and and I mounted flash this command: 'mount -t dos /dev/hd0t11 /tmp/' And go to /tmp folder. Run this command: 'mmrplay -a "" -v screen: /tmp/test.mp4' Board return this: '/tmp/test.mp4: error 5 "MMR_ERROR_UNSUPPORTED_MEDIA_TYPE" (mmf#4047,"Can't build graph")' Any suggestion? Best Regards, Serhat Mon, 27 Nov 2023 06:09:09 GMT http://community.qnx.com/sf/go/post122440 serhat doganay 2023-11-27T06:09:09Z post122431: Re: Binding QNET to ip using QNX7.1 http://community.qnx.com/sf/go/post122431 Hi Mario, I got diverted away from my IP binding problem for a few days. A couple of hours at it yesterday did not bear fruit so I have raised a ticket with the support folks. Thanks for your input! Geoff. Tue, 07 Nov 2023 22:15:14 GMT http://community.qnx.com/sf/go/post122431 Geoffrey Roberts 2023-11-07T22:15:14Z post122422: Re: Legacy MSI without Per Vector Masking (PVM) support http://community.qnx.com/sf/go/post122422 Tried on real hardware PCM-26D2CA PCIe CAN device, Advantech iDoor Module: 2-Ports Isolated CANBus mPCIe, DB9 Same result, the PCI 0x05 capability functions report Per Vector Masking (PVM) is not supported. With such hardware, what is the usual practice? Do you just ignore masking/unmasking the MSI interrupts? Or is there some other way to mask/unmask? Fri, 03 Nov 2023 03:36:58 GMT http://community.qnx.com/sf/go/post122422 Deniz Eren 2023-11-03T03:36:58Z post122420: Re: Legacy MSI without Per Vector Masking (PVM) support http://community.qnx.com/sf/go/post122420 Re: https://github.com/Deniz-Eren/dev-can-linux/blob/main/src/pci-capability.c#L264 Wed, 01 Nov 2023 06:20:17 GMT http://community.qnx.com/sf/go/post122420 Deniz Eren 2023-11-01T06:20:17Z post122419: Re: Legacy MSI without Per Vector Masking (PVM) support http://community.qnx.com/sf/go/post122419 For clarrity, to test MSI even though error PCI_ERR_ENOTSUP is reported, I have commented out our check for PVM support. As said, from a send/receive perspective, in QEmu VM, it seems to be working. I just need validation this is a valid way forwards, or do we need an alternative mask/unmask besides the MSI API? if (capid == CAPID_MSI) { cap_msi_mask_t mask; r = cap_msi_get_irq_mask(dev-&gt;hdl, dev-&gt;msi_cap, &amp;mask); if (r == PCI_ERR_ENOTSUP) { log_err("capability 0x%02x (MSI) Per Vector Masking (PVM) not " "supported\n", capid); //msix_uninit(dev); //return r; } else if (r != PCI_ERR_OK) { log_err("cap_msi_get_irq_mask error; %s\n", pci_strerror(r)); msix_uninit(dev); return r; } } Wed, 01 Nov 2023 06:17:50 GMT http://community.qnx.com/sf/go/post122419 Deniz Eren 2023-11-01T06:17:50Z post122418: Legacy MSI without Per Vector Masking (PVM) support http://community.qnx.com/sf/go/post122418 I have a public open-source project that aims to porting of Linux CAN-bus drivers to QNX. Repository: https://github.com/Deniz-Eren/dev-can-linux I have a question regarding PCI capability 0x05 (MSI) usage when Per Vector Masking (PVM) isn't supported by legacy devices. Calling function cap_msi_get_irq_mask() returns PCI_ERR_ENOTSUP as per the MSI API documentation: https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.pci_server/topic/module_msi.html Quote: "The following APIs retrieve the interrupt pending/mask values, respectively, if Per Vector Masking (PVM) is supported" This fine, however the question that comes next, if I'm dealing with a legacy PCI device, which has MSI support, however does NOT support Per Vector Masking (PVM), then how do I mask and unmask MSI vectors? Is it OK to just not mask at all? I haven't tested with real hardware yet, this pending, however, I have tested with QEmu, by implementing support for such a device (https://github.com/Deniz-Eren/qemu/tree/feature/can-sja100-pci-msi-support). This test is effectively done without masking and unmasking; the driver seems to work correctly. Well to elaborate more, the driver is still calling the masking API functions and printing error messages "error: Requested Operation Is Not Supported [(PCI_ERR_ENOTSUP)]" from pci_strerror(). So summarize, do you recommend doing any other type of masking than the MSI API functions when using this type of legacy device that has MSI but does NOT support Per Vector Masking (PVM)? Wed, 01 Nov 2023 06:10:54 GMT http://community.qnx.com/sf/go/post122418 Deniz Eren 2023-11-01T06:10:54Z post122417: Re: Binding QNET to ip using QNX7.1 http://community.qnx.com/sf/go/post122417 Hi, Geoffrey, standard support is Ok, they will support You well. BTW I suspect the trouble is in the dns option: probably the name of the target is not registered or You do not have a dns in touch.... maybe You can try just with the ip ecapslulation: mount -T io-pkt -o bind=genet0,bind=ip lsm-qnet.so good work Mario Tue, 31 Oct 2023 07:37:45 GMT http://community.qnx.com/sf/go/post122417 mario sangalli 2023-10-31T07:37:45Z post122416: Re: Binding QNET to ip using QNX7.1 http://community.qnx.com/sf/go/post122416 Hi Mario, Following your instructions I'm not having much luck. As you will see I'm employing your 2nd mount option (no "mount:-"). The scenario is as follows: Two RP4's connected to each other via a network switch. One has the hostname "rpi4-teg" with the IP address 192.168.15.213 and the other "rpi4-ndldev" with the IP address 192.168.15.209. /etc/hosts file below. When QNET is started as follows both (and a couple of other QNX machines) become visible in /net and everything works fine: mount -T io-pkt -o bind=genet0 lsm-qnet.so However, when QNET is started, attempting to bind to IP, as follows only the hostname shows in /net. mount -T io-pkt -o bind=genet0,bind=ip,resolve=dns lsm-qnet.so I don't expect the other two QNX7.1 machines on the network to remain visible as they are "pure" QNET - no IP encapsulation. But I would have expected the two that are intended to have IP encapsulation to appear in each ones /net directory. For example: ls /net /rpi4-teg /rpi4-ndldev But only one appears - the name of the RPi4 issuing the command. I have tried changing various timeout and retry options to no avail. Certainly, my lsm-qnet.so setup in QNX6.5 doesn't work! :-) The intent is to not have a switch but instead for each to be connected point-to-point using Ubiquiti NanoStation M5's that of course can route only IP. These are both configured with IP addresses on the same network as 192.168.15.20 and 192.168.15.21 respectively. With rpi4-ndldev physically connected ONLY to the Ubiquiti (no switch connection) I am able to ping rpi4-teg (using the serial terminal). Likewise from an SSH terminal on rpi4-teg I can ping rpi4-ndldev. This proves that the wireless system and IP is working. The syslog entries start showing "bad layer 2" messages (as shown below). I don't know what these mean or why they occur. Any help with this much appreciated! (BTW, we do have a standard support agreement but I thought I'd try the forum first as I figure - and am hoping - that this will be real easy to resolve)! Anyway, following is how I am configuring both Pi's : Thanks for your attention! :-) Geoff. -------------------------------------------------------------------------- // The network driver is started in ifs-rpi4.bin (IFS) ####################################################################### ## Network driver ####################################################################### display_msg Starting Network driver... io-pkt-v6-hc mount -T io-pkt /lib/dll/devnp-genet.so if_up -p genet0 /lib/dll/lsm-qnet.so=lsm-qnet.so -------------------------------------------------------------------------- // output of slog2info - filtered to include io-pkt related entries. Note that the RTC is not read until after the mount -T io-pkt -o bind=genet,bind=ip... call Jan 01 12:00:00.372 iopkt.65549 main_buffer* 0 tcpip starting Jan 01 12:00:00.372 iopkt.65549 main_buffer 0 smmu support is disabled Jan 01 12:00:00.374 iopkt.65549 main_buffer 0 initializing IPsec... Jan 01 12:00:00.374 iopkt.65549 main_buffer 0 done Jan 01 12:00:00.374 iopkt.65549 main_buffer 0 IPsec: Initialized Security Association Processing. // this is presumably from the following in the IFS io-pkt-v6-hc mount -T io-pkt /lib/dll/devnp-genet.so Jan 01 12:00:00.376 iopkt.65549 main_buffer 0 /lib/dll/devnp-genet.so (null) Jan 01 12:00:00.376 iopkt.65549 main_buffer 0 genet0 Jan 01 12:00:00.478 io_pkt_v6_hc.65549 slog* 0 genet:genet_ext_phy_init():309: Detected PHY vendor OUI:0x180361. Jan 01 12:00:00.488 io_pkt_v6_hc.65549 slog 0 genet:genet_init():621: MAC: e4:5f:01:fd:eb:c4 Jan 01 12:00:00.488 io_pkt_v6_hc.65549 slog 0 genet:genet_init():630: Attaching interrupt(189). Jan 01 12:00:00.699 io_pkt_v6_hc.65549 slog 0 genet:genet_init():621: MAC: e4:5f:01:fd:eb:c4 -------------------------------------------------------------------------- // /etc/rc.d/rc.local then executes the following : ifconfig genet0 192.168.15.213 netmask 255.255.255.0 up mount -T io-pkt -o bind=genet0,bind=ip,resolve=dns lsm-qnet.so -------------------------------------------------------------------------- // this resulting from the mount -T io-pkt -o bind=genet0,bind=ip,... Jan 01 12:00:01.248 iopkt.65549 main_buffer 0 lsm-qnet.so bind=genet0,bind=ip,resolve=dns Jan 01 12:00:01.248 io_pkt_v6_hc.65549 slog 0 qnet(L4): qnet_birth(): qnet_init() - calling Jan 01 12:00:01.248 io_pkt_v6_hc.65549 slog 0 qnet(kif): mac_load(): security policy not being used Jan 01 12:00:01.249 io_pkt_v6_hc.65549 slog 0 qnet(L4): try_ifp(): new interface: genet0: index 0 mac addr E4:5F:01:FD:EB:C4 Jan 01 12:00:01.249 io_pkt_v6_hc.65549 slog 0 qnet(QOS): nd_change_notify(): Node Up: nd 0 rpi4-teg.rtts Jan 01 12:00:01.250 io_pkt_v6_hc.65549 slog 0 qnet(L4): qnet_birth(): qnet_init() - complete // RTC has now been read [from within rc.local] so we have "real" time set Oct 31 13:29:39.513 io_pkt_v6_hc.65549 slog 0 genet:genet_mdi_callback():233: if=genet0: Link up (100 BaseT Full Duplex) // What do these "bad layer" entries mean? Oct 31 13:29:54.277 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:29:57.301 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:30:24.274 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:30:27.299 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:30:54.271 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:30:57.296 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:31:24.268 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:31:27.293 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:31:54.266 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:31:57.291 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:32:24.263 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 Oct 31 13:32:27.288 io_pkt_v6_hc.65549 slog 0 qnet(QOS): rx_user_data(): bad layer 2 rxd from nd 0 -------------------------------------------------------------------------- /etc/hosts on both RPi4 units are the same: # # Host Database # 127.1 localhost.localdomain localhost ::1 localhost.localdomain localhost 192.168.15.20 ub_teg 192.168.15.21 ub_ndldev 192.168.15.213 rpi4-teg 192.168.15.209 rpi4-ndldev Tue, 31 Oct 2023 02:39:57 GMT http://community.qnx.com/sf/go/post122416 Geoffrey Roberts 2023-10-31T02:39:57Z post122415: Re: pci-server RPi4 [solved] http://community.qnx.com/sf/go/post122415 So some searching through qnx software manager made led me to the newer version of pci_hw-bcm2711-rpi4.so.3.0 in the PCI HW Module, which I had installed. The problem was that I had a pci folder in my BSP working directory that was being used to pull in 2.0. This is not in the newer release of the BSP from what I can tell, but I still had the folder around. Once I got rid of it, the version from the target/qnx7/aarch64/lib/dll/pci was used. Sorry for wasted bandwidth! -David Sat, 28 Oct 2023 19:07:19 GMT http://community.qnx.com/sf/go/post122415 David Sheinberg 2023-10-28T19:07:19Z post122414: Re: pci-server RPi4 http://community.qnx.com/sf/go/post122414 Of course I should have looked in slog, which clearly indicates the pci_hw-bcm2711-rpi4.so is incompatible: Dec 31 19:14:21.262 pci_server.372761 pci_log 0 ERROR,0,-2,5 [372761:1]: Module /lib/dll/pci/pci_hw-bcm2711-rpi4.so, v2.0 failed to load, err: Module Is Incompatible With Current PCI Server or Library Version [(PCI_ERR_MOD_COMPAT)] Dec 31 19:14:21.262 pci_server.372761..0 pci_dbg 0 DEBUG,1,2,5 [372761:1]: probe for B0:D0:F0 failed, vid = 0x2035, Module Does Not Exist Or Could Not Be Loaded [(PCI_ERR_NO_MODULE)] Dec 31 19:14:21.262 pci_server.372761 pci_log 0 ERROR,0,0,5 [372761:1]: ** Enumeration Aborted, Module Does Not Exist Or Could Not Be Loaded [(PCI_ERR_NO_MODULE)] Dec 31 19:14:21.262 pci_server.372761 pci_log 0 INFO ,1,0,5 [372761:1]: pci_max_bus = -1 Dec 31 19:14:21.262 pci_server.372761 pci_log 0 INFO ,1,1,5 [372761:1]: enumerate_bus_hierarchy(), Module Does Not Exist Or Could Not Be Loaded [(PCI_ERR_NO_MODULE)] Dec 31 19:14:21.262 pci_server.372761 pci_log 0 INFO ,1,0,5 [372761:1]: ++ enumeration only complete, status Module Does Not Exist Or Could Not Be Loaded [(PCI_ERR_NO_MODULE)] ++ Dec 31 19:14:21.262 pci_server.372761 pci_log 0 INFO ,1,-10,5 [372761:1]: + PCI Server v3.0 init complete, Module Does Not Exist Or Could Not Be Loaded [(PCI_ERR_NO_MODULE)] + Dec 31 19:14:21.262 pci_server.372761 pci_log 0 INFO ,1,-10,5 [372761:1]: Is there a newer version of this available that I might have missed? Sat, 28 Oct 2023 01:46:46 GMT http://community.qnx.com/sf/go/post122414 David Sheinberg 2023-10-28T01:46:46Z post122413: pci-server RPi4 http://community.qnx.com/sf/go/post122413 I have rebuilt our OS image for RPi4 using updated qnxsoftware components, but version 3.0 of pci-server doesn't seem to work with my RPi4 BSP (no /dev/pci is found). I see the Release History which says: "This component is incompatible with all pre v3.x PCI components" My new image has libpci.so linked to libpci.so.3.0 but perhaps there is something I should change in the build file for the OS image? Any suggestions welcome! David Sheinberg Sat, 28 Oct 2023 01:33:41 GMT http://community.qnx.com/sf/go/post122413 David Sheinberg 2023-10-28T01:33:41Z post122411: Re: Binding QNET to ip using QNX7.1 http://community.qnx.com/sf/go/post122411 Hi Geoffrey, qnet is documented in many places, but You can get some usefull info about the dll options using this command: use lsm-qnet.so Try to use this command: mount -Tio-pkt -o"mount=:",bind=fec0,bind=ip,resolve=dns lsm-qnet.so &amp; or: mount -Tio-pkt -o bind=fec0,bind=ip,resolve=dns lsm-qnet.so &amp; Mount options is this one: mount=directory[:[.]domain]* A network directory. Default directory is "/net". Default domain is either the hostname domain if it has one, or the directory with the slashes changed to dots and reversed. i.e. "/net/outside/canada" would have a domain of "canada.outside.net". The first mount is the default directory and domain that the local hostname will resolve through. I have specified the default options, so You can also omit the mount (it's just a my preference) You have to specify two bind options, one for interface (fec0 or en0 or any other You have) and one to bind the ip : it is not indented to be a OR option :-) &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Oct 27 08:44:43.600 iopkt.274462 main_buffer 0 lsm-qnet.so mount=:,bind=fec0,bind=ip,resolve=dns Oct 27 08:44:43.601 io_pkt_v6_hc.274462 slog 0 qnet(L4): qnet_birth(): qnet_init() - calling Oct 27 08:44:43.602 io_pkt_v6_hc.274462 slog 0 qnet(kif): mac_load(): security policy not being used Oct 27 08:44:43.604 io_pkt_v6_hc.274462 slog 0 qnet(L4): try_ifp(): new interface: fec0: index 0 mac addr 20:0A:0D:70:1C:46 Oct 27 08:44:43.604 io_pkt_v6_hc.274462 slog 0 qnet(QOS): nd_change_notify(): Node Up: nd 0 tec-cpucoms.net.intra Oct 27 08:44:43.605 io_pkt_v6_hc.274462 slog 0 qnet(L4): qnet_birth(): qnet_init() - complete Oct 27 08:44:43.804 io_pkt_v6_hc.274462 slog 0 qnet(L4): lr_verify_my_name_and_domain(): set _CS_DOMAIN Oct 27 08:44:44.003 io_pkt_v6_hc.274462 slog 0 qnet(L4): lr_verify_my_name_and_domain(): starting resolution of our hostname tec-cpucoms.net.intra to ensure unique Oct 27 08:44:44.329 iopkt.274462 main_buffer 0 mx6q_mii_callback(): link up lan 0 idx 0 (1000 BaseT Full Duplex) Oct 27 08:44:44.403 io_pkt_v6_hc.274462 slog 0 qnet(L4): lr_verify_my_name_and_domain(): qnet going online Oct 27 08:44:44.604 io_pkt_v6_hc.274462 slog 0 qnet(L4): lr_inbound(): rxd pkt type 2 with duplicate name/domain, staying online &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Fri, 27 Oct 2023 06:58:49 GMT http://community.qnx.com/sf/go/post122411 mario sangalli 2023-10-27T06:58:49Z post122410: Re: Binding QNET to ip using QNX7.1 http://community.qnx.com/sf/go/post122410 Hi Mario, Thanks for responding. Where is all this documented? I have never seen the -o "mount=:" notation and can't find any other reference to it.Can you explain it a bit please? QNET works fine for all nodes that DON'T attempt to encapsulate the QNET packets inside IP. In other words, when I add the following mount command: mount -T io-pkt -o bind=ip0,resolve=dns lsm-qnet.so /net becomes empty. I figure the that "ip0" means use teh IP encapsulation on the network interface "0" - for example en0 or genet0, or even fec0. But I might be wrong as the documentation for lsm-qnet.so simply quotes "bind=ip" with no numerical indicator. But in the past (with QNX6.5) it was always ip0 -&gt; en0 or ip1 -&gt; en1. I am assuming that on the RPi4 bind=ip0 will/should use genet0. The documentation is quite clear in stating that when binding to ip, the resolver MUST be dns. I presume that means the IP addresses need to be in /etc/host mapping to the node name (hostname) I won't be back in my office until Tuesday (Eastern Australia time) so I won't be able to play much until then. Cheers, Geoff. &gt; Hi Geoffrey , i've try on my board (QNX7.1/ARM) to run qnet with the following &gt; options: &gt; mount -Tio-pkt -o"mount=:" lsm-qnet.so &amp; &gt; (autoresolve) &gt; mount -Tio-pkt -o"mount=:",bind=fec0 lsm-qnet.so &amp; &gt; mount -Tio-pkt -o"mount=:",bind=fec0,resolve=dns lsm-qnet.so &amp; &gt; &gt; All works ok and I've the /net directoty populated. &gt; Have You verified that network is up and running? &gt; You can try to specify the mount point explicitly in the arguments (mount=:) &gt; &gt; Mario &gt; &gt; Fri, 27 Oct 2023 02:35:56 GMT http://community.qnx.com/sf/go/post122410 Geoffrey Roberts 2023-10-27T02:35:56Z post122408: Re: Binding QNET to ip using QNX7.1 http://community.qnx.com/sf/go/post122408 Hi Geoffrey , i've try on my board (QNX7.1/ARM) to run qnet with the following options: mount -Tio-pkt -o"mount=:" lsm-qnet.so &amp; (autoresolve) mount -Tio-pkt -o"mount=:",bind=fec0 lsm-qnet.so &amp; mount -Tio-pkt -o"mount=:",bind=fec0,resolve=dns lsm-qnet.so &amp; All works ok and I've the /net directoty populated. Have You verified that network is up and running? You can try to specify the mount point explicitly in the arguments (mount=:) Mario Thu, 26 Oct 2023 07:26:26 GMT http://community.qnx.com/sf/go/post122408 mario sangalli 2023-10-26T07:26:26Z post122407: Binding QNET to ip using QNX7.1 http://community.qnx.com/sf/go/post122407 Hello, With QNX 6.5 on an x86 platform I was able to bind QNET to IP using mount as follows: mount -T io-pkt -o bind=ip0,resolve=dns /lib/dll/lsm-qnet.so The interface was en0 (or en1). I had a few extra arguments to do with timing and retries but they don't seem to help me here. I am trying to do the same thing with QNX 7.1 on Raspberry Pi4's. The command above creates /net but it remains empty. Note that I'm doing this with both Pi's and there is a pair of Ubiquiti Nanostation 5M wifi modems between them. I modified the genet shared object to set up the interfaces as en0 instead of genet0 but this doesn't help. Fine with IP but not QNET. The node names are in /etc/host. Is there something I'm missing? Is this facility available in 7.1? (the documentation describes how to use lsm-qnet.so so I presume it's available in 7.1). There are no examples. Could it be something to do with gns? (the global name server) Each is started as follows: gns -s &lt;hostname&gt; Any hints/ideas welcome and appreciated! Geoff. Thu, 26 Oct 2023 05:54:59 GMT http://community.qnx.com/sf/go/post122407 Geoffrey Roberts 2023-10-26T05:54:59Z post122404: Re: Concerns with offset parameter of pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions http://community.qnx.com/sf/go/post122404 Thank you Elad. At least this gives us the confidence our implementation has done the correct thing. Wed, 18 Oct 2023 22:35:17 GMT http://community.qnx.com/sf/go/post122404 Deniz Eren 2023-10-18T22:35:17Z post122403: Re: Concerns with offset parameter of pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions http://community.qnx.com/sf/go/post122403 The offset is absolute and starts at 0. These functions will return an error if the offset is below 0x40. I agree the comment can be made clearer. --Elad On Tue, 2023-10-17 at 02:07 -0400, Deniz Eren wrote: &gt; I have a public open-source project that aims to porting of Linux &gt; CAN-bus drivers to QNX. &gt; Repository: https://github.com/Deniz-Eren/dev-can-linux &gt; &gt; I have question regarding the offset input parameter of &gt; pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions. &gt; &gt; Looking at QNX library file: qnx710/target/qnx7/usr/include/pci/pci.h &gt; We see comment: "The following functions provide read access to the &gt; device dependent portion of the 256/4096 byte PCI/PCIe configuration &gt; space from 0x40 to 0xFF/0xFFF." &gt; &gt; This sounds like the offset input parameter of pci_device_cfg_rd*() &gt; and pci_device_cfg_wr*() series of functions means offset=0x00 refers &gt; to the first byte of the configuration space that starts at 0x40 and &gt; goes through to to 0xFF/0xFFF. However, in practice one of our &gt; community members found that when they were testing with the &gt; peak_pci.c driver, that these pci_device_cfg_rd*() and &gt; pci_device_cfg_wr*() series of functions do not start at 0x40 but &gt; start at 0x00. So to access the configuration space at 0x40 to &gt; 0xFF/0xFFF we had to add 0x40 to the address offset to get equivalent &gt; behaviour as that of the same code running on Linux. &gt; &gt; This peak_pci.c, is one of the drivers we have ported from Linux and &gt; it's the Peak driver: &gt; https://github.com/Deniz-Eren/dev-can-linux/blob/main/src/kernel/drivers/net/can/sja1000/peak_pci.c &gt; &gt; At line 590 you see: &gt;     err = pci_read_config_word(pdev, 0x2e, &amp;sub_sys_id); &gt;     if (err) &gt;             goto failure_release_regions; &gt; &gt; At line 597 you see: &gt;     err = pci_write_config_word(pdev, 0x44, 0); &gt;     if (err) &gt;             goto failure_release_regions; &gt; &gt; This peak_pci.c have been taken from the Linux kernel source code as- &gt; is (https://github.com/torvalds/linux). To interface to QNX we have &gt; implemented the Linux functions pci_write_config_word() and &gt; pci_read_config_word() as &gt; https://github.com/Deniz-Eren/dev-can-linux/blob/main/src/pci.c &gt; &gt; As you can see, in our implementation we had to call &gt; pci_device_cfg_rd*() and pci_device_cfg_wr*() with a +0x40 for the &gt; peak_pci.c driver to work properly. &gt; &gt; This means, either the comment block for pci_device_cfg_rd*() and &gt; pci_device_cfg_wr*() series of functions in file &gt; qnx710/target/qnx7/usr/include/pci/pci.h is misleading or incorrect &gt; and it should say 0x00 to 0xFF/0xFFF. Otherwise, the implementation &gt; of these functions are incorrect and they need to be updated to &gt; actually give access to 0x40 to 0xFF/0xFFF. &gt; &gt; Any comments? &gt; &gt; &gt; &gt; _______________________________________________ &gt; &gt; OSTech &gt; http://community.qnx.com/sf/go/post122397 &gt; To cancel your subscription to this discussion, please e-mail &gt; ostech-core_os-unsubscribe@community.qnx.com Wed, 18 Oct 2023 14:28:00 GMT http://community.qnx.com/sf/go/post122403 Elad Lahav 2023-10-18T14:28:00Z post122397: Concerns with offset parameter of pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions http://community.qnx.com/sf/go/post122397 I have a public open-source project that aims to porting of Linux CAN-bus drivers to QNX. Repository: https://github.com/Deniz-Eren/dev-can-linux I have question regarding the offset input parameter of pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions. Looking at QNX library file: qnx710/target/qnx7/usr/include/pci/pci.h We see comment: "The following functions provide read access to the device dependent portion of the 256/4096 byte PCI/PCIe configuration space from 0x40 to 0xFF/0xFFF." This sounds like the offset input parameter of pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions means offset=0x00 refers to the first byte of the configuration space that starts at 0x40 and goes through to to 0xFF/0xFFF. However, in practice one of our community members found that when they were testing with the peak_pci.c driver, that these pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions do not start at 0x40 but start at 0x00. So to access the configuration space at 0x40 to 0xFF/0xFFF we had to add 0x40 to the address offset to get equivalent behaviour as that of the same code running on Linux. This peak_pci.c, is one of the drivers we have ported from Linux and it's the Peak driver: https://github.com/Deniz-Eren/dev-can-linux/blob/main/src/kernel/drivers/net/can/sja1000/peak_pci.c At line 590 you see: err = pci_read_config_word(pdev, 0x2e, &amp;sub_sys_id); if (err) goto failure_release_regions; At line 597 you see: err = pci_write_config_word(pdev, 0x44, 0); if (err) goto failure_release_regions; This peak_pci.c have been taken from the Linux kernel source code as-is (https://github.com/torvalds/linux). To interface to QNX we have implemented the Linux functions pci_write_config_word() and pci_read_config_word() as https://github.com/Deniz-Eren/dev-can-linux/blob/main/src/pci.c As you can see, in our implementation we had to call pci_device_cfg_rd*() and pci_device_cfg_wr*() with a +0x40 for the peak_pci.c driver to work properly. This means, either the comment block for pci_device_cfg_rd*() and pci_device_cfg_wr*() series of functions in file qnx710/target/qnx7/usr/include/pci/pci.h is misleading or incorrect and it should say 0x00 to 0xFF/0xFFF. Otherwise, the implementation of these functions are incorrect and they need to be updated to actually give access to 0x40 to 0xFF/0xFFF. Any comments? Tue, 17 Oct 2023 06:07:35 GMT http://community.qnx.com/sf/go/post122397 Deniz Eren 2023-10-17T06:07:35Z post122371: Re: emulate linux kernel api http://community.qnx.com/sf/go/post122371 &gt; seems already have an similar project: https://os.inf.tu-dresden.de/ddekit/ Seems to be very old and was used to run Linux UIO-drivers only, if I understand that approach right. Mon, 11 Sep 2023 15:45:00 GMT http://community.qnx.com/sf/go/post122371 Michael Tasche 2023-09-11T15:45:00Z post122370: Re: emulate linux kernel api http://community.qnx.com/sf/go/post122370 &gt; It's possible and an good idea to emulate linux kernel api, that will make &gt; port linux driver to qnx more easy. Linux kernel API? I have never seen one. Or do you mean the sum of all functions and macros, a special Linux Kernel configuration provides? Well, since hardware is not documented any more and chip makers patch their stuff in the Linux Kernel only, driver developers need to be creative. To answer your question, using unchanged Linux Kernel driver code is already done under QNX. Actually Intel Graphics needs the drm-intel resource manager, emulating half of the Linux-Kernel, to use a million of unchanged lines of Linux Driver Code from Intel. # drm-intel -v i915/DRM Linux kernel 4.14.14 # If you like to use that emulation code, simply ask Blackberry for the source of drm-intel. From my point of view this approach is very ugly, but indeed a cool demonstration of the QNX mircokernel architecture, allowing to hide a Linux Kernel in one resource manager process and for example a NetBSD Kernel in an other process to realize a TCP/IP stack. &gt; freebsd and netbsd have an linux emulator, but that seems mainly for run linux &gt; application directly. freebsd and netbsd utilize a Linux binary compatible trap-Interface. Yes, this is for using Linux userland stuff. So you can bootstrap a GNU/Linux OS, like debian, normally using a Linux-Kernel, without a Linux Kernel. Mon, 11 Sep 2023 15:40:05 GMT http://community.qnx.com/sf/go/post122370 Michael Tasche 2023-09-11T15:40:05Z post122369: Re: emulate linux kernel api http://community.qnx.com/sf/go/post122369 seems already have an similar project: https://os.inf.tu-dresden.de/ddekit/ Sat, 09 Sep 2023 03:39:58 GMT http://community.qnx.com/sf/go/post122369 lin xiang(deleted) 2023-09-09T03:39:58Z post122368: Re: emulate linux kernel api http://community.qnx.com/sf/go/post122368 opposite, because qnx is microkernel, all device is on userspace that make it possible to emulate core linux kernel program api(lkpi) and linux device driver module api, and maximum extent, reuse linux device driver this maybe an reusable device driver framework for all microkernel. Fri, 08 Sep 2023 01:32:26 GMT http://community.qnx.com/sf/go/post122368 lin xiang(deleted) 2023-09-08T01:32:26Z post122367: Re: emulate linux kernel api http://community.qnx.com/sf/go/post122367 Since QNX system architecture (microkernel) is quite different from Linux (monolith), I wonder how far that would get you ... -- Michael ________________________________ From: lin xiang &lt;community-noreply@qnx.com&gt; Sent: Thursday, September 7, 2023 05:53 To: ostech-core_os Subject: emulate linux kernel api It's possible and an good idea to emulate linux kernel api, that will make port linux driver to qnx more easy. freebsd and netbsd have an linux emulator, but that seems mainly for run linux application directly. _______________________________________________ OSTech http://community.qnx.com/sf/go/post122366 To cancel your subscription to this discussion, please e-mail ostech-core_os-unsubscribe@community.qnx.com Thu, 07 Sep 2023 05:49:02 GMT http://community.qnx.com/sf/go/post122367 Michael Schuster 2023-09-07T05:49:02Z post122366: emulate linux kernel api http://community.qnx.com/sf/go/post122366 It's possible and an good idea to emulate linux kernel api, that will make port linux driver to qnx more easy. freebsd and netbsd have an linux emulator, but that seems mainly for run linux application directly. Thu, 07 Sep 2023 03:53:09 GMT http://community.qnx.com/sf/go/post122366 lin xiang(deleted) 2023-09-07T03:53:09Z post122354: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122354 Thank you so much! Now it is working fine after those changes. Wed, 02 Aug 2023 08:38:26 GMT http://community.qnx.com/sf/go/post122354 Victor Fernandez 2023-08-02T08:38:26Z post122353: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122353 Hi Roger Thank You very much for the help! I've just place these libraries in the hos/common/mkqnximage/snippets/if_files.buildin lib/libpci.so.2.0 lib/libpci.so.2.3 lib/libpci.so.3.0 Rebuilding a new vm and now all works well. I've changed the template instate of the /local/snippets as You suggested in order to create new machine from scratch with these library (maybe it not the rigth place, but it works for me) For Victor: I've build also a VM for virtual box (Ver 7.0.6 r155176) and now it works like the vmware image (Ver 17.0.2 build-21581411) I works with 7.1 release updated with PCI v3 libraries and all other stuffs using Software Center. Thank again for support, Mario Wed, 02 Aug 2023 08:26:39 GMT http://community.qnx.com/sf/go/post122353 mario sangalli 2023-08-02T08:26:39Z post122352: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122352 Hello Roger, I've been trying this way but still don't work. The error at screen is the same as it was. Thank you so much for your support. Wed, 02 Aug 2023 05:14:39 GMT http://community.qnx.com/sf/go/post122352 Victor Fernandez 2023-08-02T05:14:39Z post122351: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122351 Actually I was mistaken about the setfacl command. It might be important but only if you're using the --secpol option. My guess is that the issue is that the PCIv3 update has changed the soversion of libpci to libpci.so.3.0 but all the existing PCI clients expect libpci.so.2.0 I believe there is a variant of libpci.so.2.0 that supports older clients with the newer version of PCI (in a PCI shim library package). So, quite possibly if you update the file local/snippets/ifs_files.custom and add: lib/libpci.so.2.0 and rebuild your VM then it might work. Tue, 01 Aug 2023 16:18:06 GMT http://community.qnx.com/sf/go/post122351 Roger Maclean 2023-08-01T16:18:06Z post122350: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122350 Hi, Roget, I've search in my qnx710 instalation and I've not found any reference to /dev/shmem/pci_* in any files... however, it's a good suggestion, there might be some template file hiding the pci setting somewhere... Thanks, Mario Tue, 01 Aug 2023 15:27:00 GMT http://community.qnx.com/sf/go/post122350 mario sangalli 2023-08-01T15:27:00Z post122349: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122349 Regarding the PCI issue when using mkqnximage if the problem is networking it might be due to the location of the PCI database changing with the PCIv3 release. You could try changing host/common/mkqnximage/inputs/startup.sh There's a invocation of setfacl to change ACLs for /dev/shmem/pci_*. The path should be changed to /dev/shmem/pci/pci_*. Tue, 01 Aug 2023 14:45:58 GMT http://community.qnx.com/sf/go/post122349 Roger Maclean 2023-08-01T14:45:58Z post122348: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122348 Hi, I've the same problem on a vmware machine. For me it is related to the new PCIv3 Experimental Update : after the update all virtual machines have stopped to works, also after they where rebuilded from scratch. I' ve dig into host/common/mkqnximage files but I've not found anything that justify this error: maybe some missing/wrong library? Return back to previous PCI release will fix the problem. Any idea how to fix this with PCIv3 ? And is this update working on a true target ? Regards, Mario Tue, 01 Aug 2023 07:52:23 GMT http://community.qnx.com/sf/go/post122348 mario sangalli 2023-08-01T07:52:23Z post122346: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122346 Thank you so much for your answer. I've been testing the 6.x version of Vbox but still not working. It seems that the image lost some dependencies, and symbol _ITM_registerTMCloneTable is missed. Regards, Víctor Tue, 25 Jul 2023 06:32:39 GMT http://community.qnx.com/sf/go/post122346 Victor Fernandez 2023-07-25T06:32:39Z post122345: Re: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122345 You could try the latest VirtualBox from the 6.x stream rather than 7.x. VirtualBox appear to break things every so often, the e1000 interface was broken for months and was subsequently fixed. I know there are issues running QNX with 7.x though I don't recall what they are. Mon, 24 Jul 2023 21:44:13 GMT http://community.qnx.com/sf/go/post122345 Roger Maclean 2023-07-24T21:44:13Z post122341: Memory Partition 2023 http://community.qnx.com/sf/go/post122341 Hello! Is the APM reliased now. http://community.qnx.com/sf/wiki/do/viewPage/projects.core_os/wiki/Memory_Partitioning_Technology Tue, 18 Jul 2023 06:24:12 GMT http://community.qnx.com/sf/go/post122341 yunting li(deleted) 2023-07-18T06:24:12Z post122340: Unable to launch QNX at Vbox http://community.qnx.com/sf/go/post122340 Hi all, I am unable to launch QNX 7.1 on Vbox as x86_64 emulator. I am using Windows 10, QNX 7.10 on evaluation license with momentics 7.1.2.v202203081633, and Vbox Versión 7.0.8 r156879 (Qt5.15.2). My issue is as follows: I can create properly the Virtual machine, but when it is started the network cannot be configured and following message is shown: ifconfig: getifaddrs: address family not supported by protocol family. I was trying to deal with this issue using the QNX documentation (https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.utilities/topic/m/mkqnximage.html) but I can not get a solution. Thanks in advance. Mon, 17 Jul 2023 12:26:14 GMT http://community.qnx.com/sf/go/post122340 Victor Fernandez 2023-07-17T12:26:14Z post122338: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122338 We have managed to figure out how to write to the SD card in teh post-pandemic RPi4's by starting the SDMMC driver as follows: devb-sdmmc-bcm2711 mem name=below1G sdio addr=0xfe340000,irq=158 disk name=sd blk mntperms=755 We notice a small loss of read/write performance but it's acceptable. It works for us! Geoff. Thu, 06 Jul 2023 08:12:11 GMT http://community.qnx.com/sf/go/post122338 Geoffrey Roberts 2023-07-06T08:12:11Z post122337: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122337 In regards to our inability to write to the SD card using post-pandemic RPi4's, my colleague here has managed to resolve it. We can now write to any partition type (in our case 12 and 177). The following works for us with only a slight loss of read/write performance. devb-sdmmc-bcm2711 mem name=below1G sdio addr=0xfe340000,irq=158 disk name=sd blk mntperms=755 Basically, he removed everything to do with the bus master. Geoff. Thu, 06 Jul 2023 02:52:59 GMT http://community.qnx.com/sf/go/post122337 Geoffrey Roberts 2023-07-06T02:52:59Z post122330: Re: access() not behaving as expected http://community.qnx.com/sf/go/post122330 Thanks for the detailed explanation! Indeed, after denying the ability everything works as expected. We also tried another solution: temporarily dropping privileges to open the file. That works always as expected. And in fact that's the more secure solution anyway (no race condition between permission check/using file), so we should have done that first. Wed, 21 Jun 2023 06:26:18 GMT http://community.qnx.com/sf/go/post122330 Renaat Debaene 2023-06-21T06:26:18Z post122329: Re: access() not behaving as expected http://community.qnx.com/sf/go/post122329 You will find that if you check W_OK instead if R_OK it will behave as you expect (and the same as Linux). The reason that R_OK behaves differently is due to procmgr abilities. There is an ability iofunc/read that allows read access to files denied by POSIX permissions. Testing of this ability is always based on effective user ID. By default root has this ability so when you call access(R_OK) with the setuid root executable, it fails the POSIX access checks but gets overridden by the ability. If you deny the ability in the shell: ability deny,all,inherit,able=iofunc/read you will now find it behaves as you expect. This could be considered a bug, probably everything in the call to access() should be based on real ID. The workaround is to deny the ability. There are few legitimate uses for the ability irrespective of this issue we'd recommend denying the ability since it tends to mask file system permission issues. I will however log it as a bug. Tue, 20 Jun 2023 22:04:16 GMT http://community.qnx.com/sf/go/post122329 Roger Maclean 2023-06-20T22:04:16Z post122327: access() not behaving as expected http://community.qnx.com/sf/go/post122327 The POSIX call access() seems to behave not as expected on QNX. According to the doc, access() uses the *real* user ID to check if a file can be accessed. The Linux call effectively does this. But on QNX, it seems to use the *effective* user ID. Test environment: QNX 7.1.0 Setup (a file only readable by root, 2 versions of the tool readable, one suid, one not) (the tool readable is the example from the access() documentation with some printf() statements for the different IDs): $ ls -al total 55 drwxr-xr-x 2 root root 4096 Jun 12 01:36 . drwxr-xr-x 6 root root 4096 Jun 12 01:36 .. -rw------- 1 root root 74 Jun 12 01:36 data -rwxr-xr-x 1 root root 9696 Jun 12 01:31 readable -rwsr-xr-x 1 root root 9696 Jun 12 01:35 readable_suid Test output: $ ./readable data geteuid(): 1000 - effective user ID getegid(): 4004 - effective group ID getuid(): 1000 - user ID getgid(): 4004 - group ID data: Permission denied =&gt; as expected $ ./readable_suid data geteuid(): 0 - effective user ID getegid(): 4004 - effective group ID getuid(): 1000 - user ID getgid(): 4004 - group ID ok to read data =&gt; The last response ("ok to read data") is unexpected because the code is running with real user ID 1000. When doing a similar test on Linux, I get "permission denied". Is my understanding of access() wrong, or is this a bug in QNX or my configuration? Tue, 20 Jun 2023 09:26:09 GMT http://community.qnx.com/sf/go/post122327 Renaat Debaene 2023-06-20T09:26:09Z post122247: Controlling the CPU Frequency in a QNX 7.1 system http://community.qnx.com/sf/go/post122247 Hello. I am trying to control the CPU frequency of a system and want to know the best way to do it. I have looked online on my own and found 3 ways of doing the same. I want to set it to a specific number and avoid Intel Speed stepping taking it beyond this limit. 1) Using the Startup BIOS command. (I don't have access to test it out currently) (https://www.qnx.com/developers/docs/6.5.0SP1.update/com.qnx.doc.neutrino_utilities/s/startup-bios.html) 2) Using DVFS drivers (If you could please give me an example of how to use this)(http://www.qnx.com/developers/docs/6.6.0_anm11_wf10/#com.qnx.doc.neutrino.technotes/topic/set_cpu_freq.html) 3) Using the "cpufreq" command.(For some reason this is not working on my system. Any help on this would also be great)(http://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.utilities/topic/c/cpufreq.html) Apart from this if there is any other easier way to do the same would also help a ton. Thanks In Advance Wed, 03 May 2023 08:57:10 GMT http://community.qnx.com/sf/go/post122247 Ashish Gautam(deleted) 2023-05-03T08:57:10Z post122246: QNX 7.1.0 x86_64 lpd, lpr, etc http://community.qnx.com/sf/go/post122246 Does QNX 7.1.0 intel 64 bits platform provide BSD printing mechanism? (lpd, lpc, lpq, lpr, lprm, etc) Have anybody ported it to QNX 7.1.0 x86_64? Regards, Janusz Wed, 03 May 2023 03:22:47 GMT http://community.qnx.com/sf/go/post122246 Janusz Ruszel 2023-05-03T03:22:47Z post122234: QNX 7.1 on BeaglePlay (TI AM625) http://community.qnx.com/sf/go/post122234 We've had great success using the RPi4 to control experiments in our research lab, but given the shortage, I've been eyeing the TI products, which seem to be in healthy supply. I know there's a BSP for the AM62X, but would be particularly interested in success folks have with the new BeaglePlay - of course with the general stuff (ethernet, USB, etc.) but also with interrupt driven GPIO (and A/D support, if possible, as I haven't seen an SPI driver?). Any info appreciated! David Wed, 26 Apr 2023 22:52:05 GMT http://community.qnx.com/sf/go/post122234 David Sheinberg 2023-04-26T22:52:05Z post122229: Qnx 7.0 crashes on x86_64 platforn http://community.qnx.com/sf/go/post122229 Hi, The Qnx 7.0 is crashing while trying to boot on x86_64 bit platform. My build file starts with [virtual=x86_64,bios +compress] boot = { startup-x86 -v PATH=/proc/boot:/bin:/usr/bin LD_LIBRARY_PATH=/proc/boot:/lib:/usr/lib:/lib/dll procnto-smp-instr -v } can you please let me know what is the issue. Fri, 21 Apr 2023 11:43:17 GMT http://community.qnx.com/sf/go/post122229 Manoj Chandran R 2023-04-21T11:43:17Z post122214: Raspberry Pi4 PL011 UARTs http://community.qnx.com/sf/go/post122214 Hello, Has anyone been able to squeeze out any extra serial ports on a Pi4? If so, what's the trick? I have /dev/ser3 working fine at address 0xfe201600 using IRQ 153. But I can't get any of the others that reside at addresses 0xfe201000, 0xfe201400, 0xfe201800, or 0xfe201a00. It seems they all want to share IRQ 153 but if I do this for any address other than 0xfe201600 the call to InterruptAttach() (in devc/serpl011/intr.c) results in the kernel gong into ga ga land and a subsequent reboot (presumably the watchdog kicks in). Am I missing something? I feel like I'm so close after pouring over as many of the RPi4B docs that I can find. Is it true that all the UART's need to attach to IRQ 153? Thanks, Geoff. Tue, 18 Apr 2023 02:09:34 GMT http://community.qnx.com/sf/go/post122214 Geoffrey Roberts 2023-04-18T02:09:34Z post122213: Re: shared memeory objects http://community.qnx.com/sf/go/post122213 I do this quite a lot. Works for me! This is on 7.1. Geoff. Tue, 18 Apr 2023 02:01:00 GMT http://community.qnx.com/sf/go/post122213 Geoffrey Roberts 2023-04-18T02:01:00Z post122211: Zero copy issue regarding camera data http://community.qnx.com/sf/go/post122211 Hello,I am currently running the QNX system on Qualcomm's chip and have obtained camera data. My goal is to transfer this data to OPENGL in zero-copy format, but I have encountered an error. To illustrate, I have created a new screen_buffer_t and pointed it to the memory address of the camera data. However, when attempting to display it on the screen, I keep receiving an "invalid parameter" error. The code is as follows: qcarcam_ret = qcarcam_get_frame(qcarcam_context, &amp;frame_info, 1000000 * 1000, 0); screen_buffer_t screenbuf; screen_create_buffer(&amp;screenbuf); int err = screen_set_buffer_property_iv(screenbuf, SCREEN_PROPERTY_FORMAT, (const int[]) { SCREEN_FORMAT_UYVY }); int rect[4] = { 0, 0, 1600, 1300 }; int dims[2] = { 1600, 1300 }; err = screen_set_buffer_property_iv(screenbuf, SCREEN_PROPERTY_BUFFER_SIZE, rect); screen_set_buffer_property_iv(screenbuf, SCREEN_PROPERTY_SIZE, dims); int stride = 1600 * 1300; screen_set_buffer_property_iv(screenbuf, SCREEN_PROPERTY_STRIDE, &amp;stride); err = screen_set_buffer_property_pv(screenbuf, SCREEN_PROPERTY_POINTER, &amp;vir_buffer[frame_info.idx]); err = screen_blit(screen_context, screen_buf, screenbuf, NULL); What is the issue with the code above, and where can I find examples or information about zero-copy? Fri, 14 Apr 2023 03:27:24 GMT http://community.qnx.com/sf/go/post122211 Li Chen(deleted) 2023-04-14T03:27:24Z post122209: shared memeory objects http://community.qnx.com/sf/go/post122209 the use of shared memory objects - created by mmap - between processes is not working!! Is this created by design or is it a faulty implementation ? Thu, 13 Apr 2023 15:38:34 GMT http://community.qnx.com/sf/go/post122209 Armin Steinhoff 2023-04-13T15:38:34Z post122194: Re: <Query> [RUST compilation for QNX] http://community.qnx.com/sf/go/post122194 Dear Stephen, is there any way for us to recompile GCC to newer versions and backends for QNX? This might enable gccrs (the Gnu implementation). Mon, 03 Apr 2023 09:22:35 GMT http://community.qnx.com/sf/go/post122194 Jason Curl 2023-04-03T09:22:35Z post122180: python2.7 on QNX6.5 armv7 http://community.qnx.com/sf/go/post122180 How can I get python2.7 pre-built binary package or compile it self on QNX6.5 armv7? Fri, 31 Mar 2023 07:40:11 GMT http://community.qnx.com/sf/go/post122180 jun chen 2023-03-31T07:40:11Z post122179: Re: devc-serusb and supported USB/Serial devices http://community.qnx.com/sf/go/post122179 Thanks David, We have ordered 12 of these to see me through while we're sorting out "real" serial ports that emulate 16550 UART's within the FPGA fabric of a Xilinx MP-SoC. I'll have to shorten the cables however (6 feet is a bit long) but that's OK. At least I'll be able to get six or so working serial ports to play with. Geoff. &gt; These have worked for us: &gt; &gt; https://www.amazon.com/gp/product/B0759HSLP1/ref=ppx_yo_dt_b_search_asin_title &gt; ?ie=UTF8&amp;psc=1 &gt; &gt; I use them to drive an external midi synthesizer for sound without any issue. &gt; Had been using a UART to RS232 but realized this was even simpler! Thu, 30 Mar 2023 02:05:35 GMT http://community.qnx.com/sf/go/post122179 Geoffrey Roberts 2023-03-30T02:05:35Z post122177: Re: devc-serusb and supported USB/Serial devices http://community.qnx.com/sf/go/post122177 These have worked for us: https://www.amazon.com/gp/product/B0759HSLP1/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&amp;psc=1 I use them to drive an external midi synthesizer for sound without any issue. Had been using a UART to RS232 but realized this was even simpler! Wed, 22 Mar 2023 21:49:52 GMT http://community.qnx.com/sf/go/post122177 David Sheinberg 2023-03-22T21:49:52Z post122176: devc-serusb and supported USB/Serial devices http://community.qnx.com/sf/go/post122176 Hello, I want to experiment with devc-serusb and intend to purchase the appropriate USB/Serial hardware (RS232). Does anyone here have any recommendations on which ones (brand/model) work with this driver? Thanks, Geoff. Tue, 21 Mar 2023 21:35:30 GMT http://community.qnx.com/sf/go/post122176 Geoffrey Roberts 2023-03-21T21:35:30Z post122175: usblauncher_otg http://community.qnx.com/sf/go/post122175 Hello, I'm trying to get auto-mounting of USB devices (mainly umass) working on the RPi4 and Xilinx MP-SOC's (both aarch64le). With the help of the QNX support guy I managed to start pps and provide the correct arguments to usblauncher_otg and have it create entries in /dev. It started devb-umass and when I insert a simple thumbdrive (either with a t12 or t177 partition) it simply cretes /dev/umass0, /dev/umass1, and /dev/umass2. Using fdisk, only the umass2 shows a valid (support) filesystem partition (12 and 177 respectively). I start usblauncher_otg as follows: usblauncher_otg -vvv -E -e -0 -m /pps I am not seeing anything in the output log indicating anything wrong. It sees the thumbdrives being inserted and removed - it simply won't mount any partition (under /fs or anywhere else). I'm using the supplied rules.lua and rules.mnt files but it simply won;t mount either of these partition types to produce /fs/usb0, /fs/usb1, etx. I am wondering is this is because there are no /dev/umass2t12 or /dev/umasst177 entries? If so, who/what actually does this. Is it devb-umass that looks into the umass device to see what partitions are there and create/mount them so that a later mount will work? The arguments provided to devb-umass are quite numerous and are based (I think) on what is in the rules.lua file. Apparently I should see in the usblauncher_otg output log entries referring to do_mount_fsys. But I don't. And I can't find out why - this stuff doesn't seem to be documented much - or if it is it's hard to find. The other mystery with this is why I see /dev/umass0 and /dev/umass2 - neither of which relate it seems to any supported partition type. I don't see this when I manually and mionimally start devb-umass cam pnp name=umass. Can someone provide some enlightenment please? I'm struggling a bit with this one! :-) Thanks, Geoff. Tue, 21 Mar 2023 21:31:16 GMT http://community.qnx.com/sf/go/post122175 Geoffrey Roberts 2023-03-21T21:31:16Z post122174: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122174 Hi David, I might be interested in how you do this but right now I am grappling with usblauncher_otg on the RPi4 and I'm hoping you can help as you indicated earlier on that you had this working. I will create a new thread for this however. Geoff. &gt; One update is that I used the Raspberry Pi Imager to burn a new boot loader &gt; for the Pi4 that allows it to boot from USB (and then try the SD). This works &gt; well so with the formatted USB stick I put the EFI partition followed by my &gt; qnx6 partitions and works like a charm - no need for the SD card. &gt; &gt; Also intrigued by the network boot possibilities :-) Tue, 21 Mar 2023 21:14:45 GMT http://community.qnx.com/sf/go/post122174 Geoffrey Roberts 2023-03-21T21:14:45Z post122172: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122172 One update is that I used the Raspberry Pi Imager to burn a new boot loader for the Pi4 that allows it to boot from USB (and then try the SD). This works well so with the formatted USB stick I put the EFI partition followed by my qnx6 partitions and works like a charm - no need for the SD card. Also intrigued by the network boot possibilities :-) Fri, 17 Mar 2023 16:09:22 GMT http://community.qnx.com/sf/go/post122172 David Sheinberg 2023-03-17T16:09:22Z post122168: Re: Resource Busy http://community.qnx.com/sf/go/post122168 Thanks John. It sort of makes sense now! Geoff. &gt; In these cases you will normally see that the procnto still had a fd open to &gt; the file in questions for the mappings. &gt; &gt; even after the process has been exited the procnto will keep the mapping &gt; references around for a short period of time. &gt; Or for up to 60 seconds if you have the sticky bit set on the file. This is to &gt; facilitate quicker reloading of the binary should you decode to restart it. &gt; http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.user_guide/ &gt; topic/files_Sticky.html &gt; &gt; The correct approach to replacing a binary in place it to unlink/rm the old &gt; one and then copy the new one to the same location. Thu, 16 Mar 2023 01:00:50 GMT http://community.qnx.com/sf/go/post122168 Geoffrey Roberts 2023-03-16T01:00:50Z post122167: Re: Resource Busy http://community.qnx.com/sf/go/post122167 In these cases you will normally see that the procnto still had a fd open to the file in questions for the mappings. even after the process has been exited the procnto will keep the mapping references around for a short period of time. Or for up to 60 seconds if you have the sticky bit set on the file. This is to facilitate quicker reloading of the binary should you decode to restart it. http://www.qnx.com/developers/docs/7.0.0/#com.qnx.doc.neutrino.user_guide/topic/files_Sticky.html The correct approach to replacing a binary in place it to unlink/rm the old one and then copy the new one to the same location. Tue, 14 Mar 2023 22:44:41 GMT http://community.qnx.com/sf/go/post122167 John Kearney 2023-03-14T22:44:41Z post122166: Resource Busy http://community.qnx.com/sf/go/post122166 Hello, For some years I have encountered the message "Resource Busy" when I try to copy an executable file to a name of one that's currently running. This is often the case when I have modified a program and simply want to replace the one that's running. It hasn't really been a problem - more of a nuisance but one that I could live with. But recently, I have been getting this message when the file simply exists - regardless of whether it is running or not. I have to remove the file (rm) before I can copy a new one over it. Although sometimes this doesn't occur more often than not it does and I am somewhat confused by what is actually happening. I'm using the most recent release of 7.1 but this message was apparent back in the 6.x days. So my question is: what is the criteria that governs when this "Resource Busy" is issued requiring either the running process to be stopped or the destination file to be removed? I guess to date I have considered it to be simply one of life's little mystery's. Geoff. Tue, 14 Mar 2023 20:54:43 GMT http://community.qnx.com/sf/go/post122166 Geoffrey Roberts 2023-03-14T20:54:43Z post122162: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122162 Got it, thanks! Without the sync=ignore option I was unable to mount the qnx6 partitions. I also continue to be puzzled about the below1G name?! I substituted devb-ustor in place of devb-umass because it seems like that might manage high speed flash? Regardless, at least we have an approach that will let us work around the sdmmc issues! Thanks again for the help. -David Sun, 12 Mar 2023 15:56:31 GMT http://community.qnx.com/sf/go/post122162 David Sheinberg 2023-03-12T15:56:31Z post122161: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122161 The following works for me. In the build file (of the BSP) and assuming the usb_start.sh routine has successfully started io-usb-otg: devb-umass cam pnp mem name=below1G disk name=usb waitfor /dev/usb0t177 5 mount -t qnx6 -o sync=ignore /dev/usb0t177 / waitfor / I put this between the qconn and [+session] ksh &amp; commands (in the section called "Remote Debug". I actually comment out the [+session ] ksh &amp; command and instead run /etc/rc.d/rc.local so that some other stuff gets started from outside of the IFS. Eventually, if I want it, the shell gets started on /dev/ser1. I generally ssh in via the network and rarely use the serial port terminal connection. I hope this helps! Geoff. &gt; Figured I would try to just mount the USB stick instead of the sd cards on the &gt; newer pis, but I'm not sure I have the options right for the io-usb-otg / &gt; devb-mass (or ustor?) drivers. Any pointers for making sure I load these &gt; correctly? &gt; &gt; In some cases, I can enumerate the partitions, and can mount my efi (dos) &gt; partition. I can't mount qnx6 partitions though. And should fdisk /dev/hd0 &gt; actually work for a USB drive? &gt; &gt; Thanks! Sat, 11 Mar 2023 23:49:08 GMT http://community.qnx.com/sf/go/post122161 Geoffrey Roberts 2023-03-11T23:49:08Z post122160: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122160 Figured I would try to just mount the USB stick instead of the sd cards on the newer pis, but I'm not sure I have the options right for the io-usb-otg / devb-mass (or ustor?) drivers. Any pointers for making sure I load these correctly? In some cases, I can enumerate the partitions, and can mount my efi (dos) partition. I can't mount qnx6 partitions though. And should fdisk /dev/hd0 actually work for a USB drive? Thanks! Sat, 11 Mar 2023 22:26:04 GMT http://community.qnx.com/sf/go/post122160 David Sheinberg 2023-03-11T22:26:04Z post122154: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122154 Hi Elad, I tried it. Instead of complaining with the error message "xpt_configure: No sdmmc interfaces found" it returns "xpt_configure: sdmmc SIM attach failure" I haven't had a chance to delve further into this myself. Beside I don't know anything about SDMMC drivers so I'll leave this to experts! Geoff. &gt; Geoff, David , &gt; &gt; You can try this one little trick SD device drivers really hate: comment out &gt; lines 607-609 in src/hardware/devb/sdmmc/sdiodi/sd.c and rebuild devb-sdmmc. &gt; These are the lines in question: &gt; &gt; if( ( status = sd_switch( dev, SD_SF_MODE_SET, SD_SF_GRP_BUS_SPD, &gt; 1, sw_status ) ) == EOK ) { &gt; // if( ( sw_status[16] &amp; 0xF ) != 0x1 ) { &gt; // status = EIO; &gt; // } &gt; } &gt; &gt; Let me know if it fixes the problem (though if it does it would be a hack and &gt; not a real solution). &gt; &gt; --Elad Tue, 28 Feb 2023 23:03:00 GMT http://community.qnx.com/sf/go/post122154 Geoffrey Roberts 2023-02-28T23:03:00Z post122153: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122153 Geoff, David , You can try this one little trick SD device drivers really hate: comment out lines 607-609 in src/hardware/devb/sdmmc/sdiodi/sd.c and rebuild devb-sdmmc. These are the lines in question: if( ( status = sd_switch( dev, SD_SF_MODE_SET, SD_SF_GRP_BUS_SPD, 1, sw_status ) ) == EOK ) { // if( ( sw_status[16] &amp; 0xF ) != 0x1 ) { // status = EIO; // } } Let me know if it fixes the problem (though if it does it would be a hack and not a real solution). --Elad Tue, 28 Feb 2023 11:24:52 GMT http://community.qnx.com/sf/go/post122153 Elad Lahav 2023-02-28T11:24:52Z post122152: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122152 &gt; We too have been struggling with this. It's hit or miss with the sd driver, &gt; which is frustrating to be sure. If there were cards that (nearly?) always &gt; worked, it would be great to know which ones! In our case, we are actually &gt; mounting NFS drives for some shared data, and makes me think it would be &gt; safest to just mount root filesystem specifically for each Pi across the &gt; network (sort of like our QNX4 nodes did to their host)? This is pretty much what I do. QNET is an absolute secret weapon that saves me so much time that it's not funny! But sadly the intention is for QNET to be removed from QNX after close to 40 years of use across QNX2/3, 4, 6, and 7. I have four Raspberry Pi's - along with a couple of Xilinx and x86_64 - all networked so that I can quickly and easily copy files around across all of them (if need be). When I get back to my Linux environment it's often "bugger"! Back to SCP that doesn't seem to deal with things like soft links and file modes very well. &gt; &gt; To answer a question earlier in the thread - these machines all seem to work &gt; find with raspian/linux installs from the SD cards. I think we're very lucky to have QNX 7.1 working on the RPi4. I don't know who put the BSP together but I sure do appreciate it! Sure, some things don't seem to work quite right but being able to develop ARM code on a cheap platform instead of the very expensive Xilinx board has been a godsend for me personally. Being able to simply mount a QNX6 USB and adopt/mount it as root has saved my bacon this week. Along with QNET. I guess one day the SD card issues will be resolved. Geoff. Tue, 28 Feb 2023 05:50:55 GMT http://community.qnx.com/sf/go/post122152 Geoffrey Roberts 2023-02-28T05:50:55Z post122151: Proper way to wait for DHCP assignment? http://community.qnx.com/sf/go/post122151 I have some drivers that I'd like to start on boot which depend on the network address being assigned by DHCP (actually ntpdate is one of these, too). Is there a "waitfor" command I can use that will wait until the socket interface is configured? If I insert a sleep with a sufficiently long pause, this will work, but I was hoping for a cleaner solution... Thanks! David Mon, 27 Feb 2023 23:56:34 GMT http://community.qnx.com/sf/go/post122151 David Sheinberg 2023-02-27T23:56:34Z post122150: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122150 We too have been struggling with this. It's hit or miss with the sd driver, which is frustrating to be sure. If there were cards that (nearly?) always worked, it would be great to know which ones! In our case, we are actually mounting NFS drives for some shared data, and makes me think it would be safest to just mount root filesystem specifically for each Pi across the network (sort of like our QNX4 nodes did to their host)? To answer a question earlier in the thread - these machines all seem to work find with raspian/linux installs from the SD cards. Mon, 27 Feb 2023 23:52:49 GMT http://community.qnx.com/sf/go/post122150 David Sheinberg 2023-02-27T23:52:49Z post122149: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122149 Hi Elad, I generally use SanDisk's as that's what the local shop mainly stocks. I haven't to date had any problems with them. Anyway, I have managed to get a viable workaround going by formatting up a mini USB "thumbdrive", shoving some relevant files onto it, and after configuring the USB system in the IFS to find it, simply mount it as root. From thereonin the SD card is effectively bypassed and the USB drive become the primary. Not the way I'd run an airline but it lets me keep going. The production target system (not a Pi) will eventually not have any writable filesystem on it at all. BTW, the Pi's cost us about US$200 just for the boards. These had 8Gb memory installed. They used to cost us about US$80 Many thanks Roger! Without you pointing me in the right direction I would have hit a brick wall today! Cheers, Geoff. &gt; You may want to try a few different SD card brands, if you have any around. We &gt; found that some work and some don't. &gt; &gt; --Elad Fri, 24 Feb 2023 05:10:11 GMT http://community.qnx.com/sf/go/post122149 Geoffrey Roberts 2023-02-24T05:10:11Z post122148: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122148 You may want to try a few different SD card brands, if you have any around. We found that some work and some don't. --Elad Fri, 24 Feb 2023 00:01:35 GMT http://community.qnx.com/sf/go/post122148 Elad Lahav 2023-02-24T00:01:35Z post122147: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122147 I am not sure what prompted me to compare the checksums of the ifs-bin files but I did. And discovered they were different! Somehow the copy (using cp on the FAT32 partition) didn't do the job properly. So I repeated the process and now ifs-qnx is loading. But I have the problem Elad mentioned where the sdmmc driver can't find the hardware. I have seen this before with the Compute Module 4. I may be able to find a workaround for this using a USB thumbdrive that hopefully I can mount as / like I do with the Xilinx boards I have. For which the SD cards are read-only. Geoff. &gt; Hi Elad, Roger, &gt; &gt; Thanks for your responses. &gt; &gt; I brought a suitable USB/serial cable into work today and using the firmware &gt; files Roger pointed me to was able to see the RPi trying to get started. I &gt; have attached a screenshot of the terminal output. &gt; &gt; From startup where the first line is "MMU: 16-bit ASID..." it gets to the &gt; final line where it says"All ClockCycles offsets within tolerance", pauses for &gt; a couple of seconds, and then repeats from the MMU: line. Just keeps going &gt; around and around. &gt; &gt; I don't think it's getting to where it wants to load the IFS file. I looked &gt; into the BSP for "All ClockCycles" and couldn't find anything like that. &gt; &gt; I am not sure if I'm using the very latest BSP (as the one I'm using has up &gt; until now been very stable) so when I can I'll check that out and see what &gt; happens. But as I said, I don't think it's getting to load the IPL. &gt; &gt; Geoff. Thu, 23 Feb 2023 23:15:58 GMT http://community.qnx.com/sf/go/post122147 Geoffrey Roberts 2023-02-23T23:15:58Z post122146: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122146 Hi Elad, Roger, Thanks for your responses. I brought a suitable USB/serial cable into work today and using the firmware files Roger pointed me to was able to see the RPi trying to get started. I have attached a screenshot of the terminal output. From startup where the first line is "MMU: 16-bit ASID..." it gets to the final line where it says"All ClockCycles offsets within tolerance", pauses for a couple of seconds, and then repeats from the MMU: line. Just keeps going around and around. I don't think it's getting to where it wants to load the IFS file. I looked into the BSP for "All ClockCycles" and couldn't find anything like that. I am not sure if I'm using the very latest BSP (as the one I'm using has up until now been very stable) so when I can I'll check that out and see what happens. But as I said, I don't think it's getting to load the IPL. Geoff. Thu, 23 Feb 2023 22:55:34 GMT http://community.qnx.com/sf/go/post122146 Geoffrey Roberts 2023-02-23T22:55:34Z post122145: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122145 You may want to make sure you get up to date firmware. I've seen cases where older Pi's will boot but newer ones wouldn't until the firmware was updated. The latest can be obtained from https://github.com/raspberrypi/firmware. Currently only three files are required. These can be obtained using: wget https://github.com/raspberrypi/firmware/raw/master/boot/bcm2711-rpi-4-b.dtb wget https://github.com/raspberrypi/firmware/raw/master/boot/start4.elf wget https://github.com/raspberrypi/firmware/raw/master/boot/fixup4.dat Thu, 23 Feb 2023 13:10:18 GMT http://community.qnx.com/sf/go/post122145 Roger Maclean 2023-02-23T13:10:18Z post122144: Re: When do you actually responds http://community.qnx.com/sf/go/post122144 This is a community forum. No one is under any obligation to respond. Very few people from QNX monitor this forum, let alone reply. As you seem to be working for a QNX customer, please use the proper support channels. --Elad Thu, 23 Feb 2023 12:38:52 GMT http://community.qnx.com/sf/go/post122144 Elad Lahav 2023-02-23T12:38:52Z post122143: Re: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122143 &gt; We managed to get our hands on three RPi4 model B's from Amazon I feel your pain. They are not cheap on Amazon. Somebody is getting rich off these. &gt; To our dismay they won't start when the pre pandemic SD cards are inserted Can you be more specific about what doesn't work? I know that the SD card is not recognized in some variant of RPi4. We haven't managed to figure out what is different on this variant and why. That said, it only prevents the file system on the card from being mounted by devb-sdmmc but the board does boot and the IFS works. Does raspbian boot on these? --Elad Thu, 23 Feb 2023 12:31:58 GMT http://community.qnx.com/sf/go/post122143 Elad Lahav 2023-02-23T12:31:58Z post122142: When do you actually responds http://community.qnx.com/sf/go/post122142 CAUTION - This email is from an external source. Please be cautious with links and attachments. (go/taginfo) Hi! If I post a topic for discussion, about when will you answer? I also have a question, which tool can you use from QNX that can show the dynamic allocation of the heap memory? showmem is not supported .. I cant run that tool atleast on qnx7 -------------------------------------------------------------------------------- Best regards/Med vänliga hälsningar Hung Nguyen email: hnyugyen@volvocars.com phone: +46(0)709326784 adress: Serenadgatan 16, 21572 Malmö team: SWECS-I Thu, 23 Feb 2023 12:31:53 GMT http://community.qnx.com/sf/go/post122142 Hung Nguyen 2023-02-23T12:31:53Z post122141: Post pandemic Raspberry Pi4's don't seem to work. http://community.qnx.com/sf/go/post122141 Hi, We managed to get our hands on three RPi4 model B's from Amazon. To our dismay they won't start when the pre pandemic SD cards are inserted (that we know work fine). Has anyone else found this? I'm going to bring the 5V/3.3V USB/serial cable into work tomorrow and see if I can see anything meaningful on the terminal. I imagine that something has changed slightly in the architecture preventing them from starting. Hopefully we can get these things working without too much bother. Maybe a tweak of the config.txt file? I've still got about four pre pandemic Pi's that I will be extra careful with! Geoff. Thu, 23 Feb 2023 05:17:20 GMT http://community.qnx.com/sf/go/post122141 Geoffrey Roberts 2023-02-23T05:17:20Z post122140: make sense of Pidin, Hogs, Top http://community.qnx.com/sf/go/post122140 Hi I am trying to analyse the memory usage of each processes with the utlities provided by QNX, somehow the showmem util is gone. Anyway when I run pidin mem, hogs, or top, the memory data I see makes no sense these doesnt sum up. Probably because I dont understand what I am looking at. Can you guys explain a bit how I can best use these tools for following purposes. I want to list all processes, see a snapshot every 10 seconds, how much heap (dynamic allocation) and stack allocation they have used Then all the shared libs/mems, how much of that is part of the memory a specific process is used. Which is the pdin -m option you get all these memory but shall sum everything and add that to get the total memory a process uses? I still do not know how to analyse the dynamic heap usage yet by each process. I tried to get some inspiration from your own memory analysis tool. But those data should be part of the data you get from pidin... except the heap part. Or do you have any other strategy, I basically would like to gather these snapshots and save them as a file and parse them later on another tool. Since I cant directly use your graphical memory analysis tool. I need to automate this. Wed, 22 Feb 2023 16:18:38 GMT http://community.qnx.com/sf/go/post122140 Hung Nguyen 2023-02-22T16:18:38Z post122139: Monitor the memory usage of each process with pidin http://community.qnx.com/sf/go/post122139 Hi I have a couple of questions related to pidin. Also some general question about calculating the total memory usage of a process 1. when I run "pdin mem" and "pidin pmem" it gives me different values of code memory and data memory. What is the differences here? Here is the result for each command for a specific process with 8 threads, that is why we see 8 lines for that process with pidin pmem 7372K 6788K 512K(516K)* 7372K 6788K 512K(516K) 7372K 6788K 512K(516K) 7372K 6788K 512K(516K) 7372K 6788K 512K(516K) 7372K 6788K 512K(516K) 7372K 6788K 512K(516K) 7372K 6788K 512K(516K) With pidin mem 0 6612K 512K(516K)* 0 6612K 512K(516K) 0 6612K 512K(516K) 0 6612K 512K(516K) 0 6612K 512K(516K) 0 6612K 512K(516K) 0 6612K 512K(516K) 0 6612K 512K(516K) 2. I would like to use pidin utility to monitor a process memory usage over time is that possible with pidin mem or pidin pmem? 3. In the list from pidin mem I also see text as following: 10r CONDVAR 0 6612K 512K(516K)* 0r SIGWAITINFO 0 6612K 512K(516K) 10r CONDVAR 0 6612K 512K(516K) 10r REPLY 0 6612K 512K(516K) 10r RECEIVE 0 6612K 512K(516K) 10r RECEIVE 0 6612K 512K(516K) 19r RECEIVE 0 6612K 512K(516K) 10r RECEIVE 0 6612K 512K(516K) some_lib @ 100c8000 268K 12K some_lib @ 1000000 620K 24K some_lib @ 78000000 92K 4096 some_lib @ 78029000 132K 4096 some_lib @ 7805c000 140K 4096 some_lib @ 78092000 104K 4096 some_lib @ 780be000 132K 4096 some_lib @ 780f8000 1076K 4096 some_lib @ 78226000 300K 4096 some_lib @ 78285000 200K 4096 some_lib @ 782ca000 80K 4096 some_lib @ 782f0000 252K 4096 some_lib @ 78342000 412K 4096 : : All these some_lib are libs that the process uses but are thes memory already included in the code and data memory or should I also need to sum all these sizes to have the whole picture of the total memory the process uses? Wed, 22 Feb 2023 11:08:12 GMT http://community.qnx.com/sf/go/post122139 Hung Nguyen 2023-02-22T11:08:12Z post122138: QNX 7.1 / Resource manager corrupt OS by reading actuel parameters http://community.qnx.com/sf/go/post122138 A start of an Interbus resource manager using actual parameters corrupts the operation of QNX 7.1. This doesn't happen by a start on a shell command line! This problem dosn't exist not in QNX 7.0 ... Greetings Armin Tue, 21 Feb 2023 11:19:12 GMT http://community.qnx.com/sf/go/post122138 Armin Steinhoff 2023-02-21T11:19:12Z post122136: Re: Cross-compile protobuf3-19.4 on qnx-sdp710 failed http://community.qnx.com/sf/go/post122136 iI solved this problem by adding CPPFLAGS='- D_ XOPEN_ SOURCE=700 'Compilation options Wed, 15 Feb 2023 08:37:48 GMT http://community.qnx.com/sf/go/post122136 Qicheng Ma(deleted) 2023-02-15T08:37:48Z post122135: Cross-compile protobuf3-19.4 on qnx-sdp710 failed http://community.qnx.com/sf/go/post122135 i want to Cross-compile protobuf3-19.4 on qnx-sdp710, But there are some problems to build it, The same environment can be compiled successfully with version qnx-sdp700。 The compilation process is as follows: 1、source ${MY_SDP710}/qnxsdp-env.sh 2、cd protobuf-3.19.4 3、./configure --prefix=xxx --host=arm CC=aarch64-unknown-nto-qnx7.1.0-gcc CXX=aarch64-unknown-nto-qnx7.1.0-g++ CPPFLAGS='-D_XOPEN_SOURCE=500' 4、make -j8 &amp; make install Please see the attachment for the log of compilation failure Wed, 15 Feb 2023 03:55:28 GMT http://community.qnx.com/sf/go/post122135 Qicheng Ma(deleted) 2023-02-15T03:55:28Z post122130: Re: Programmatically read CPU load and RAM usage http://community.qnx.com/sf/go/post122130 Thank You all for the quick response and simple solution. I think that's all I need to know (and Albrecht also got an answer to his question). Regards, Michael. Fri, 03 Feb 2023 06:23:53 GMT http://community.qnx.com/sf/go/post122130 Michael Kurt 2023-02-03T06:23:53Z post122128: Re: Programmatically read CPU load and RAM usage http://community.qnx.com/sf/go/post122128 There are various ways to query total and used memory. The cleanest in my opinion is to use the _MEM_INFO message, e.g.: mem_info_t msg = { .i.type = _MEM_INFO, .i.fd = -1 }; if (MsgSend(MEMMGR_COID, &amp;msg.i, sizeof(msg.i), &amp;msg.o, sizeof(msg.o)) == -1) { perror("MsgSend"); return 1; } printf("Total memory=%lu Free memory=%lu\n", msg.o.info.__posix_tmi_total, msg.o.info.posix_tmi_length); To track CPU usage you do the opposite and look at idle time. This can be done using the runtime clock of the idle threads. For example, for core 1: uint64_t idle_1_time; clock_t idle_1_clock_id = ClockId(1, 1); ClockTime(idle_1_clock_id, NULL, &amp;idle_1_time); The value in idle_1_time is the total run time of the idle thread on core 1. By sampling this value periodically you can calculate the percentage of idle time and, from that, the percentage of CPU usage. --Elad Thu, 02 Feb 2023 14:59:55 GMT http://community.qnx.com/sf/go/post122128 Elad Lahav 2023-02-02T14:59:55Z post122127: Re: Programmatically read CPU load and RAM usage http://community.qnx.com/sf/go/post122127 here's one way of reading free mem of the system (or at least a start): http://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.lib_ref/topic/p/procmgr_value_notify_add.html you can also follow this guide to get mapping information and then sum it up: http://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.cookbook/topic/s3_procfs_DCMD_PROC_MAPINFO.html Note though that esp DCMD_PROC_PAGEDATA is *very* expensive, you don't want to run that often. regards -- Michael ________________________________ From: Albrecht Uhlmann &lt;community-noreply@qnx.com&gt; Sent: Thursday, February 2, 2023 15:08 To: ostech-core_os Subject: Re: Programmatically read CPU load and RAM usage Hi Michael, for total RAM usage, there is a simple command, I think you need to do a stat on /proc and read the filesize member. The knowledge base contains sample code: https://www.qnx.com/support/knowledgebase.html?id=50130000000nbHX As to CPU load, I am very much interested myself but I do not know a solution. My idea was to open process #1 and use the devctl's to query its individual threads. Threads #1...through to #cpus are the idle threads (one per core), so getting their time must be "Idle time per core". The CPU time of all other threads in procnto I guess is what would be called "Kernel Time". And the remaining time (per core) is user time. What I do not know is interrupt time. Any of the QNX gurus comment on this? Regards, -Al _______________________________________________ OSTech http://community.qnx.com/sf/go/post122126 To cancel your subscription to this discussion, please e-mail ostech-core_os-unsubscribe@community.qnx.com Thu, 02 Feb 2023 14:13:19 GMT http://community.qnx.com/sf/go/post122127 Michael Schuster 2023-02-02T14:13:19Z post122126: Re: Programmatically read CPU load and RAM usage http://community.qnx.com/sf/go/post122126 Hi Michael, for total RAM usage, there is a simple command, I think you need to do a stat on /proc and read the filesize member. The knowledge base contains sample code: https://www.qnx.com/support/knowledgebase.html?id=50130000000nbHX As to CPU load, I am very much interested myself but I do not know a solution. My idea was to open process #1 and use the devctl's to query its individual threads. Threads #1...through to #cpus are the idle threads (one per core), so getting their time must be "Idle time per core". The CPU time of all other threads in procnto I guess is what would be called "Kernel Time". And the remaining time (per core) is user time. What I do not know is interrupt time. Any of the QNX gurus comment on this? Regards, -Al Thu, 02 Feb 2023 14:08:22 GMT http://community.qnx.com/sf/go/post122126 Albrecht Uhlmann 2023-02-02T14:08:22Z post122125: Programmatically read CPU load and RAM usage http://community.qnx.com/sf/go/post122125 Dear community, tools like 'top', 'sac' or 'pidin' can be used to display CPU load and RAM usage, so there must be a way to program this. Could somebody please tell me, how this can be done in a C(++) program (QNX7)? Thanks in advance, Michael. Thu, 02 Feb 2023 13:36:02 GMT http://community.qnx.com/sf/go/post122125 Michael Kurt 2023-02-02T13:36:02Z post122118: Re: QNX 7.x bsdtar broken http://community.qnx.com/sf/go/post122118 No, I have tested all filesystems. bsdtar uses statvfs() and pathconf(). The QNX procnto and/or filesystem returns incorrect errors. !!! e.g. pathconf(_PC_REC_XFER_ALIGN) returns -1 and does not set errno!!! -Michael &gt; Is it possible you're running the command from within /tmp while it's linked &gt; to /dev/shmem? &gt; &gt; &gt; If so, try running it anywhere else but there. &gt; &gt; &gt; -Eric &gt; &gt; ________________________________ &gt; From: Michael Tasche &lt;community-noreply@qnx.com&gt; &gt; Sent: Thursday, January 12, 2023 3:10:52 PM &gt; To: ostech-core_os &gt; Subject: QNX 7.x bsdtar broken &gt; &gt; Hi all, &gt; &gt; # use -i tar &gt; QNX_BUILDID=(GNU)e6eae59479764ad68539563a3d0e0f09 &gt; NAME=bsdtar &gt; DESCRIPTION=libarchive tar &gt; DATE=2020/06/13-19:36:42-EDT &gt; STATE=lookup &gt; HOST=sdp710-node1 &gt; USER=builder &gt; VERSION=7.1.0 &gt; TAGID=710-SDP-472 &gt; &gt; # ls -l &gt; total 0 &gt; drwxr-xr-x 2 root root 0 Jan 12 21:57 m1 &gt; # tar -cf m1.tar.gz m1 &gt; tar: statvfs failed &gt; tar: Error exit delayed from previous errors. &gt; # &gt; &gt; Is this a know problem? &gt; &gt; I have the same problem under 7.0 ! &gt; gnutar, delivered first for 7.0, works. &gt; &gt; Any ideas? &gt; &gt; -Michael &gt; &gt; &gt; &gt; _______________________________________________ &gt; &gt; OSTech &gt; http://community.qnx.com/sf/go/post122115 &gt; To cancel your subscription to this discussion, please e-mail ostech-core_os- &gt; unsubscribe@community.qnx.com Fri, 13 Jan 2023 15:35:05 GMT http://community.qnx.com/sf/go/post122118 Michael Tasche 2023-01-13T15:35:05Z post122116: Re: QNX 7.x bsdtar broken http://community.qnx.com/sf/go/post122116 Is it possible you're running the command from within /tmp while it's linked to /dev/shmem? If so, try running it anywhere else but there. -Eric ________________________________ From: Michael Tasche &lt;community-noreply@qnx.com&gt; Sent: Thursday, January 12, 2023 3:10:52 PM To: ostech-core_os Subject: QNX 7.x bsdtar broken Hi all, # use -i tar QNX_BUILDID=(GNU)e6eae59479764ad68539563a3d0e0f09 NAME=bsdtar DESCRIPTION=libarchive tar DATE=2020/06/13-19:36:42-EDT STATE=lookup HOST=sdp710-node1 USER=builder VERSION=7.1.0 TAGID=710-SDP-472 # ls -l total 0 drwxr-xr-x 2 root root 0 Jan 12 21:57 m1 # tar -cf m1.tar.gz m1 tar: statvfs failed tar: Error exit delayed from previous errors. # Is this a know problem? I have the same problem under 7.0 ! gnutar, delivered first for 7.0, works. Any ideas? -Michael _______________________________________________ OSTech http://community.qnx.com/sf/go/post122115 To cancel your subscription to this discussion, please e-mail ostech-core_os-unsubscribe@community.qnx.com Thu, 12 Jan 2023 20:52:47 GMT http://community.qnx.com/sf/go/post122116 Eric Naud 2023-01-12T20:52:47Z post122115: QNX 7.x bsdtar broken http://community.qnx.com/sf/go/post122115 Hi all, # use -i tar QNX_BUILDID=(GNU)e6eae59479764ad68539563a3d0e0f09 NAME=bsdtar DESCRIPTION=libarchive tar DATE=2020/06/13-19:36:42-EDT STATE=lookup HOST=sdp710-node1 USER=builder VERSION=7.1.0 TAGID=710-SDP-472 # ls -l total 0 drwxr-xr-x 2 root root 0 Jan 12 21:57 m1 # tar -cf m1.tar.gz m1 tar: statvfs failed tar: Error exit delayed from previous errors. # Is this a know problem? I have the same problem under 7.0 ! gnutar, delivered first for 7.0, works. Any ideas? -Michael Thu, 12 Jan 2023 20:10:52 GMT http://community.qnx.com/sf/go/post122115 Michael Tasche 2023-01-12T20:10:52Z post122106: Re: Network driver for the Enclustra Mercury XU1 SOM http://community.qnx.com/sf/go/post122106 Hi Al, By chance, late yesterday, I discovered in the Renesas Car H3 BSP devnp-ravd.so that appears to be based on this NIC. We will investigate this next week. I have never had need to delve into the way QNX deals with network devices so your comments are of considerable help to me and appreciated. I have mainly dealt with serial devices - UART's seem to be much less complicated! Cheers, Geoff. &gt; KSZ9031RNX is just a PHY. The "drivers" for the PHYs are compiled into the &gt; devnp-* drivers, usually in mii.c. The "driver" is usually just an &gt; initialization routine as a C function. The main network driver init routines &gt; scan the MII bus and select the correct PHY init routine based on PHY vendor/ &gt; device id. If none is found, a generic PHY init is done, which is often, but &gt; not always, sufficient. &gt; &gt; I remember that I have seen some Micrel KS9031 code in the i.MX6 ENET driver. &gt; Maybe that helps. &gt; &gt; Regards, &gt; -Al Fri, 06 Jan 2023 22:09:36 GMT http://community.qnx.com/sf/go/post122106 Geoffrey Roberts 2023-01-06T22:09:36Z post122105: Re: Network driver for the Enclustra Mercury XU1 SOM http://community.qnx.com/sf/go/post122105 Hi Elad, The decision to use the Mercury XU1 was I think driven by the hefty FPGA requirements of our application and its relative compatibility with the ZCU10x boards we have been using to date. Based on how the QNX software performed on the 4-core A53 moving to a 2-core A53 was considered viable - so long as I could get QNX 7.1 working on it. Which I was able to do with the exceptions of the QSPI and network. As for price, well, we'd be of course interested in anything (SoC) that's cheaper that can handle our FPGA requirements and also works with QNX and its devices (like serial, USB, SDMMC, and network). The production unit would not require SDMMC or USB. We also have some environmental requirements that I think drove us to the Exclustra board. I am not sure if the board could be considered "non modern"! :-) Geoff. &gt; Did you check if either NetBSD (for io-pkt) or FreeBSD (for io-sock) have a &gt; driver for this card? &gt; &gt; Out of curiosity - what's the use case for these boards? These are 10-20 times &gt; more expensive than modern single-board computers, and quite a bit less &gt; powerful (I think?). &gt; &gt; --Elad Fri, 06 Jan 2023 22:01:54 GMT http://community.qnx.com/sf/go/post122105 Geoffrey Roberts 2023-01-06T22:01:54Z post122104: Re: Network driver for the Enclustra Mercury XU1 SOM http://community.qnx.com/sf/go/post122104 KSZ9031RNX is just a PHY. The "drivers" for the PHYs are compiled into the devnp-* drivers, usually in mii.c. The "driver" is usually just an initialization routine as a C function. The main network driver init routines scan the MII bus and select the correct PHY init routine based on PHY vendor/device id. If none is found, a generic PHY init is done, which is often, but not always, sufficient. I remember that I have seen some Micrel KS9031 code in the i.MX6 ENET driver. Maybe that helps. Regards, -Al Fri, 06 Jan 2023 11:52:38 GMT http://community.qnx.com/sf/go/post122104 Albrecht Uhlmann 2023-01-06T11:52:38Z post122103: Re: Network driver for the Enclustra Mercury XU1 SOM http://community.qnx.com/sf/go/post122103 Did you check if either NetBSD (for io-pkt) or FreeBSD (for io-sock) have a driver for this card? Out of curiosity - what's the use case for these boards? These are 10-20 times more expensive than modern single-board computers, and quite a bit less powerful (I think?). --Elad Fri, 06 Jan 2023 10:49:52 GMT http://community.qnx.com/sf/go/post122103 Elad Lahav 2023-01-06T10:49:52Z post122101: Re: Network driver for the Enclustra Mercury XU1 SOM http://community.qnx.com/sf/go/post122101 BTW, the NIC is a Micrel KSZ9031RNX. I can't find any QNX 7.1 driver for it for any platform (aarch64le or x86_64). Does anyone know if we have a driver for it and what it might be called? Geoff. &gt; Hello, &gt; &gt; This is actually a board modeled on the Xilinx MPSoC's (ZCU10x). I have been &gt; able to get QNX 7.1 up and running on it and for the most part everything &gt; works just like they did on the ZCU111 and ZCU102 before it. However, &gt; Enclustra use a different NIC chip so the xzynq-ultrascale network driver &gt; (devnp-xzynq-ultrascale.so) won't work. Here is a link to this particular &gt; board. &gt; &gt; https://www.enclustra.com/en/products/system-on-chip-modules/mercury-xu1/ &gt; &gt; Has anyone reading this forum found the same problem and formulated a solution &gt; , or can help us with a solution? This would probably entail writing a new &gt; network driver if someone else hasn't already done so. Or has and is prepared &gt; to share it. (I use the word "share" loosely)! &gt; &gt; The QSPI driver that comes with ZCU10x BSP's doesn't work either but that can &gt; be dealt with later. Getting the network working is my immediate priority. &gt; &gt; Any ideas and/or help with this would be appreciated! &gt; &gt; Regards, &gt; &gt; Geoff. Fri, 06 Jan 2023 01:25:34 GMT http://community.qnx.com/sf/go/post122101 Geoffrey Roberts 2023-01-06T01:25:34Z post122098: Network driver for the Enclustra Mercury XU1 SOM http://community.qnx.com/sf/go/post122098 Hello, This is actually a board modeled on the Xilinx MPSoC's (ZCU10x). I have been able to get QNX 7.1 up and running on it and for the most part everything works just like they did on the ZCU111 and ZCU102 before it. However, Enclustra use a different NIC chip so the xzynq-ultrascale network driver (devnp-xzynq-ultrascale.so) won't work. Here is a link to this particular board. https://www.enclustra.com/en/products/system-on-chip-modules/mercury-xu1/ Has anyone reading this forum found the same problem and formulated a solution, or can help us with a solution? This would probably entail writing a new network driver if someone else hasn't already done so. Or has and is prepared to share it. (I use the word "share" loosely)! The QSPI driver that comes with ZCU10x BSP's doesn't work either but that can be dealt with later. Getting the network working is my immediate priority. Any ideas and/or help with this would be appreciated! Regards, Geoff. Tue, 03 Jan 2023 22:52:01 GMT http://community.qnx.com/sf/go/post122098 Geoffrey Roberts 2023-01-03T22:52:01Z post122027: Re: devb-sdmmc with x86_64 generic kernel for LattePanda Delta (Celeron N4100) http://community.qnx.com/sf/go/post122027 Hi David, Did you find a solution? If not, can you try running the driver with extra verbosity and post the slog2info results? That board certainly seems expensive for what you get :-( I think it's sole purpose is as a Windows development board. There are claims that RaspberryPi is building more units, but I haven't seen these materialize yet. --Elad Sun, 18 Dec 2022 12:24:31 GMT http://community.qnx.com/sf/go/post122027 Elad Lahav 2022-12-18T12:24:31Z post122017: Re: su: System error (?) http://community.qnx.com/sf/go/post122017 The thing I learnt hardly is that we have to satisfy ls -ld / to be root:root with permission 755(no write for group and others). In our BSP sample build file, we did not explicitly set dperms=0755 to root directory(/) as we do to others, for example: [uid=0 gid=0 type=dir dperms=0755] /usr [uid=0 gid=0 type=dir dperms=0755] /usr/lib [uid=0 gid=0 type=dir dperms=0755] /etc On my target, I mount disk drive to / as follows: mount -t qnx6 /dev/sata0t179 / and that break the rule for / Once change the mounting with -o mntperms=755, the su - root works. mount -t qnx6 -o mntperms=755 /dev/sata0t179 / Wed, 07 Dec 2022 17:22:59 GMT http://community.qnx.com/sf/go/post122017 Yuxi Zhang 2022-12-07T17:22:59Z post122014: devb-sdmmc with x86_64 generic kernel for LattePanda Delta (Celeron N4100) http://community.qnx.com/sf/go/post122014 With the shortage of RPi4's, I've been exploring the use of relatively cheap (but not as cheap!) x86 alternatives. I have a LattePanda board that I can boot up fine from USB and can use the nvme driver to access external storage, but I'd like to take advantage of the sdmmc/emmc that's on board. Problem is I can't seem to get the devb-sdmmc to recognize either the SD reader or the eMMC. pci-tools -v show what I think are the controllers? B000:D28:F00 @ idx 18 vid/did: 8086/31cc Intel Corporation, &lt;device id - unknown&gt; class/subclass/reg: 08/05/01 SD Host Controller Base Systems Peripheral B000:D30:F00 @ idx 19 vid/did: 8086/31d0 Intel Corporation, &lt;device id - unknown&gt; class/subclass/reg: 08/05/01 SD Host Controller Base Systems Peripheral But my attempts to form the correct devb-sdmmc command line have not succeeded. Any suggestions? Thanks! David Thu, 01 Dec 2022 03:12:26 GMT http://community.qnx.com/sf/go/post122014 David Sheinberg 2022-12-01T03:12:26Z post122003: Re: Having trouble starting QDB http://community.qnx.com/sf/go/post122003 Hi, You do not have the qdb executable in Your image or it is not in the search path. Be sure to have it in the image or in the disk, and that is reachable and executable. If it is not in the disk/image, just copy it or add it to image build. if it is not in the PATH, add its directory to the PATH. Bye Mario Mon, 21 Nov 2022 09:01:49 GMT http://community.qnx.com/sf/go/post122003 mario sangalli 2022-11-21T09:01:49Z post122001: Having trouble starting QDB http://community.qnx.com/sf/go/post122001 Hi there, I'm a student working with QNX for a project and I'm having trouble starting QDB. I looked through the "Starting the QDB Server" page and followed the instructions (started PPS, created the directory structure) but when I try and run the qdb command in terminal I get the error: sh: qdb: cannot execute - No such file or directory Also, when I run "which qdb" I get: which: no qdb in /proc/boot:/system/xbin I'm not sure where to go from here so any help would be appreciated, thanks. Sat, 19 Nov 2022 21:51:38 GMT http://community.qnx.com/sf/go/post122001 AJ Ricketts(deleted) 2022-11-19T21:51:38Z post121997: Replace the original hard drive http://community.qnx.com/sf/go/post121997 Is there any way to replace the original hard drive? Replace with SSD hard disk, need help from boss, thank you Fri, 18 Nov 2022 08:17:46 GMT http://community.qnx.com/sf/go/post121997 hang zhang 2022-11-18T08:17:46Z post121989: Re: microsecond sleep on QNX 7.1 http://community.qnx.com/sf/go/post121989 The minimum resolution for HRTs is 10us anyway. Mon, 31 Oct 2022 16:58:49 GMT http://community.qnx.com/sf/go/post121989 Benjamin Walsh 2022-10-31T16:58:49Z post121988: Re: microsecond sleep on QNX 7.1 http://community.qnx.com/sf/go/post121988 QNX 7 has high-resolution timers. You can use these, but depending on how many microseconds we are talking about setting up the timer, blocking and waiting for it to fire may not justify the cost. --Elad Fri, 28 Oct 2022 18:00:35 GMT http://community.qnx.com/sf/go/post121988 Elad Lahav 2022-10-28T18:00:35Z post121978: Re: microsecond sleep on QNX 7.1 http://community.qnx.com/sf/go/post121978 Hi, if you need really shorts delay you could use a "busy loop" using ClockCycles() call. Of course you'll need a thread and it is CPU consuming. Otherwise, I agree with Mario. You should also consider the interrupt dispatch time as a minimal delay. Bye Fri, 28 Oct 2022 10:09:19 GMT http://community.qnx.com/sf/go/post121978 Alexandre REBEKO 2022-10-28T10:09:19Z post121977: Re: microsecond sleep on QNX 7.1 http://community.qnx.com/sf/go/post121977 It is the tick time of your CPU, change it to a lower value (For instance 100us) See: https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.neutrino.prog/topic/timing.html If You requires an exact us delay, You cau use one of hardware timers of the CPU. Bye Fri, 28 Oct 2022 06:25:54 GMT http://community.qnx.com/sf/go/post121977 mario sangalli 2022-10-28T06:25:54Z post121976: microsecond sleep on QNX 7.1 http://community.qnx.com/sf/go/post121976 I am using QNX 7.1 on QualcommSA8540P and find that the least sleep time is 1 ms when using usleep(). Is there any way to achieve microsecond sleep? Fri, 28 Oct 2022 05:50:52 GMT http://community.qnx.com/sf/go/post121976 ge zhang(deleted) 2022-10-28T05:50:52Z post121951: Re: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121951 Hi Manoj, You are right, I forgot to tell about the DCMD_SDMMC_DEVICE_INFO command. Anyhow, the information you get with that is basically a mapping and some calculation based on data from the device registers. Good to hear that DCMD_SDMMC_ERASE is working for you. Just keep in mind to not use it on partitions with mounted file systems ;-) Regards, Gerd Mon, 10 Oct 2022 11:40:46 GMT http://community.qnx.com/sf/go/post121951 Gerd Wetzel 2022-10-10T11:40:46Z post121950: Re: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121950 Hi Gred, I guess DCMD_SDMMC_CARD_REGISTER which you mentioned is the wrong one to use for sector size. Instead, I tried DCMD_SDMMC_DEVICE_INFO, and it is working as SDMMC_DEVICE_INFO is having required members (sectors, sector_size &amp; erase_size). To erase sectors with DCMD_SDMMC_ERASE is working. Thanks Manoj Fri, 07 Oct 2022 20:43:20 GMT http://community.qnx.com/sf/go/post121950 Manoj Palhade(deleted) 2022-10-07T20:43:20Z post121949: Re: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121949 Hi Manoj, Only what you can find in our online documentation. Anything else would typically require a support contract. If you are working on a project with an existing support contract, please contact you QNX PM. Best Regards, Gerd Thu, 06 Oct 2022 07:55:34 GMT http://community.qnx.com/sf/go/post121949 Gerd Wetzel 2022-10-06T07:55:34Z post121948: Re: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121948 Hi Gerd, Thanks for sharing the information about devctl() Do you have any example code to refer about DCMD_SDMMC_CARD_REGISTER &amp; DCMD_SDMMC_ERASE Thanks Manoj Wed, 05 Oct 2022 16:41:27 GMT http://community.qnx.com/sf/go/post121948 Manoj Palhade(deleted) 2022-10-05T16:41:27Z post121947: Re: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121947 Hi Gerd, Thanks for your quick reply and help by sharing this useful information. Best regards, Manoj Thu, 29 Sep 2022 13:26:57 GMT http://community.qnx.com/sf/go/post121947 Manoj Palhade(deleted) 2022-09-29T13:26:57Z post121946: Re: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121946 The physical sector size will be in the card register data, that you get with DCMD_SDMMC_CARD_REGISTER. You can erase sectors with DCMD_SDMMC_ERASE. Directly writing a block, bypassing the block device layer, is not supported, but you can write raw data to the block device or partition. Thu, 29 Sep 2022 13:21:20 GMT http://community.qnx.com/sf/go/post121946 Gerd Wetzel 2022-09-29T13:21:20Z post121945: Re: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121945 The QNX sdmmc driver has a devctl() api. You can find a list of supported commands in the online documentation. E.g. if you are using QNX 7.1: http://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.devctl/topic/sdmmc.html Thu, 29 Sep 2022 12:43:34 GMT http://community.qnx.com/sf/go/post121945 Gerd Wetzel 2022-09-29T12:43:34Z post121944: Programming Interface to eMMC in QNX http://community.qnx.com/sf/go/post121944 Hello QNX Expert, I am very new to the QNX and NXP S32G board. I am trying to access eMMC Card through C Code on NXP S32G board. Earlier, we managed to access eMMC Card on Linux using the following sample code. But in QNX, it faced an issue using ioctl() calls. Do you have any information and/or documents discussing accessing eMMC in QNX through programming? I want to know how to read (ex. a device's physical sector size), write, and erase (number of blocks) in eMMC. This API's like open() close(), lssek(), write() works. Sample code for Linux int fd = open("/dev/mmcblk0", O_RDWR); struct stat sb; fstat(fd, &amp;sb) int secsize = 0; ret = ioctl(fd, BLKSSZGET, &amp;secsize); //a device's physical sector size if (ret &lt; 0) { // set the erase block size uint64_t range[2]; range[0] = offset; // input address range[1] = len; // input block size if (ioctl(fd, BLKDISCARD, &amp;range) { } } close(fd) Best Regards, Manoj Thu, 29 Sep 2022 12:22:35 GMT http://community.qnx.com/sf/go/post121944 Manoj Palhade(deleted) 2022-09-29T12:22:35Z post121940: Re: QNX 7.0 Backtrace bt_get_backtrace returns -1 http://community.qnx.com/sf/go/post121940 this is excellent. thank you for sharing the link! Thu, 22 Sep 2022 20:42:11 GMT http://community.qnx.com/sf/go/post121940 Alex Martir 2022-09-22T20:42:11Z post121939: Re: QNX 7.0 Backtrace bt_get_backtrace returns -1 http://community.qnx.com/sf/go/post121939 Upstream libunwind development has moved to https://github.com/libunwind/libunwind if you're looking for something newer than 2013. Thu, 22 Sep 2022 18:14:39 GMT http://community.qnx.com/sf/go/post121939 Stephen Webb 2022-09-22T18:14:39Z post121938: Re: QNX 7.0 Backtrace bt_get_backtrace returns -1 http://community.qnx.com/sf/go/post121938 Hey Stephen thanks so much for confirming! I found this article: https://lists.nongnu.org/archive/html/libunwind-devel/2013-04/msg00006.html Seems like some people are trying to get libunwind ported to QNX as well. I'll follow through and see if I can use any of it on my project. Thank you again for your replies! Alex Thu, 22 Sep 2022 18:01:26 GMT http://community.qnx.com/sf/go/post121938 Alex Martir 2022-09-22T18:01:26Z post121937: Re: QNX 7.0 Backtrace bt_get_backtrace returns -1 http://community.qnx.com/sf/go/post121937 Unfortunately the implementation of backtrace for that architecture consists of a single line setting errno to ENOTSUP. Until either an implementation is provided or a port of an alternative library like libunwind is made available, 64-bit ARM backtraces on QNX can only be done using gdb, either remotely or on a core file. Thu, 22 Sep 2022 10:59:23 GMT http://community.qnx.com/sf/go/post121937 Stephen Webb 2022-09-22T10:59:23Z post121936: Re: QNX 7.0 Backtrace bt_get_backtrace returns -1 http://community.qnx.com/sf/go/post121936 Hey Stephen, it's a 64-bit Arm Cortex A53 Thu, 22 Sep 2022 02:41:56 GMT http://community.qnx.com/sf/go/post121936 Alex Martir 2022-09-22T02:41:56Z post121935: Re: QNX 7.0 Backtrace bt_get_backtrace returns -1 http://community.qnx.com/sf/go/post121935 What CPU architecture? Wed, 21 Sep 2022 23:13:45 GMT http://community.qnx.com/sf/go/post121935 Stephen Webb 2022-09-21T23:13:45Z post121934: Re: QNX 7.0 Backtrace bt_get_backtrace returns -1 http://community.qnx.com/sf/go/post121934 sorry, small correction. returned value from bt_get_backtrace(...) is actually -1, which i was type-casting to unsigned (size_t) Wed, 21 Sep 2022 21:25:57 GMT http://community.qnx.com/sf/go/post121934 Alex Martir 2022-09-21T21:25:57Z post121933: Re: Call stack using bt_get_backtrace( ) http://community.qnx.com/sf/go/post121933 Hi, did you ever get help in getting backtrace to work properly? I am also having some issues where bt_get_backtrace Wed, 21 Sep 2022 21:16:21 GMT http://community.qnx.com/sf/go/post121933 Alex Martir 2022-09-21T21:16:21Z post121932: QNX 7.0 Backtrace bt_get_backtrace returns 0xFFFFFFFF http://community.qnx.com/sf/go/post121932 Hi all, I'm trying to get a backtrace on my application (running on QNX7.0), but calls to bt_get_backtrace() keep returning 0xFFFFFFFF for some reason. The following code is how I'm initiating a backtrace bt_accessor_t bt_accessor; bt_memmap_t memmap; uintptr_t addr_buff[32]; char out_buff[1024]; bt_init_accessor(&amp;bt_accessor, BT_SELF); bt_load_memmap(&amp;bt_accessor, &amp;memmap); bt_sprn_memmap(&amp;memmap, out_buff, sizeof(out_buff)); int depth = bt_get_backtrace(&amp;bt_accessor, addr_buff, max_depth); // At this point depth = 0xFFFFFFFF. For additional context, I am compiling with gcc O2 flag. Can you point me in the right direction? Am I missing something? Wed, 21 Sep 2022 21:04:34 GMT http://community.qnx.com/sf/go/post121932 Alex Martir 2022-09-21T21:04:34Z post121931: Re: <Query> [RUST compilation for QNX] http://community.qnx.com/sf/go/post121931 It is unlikely to be supported in the next SDP release. Rust is still in constant flux with new and incompatible releases that arrive at a much faster cadence than the QNX SDP release cycle. We could choose to fix on an older release of Rust but that would not serve those who prefer the "move fast and break things" model, which is not completely appropriate to the embedded world. Since the upstream Rust developers do not support older versions of their product this would pose a considerable problem for QNX support. Additionally, the Rust development ecosystem is a centralized one in which crates.io itself would need to serve binaries for QNX. Alternatively, developers could break with the cargo tool. There are very large problems with either of those approaches. That said, there is nothing to stop an enterprising individual from making a Rust and Cargo development environment available for QNX. It just won't be coming from BlackBerry in the next SDP release. Wed, 21 Sep 2022 11:24:27 GMT http://community.qnx.com/sf/go/post121931 Stephen Webb 2022-09-21T11:24:27Z post121930: Re: <Query> [RUST compilation for QNX] http://community.qnx.com/sf/go/post121930 CAUTION - This email is from an external source. Please be cautious with links and attachments. (go/taginfo) Hello, Thanks for the response. Is there any plan to support in the near future? Regards, Manoj On Tue, Sep 20, 2022 at 4:24 PM Stephen Webb &lt;community-noreply@qnx.com&gt; wrote: &gt; BlackBerry does not supply or support any LLVM-based toolchains at the &gt; moment. &gt; &gt; &gt; &gt; _______________________________________________ &gt; &gt; OSTech &gt; http://community.qnx.com/sf/go/post121924 &gt; To cancel your subscription to this discussion, please e-mail &gt; ostech-core_os-unsubscribe@community.qnx.com &gt; &gt; ---------------------------------------------------------------------- &gt; This transmission (including any attachments) may contain confidential &gt; information, privileged material (including material protected by the &gt; solicitor-client or other applicable privileges), or constitute non-public &gt; information. Any use of this information by anyone other than the intended &gt; recipient is prohibited. If you have received this transmission in error, &gt; please immediately reply to the sender and delete this information from &gt; your system. Use, dissemination, distribution, or reproduction of this &gt; transmission by unintended recipients is not authorized and may be unlawful. &gt; -- *** This communication is confidential, may be privileged and is meant only for the intended recipient and purpose. No part of this email or any files transmitted with it can be shared, copied, forwarded or published online or offline, without prior written consent of the sender. If you are not the intended recipient, please preserve the confidentiality, delete the e-mail and attachments, if any from your system and inform the sender immediately.    *** Wed, 21 Sep 2022 10:53:41 GMT http://community.qnx.com/sf/go/post121930 Manoj Ashokkumar(deleted) 2022-09-21T10:53:41Z post121929: Re: Regarding the login profiles not invoked http://community.qnx.com/sf/go/post121929 I am using QNX 7.1 Wed, 21 Sep 2022 05:17:30 GMT http://community.qnx.com/sf/go/post121929 HARI KRISHNAN G(deleted) 2022-09-21T05:17:30Z post121925: Regarding the login profiles not invoked http://community.qnx.com/sf/go/post121925 Hi, I am using the QNX for our project. Actually I downloaded the QNX from QNX Software Center and Flashing the OS into memory card. In the profile generation build file, I did some additions in /etc/profile file, I added one echo statement and changed the PATH variables depending on the target. in /root/.profile file I added the ENV for setting the path of .kshrc file with echo statement and also executing the script. After flashing this configuration, I put the SD card into target and turn on. While it is booting, It actually goes the "Non-login shell (sh)".So only /etc/profle executes and that acho prints on terminal [ according to the non login shell this is correct ] When I try to root login, that time also etc/profile executes and that echo printed. After this, according the "login shell policy" it automatically calls the /root/.profile and .kshrc file. But /root/.prifile not executed automatically and only /etc/profile executed. Can you help me for how to solve this this issue? or Is there any other modifications are needed for that automatic call? Tue, 20 Sep 2022 12:46:30 GMT http://community.qnx.com/sf/go/post121925 HARI KRISHNAN G(deleted) 2022-09-20T12:46:30Z post121924: Re: <Query> [RUST compilation for QNX] http://community.qnx.com/sf/go/post121924 BlackBerry does not supply or support any LLVM-based toolchains at the moment. Tue, 20 Sep 2022 10:54:52 GMT http://community.qnx.com/sf/go/post121924 Stephen Webb 2022-09-20T10:54:52Z post121923: RUST programming language support in QNX http://community.qnx.com/sf/go/post121923 Is it possible to compile RUST code for QNX? Tue, 20 Sep 2022 06:55:50 GMT http://community.qnx.com/sf/go/post121923 Manoj Ashokkumar(deleted) 2022-09-20T06:55:50Z post121922: <Query> [RUST compilation for QNX] http://community.qnx.com/sf/go/post121922 CAUTION - This email is from an external source. Please be cautious with links and attachments. (go/taginfo) Hello, Is it possible to compile RUST code for QNX? Regards, Manoj -- *** This communication is confidential, may be privileged and is meant only for the intended recipient and purpose. No part of this email or any files transmitted with it can be shared, copied, forwarded or published online or offline, without prior written consent of the sender. If you are not the intended recipient, please preserve the confidentiality, delete the e-mail and attachments, if any from your system and inform the sender immediately.    *** Tue, 20 Sep 2022 06:54:37 GMT http://community.qnx.com/sf/go/post121922 Manoj Ashokkumar(deleted) 2022-09-20T06:54:37Z post121914: Re: io-audio use on Raspberry Pi4 http://community.qnx.com/sf/go/post121914 Hi Elad, Thanks for that! I managed to get to this late yesterday and had some success. I downloaded a beep-beep WAV file from off the internet and that worked but was very scratchy to listen to. I'll grab something else today and see how that goes. I could only run the wave utility a couple of times. After that it would do nothing other than to output some stuff to the terminal. A reboot gets it going again but again only for a couple of tries. I am totally unfamiliar with the terminology used with this stuff - specifically the arguments/options for both io-audio and wave. The documentation for both state what they are but not what they do or mean.Some obviously don't have relevance to what I am doing but others I suspect do. Is there anywhere I can go to find out more about how these audio systems/drivers work? I'll try to play more today - it's difficult as I am surrounded by those who I'm hoping to surprise if I can get this working! :-) Regards, Geoff. &gt; Hi Geoff, &gt; &gt; Not an audio expert, but this use case can be handled easily. &gt; &gt; 1. Add deva-ctrl-bcm2711_pwm.so to the build file (if it's not already there) &gt; 2. Start io-audio: &gt; &gt; # io-audio -m pool_name=below1G,pool_size=260 -vd bcm2711_pwm &gt; &gt; 3. Use the 'wave' utility to play any WAV file. &gt; &gt; Not an audiophile's experience, but good enough to fool a hungry coyote ;-) &gt; &gt; --Elad &gt; &gt; On Sun, 2022-09-04 at 19:09 -0400, Geoff Roberts wrote: &gt; &gt; Hello, &gt; &gt; &gt; &gt; I am involved in a project with some young scientists. The project is called &gt; "Road Runner". We are looking to do the first test run of the hardware and &gt; software this coming Friday. All the software being used is under QNX 7.1. &gt; &gt; &gt; &gt; It turned out that we need to temporarily use a Raspberry Pi4 for something. &gt; It occurred to me that with its audio capabilities it would be a good morale &gt; booster to be able to issue in some way a "beep-beep" and/or similar sounds &gt; when significant events occur. &gt; &gt; &gt; &gt; However, I have never used the audio stuff (io-audio) before and don't know &gt; where to start - or even if this is possible on the RPi. I assume it is though &gt; . &gt; &gt; &gt; &gt; I have looked at the RPi4 BSP documentation and found the bit about io-audio &gt; of little use. At least to a novice in this area like me! it looks like other &gt; stuff is required. &gt; &gt; &gt; &gt; Could someone help me by pointing me in the direction of any resources that &gt; might get me started with this - with examples if possible? I think all I'd &gt; want to do is play a short MP3 file or something like that. A double "chirp" &gt; would probably do if "beep" wasn't possible. &gt; &gt; &gt; &gt; Any help with this would be much appreciated! :-) &gt; &gt; &gt; &gt; Thanks, &gt; &gt; &gt; &gt; Geoff. &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; &gt; _______________________________________________ &gt; &gt; &gt; &gt; OSTech &gt; &gt; http://community.qnx.com/sf/go/post121909 &gt; &gt; To cancel your subscription to this discussion, please e-mail ostech-core_os &gt; -unsubscribe@community.qnx.com Tue, 06 Sep 2022 22:38:24 GMT http://community.qnx.com/sf/go/post121914 Geoff Roberts 2022-09-06T22:38:24Z post121911: Re: io-audio use on Raspberry Pi4 http://community.qnx.com/sf/go/post121911 Hi Geoff, Not an audio expert, but this use case can be handled easily. 1. Add deva-ctrl-bcm2711_pwm.so to the build file (if it's not already there) 2. Start io-audio: # io-audio -m pool_name=below1G,pool_size=260 -vd bcm2711_pwm 3. Use the 'wave' utility to play any WAV file. Not an audiophile's experience, but good enough to fool a hungry coyote ;-) --Elad On Sun, 2022-09-04 at 19:09 -0400, Geoff Roberts wrote: &gt; Hello, &gt; &gt; I am involved in a project with some young scientists. The project is called "Road Runner". We are looking to do the first test run of the hardware and software this coming Friday. All the software being used is under QNX 7.1. &gt; &gt; It turned out that we need to temporarily use a Raspberry Pi4 for something. It occurred to me that with its audio capabilities it would be a good morale booster to be able to issue in some way a "beep-beep" and/or similar sounds when significant events occur. &gt; &gt; However, I have never used the audio stuff (io-audio) before and don't know where to start - or even if this is possible on the RPi. I assume it is though. &gt; &gt; I have looked at the RPi4 BSP documentation and found the bit about io-audio of little use. At least to a novice in this area like me! it looks like other stuff is required. &gt; &gt; Could someone help me by pointing me in the direction of any resources that might get me started with this - with examples if possible? I think all I'd want to do is play a short MP3 file or something like that. A double "chirp" would probably do if "beep" wasn't possible. &gt; &gt; Any help with this would be much appreciated! :-) &gt; &gt; Thanks, &gt; &gt; Geoff. &gt; &gt; &gt; &gt; &gt; &gt; &gt; _______________________________________________ &gt; &gt; OSTech &gt; http://community.qnx.com/sf/go/post121909 &gt; To cancel your subscription to this discussion, please e-mail ostech-core_os-unsubscribe@community.qnx.com Mon, 05 Sep 2022 10:44:18 GMT http://community.qnx.com/sf/go/post121911 Elad Lahav 2022-09-05T10:44:18Z post121909: io-audio use on Raspberry Pi4 http://community.qnx.com/sf/go/post121909 Hello, I am involved in a project with some young scientists. The project is called "Road Runner". We are looking to do the first test run of the hardware and software this coming Friday. All the software being used is under QNX 7.1. It turned out that we need to temporarily use a Raspberry Pi4 for something. It occurred to me that with its audio capabilities it would be a good morale booster to be able to issue in some way a "beep-beep" and/or similar sounds when significant events occur. However, I have never used the audio stuff (io-audio) before and don't know where to start - or even if this is possible on the RPi. I assume it is though. I have looked at the RPi4 BSP documentation and found the bit about io-audio of little use. At least to a novice in this area like me! it looks like other stuff is required. Could someone help me by pointing me in the direction of any resources that might get me started with this - with examples if possible? I think all I'd want to do is play a short MP3 file or something like that. A double "chirp" would probably do if "beep" wasn't possible. Any help with this would be much appreciated! :-) Thanks, Geoff. Sun, 04 Sep 2022 23:09:25 GMT http://community.qnx.com/sf/go/post121909 Geoff Roberts 2022-09-04T23:09:25Z post121908: Re: Does QNX supports CLang http://community.qnx.com/sf/go/post121908 No. Only qcc is supported. -- smw On 2022-09-01 00:45, Darshan B wrote: &gt; We are using SDP710, do we support Clang on this toolchain? &gt; &gt; &gt; &gt; _______________________________________________ &gt; &gt; OSTech &gt; http://community.qnx.com/sf/go/post121907 &gt; To cancel your subscription to this discussion, please e-mail ostech-core_os-unsubscribe@community.qnx.com &gt; Thu, 01 Sep 2022 11:22:22 GMT http://community.qnx.com/sf/go/post121908 Stephen Webb 2022-09-01T11:22:22Z post121907: Does QNX supports CLang http://community.qnx.com/sf/go/post121907 We are using SDP710, do we support Clang on this toolchain? Thu, 01 Sep 2022 04:46:10 GMT http://community.qnx.com/sf/go/post121907 Darshan B(deleted) 2022-09-01T04:46:10Z post121904: Re: QNX 7.1 Neutrino screen output RGB value range is limited to [0x10~0xEB] http://community.qnx.com/sf/go/post121904 It seems that QNX intel drm output through HDMI is RGB limited (0x10~0xEB) but not RGB full (0x00~0xFF). So how can I set RGB full for intel drm driver? Fri, 26 Aug 2022 15:42:27 GMT http://community.qnx.com/sf/go/post121904 SHENGFA ZHANG 2022-08-26T15:42:27Z post121901: Re: QNET Bad Address problem http://community.qnx.com/sf/go/post121901 There was a change in a 7.1 update that may have caused the issue you are seeing. It was since fixed, but I'm not sure whether the fix is generally available. You should contact support to see if you can get it. If not. try downgrading to the original 7.1.0 kernel. --Elad Wed, 24 Aug 2022 10:34:15 GMT http://community.qnx.com/sf/go/post121901 Elad Lahav 2022-08-24T10:34:15Z post121900: QNET Bad Address problem http://community.qnx.com/sf/go/post121900 Hi, I am currently trying to set up qnet on a small network of two Raspberry Pi boards (node1 and node2), connected via a router. On each of the nodes I start qnet with io-pkt and it seems to start correctly. io-pkt-v6-hc -p qnet host=node1 After bootup I can see the following in /proc/qnetstats (here executed on node1): kif net_server : 0,0 kif waiting : 1,1 kif net_client : 0,0 kif buffer : 0,0 kif outbound_msgs : 0,0 kif vtid : 0,0 kif server_msgs : 0,0 kif nd_down : 0 kif nd_up : 2 kif nd_changed : 1 kif send_acks : 0 kif client_kercalls : 0 kif server_msgs : 0 kif server_unblock : 0 qos tx_begin_errors : 0 qos tx_done_errors : 0 qos tx_throttled : 0 qos tx_failed : 0 qos pkts_rxd_noL4 : 0 qos tx_conn_created : 0 qos tx_conn_deleted : 0 qos rx_conn_created : 0 qos rx_conn_deleted : 0 qos rx_seq_order : 0 **** Qnet compiled on Jun 13 2020 at 19:52:17 running on node1 **** Tx Connections: **** Rx Connections: **** L4 Status: slot 0 genet0 mtu 1496 ack 1 crc 0 txd ok 4 txd bad 0 txd descr 0 txd still 0 tx timeouts 0 tx slow 0 rxd ok 4 rxd bad dr 0 rxd bad L4 0 rxd dropped 0 rxd duplic 0 rxd nacks 0 slot 1 is unused **** Last 8192 bytes of circular qnet_error() log: 00000000:: mac_load(): security policy not being used 00000000: qnet_birth(): qnet_init() - complete 00000000: lr_verify_my_name_and_domain(): set _CS_DOMAIN 00000000: lr_verify_my_name_and_domain(): starting resolution of our hostname node1.net.intra to ensure unique 00000000: lr_verify_my_name_and_domain(): qnet going online 00000001: try_ifp(): new interface: genet0: index 0 mac addr DC:A6:32:BB:EC:05 00000001:: nd_change_notify(): Node Up: nd 0 node1.net.intra 00000031: lr_add_ndb(): adding L4 0 addr to ndb for nd 1 node2.net.intra 00000031:: nd_change_notify(): Node Up: nd 1 node2.net.intra It seems both nodes can discover each other on the network fine. According to the guide on using qnet (https://www.qnx.com/developers/docs/7.1/index.html#com.qnx.doc.neutrino.user_guide/topic/qnet_UsingQnet.html) I try to see the neighbourhood via #pidin net which returns the following: ND Node CPU Release FreeMem BootTime 0 node1 4 AARCH64 7.1.0 3803MB/4032MB ------------------------ Processes: 25, Threads: 88 CPU 1: 1091555459 Cortex-A72 1500MHz FPU CPU 2: 1091555459 Cortex-A72 1500MHz FPU CPU 3: 1091555459 Cortex-A72 1500MHz FPU CPU 4: 1091555459 Cortex-A72 1500MHz FPU 1 node2 Bad address The same on the other node gives the same results. I have also tried to execute execute processes on the different nodes that communicate with each other but the results are the same. Is there anything I am doing wrong when setting up qnet? Tue, 23 Aug 2022 11:19:21 GMT http://community.qnx.com/sf/go/post121900 Matthias Becker(deleted) 2022-08-23T11:19:21Z post121896: Re: Malloc Check Failed: lib/c/alloc/dlist.c:748 http://community.qnx.com/sf/go/post121896 Thank you Elad. Hardware(QDrive): QualCOMM Snapdragon ride platform QNX: SDK 11.1 Is it possible to run valgrind without using Momentics IDE? Basically our application is crashing in initialization itself if we run through Momentics[We are talking to the appropriate team to fix this. Even simple programs is not working]. So for now, What we basically do is copy our executable to the QDrive through WinSCP and execute through command prompt using telnet to that QDrive IP. We've QNX SDK 11.1 on our QDrive. If we enter valgrind command, its not able to find. # valgrind sh: valgrind: cannot execute - No such file or directory What is the correct way of using Valgrind tool without using Momentics IDE? Do we need to re-build QNX SDK with certain option when configure/build to include valgrind? If so, Can you please specify. We download QNX SDK from https://chipcode.qti.qualcomm.com/ Currently using sa8540p-qx-1-0_hlos_dev_qnx/tree/r00011.1a.502856.3 SDK. Note: Please let me know if it is not the right forum to ask questions about valgrind and point me to the appropriate forum. Wed, 17 Aug 2022 05:19:40 GMT http://community.qnx.com/sf/go/post121896 Preethi Selvaraju 2022-08-17T05:19:40Z post121895: Re: Malloc Check Failed: lib/c/alloc/dlist.c:748 http://community.qnx.com/sf/go/post121895 The most likely explanation is that somewhere in your code you are writing outside the bounds of the array (or some other way in which the heap meta-data gets overwritten). The QNX heap code checks for such corruption, other systems may not. The best way to find out what is going on is to use a memory analysis tool such as Valgrind. --Elad Tue, 16 Aug 2022 12:58:58 GMT http://community.qnx.com/sf/go/post121895 Elad Lahav 2022-08-16T12:58:58Z post121894: Malloc Check Failed: lib/c/alloc/dlist.c:748 http://community.qnx.com/sf/go/post121894 We are allocating memory as follows in our CPP application: ptr = new T[numElements]; if(ptr == NULL) //assert. Where T is a typename template, numElements is &gt; 0 and also NULL check for ptr after allocation is properly handled. Deallocation: if(ptr != NULL) { delete[] ptr; ptr = NULL; } We have a structure with more than 15 members of different types. During allocation total of 10793022 bytes were allocated. When de-allocating the members one by one in the same order which were allocated, our application is crashing with the below error: Malloc Check Failed: :/builds/workspace/QOS221-SDP/build_aarch64/lib/c/alloc/dlist.c:748 Abort (core dumped) Core dump is not useful. Double-checked that we are not deallocating any memory that is not allocated and also the ptr also valid The same application working without any issues in Windows platform as well as another Embedded platform. Only in QNX its crashing. We would like to know exactly in which scenarios "Malloc check Failed" message will be thrown by dlist.c. It would be more helpful if you share this information, so that we could check the possible causes in our application. Please let me know if any other additional information is needed, Tue, 16 Aug 2022 12:52:32 GMT http://community.qnx.com/sf/go/post121894 Preethi Selvaraju 2022-08-16T12:52:32Z post121892: QNX 7.1 Neutrino screen output RGB value range is limited to [0x10~0xEB] http://community.qnx.com/sf/go/post121892 I connected QNX 7.1 HDMI output to an Xilinx video capture device and found that the pixel RGB value range is limited to [0x10~0xEB] but not [0x00~0xFF]. For example, when I display red (0xFF0000) color on QNX, we got color (0xEB1010) on video capture device, and when we display black (0x000000) color, we got color (0x101010). --------------------------------------- Some pixels value mapping Pixel on QNX Pixel on video capture ------------ ---------------------- 00 10 01 10 02 11 03 12 04 13 05 14 06 15 07 16 08 16 09 17 0A 18 0B 19 0C 1A 0D 1B 0E 1C FD E9 FE EA FF EB However, when we connected ubuntu/Window10 HDMI output to the same video capture device, everything works fine. When I used screenshot utility to capture the display on QNX 7.1, we got the correct color(the RGB range is [0x00~0xFF]). ----------------------------------------- The graphics.conf is: begin khronos begin egl display 1 egl-dlls = libglapi-mesa.so libEGL-mesa.so glesv1-dlls = libglapi-mesa.so libGLESv1_CM-mesa.so glesv2-dlls = libglapi-mesa.so libGLESv2-mesa.so gpu-dlls = gpu_drm.so end egl display begin wfd device 1 wfd-dlls = libwfdcfg-intel-generic.so libWFDintel-drm.so # Run "drm-probe-displays" to list the available displays and pipelines, # and "use $GRAPHICS_ROOT/libWFDintel-drm.so" for more information on # these driver-specific settings. # Here is displays map for DH370: # display 1: DisplayPort (DP-1) # display 2: DisplayPort (DP-2) # display 3: HDMI-A (HDMI-A-1) # display 4: DisplayPort (DP-3), default # display 5: HDMI-A (HDMI-A-2) # display 6: DisplayPort (DP-4) # display 7: HDMI-A (HDMI-A-3) # Pipeline IDs 1 to 9 are used for DRM CRTCs. One should be assigned # to each display that will be used. pipeline1-display = 1 pipeline2-display = 2 pipeline3-display = 4 # this is the display id which identified by drm-probe-display, the only hdmi output on DH370 end wfd device end khronos begin winmgr begin globals default-display = 4 # the default display id, 4 is the only one hdmi output on DH370 # Adjust the stack size of Screen's resmgr threads. The default size # is insufficient for blitters/compositors using Mesa (e.g., gles2blt). stack-size = 65536 # in units of bytes blit-config = inteldrm alloc-config = inteldrm requests-logsize = 65536 blits-logsize = 4096 end globals begin display 1 video-mode = 1920 x 1080 @ 60 # Adjust the stack size of Screen's composition thread; required when the # display's framebuffer uses Mesa (e.g., "usage = gles2"), as noted above. stack-size = 65536 # in units of bytes end display begin display 2 video-mode = 1920 x 1080 @ 60 # Adjust the stack size of Screen's composition thread; required when the # display's framebuffer uses Mesa (e.g., "usage = gles2"), as noted above. stack-size = 65536 # in units of bytes end display begin display 4 video-mode = 1920 x 1080 @ 60 # Adjust the stack size of Screen's composition thread; required when the # display's framebuffer uses Mesa (e.g., "usage = gles2"), as noted above. stack-size = 65536 # in units of bytes end display begin class framebuffer-1 display = 1 pipeline = 1 format = rgba8888 usage = inteldrm end class begin class framebuffer-2 display = 2 pipeline = 2 format = rgba8888 usage = inteldrm end class begin class framebuffer-3 display = 4 pipeline = 3 format = rgba8888 usage = inteldrm end class end winmgr -------------------------------------------- /root# cat /dev/screen/0/win-0 win-0/ctx-0/0(screen) ================================================= id = __scrn-win-0-00000001-5195d97ae2ecf94a03fd3cd49586efca id string = framebuffer-3 permissions = rwxrwx--x--x--x--x--x--- acl = (empty) locks = (none) display = dpy-4 status = CREATED type = SCREEN_ROOT_WINDOW autonomous = 1 references = 1 window manager = (none) window manager string = pipeline id = 3 pipeline bound = false parent = (none) children = (none) window above = (none) window below = (none) alternate window = (none) root window = (none) reclip = 0 updates = 0 valid = BUFFER_SIZE PIPELINE class = framebuffer-3 flags = WIN_FLAG_VISIBLE WIN_FLAG_FLOATING WIN_FLAG_FRAMEBUFFER buffer size = 1920x1080 format = SCREEN_FORMAT_RGBA8888 color space = SCREEN_COLOR_SPACE_UNCORRECTED usage = SCREEN_USAGE_DISPLAY SCREEN_USAGE_NATIVE order = 0 swap interval = 1 default = (none) sessions = (none) streams = (none) holes = (none) regions = (none) flip = 0 mirror = 0 scale mode = (default) source viewport = (0,0 1920x1080) source clip rectangle = (0,0;1920,1080) clipped source viewport = (0,0;1920,1080 1920x1080) destination rectangle = (0,0 1920x1080) destination clip rectangle = (0,0;1920,1080) clipped destination rectangle = (0,0;1920,1080 1920x1080) rotation = 0 clipped rotation = 0 transform = [[1 0 0],[0 1 0],[0 0 1]] transparency = SCREEN_TRANSPARENCY_SOURCE_OVER color = 0xffcfcfcf global alpha = 255 -&gt; 255 brightness = 0 -&gt; 0 contrast = 1 -&gt; 1 hue = 0 -&gt; 0 saturation = 0 -&gt; 0 scale quality = 0 idle mode = normal protection requested = (none) protection enabled = (none) cbabc mode = SCREEN_CBABC_MODE_NONE metrics.dropped = 0 metrics.visible.partial = 0 metrics.visible.full = 0 metrics.updates.count = 0 metrics.updates.pixels = 0 pixels metrics.updates.reads = 0 bytes How can I solve the problem? Thanks. Thu, 11 Aug 2022 08:00:35 GMT http://community.qnx.com/sf/go/post121892 SHENGFA ZHANG 2022-08-11T08:00:35Z post121872: Re: Build failed on QNX7.1 x86_64 with -Vgcc/8.3.0,gcc_ntox86_64 -Y_gpp http://community.qnx.com/sf/go/post121872 Thanks! I found #define _C2 1 in yvals.h line 418 and don't know whoelse use the macro _C2. So I replace _C2 with __C2 in bits/stl_multimap.h and bits/stl_map.h to solve the problem. Thu, 14 Jul 2022 01:51:55 GMT http://community.qnx.com/sf/go/post121872 SHENGFA ZHANG 2022-07-14T01:51:55Z post121871: Re: Build failed on QNX7.1 x86_64 with -Vgcc/8.3.0,gcc_ntox86_64 -Y_gpp http://community.qnx.com/sf/go/post121871 That's not a bug in libc - a system header can declare a symbol that starts in an underscore and a capital letter. The fact that it collides with a symbol defined in a GNU header is not really our problem. Nevertheless it is something we can solve by removing a symbol that's no longer used. --Elad Wed, 13 Jul 2022 15:04:49 GMT http://community.qnx.com/sf/go/post121871 Elad Lahav 2022-07-13T15:04:49Z post121870: Re: Build failed on QNX7.1 x86_64 with -Vgcc/8.3.0,gcc_ntox86_64 -Y_gpp http://community.qnx.com/sf/go/post121870 This is a long-standing bug in the QNX libc. I can't seem to be able to find the JIRA trail, but the workaround is to remove the #define of _C2 from &lt;sys/target_nto.h&gt; since it's not used anywhere but causes C++ compilations to break when using the GNU libstdc++ library. Wed, 13 Jul 2022 14:51:21 GMT http://community.qnx.com/sf/go/post121870 Stephen Webb 2022-07-13T14:51:21Z post121869: Build failed on QNX7.1 x86_64 with -Vgcc/8.3.0,gcc_ntox86_64 -Y_gpp http://community.qnx.com/sf/go/post121869 When build the following C++ code: // test.cpp #include &lt;map&gt; #include &lt;string&gt; #include &lt;iostream&gt; using namespace std; int main() { map&lt;int, int&gt; m = { {0, 0}, {1, 1} }; cout &lt;&lt; "Hello, stdc++17\n"; return 0; } 1. Build with C++17 and LLVM C++ library, work fine /root/qnx710/host/linux/x86_64/usr/bin/q++ -Vgcc/8.3.0,gcc_ntox86_64 -Y_cxx -lang-c++ -std=gnu++17 -o test test.cpp 2. Build with C++17 and GNU C++ library: can't work /root/qnx710/host/linux/x86_64/usr/bin/q++ -Vgcc/8.3.0,gcc_ntox86_64 -Y_gpp -lang-c++ -std=gnu++17 -o test test.cpp In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:638:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:638:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:61, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:640:34: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::map' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:640:34: note: expected a type, got '1' In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:646:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:646:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:61, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:648:34: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::map' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:648:34: note: expected a type, got '1' In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:651:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:651:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:61, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:653:39: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::multimap' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:653:39: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:653:2: error: 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)' cannot be overloaded with 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:640:2: note: previous declaration 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^~~~~ In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:659:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:659:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:61, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:661:39: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::multimap' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:661:39: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:661:2: error: 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;&amp;)' cannot be overloaded with 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;&amp;)' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:648:2: note: previous declaration 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;&amp;)' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h: In member function 'void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)': /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:642:56: error: type/value mismatch at argument 2 in template parameter list for 'template&lt;class _Tree1, class _Cmp2&gt; class std::_Rb_tree_merge_helper' using _Merge_helper = _Rb_tree_merge_helper&lt;map, _C2&gt;; ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:642:56: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:643:25: error: '_Merge_helper' has not been declared _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); ^~~~~~~~~~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h: In member function 'void std::map&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)': /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:655:56: error: type/value mismatch at argument 2 in template parameter list for 'template&lt;class _Tree1, class _Cmp2&gt; class std::_Rb_tree_merge_helper' using _Merge_helper = _Rb_tree_merge_helper&lt;map, _C2&gt;; ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:655:56: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_map.h:656:25: error: '_Merge_helper' has not been declared _M_t._M_merge_unique(_Merge_helper::_S_get_tree(__source)); ^~~~~~~~~~~~~ In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h: At global scope: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:654:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:654:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:62, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:656:39: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::multimap' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:656:39: note: expected a type, got '1' In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:662:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:662:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:62, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:664:39: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::multimap' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:664:39: note: expected a type, got '1' In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:667:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:667:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:62, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:669:34: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::map' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:669:34: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:669:2: error: 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)' cannot be overloaded with 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:656:2: note: previous declaration 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp; __source) ^~~~~ In file included from /root/qnx710/target/qnx7/usr/include/stddef.h:23, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/cxxabi_init_exception.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/exception_ptr.h:38, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/exception:143, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/new:40, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/ext/new_allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/x86_64-pc-nto-qnx7.1.0/bits/c++allocator.h:33, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/allocator.h:46, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_tree.h:64, from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:60, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:675:25: error: expected nested-name-specifier before numeric constant template&lt;typename _C2&gt; ^~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:675:25: error: expected '&gt;' before numeric constant In file included from /root/qnx710/target/qnx7/usr/include/c++/8.3.0/map:62, from test.cpp:1: /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:677:34: error: type/value mismatch at argument 3 in template parameter list for 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; class std::map' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:677:34: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:677:2: error: 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;&amp;)' cannot be overloaded with 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;&amp;)' merge(map&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:664:2: note: previous declaration 'template&lt;class _Key, class _Tp, class _Compare, class _Alloc&gt; template&lt;&lt;typeprefixerror&gt;&lt;anonymous&gt; &gt; void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;&amp;)' merge(multimap&lt;_Key, _Tp, _C2, _Alloc&gt;&amp;&amp; __source) ^~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h: In member function 'void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)': /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:658:61: error: type/value mismatch at argument 2 in template parameter list for 'template&lt;class _Tree1, class _Cmp2&gt; class std::_Rb_tree_merge_helper' using _Merge_helper = _Rb_tree_merge_helper&lt;multimap, _C2&gt;; ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:658:61: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:659:24: error: '_Merge_helper' has not been declared _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); ^~~~~~~~~~~~~ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h: In member function 'void std::multimap&lt;_Key, _Tp, _Compare, _Alloc&gt;::merge(int&amp;)': /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:671:61: error: type/value mismatch at argument 2 in template parameter list for 'template&lt;class _Tree1, class _Cmp2&gt; class std::_Rb_tree_merge_helper' using _Merge_helper = _Rb_tree_merge_helper&lt;multimap, _C2&gt;; ^ /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:671:61: note: expected a type, got '1' /root/qnx710/target/qnx7/usr/include/c++/8.3.0/bits/stl_multimap.h:672:24: error: '_Merge_helper' has not been declared _M_t._M_merge_equal(_Merge_helper::_S_get_tree(__source)); Wed, 13 Jul 2022 14:32:05 GMT http://community.qnx.com/sf/go/post121869 SHENGFA ZHANG 2022-07-13T14:32:05Z post121850: Re: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121850 Many thanks, I'll see how far we can get on 6.5. Martin Fri, 08 Jul 2022 20:15:34 GMT http://community.qnx.com/sf/go/post121850 Martin Gagnon 2022-07-08T20:15:34Z post121849: Re: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121849 Er, to clarify -- that's the configure and make for ffmpeg. -Will Fri, 08 Jul 2022 20:03:54 GMT http://community.qnx.com/sf/go/post121849 Will Miles 2022-07-08T20:03:54Z post121848: Re: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121848 Hi Martin, ffmpeg is an open source project; you'll probably need to compile it for your target platform. For our QNX 6.6-based system we found there were no additional patches required to cross compile for QNX and get it working for our application - it built "out of the box" so to speak with the right configure options. That said: if you need https support, you may also need to port gnutls, which did require a little more porting effort. Here is a quick copy-and-paste of the configure and make lines from our Linux-based cross build system: CC=qcc CXX=QCC CFLAGS="$CFLAGS -D__EXT" CARCH="ntox86" export AR="${CARCH}-ar" export AS="${CARCH}-as" export ELFEDIT="${CARCH}-elfedit" export LD="${CARCH}-ld" export NM="${CARCH}-nm" export OBJDUMP="${CARCH}-objdump" export OBJCOPY="${CARCH}-objcopy" export RANLIB="${CARCH}-ranlib" export SIZE="${CARCH}-size" export STRINGS="${CARCH}-strings" export STRIP="${CARCH}-strip" ./configure \ --prefix='/usr' \ --disable-debug \ --disable-static \ --disable-stripping \ --enable-gmp \ --enable-gnutls \ --enable-gpl \ --enable-shared \ --enable-version3 \ --enable-cross-compile \ --cc=${CC} \ --cxx=${CXX} \ --ld=qcc \ --ranlib=${RANLIB} \ --strip=${STRIP} \ --nm=${NM} \ --ar=${AR} \ --as=${AS} \ --target-os=qnx \ make -j10 ---- Hope this helps some, -Will Fri, 08 Jul 2022 20:03:03 GMT http://community.qnx.com/sf/go/post121848 Will Miles 2022-07-08T20:03:03Z post121847: Re: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121847 Thank you Will, I'll have a look. Do you know of an ffmpeg implementation for QNX 6.5? Thank you, Martin Fri, 08 Jul 2022 18:29:43 GMT http://community.qnx.com/sf/go/post121847 Martin Gagnon 2022-07-08T18:29:43Z post121845: Re: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121845 Oddly enough I was just poking an ONVIF recorder earlier this week ... ONVIF cameras use RTSP for sending the actual image data. If you can pin down the camera model, you may not need to bother with making the ONVIF service calls; all you need is the RTSP URL to pass to your RTSP client (eg. ffmpeg). Stack overflow has a good breakdown of how to use command-line ffmpeg to capture still frames from an RTSP stream to an image file: https://stackoverflow.com/questions/25360470/ffmpeg-capture-current-frame-and-overwrite-the-image-output-file If you need to support *any* ONVIF camera, you will have to implement the RTSP stream URL lookup. If you have to *detect* the ONVIF camera, it gets a bit tougher -- ONVIF cameras use the WS-Discovery protocol, for which the open source implementations all seem to be built on fairly deep dependency stacks that would have to be ported. I had success with python-ws-discovery as we've already built a Python 3 port for our QNX 6 platform. Hope this is of some help, -Will Fri, 08 Jul 2022 17:31:09 GMT http://community.qnx.com/sf/go/post121845 Will Miles 2022-07-08T17:31:09Z post121841: Re: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121841 Thank you Mario, that's valuable. I'll definitely have a look. Fri, 08 Jul 2022 12:54:29 GMT http://community.qnx.com/sf/go/post121841 Martin Gagnon 2022-07-08T12:54:29Z post121839: Re: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121839 Hi, sometime ago I've have a similar request and I've found some doc on github https://github.com/onvif/specs/ Initially I started to write from scatch an applicazion just to controls only PTZ and I've find a C/C++ library for Windows/Linux that may help in some way here https://sourceforge.net/projects/libonvif/. Unfortunatly project has been aborted, so I've not completed the work :-) I'm sorry I can't be of much more help M. Fri, 08 Jul 2022 06:31:03 GMT http://community.qnx.com/sf/go/post121839 mario sangalli 2022-07-08T06:31:03Z post121838: Onvif support for QNX 6.5? http://community.qnx.com/sf/go/post121838 I see there's some support for the Onvif protocol in the Sensor Framework of QNX 7 (https://www.qnx.com/developers/docs/7.1/#com.qnx.doc.adas.system_services/topic/sensor_example_onvif.html) A client of ours needs to get a screenshot from a Profile S camera from a computer running QNX 6.5.0SP1. Anyone knows if this is achievable, in one way or another? Thank you Thu, 07 Jul 2022 21:06:06 GMT http://community.qnx.com/sf/go/post121838 Martin Gagnon 2022-07-07T21:06:06Z post121824: Re: Macros in QNX libraries break C++17 GCC headers http://community.qnx.com/sf/go/post121824 Note, however, that this problem only occurs with the non-default C++ headers. Is there any reason you are not using the default ones? --Elad Tue, 14 Jun 2022 12:37:50 GMT http://community.qnx.com/sf/go/post121824 Elad Lahav 2022-06-14T12:37:50Z post121821: Re: Macros in QNX libraries break C++17 GCC headers http://community.qnx.com/sf/go/post121821 As far as I can tell this definition is a left over from a previous math library and can now be removed. --Elad Mon, 13 Jun 2022 20:39:59 GMT http://community.qnx.com/sf/go/post121821 Elad Lahav 2022-06-13T20:39:59Z post121814: Macros in QNX libraries break C++17 GCC headers http://community.qnx.com/sf/go/post121814 Including certain QNX libraries causes the macro "_C2" to get defined to 1. _C2 is, however, used as a token string in the GCC 8.3 C++17 libraries in numerous places. Going into target/qnx7/usr/include and running "grep "\b_C2\b" -R -I" makes the problem rather obvious. Thu, 09 Jun 2022 04:23:23 GMT http://community.qnx.com/sf/go/post121814 Oleksiy Pikalo 2022-06-09T04:23:23Z post121805: Re: mq_timedreceive_monotonic changed return value after applying 4844 patch http://community.qnx.com/sf/go/post121805 The previous return was EINTR and after applying the patch the return is EAGAIN, timeout is set also. &gt; I have integrated QNX patch 4844 into our QNX 650SP1 and I am facing a change &gt; in behaviour &gt; of the mq library call "mq_timedreceive_monotonic", can you please help me to &gt; understand the change history of the mq library ? &gt; Its important also to say that the queue was created without setting the non &gt; blocking flag. Sat, 21 May 2022 21:33:08 GMT http://community.qnx.com/sf/go/post121805 omar bunni 2022-05-21T21:33:08Z post121804: mq_timedreceive_monotonic changed return value after applying 4844 patch http://community.qnx.com/sf/go/post121804 I have integrated QNX patch 4844 into our QNX 650SP1 and I am facing a change in behaviour of the mq library call "mq_timedreceive_monotonic", can you please help me to understand the change history of the mq library ? Its important also to say that the queue was created without setting the non blocking flag. Mon, 16 May 2022 05:58:16 GMT http://community.qnx.com/sf/go/post121804 omar bunni 2022-05-16T05:58:16Z post121803: Re: Dynamic Memory allocation of Global vs Local http://community.qnx.com/sf/go/post121803 Note: the issue is observed when migrating from QNX6.5 PS1 to QNX7.1 Wed, 11 May 2022 10:43:38 GMT http://community.qnx.com/sf/go/post121803 Sheran Vaz Singarayappa(deleted) 2022-05-11T10:43:38Z post121802: Dynamic Memory allocation of Global vs Local http://community.qnx.com/sf/go/post121802 Trying to create a VTK object using below code snippet vtkSmartPointer&lt;vtkCylinderSource&gt; test=vtkSmartPointer&lt;vtkCylinderSource&gt;::New(); test-&gt;SetHeight(rodLen); test-&gt;SetCenter(0,0,0); test-&gt;SetRadius(rodRadius); test-&gt;Update(); &lt;----- It crashes here at startup The above code snippet works fine when I call it in main(). The same crashes at call to Update() when I put it in the constructor of a globally initialized object. Is it due to memory limit changes in QNX 7.1? what is your recommendation? Wed, 11 May 2022 10:41:54 GMT http://community.qnx.com/sf/go/post121802 Sheran Vaz Singarayappa(deleted) 2022-05-11T10:41:54Z post121793: Re: QEMU virtio-net networking issue (QNX 7 generic x86_64 image) http://community.qnx.com/sf/go/post121793 &gt; Hello all, &gt; &gt; I am running QNX 7 on latest mainline QEMU, and after some fiddling around I &gt; got it to work. &gt; &gt; I encountered a few issues with networking, the most important one being a &gt; regression with virtio-net. &gt; &gt; I have investigated the issue and reported it to QEMU in this thread. &gt; I am currently disabling ioeventfd as a workaround, and this is making my &gt; networking stable, including host TCP and UDP forwarding to the guest. &gt; &gt; https://www.mail-archive.com/qemu-devel@nongnu.org/msg561163.html &gt; &gt; Maybe something is going wrong between the QNX guest driver and the QEMU &gt; device? &gt; &gt; ----- &gt; &gt; A second minor issue is that the generic x86 build file does not contain a &gt; section for virtio-net, &gt; nor any PCI-IDs that seem to match emulated devices in QEMU. &gt; &gt; After creating that section, and with the regression fix applied to QEMU, &gt; everything works fine. &gt; I also added INTEL_8086_100e=8086/100e as a PCI-ID for the e1000 driver, which &gt; QEMU exposes. &gt; &gt; Note that host port forwarding only seems to work with virtio-net (and only &gt; after patching QEMU to disable ioeventfd). &gt; &gt; Maybe it would be helpful to add something like the following to the generic &gt; x86_64 build file? &gt; &gt; My current change is: &gt; &gt; --- x86_64-generic.build.save 2018-07-31 15:24:03.277092184 +0200 &gt; +++ x86_64-generic.build 2018-09-19 14:25:15.935782840 +0200 &gt; @@ -215,6 +215,7 @@ &gt; libsocket.so &gt; devnp-e1000.so &gt; devnp-rtl8169.so &gt; +devnp-virtio.so &gt; libcrypto.so &gt; &gt; &gt; @@ -231,6 +232,7 @@ &gt; STD_NULL=/dev/null &gt; &gt; # supported list for the network devices &gt; +INTEL_8086_100e=8086/100e &gt; INTEL_8086_100f=8086/100f &gt; INTEL_8086_1559=8086/1559 &gt; INTEL_8086_1570=8086/1570 &gt; @@ -240,6 +242,8 @@ &gt; INTEL_8086_1503=8086/1503 &gt; INTEL_8086_1f41=8086/1f41 &gt; RTL_RTL8169=10ec/8168 &gt; +VIRTIO_NET_OLD=1af4/1000 &gt; +VIRTIO_NET_NEW=1af4/1041 &gt; &gt; # uncomment the line below if any driver use the old PCI API's &gt; export PCI_BKWD_COMPAT_MODULE=/lib/dll/pci/pci_bkwd_compat.so &gt; @@ -252,6 +256,7 @@ &gt; &gt; #check if there is the Intel E1000 Ethernet device in the list &gt; if grep $INTEL_8086_100f $PCI_DEVICE_LIST &gt; $STD_NULL || \ &gt; + grep $INTEL_8086_100e $PCI_DEVICE_LIST &gt; $STD_NULL || \ &gt; grep $INTEL_8086_1559 $PCI_DEVICE_LIST &gt; $STD_NULL || \ &gt; grep $INTEL_8086_1570 $PCI_DEVICE_LIST &gt; $STD_NULL || \ &gt; grep $INTEL_8086_15a3 $PCI_DEVICE_LIST &gt; $STD_NULL || \ &gt; @@ -269,10 +274,18 @@ &gt; elif grep $RTL_RTL8169 $PCI_DEVICE_LIST &gt; $STD_NULL &gt; then &gt; echo "Starting RTL8169 Ethernet driver ..." &gt; - io-pkt-v6-hc -d rtl8169 &gt; + io-pkt-v4-hc -d rtl8169 &gt; if_up -r 10 -p rt0 &gt; ifconfig rt0 up &gt; &gt; +elif grep $VIRTIO_NET_NEW $PCI_DEVICE_LIST &gt; $STD_NULL || \ &gt; + grep $VIRTIO_NET_OLD $PCI_DEVICE_LIST &gt; $STD_NULL &gt; +then &gt; + echo "Starting virtio-net driver ..." &gt; + io-pkt-v6-hc -d virtio &gt; + if_up -r 10 -p vt0 &gt; + ifconfig vt0 up &gt; + &gt; else &gt; echo "No Ethernet device has been detected" &gt; exit 0; &gt; &gt; &gt; &gt; Fri, 29 Apr 2022 05:54:56 GMT http://community.qnx.com/sf/go/post121793 asyr aubsd(deleted) 2022-04-29T05:54:56Z post121778: Re: pidin irq reporting strange IRQ number http://community.qnx.com/sf/go/post121778 &gt; It is possible that your Linux distro behaves the same way, e.g. the kernel &gt; does the demuxing for you. More likely than not, the logical vector numbers &gt; are different then. However it is equally possible that in your Linux you must &gt; attach to the cascade vector and do the demuxing yourself. &gt; &gt; Regards, &gt; Al I was quite happy to not have to endure the horror of trying to figure out how to do this with Linux! :-) After 35 years using QNX I was reticent about having to go there! Once I was able to figure out which IRQ I needed to map to it was plain sailing and I ended up back in my comfort zone. Geoff Sat, 02 Apr 2022 04:03:21 GMT http://community.qnx.com/sf/go/post121778 Geoff Roberts 2022-04-02T04:03:21Z post121777: Re: pidin irq reporting strange IRQ number http://community.qnx.com/sf/go/post121777 Thanks to the pointer Michael gave me in regards to the cascading interrupts, and reference to init_intrinfo.c, I was able to figure it out. It turned out that I had to attach to IRQ 296 - which was a far cry from 48! :-) It's all working fine now. So thank you Michael - you have saved me much grief! Geoff. Sat, 02 Apr 2022 03:58:30 GMT http://community.qnx.com/sf/go/post121777 Geoff Roberts 2022-04-02T03:58:30Z post121776: Re: pidin irq reporting strange IRQ number http://community.qnx.com/sf/go/post121776 It is possible that your Linux distro behaves the same way, e.g. the kernel does the demuxing for you. More likely than not, the logical vector numbers are different then. However it is equally possible that in your Linux you must attach to the cascade vector and do the demuxing yourself. Regards, Al Fri, 01 Apr 2022 19:00:51 GMT http://community.qnx.com/sf/go/post121776 Albrecht Uhlmann 2022-04-01T19:00:51Z post121775: Re: pidin irq reporting strange IRQ number http://community.qnx.com/sf/go/post121775 &gt; On that platform, IRQ 48 is what's known as a cascade interrupt. A single &gt; interrupt which represents several others which are demuxed by specific &gt; callouts. You cannot attach directly to it, instead you attach to one of the &gt; demuxed interrupt vectors (which start at 200 for this particular cascade). &gt; See init_intrinfo.c in your BSP Thanks for that! I'll take a look at that file (init_intrinfo.c) over the weekend (it's early Sat morning here) and with the Xilinx FPGA guru who is working with me (and knows nothing about QNX) try and get the GPIO interrupt working on Monday. Am I correct however in assuming that even though InterruptAttach() returns a valid ID for IRQ 48 there is actually more work to be done to get it working? If so, is it likely to be work on the QNX side or FPGA (PL) side? Or both? It's the first time either of us have had to get this particular GPIO interrupt working with QNX but I gather from what you say Petalinux would behave the same way. Is this correct? If so, and we can get that working, it should therefore be relatively straight forward to get it working with QNX. Geoff. Fri, 01 Apr 2022 15:54:24 GMT http://community.qnx.com/sf/go/post121775 Geoff Roberts 2022-04-01T15:54:24Z post121774: Re: pidin irq reporting strange IRQ number http://community.qnx.com/sf/go/post121774 On that platform, IRQ 48 is what's known as a cascade interrupt. A single interrupt which represents several others which are demuxed by specific callouts. You cannot attach directly to it, instead you attach to one of the demuxed interrupt vectors (which start at 200 for this particular cascade). See init_intrinfo.c in your BSP Fri, 01 Apr 2022 11:52:33 GMT http://community.qnx.com/sf/go/post121774 Michael Kisel 2022-04-01T11:52:33Z post121773: pidin irq reporting strange IRQ number http://community.qnx.com/sf/go/post121773 Hello. I am working with the Xilinx ZCU104 using the most recent QNX 7.1 BSP. We have set up the GPIO to read on one of the PMOD's a 3.3v PPS from a GPS unit. We know that the pulses are arriving as we can see them when we poll the appropriate input register bit. We have enabled the interrupt for that bit. The IRQ I need to attach to is 48 (0x30). Calls to InterruptAttach() or InterruptAttachEvent() return a valid ID (13 in my case) and for all intents and purposes everything is fine. Except the handlers don't catch any interrupt. A pidin irq shows that the interrupt registered is 200 (0xc8). Not 48. How can this be? What might be happening to cause this? All the other IRQ's are fine and properly reported by pidin (like those used by the I2C and other drivers). Only 48 causes this behaviour. I'm out of ideas as to how do deal with this. The FPGA (a Xilinx specialist but from the Petalinux world) is also scratching his head. We're not sure if it's something we have done on the PL (FPGA) side or not. What could we do there to provoke QNX into reporting a different IRQ? Thanks, Geoff. Thu, 31 Mar 2022 22:58:15 GMT http://community.qnx.com/sf/go/post121773 Geoff Roberts 2022-03-31T22:58:15Z post121746: Re: slog2info -w skips processes that are not running http://community.qnx.com/sf/go/post121746 This behavior is not clear from the documentation. The option states that the -w option "prints all available older logs". Skipping inactive processes means that all older logs are not printed. More importantly, this makes review of all log data complicated. For test systems, we run slog2info with the -w option at startup. The intent is to see everything that happened during boot and then keep printing everything that comes later. With early processes getting skipped, it is not clear how to achieve this without printing a lot of information twice (aka run slog2info then again with the -w option) or possibly missing some data (slog2 info, then with the -c option, then with the -w option. Fri, 04 Mar 2022 16:08:00 GMT http://community.qnx.com/sf/go/post121746 david lavacek 2022-03-04T16:08:00Z post121745: Re: slog2info -w skips processes that are not running http://community.qnx.com/sf/go/post121745 The behavior that you describe is consistent with the original intent of the -w/-W (live log streaming feature). slog2info [-w/-W] queries slogger2 to find out which buffer sets are still live. Whereas slog2info alone performs a static log dump of everything under /dev/shmem/slogger2, which also includes (for a certain time) buffer sets from terminated processes. Fri, 04 Mar 2022 14:27:36 GMT http://community.qnx.com/sf/go/post121745 Jack Nowinski 2022-03-04T14:27:36Z post121741: Re: compile ssh with QNX7.0 utilities http://community.qnx.com/sf/go/post121741 I use 7.1 and found endian.h in two places: $QNX_BASE/target/qnx7/usr/include/io-pkt/machine/endian.h $QNX_BASE/target/qnx7/usr/include/qh/endian.h I presume it's in the same spot under QNX 7.0 Perhaps you need to add the "machine" directory to your $INCLUDE path? (-I argument to qcc) Fri, 25 Feb 2022 02:16:59 GMT http://community.qnx.com/sf/go/post121741 Geoff Roberts 2022-02-25T02:16:59Z post121740: compile ssh with QNX7.0 utilities http://community.qnx.com/sf/go/post121740 Did anyone successfully build the ssh with QNX7.0 utilities? I want to apply patch over ssh. but met below error: qcc -V gcc_ntoaarch64le -Wall -Wextra -Wpointer-arith -Wuninitialized -Wsign-compare -Wformat-security -Wsizeof-pointer-memaccess -Wno-pointer-sign -Wno-unused-parameter -Wno-unused-result -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -ftrapv -fno-builtin-memset -fstack-protector-strong -I. -I. -DSSHDIR=\"/usr/etc\" -D_PATH_SSH_PROGRAM=\"/usr/bin/ssh\" -D_PATH_SSH_ASKPASS_DEFAULT=\"/usr/libexec/ssh-askpass\" -D_PATH_SFTP_SERVER=\"/usr/libexec/sftp-server\" -D_PATH_SSH_KEY_SIGN=\"/usr/libexec/ssh-keysign\" -D_PATH_SSH_PKCS11_HELPER=\"/usr/libexec/ssh-pkcs11-helper\" -D_PATH_SSH_SK_HELPER=\"/usr/libexec/ssh-sk-helper\" -D_PATH_SSH_PIDDIR=\"/var/run\" -D_PATH_PRIVSEP_CHROOT_DIR=\"/var/empty\" -DHAVE_CONFIG_H -c binn.c -o binn.o binn.c:45:20: fatal error: endian.h: No such file or directory compilation terminated. cc: /home/zchen/qnx700/host/linux/x86_64/usr/lib/gcc/aarch64-unknown-nto-qnx7.0.0/5.4.0/cc1 error 1 Makefile:198: recipe for target 'binn.o' failed make: *** [binn.o] Error 1 Fri, 25 Feb 2022 01:59:21 GMT http://community.qnx.com/sf/go/post121740 zhijun chen 2022-02-25T01:59:21Z post121739: Re: Does QNX7.0 utility support rsync tool? http://community.qnx.com/sf/go/post121739 Hi will, that works for me. thank you very much! Regards, Zhijun Fri, 25 Feb 2022 01:56:15 GMT http://community.qnx.com/sf/go/post121739 zhijun chen 2022-02-25T01:56:15Z post121738: slog2info -w skips processes that are not running http://community.qnx.com/sf/go/post121738 slog2info prints information from the slogger buffer. By default, it prints only infomration from the buffer. Using the "-w" option, it should print information from the buffer and then keep printing new information that is slogged afterwards. It has been observed that there is another difference in behiavior with the "-w" option. Processes which are not running at the time "slog2info -w" is called are skipped. Even though those processes are in the slogger buffer (having run to completion previously), even their history is ignored. example sequence: 1. start system 2. run a process X which runs, slogs information, then terminates. 3. run "slog2info". Observe the slogs of process X along with everything else 4. run "slog2info -w". Observe that process X slogs do not show up. Testing was done with QNX 7.0. Slog2info build info: QNX_BUILDID=(GNU)9d193bf4a577498ee3cd4eb7fe291a8c NAME=slog2info DESCRIPTION=SLOGGER2 system service DATE=2017/01/19-14:49:37-EST STATE=stable HOST=sdp700-node1 USER=builder VERSION=7.0.0 TAGID=700-SDP_3_build-aarch64-8 Thu, 24 Feb 2022 23:25:32 GMT http://community.qnx.com/sf/go/post121738 david lavacek 2022-02-24T23:25:32Z post121733: Re: Does QNX7.0 utility support rsync tool? http://community.qnx.com/sf/go/post121733 Hi Zhijun, Out of the box rsync supports operation over ssh, so all that's required from the destination is a local install of rsync and a working sshd. A call of 'rsync [your options here] src user@destination_host:destination_folder' will connect via ssh and launch rsync on the remote end when needed. Instructions for setting up sshd are on the "sshd" page in the QNX Utilities Reference. -Will Mon, 21 Feb 2022 14:31:05 GMT http://community.qnx.com/sf/go/post121733 Will Miles 2022-02-21T14:31:05Z post121732: do we happen to have an example for libtracelog.so.1? http://community.qnx.com/sf/go/post121732 I just found a header file tracelog.h, don't know logic.do we happen to have an example for libtracelog.so.1? yes, I can directly use traceevent and InterruptHookTrace. but some one in the backaground is using it, so InterruptHookTrace would be failed. but tracelogger is working. for readelf, I found it depended on ibtracelog.so.1, not directly playing with InterruptHookTrace Mon, 21 Feb 2022 02:49:30 GMT http://community.qnx.com/sf/go/post121732 Gavin Han(deleted) 2022-02-21T02:49:30Z post121731: Re: Does QNX7.0 utility support rsync tool? http://community.qnx.com/sf/go/post121731 Hi Will, Thanks for your information. right now the rsync can be executed on QNX7.0 successfully. one further question: if I want the QNX to be the rsync server, how do I configure it? Thanks, Zhijun Fri, 18 Feb 2022 18:22:06 GMT http://community.qnx.com/sf/go/post121731 zhijun chen 2022-02-18T18:22:06Z post121730: Intel® Time Coordinated Computing ITCC - Tiger Lake Architecture http://community.qnx.com/sf/go/post121730 Hi everyone, I'm working on a project with Intel 11th gen Core processors and I have multiple questions. First of all there are no specific BSPs for this architecture yet and I have to use generic BSP. Apparently in the specific board that I'm working with, this BSP has issues with audio and video drivers and they're not working properly. Is there any QNX development roadmap available that shows when they are planning to provide Tiger Lake BSP? I was wondering how Intel® Time Coordinated Computing ITCC feature in the 11th gen Intel Core CPUs can help the performance of QNX RTOS. Also does anyone know when this feature will be supported by QNX? Fri, 18 Feb 2022 01:01:45 GMT http://community.qnx.com/sf/go/post121730 Saeed Shahinfar 2022-02-18T01:01:45Z post121727: Re: Does QNX7.0 utility support rsync tool? http://community.qnx.com/sf/go/post121727 I can confirm that rsync required no patches for QNX 6.6. If it's of any use, our current recipe is below -- popt and zlib are built elsewhere in our distro, so I can't speak for if the vendored versions work. CHOST="x86-unknown-nto-qnx" CBUILD="x86_64-unknown-linux-gnu" export CC=qcc export CXX=QCC export ac_cv_prog_cc_c99="" export rsync_cv_MAKEDEV_TAKES_3_ARGS=yes ./configure --build=${CBUILD} --host=${CHOST} \ --prefix=/usr \ --disable-debug \ --with-included-popt=no \ --with-included-zlib=no \ --enable-simd=no \ --disable-acl-support \ --disable-xxhash \ --disable-zstd \ --disable-lz4 \ --disable-ipv6 make Wed, 16 Feb 2022 19:15:45 GMT http://community.qnx.com/sf/go/post121727 Will Miles 2022-02-16T19:15:45Z post121726: Re: Does QNX7.0 utility support rsync tool? http://community.qnx.com/sf/go/post121726 I think it will be part of the next release of the SDP after 7.1. But in the mean time, it is not that hard to port from source. IIRC mostly some configure time options. You can also contact your BB/QNX sales/engineering team and negotiate it as part of a CSP for SDP7.0. Jim Wed, 16 Feb 2022 15:30:10 GMT http://community.qnx.com/sf/go/post121726 Jim Sleeth 2022-02-16T15:30:10Z post121725: Re: Does QNX7.0 utility support rsync tool? http://community.qnx.com/sf/go/post121725 Hi, we are also interested to use rsync. I checked QSC, it is not part of the SDK, neither in 7.0 nor in 7.1. Maybe it can be ported quite easily from the sources. We haven't looked into that as yet. The only thing that could be a problem if the filesystem behaviour differs in subtle points between QNX powerfailsafe FS and regular Linux/Windows FS. Regards, -Al Wed, 16 Feb 2022 08:42:42 GMT http://community.qnx.com/sf/go/post121725 Albrecht Uhlmann 2022-02-16T08:42:42Z post121724: Does QNX7.0 utility support rsync tool? http://community.qnx.com/sf/go/post121724 I want to use this command to transfer large file remotely. any idea for how to install rsync on QNX 7.0? thanks, Zhijun Wed, 16 Feb 2022 02:56:26 GMT http://community.qnx.com/sf/go/post121724 zhijun chen 2022-02-16T02:56:26Z post121714: Re: Unable to catch hardware interrupts http://community.qnx.com/sf/go/post121714 &gt; This works for the clock interrupt on a 7.1 x86_64 machine: Indeed it does! :-) Two lessons learnt from this exercise. 1. Don't assume the timer IRQ is 0. Use the SYSPAGE_ENTRY(qtime)-&gt;intr value! Which in my case under QNX 7.1 is IRQ2. But why IRQ0 worked in QNX 6.5 beats me but it threw me off. I seem to recall from the deep dim past that IRQ was a 50mSec interrupt. QNX4? It was so long ago... I actually use SYSPAGE in some clock related routines I have but haven't touched them in years. So I forgot about it... 2. Make sure hardware (like UART's) you want to have generate interrupts are configured properly. In my case, I had forgotten that the GPO2 bit of the 16550 (8250) MCR register needs to be set. So now I have my own version of the ser8250 driver working pretty much the way I want it. Is there any documentation for the io-char library? I've looked but with no success. Thanks, Geoff. &gt; &gt; #include &lt;stdio.h&gt; &gt; #include &lt;sys/neutrino.h&gt; &gt; #include &lt;sys/syspage.h&gt; &gt; &gt; int &gt; main(int argc, char **argv) &gt; { &gt; struct sigevent ev; &gt; SIGEV_INTR_INIT(&amp;ev); &gt; &gt; int const intr = SYSPAGE_ENTRY(qtime)-&gt;intr; &gt; int const id = InterruptAttachEvent(intr, &amp;ev, _NTO_INTR_FLAGS_TRK_MSK); &gt; if (id == -1) { &gt; perror("InterruptAttachEvent"); &gt; return 1; &gt; } &gt; &gt; for (unsigned i = 0; i &lt; 1000; i++) { &gt; InterruptWait(0, NULL); &gt; InterruptUnmask(intr, id); &gt; } &gt; &gt; printf("Done\n"); &gt; return 0; &gt; } Wed, 09 Feb 2022 06:47:30 GMT http://community.qnx.com/sf/go/post121714 Geoff Roberts 2022-02-09T06:47:30Z post121712: Re: How to compile an assemble code in QDE http://community.qnx.com/sf/go/post121712 sorry to bother problem solved just simply added S at the end. SRCS = $(call rwildcard, src, c S) thanks. Mon, 07 Feb 2022 09:11:57 GMT http://community.qnx.com/sf/go/post121712 Gavin Han(deleted) 2022-02-07T09:11:57Z post121711: How to compile an assemble code in QDE http://community.qnx.com/sf/go/post121711 Hello my friends I am trying to port some code from open source which contain some assemble code, file name ends up with .S I am having no idea how to compile those .s to my project, if just copy/paste them to src, they were ignored at compiling time. thank you very much. Br. Gavin Mon, 07 Feb 2022 08:22:51 GMT http://community.qnx.com/sf/go/post121711 Gavin Han(deleted) 2022-02-07T08:22:51Z post121710: Re: Unable to catch hardware interrupts http://community.qnx.com/sf/go/post121710 This works for the clock interrupt on a 7.1 x86_64 machine: #include &lt;stdio.h&gt; #include &lt;sys/neutrino.h&gt; #include &lt;sys/syspage.h&gt; int main(int argc, char **argv) { struct sigevent ev; SIGEV_INTR_INIT(&amp;ev); int const intr = SYSPAGE_ENTRY(qtime)-&gt;intr; int const id = InterruptAttachEvent(intr, &amp;ev, _NTO_INTR_FLAGS_TRK_MSK); if (id == -1) { perror("InterruptAttachEvent"); return 1; } for (unsigned i = 0; i &lt; 1000; i++) { InterruptWait(0, NULL); InterruptUnmask(intr, id); } printf("Done\n"); return 0; } Wed, 02 Feb 2022 11:59:35 GMT http://community.qnx.com/sf/go/post121710 Elad Lahav 2022-02-02T11:59:35Z post121709: Re: Unable to catch hardware interrupts http://community.qnx.com/sf/go/post121709 &gt; Hi Geoff, &gt; &gt; My best guess is that the driver left the interrupt masked. See if an explicit &gt; call to InterruptUnmask() helps. &gt; If that's the case then the driver may be missing the _NTO_INTR_FLAGS_TRK_MSK &gt; flag in its InterruptAttach() call. &gt; &gt; Also, you don't need I/O privileges to use InterruptAttachEvent(), just the &gt; PROCMGR_AID_INTERRUPTEVENT ability (which root should have). &gt; &gt; --Elad Hi Elad, I tried a call to InterruptUnmask() but it didn't help. That's when I was still playing with IRQ's 3 &amp; 4. I didn't do this when I tried IRQ 0. Didn't think I'd have to. What I don't understand is why this code using IRQ 0 works with QNX6.5 and not 7.1. I am obviously able to hook into the timer interrupt with no apparent consequences. Tomorrow I'll try the UART's on the 32-bit QNX 6.5 machine for completeness. But if it works, while the same source when built on 7.1 doesn't (regardless of whether or not I use the C or C++ compiler), what else is there with IRQ 0? I will try the InterruptUnmask() call on IRQ's 3 and 4 tomorrow but with IRQ 0??? Cheers, Geoff. Wed, 02 Feb 2022 11:48:32 GMT http://community.qnx.com/sf/go/post121709 Geoff Roberts 2022-02-02T11:48:32Z post121708: Re: Unable to catch hardware interrupts http://community.qnx.com/sf/go/post121708 Hi Geoff, My best guess is that the driver left the interrupt masked. See if an explicit call to InterruptUnmask() helps. If that's the case then the driver may be missing the _NTO_INTR_FLAGS_TRK_MSK flag in its InterruptAttach() call. Also, you don't need I/O privileges to use InterruptAttachEvent(), just the PROCMGR_AID_INTERRUPTEVENT ability (which root should have). --Elad Wed, 02 Feb 2022 11:32:35 GMT http://community.qnx.com/sf/go/post121708 Elad Lahav 2022-02-02T11:32:35Z post121707: Re: Unable to catch hardware interrupts http://community.qnx.com/sf/go/post121707 &gt; Hi, &gt; &gt; before kill the UART driver just use "pidin irq" and "pidin mem" to spy &gt; and learn where the things are. May help ;-) &gt; Apparently you have a command line access to your board on 7.1 &gt; &gt; -- Alexandre Hi Alexandre, I did that. pidin -f NQ shows the IRQ's of devc-ser8250 as expected: 4 and 3 respectively. After killing devc-ser8250 I start the example InterruptAttacheEvent() process (that I call sintr for no particular reason). pidin -f NQ shows whatever IRQ I use - 0, 4, or 3. pidin -f NQk shows all the process abilities I expected (including interruptevent). I can build it using either the C or C++ compiler. Neither works - InterruptWait() never returns. However, in QNX6.5 both work. No function returns a failure (typically -1) and errno is always EOK. I have access to the target x86_64 systems by either ssh, telnet, or local console (kbd/scn). Typically ssh. Both are effectively PC's. The IEI TANK-610 is so called "embedded" but it's really just a "PC" reduced in physical size with no moving parts (big heat sink on top) powered from 12 to 36 VDC. Nothing special. Note tat this is the first time I have attempted to catch hardware interrupts using 7.1 on an x86_64 system. I have however successfully been doing such things (with serial ports) going back to the QNX2 days, right through QNX 4 and QNX6. Obviously 7.1 is different and I thought I had it covered. But apparently not! :-) Geoff. Wed, 02 Feb 2022 09:30:59 GMT http://community.qnx.com/sf/go/post121707 Geoff Roberts 2022-02-02T09:30:59Z post121706: Re: Unable to catch hardware interrupts http://community.qnx.com/sf/go/post121706 Hi, before kill the UART driver just use "pidin irq" and "pidin mem" to spy and learn where the things are. May help ;-) Apparently you have a command line access to your board on 7.1 -- Alexandre Wed, 02 Feb 2022 08:51:01 GMT http://community.qnx.com/sf/go/post121706 Alexandre REBEKO 2022-02-02T08:51:01Z post121705: Unable to catch hardware interrupts http://community.qnx.com/sf/go/post121705 Hello. I'm using QNX 7.1 and the platform is Intel x86_64. Two different machines - one a recent IEI TANK-610 and the other some obscure motherboard that I inherited a couple of years ago. I am running in all cases as root. When I discovered I had a problem with the TANK I decided to build up the 2nd machine and still have the problem. So I don't think it's to do with the TANK (a Celeron N3160 processor). I am back to basics using some sample code I found documented with the InterruptAttachEvent() function that uses IRQ3 (2nd UART at 0x2f8). I killed devc-ser8250 so that I could have unfettered access to that interrupt. Didn't help. So I went to 3f8/4. No better. So then IRQ0 which is the timer interrupt. No good! The same code builds and runs perfectly on my QNX 6.5 development machine. On the 7.1 system I added a call to procmgr_ability() - but I don't think I really needed to as I'm running as root anyway. Whatever, it didn't help. procmgr_ability() returns EOK so I guess it's happy. ThreadCtl(_NTO_TCTL_IO, 0) returns 0 so I guess it's happy also. The call to InterruptAttachEvent() returns 6 so I guess it's happy. For good measure I call InterruptEnable() but I don't think that's really required. It didn't help anyway. InterruptWait() simply never returns regardless of IRQ used. It really surprised me that IRQ0 didn't work for me. It doesn't work when I use InterruptAttach() either with my own handler. The handler is never called. Nowhere do I get any failed functions. What might I be doing wrong in 7.1 that works fine in 6.5 (apart from the procmgr_ability() call)? I'm sure it's simple! Thanks, Geoff. But Wed, 02 Feb 2022 00:45:19 GMT http://community.qnx.com/sf/go/post121705 Geoff Roberts 2022-02-02T00:45:19Z post121704: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121704 That sounds like you're closing it. If the resmgr was screwing up then you'd not likely to be able to recover it. Mon, 31 Jan 2022 13:09:51 GMT http://community.qnx.com/sf/go/post121704 Roger Maclean 2022-01-31T13:09:51Z post121703: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121703 Well, good news I think. I was able to dup() the STDIN descriptor before it went bad and then restore it so that spawn() could function after the EBADF error. So, I restore it with dup2() and call spawn() again and that works. However, I'm trying to determine how STDIN is getting closed or messed up in the first place. Is there any way to tell if it's getting closed or if the resmgr is messed up? If the resmgr is messed up, can it be restarted? Fri, 28 Jan 2022 21:13:38 GMT http://community.qnx.com/sf/go/post121703 Edward Llewellyn(deleted) 2022-01-28T21:13:38Z post121702: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121702 Yes, it could be closed. The other possibility would be that something has gone wrong on the resmgr side. The way 'pidin fds' works is that pidin dups the process's fs and calls iofdinfo on the result to get the path. So if something is bad on the resmgr side it might also make it vanish. Thought the getting closed is perhaps more likely. Thu, 27 Jan 2022 22:12:42 GMT http://community.qnx.com/sf/go/post121702 Roger Maclean 2022-01-27T22:12:42Z post121701: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121701 I checked pidin fds for my process. Before the issue happens, I see fds as: 0 1 rw 0 /dev/devh-usb.so 1 1 2 1 After the spawn() issue happens: 1 1 2 1 It looks like FD 0 gets closed somehow, if I'm reading this right. Thu, 27 Jan 2022 21:52:45 GMT http://community.qnx.com/sf/go/post121701 Edward Llewellyn(deleted) 2022-01-27T21:52:45Z post121700: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121700 Yes, for fds there is no translation, so they'll just be 0,1,2. I mentioned in a previous comment that you could try calling `iofdinfo`, maybe `fstat` would be easier. If the spawnp is failing, I would expect that one of them is no longer associated with an open file in the server, but I don't know what would cause it to become invalid. Thu, 27 Jan 2022 21:28:37 GMT http://community.qnx.com/sf/go/post121700 Ian Larson 2022-01-27T21:28:37Z post121699: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121699 pidin fds should indicate if the fds are sane. Thu, 27 Jan 2022 21:28:29 GMT http://community.qnx.com/sf/go/post121699 Roger Maclean 2022-01-27T21:28:29Z post121698: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121698 I'm not running my program in the debugger, if that's what you're asking about. It's rather difficult for me to do so, as the lab test stand has it's own PC that connects directly to our QNX device. This lab PC doesn't have Momentics on it.. Is there another way to get this information you talk about? Also, how I can tell if fds 0, 1 and 2 are valid or not? What are their coids? 0, 1 and 2? Thu, 27 Jan 2022 21:24:03 GMT http://community.qnx.com/sf/go/post121698 Edward Llewellyn(deleted) 2022-01-27T21:24:03Z post121697: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121697 Once spawnp starts returning EBADF do you know that FDs 0,1,2 are all still valid? If you have traces, do you see the resource manager receiving the _IO_DUP messages during the spawn process? Thu, 27 Jan 2022 21:08:26 GMT http://community.qnx.com/sf/go/post121697 Ian Larson 2022-01-27T21:08:26Z post121696: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121696 I added your suggested code into my program, but it's not finding any FDs with _NTO_COF_DEAD in the flags. The flags are all either 0 or 1 (_NTO_COF_CLOEXEC). Anything else I should look for? Thu, 27 Jan 2022 19:42:38 GMT http://community.qnx.com/sf/go/post121696 Edward Llewellyn(deleted) 2022-01-27T19:42:38Z post121695: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121695 One of the things `procmgr_daemon` does is it attempts to close all file descriptors, opens /dev/null and dups it to 0,1,2. This may or may not be relevant. One thing you could try is: once the system is in the state where spawnp fails with EBADF, you could try using ConnectServerInfo(0, ...) to scan the process's fds and check the flags for `_NTO_COF_DEAD`, and/or iofdinfo to see if the connections are still valid. ConnectServerInfo can be used in a loop to scan for file descriptors. e.g. struct _server_info sinfo; next_fd = 5; while (...) { int fd = ConnectServerInfo(0, next_fd, &amp;sinfo); if (fd == -1 || fd &amp; _NTO_SIDE_CHANNEL) break; print_info_about_connection(); next_fd = fd+1; } if there is a connection with coid 5, ConnectServerInfo will return 5 (and sinfo will have information about 5). If 5 is not valid, it will return the next first valid coid (6,7,8...). You can stop looping when `(fd &amp; _NTO_SIDE_CHANNEL) == _NTO_SIDE_CHANNEL` Thu, 27 Jan 2022 17:29:00 GMT http://community.qnx.com/sf/go/post121695 Ian Larson 2022-01-27T17:29:00Z post121694: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121694 BTW, I did try putting delays in my code, and that didn't help, so I think it's not a timing issue. Thu, 27 Jan 2022 17:08:00 GMT http://community.qnx.com/sf/go/post121694 Edward Llewellyn(deleted) 2022-01-27T17:08:00Z post121693: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121693 I found code that was calling printf(). This code is useless as the program is making itself a daemon with procmgr_daemon(). Are you saying we shouldn't output data to fds 0, 1, or 2? Thu, 27 Jan 2022 16:49:42 GMT http://community.qnx.com/sf/go/post121693 Edward Llewellyn(deleted) 2022-01-27T16:49:42Z post121692: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121692 Are you opening/closing fds 0,1,2 in any of the other threads? If those files are open and valid it may be some other issue. Tue, 25 Jan 2022 22:52:42 GMT http://community.qnx.com/sf/go/post121692 Ian Larson 2022-01-25T22:52:42Z post121691: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121691 So, would putting multi-second sleep() calls between the spawn() tries help? That might be an option. Thanks for replying quickly, BTW. Tue, 25 Jan 2022 22:41:58 GMT http://community.qnx.com/sf/go/post121691 Edward Llewellyn(deleted) 2022-01-25T22:41:58Z post121690: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121690 I think I must be ending up with a partially opened FD. How to I fix it without restarting my device manager program? Restarting that program isn't a good option, because to do that it would have to shut down all of our other applications (we have about 20-30 running) and then restarting everything again. I'm passing in STDIN, STDOUT and STDERR, not other files the parent has opened. I did try spawnv() as well as spawnp() and spawn(). spawnv() fails badly because apparently the FDs aren't able to be duplicated. Tue, 25 Jan 2022 22:39:56 GMT http://community.qnx.com/sf/go/post121690 Edward Llewellyn(deleted) 2022-01-25T22:39:56Z post121689: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121689 There's fairly well understood race condition when doing things like fork/spawn in a multithreaded process. During the process creation phase the process manager has to iterate over the file descriptors in the parent process that need to be duplicated in the child, and then send an _IO_DUP message to the resource manager. The process of opening/closing a file descriptor involves: 1. Open a connection to the resource manager 2. Send a _IO_CONNECT message with information about the file you're interested in 3. The resource manager creates an OCB for the client process And the process of closing a file descriptor is: 1. Send an _IO_CLOSE message on the coid 2. The resource manager cleans up the OCB associated with the client's file 3. Detach the connection from the resource manager. If the process manager tries to duplicate a file descriptor that is partially opened or partially closed in the parent(the connection exists but the resource manager doesn't have information about it), the spawn/fork will fail with EBADF. It sounds like you may be hitting this race condition, or may be ending up with a file descriptor that is partially open. Tue, 25 Jan 2022 22:33:54 GMT http://community.qnx.com/sf/go/post121689 Ian Larson 2022-01-25T22:33:54Z post121688: Re: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121688 Additional information: Rhp_char_t ** const ExecutablePath = argv ; struct inheritance inherit; memset (&amp;inherit,0,sizeof(inheritance)); inherit.flags =SPAWN_NOZOMBIE ; Rhp_int32_t fd_map[] = { STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO }; childProcessID = spawnp(ExecutablePath[0],3,fd_map,&amp;inherit,ExecutablePath,NULL); This is the code, without the logging. Tue, 25 Jan 2022 21:44:12 GMT http://community.qnx.com/sf/go/post121688 Edward Llewellyn(deleted) 2022-01-25T21:44:12Z post121687: spawn() fails on QNX 6.5.0 http://community.qnx.com/sf/go/post121687 I have a multi-threaded program that is failing on the spawn() call. I get EBADF, but when I log the parameters to spawn() none of them look wrong. This is happening after my program goes through a process of: 1. Shut down a process that talks to the CAN driver. 2. Spawn a test mode program, which interfaces to the CAN driver in a different way 2. Shut down the test mode program (with kill process). 3. Restart the program that talks to the CAN_ResMgr driver. After several cycles of the above, the device manager that's doing the spawn() gets EBADF from the spawn() call (either one) and after that spawn() will not work for the device manager until the device manager is killed and restarted. Again, all the parameters to the spawn() call look fine both before and after the call. Tue, 25 Jan 2022 21:36:45 GMT http://community.qnx.com/sf/go/post121687 Edward Llewellyn(deleted) 2022-01-25T21:36:45Z post121686: how can i use egl-opengl api on qnx stream? http://community.qnx.com/sf/go/post121686 i want to render a qnx stream use opengl, but i finally found that i can not create egl surface from qnx stream producer. Does any one know it? thands for attention. Tue, 25 Jan 2022 08:54:30 GMT http://community.qnx.com/sf/go/post121686 liang zhiyong(deleted) 2022-01-25T08:54:30Z post121679: Re: Failed dd clone of compact flash http://community.qnx.com/sf/go/post121679 &gt; I tried using dd to clone the compact flash &gt; dd if=dev/sda of=/image.img # copy original compact flash to a file &gt; dd if=/image.img if=dev/sda #copy file to target compact flash &gt; &gt; but when I use the cloned compact flash I get an error that it can't read(?) &gt; the mounted drive: &gt; mount -tgnx6 /dev/hd0t179 /d0 &gt; mount: can't mount /d0 (type qnx6) &gt; mount: possible reason: read only file system. &gt; &gt; What am I missing when making the clone? I'm not sure if this will help but when I get this message it is invariably when using a QNX6 file system on a USB drive. I don't know is a similar approach needs to be taken with your flash drive. I have used compact flash with QNX6 however with no such problems. The way I fixed it (in QNX7) was by mounting as follows: mount -t qnx6 -o sync=ignore /dev/usb0t177 /usb (for example) This allows me to write to the USB drive. Otherwise it's read only. I imagine something like this might work for you: mount -t qnx6 -o sync=ignore /dev/hd0t179 /d0 Fri, 14 Jan 2022 23:56:45 GMT http://community.qnx.com/sf/go/post121679 Geoff Roberts 2022-01-14T23:56:45Z post121678: Re: Failed dd clone of compact flash http://community.qnx.com/sf/go/post121678 Sorry, you are right, I did a typo. It should be: dd if=/image.ing of=/dev/sda Fri, 14 Jan 2022 19:11:23 GMT http://community.qnx.com/sf/go/post121678 Rodger Yoshida(deleted) 2022-01-14T19:11:23Z post121677: Re: Failed dd clone of compact flash http://community.qnx.com/sf/go/post121677 Is it at typing error or did you really use “if=" twice when writing back to the device? Sent from my BlackBerry — the most secure mobile device From: community-noreply@qnx.com Sent: 14 January 2022 20:00 To: ostech-core_os@community.qnx.com Reply to: ostech-core_os@community.qnx.com Subject: Failed dd clone of compact flash I tried using dd to clone the compact flash dd if=dev/sda of=/image.img&lt;http://image.img&gt; # copy original compact flash to a file dd if=/image.img&lt;http://image.img&gt; if=dev/sda #copy file to target compact flash but when I use the cloned compact flash I get an error that it can't read(?) the mounted drive: mount -tgnx6 /dev/hd0t179 /d0 mount: can't mount /d0 (type qnx6) mount: possible reason: read only file system. What am I missing when making the clone? _______________________________________________ OSTech http://community.qnx.com/sf/go/post121675 To cancel your subscription to this discussion, please e-mail ostech-core_os-unsubscribe@community.qnx.com&lt;mailto:ostech-core_os-unsubscribe@community.qnx.com&gt; Fri, 14 Jan 2022 19:08:49 GMT http://community.qnx.com/sf/go/post121677 Gerd Wetzel 2022-01-14T19:08:49Z post121676: Re: Failed dd clone of compact flash http://community.qnx.com/sf/go/post121676 clarification on the cloning process. The cloning was done a different computer. It was done on a computer running RHE 8. This way the compact flash cards are not "in use". Fri, 14 Jan 2022 19:06:44 GMT http://community.qnx.com/sf/go/post121676 Rodger Yoshida(deleted) 2022-01-14T19:06:44Z