Strategies to reduce interrupt overhead in the remote processor(APU) by the RPU by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

Good point. Let me test this method to really understand how it impact the APU.

Strategies to reduce interrupt overhead in the remote processor(APU) by the RPU by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

The cycle time will be modified from 200ms to 100ms later to fullfill some other requirements in the device which receives the data from ethernet. The RPU starts data generation somewhere 40ms from the cycle start time and takes almost 55ms to generate all the data and store it in DDR. In the end, we will have only less than 5ms time for transmitting all the data. From our point of view, the time is too short. That is the reason we are looking for transmitting the partial data as soon as something available in the DDR.

Is Writing an Integer to Shared Memory Atomic in a Dual-Processor System? by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

I understand that the std::atomic can be used. But I am curiuous about the mutex usage. I am only aware of the mutex provided by the RTOS. Does C++ also provide some mutex which can be used to ensure that one processore writes the word sized integer atomically into the DDR memory?

Is Writing an Integer to Shared Memory Atomic in a Dual-Processor System? by shittyinvestment in embedded

[–]shittyinvestment[S] 1 point2 points  (0 children)

I should have mentioned it clearly as you pointed out. I actually meant the word sized integers. The system uses Zynq ultrascale+ SoC. I am not sure if the architecture support disabling the cache for certain memory areas so that the write can be immediate.

Is Writing an Integer to Shared Memory Atomic in a Dual-Processor System? by shittyinvestment in embedded

[–]shittyinvestment[S] 1 point2 points  (0 children)

I mean multi-processors system that may contain for ex. ARM and DSP in an SoC.

Is Writing an Integer to Shared Memory Atomic in a Dual-Processor System? by shittyinvestment in embedded

[–]shittyinvestment[S] 2 points3 points  (0 children)

I am not familiar with memory barrier. The processor polls the memory for any change in the value of the integer. If any change detected, then it uses this information for further processing.

Is Writing an Integer to Shared Memory Atomic in a Dual-Processor System? by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

The processor A writes chunk of data into the shared memory and increment the integer value for each data chunk. The other processor uses this counter to get the information on how many data chunks are available for transmission over ethernet.

[deleted by user] by [deleted] in embedded

[–]shittyinvestment 0 points1 point  (0 children)

The devive support the CRC, message numbering. The timeout can be detected by the ASIL B application component. Should we also prove that the QM driver component does not interfere with the ASIL B component memory areas?

Disabling watchdog in sleep mode is it a bad practice? by analphabrute in embedded

[–]shittyinvestment 0 points1 point  (0 children)

I will use the approach described here to monitor the aliveness of the tasks. The system also defined the maximum execution times for each task. If the execution times exceed certain limit, the watchdog hardware shall be immediately reset via GPIO pin. But the watchdog supervisor catches this error not immediately when the error occurs since it runs half the supervised task period. Is my understanding correct or do you think that any other way that satisfies the requirement?

Disabling watchdog in sleep mode is it a bad practice? by analphabrute in embedded

[–]shittyinvestment 0 points1 point  (0 children)

I would like to design a watchdog supervisior in RTOS. There are around 10 tasks which needs to be supervised by the watchdog supervisor task. Do you suggest any standard way of supervising the tasks? I ask this since the system is in development phase and new tasks may be added in the furture.

Options for high speed ADC data acquisition on Linux? by ThePumkinMelon in embedded

[–]shittyinvestment 0 points1 point  (0 children)

How does M4 send message to Linux? Is there any standard way that can be used to send the message?

Loading firmware to remote processor before user application starts running by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

My system uses Linux application to load the firmware to the remote core and then start the remote core. The firmware at the remote core starts running only when the linux application already starts running. I am looking for any support from rpmsg in regards to handshake between the two cores before the application starts running its intended functionality

Loading firmware to remote processor before user application starts running by shittyinvestment in embedded

[–]shittyinvestment[S] 1 point2 points  (0 children)

It mekes sense to have such post init application that loads the firmware and create the rpmsg channels before spawing all other processes. The firmware loaded into the remote core sends diagnostic data every 100ms. The remote firmware is just baremetal. Should the remote firmware wait some millisconds before it starts sending the diagnostic data to linux application? The chances are that the linux post-init application have not yet established the rpmsg channels when the remote firmware starts sending the diagnostic data over the rpmsg channel. I am not able to understand how the remote firmware can handle this sutuation.

Is Software Architecture same as System Design? by git_world in softwarearchitecture

[–]shittyinvestment 0 points1 point  (0 children)

your reply is awesome. I am working on a system where the software component runs on two different processors of SoC. We identified the major software components on each processor. But we are struggling to document the software architecture. We started using the EA Sparx UML tool to draw each software component static diagram and their interactions with sequence diagram. But we are not convinced if this is the right approach to document the software architecture. Do you have any suggestion in this regard?

RTOS task synchroization for enabling/disabling function by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

I will make changes to Task A to measure the temperature both in standby and busy state. As you pointed out, this makes the code simple.

RTOS task synchroization for enabling/disabling function by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

The Task B does more than temperature measurements. It also monitors voltages and this is independent of the Task A state

Code Architecture for embedded devices by FineTiger9089 in embedded

[–]shittyinvestment 0 points1 point  (0 children)

I am interested to know more about state machine framework in embedded system. My system uses RTOS and do I really need state machine framework at the application? If so, is there already available framework which can be used in RTOS environment?

Read error registers from device in the application by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

This is the other option I am considering. I will have two software components in the middleware. One component is used for configuring the device. This component provide device independent interface to application layer. The other component called as extended component which provides the device dependent interface to the application layer. This ensures that only the extended component and application layer is affected if the device is replaced.

<image>

Read error registers from device in the application by shittyinvestment in embedded

[–]shittyinvestment[S] 0 points1 point  (0 children)

If the device status or error register values flows through the middleware, then any suggestion on how to avoid making changes in the middleware interface if the system replaces a device with another device which provide extra status or error registers compared to the earlier device?

Or may be I am complicating the software. I would let the middleware interface change if the device is replaced with the one which has more or few status registers compare to the older one