vector.com|Contact
Search tips

apple banana
Find rows that contain at least one of the two words.

+apple +juice
Find rows that contain both words.

+apple macintosh
Find rows that contain the word 'apple', but rank rows higher if they also contain 'macintosh'.

+apple -macintosh
Find rows that contain the word 'apple' but not 'macintosh'.

+apple ~macintosh
Find rows that contain the word 'apple', but if the row also contains the word 'macintosh', rate it lower than if row does not. This is "softer" than a search for '+apple -macintosh', for which the presence of 'macintosh' causes the row not to be returned at all.

+apple +(>turnover >strudel)
Find rows that contain the words 'apple' and 'turnover', or 'apple' and 'strudel' (in any order), but rank 'apple turnover' higher than 'apple strudel'.

apple*
Find rows that contain words such as 'apple', 'apples', 'applesauce', or 'applet'.

"some words"
Find rows that contain the exact phrase 'some words' (for example, rows that contain 'some words of wisdom' but not "some noise words").

By continuing to use this site you agree to the use of cookies. For more information and to find out how to change this click here. Accept Cookies
Please enable cookies in your browser for this website.
Search:
Advanced search

Pending Memory Blocks Never Finish

Last updated: 2018-08-09
Issue:
One or more memory blocks stay pending and will never finish.
Solution:
There are many possible reasons why one or more memory blocks stay pending during processing and will never finish. Often it is a matter of configuration. Either the user has forgotten to enable Job End and Job Error notifications in Fls/Fee or to activate the Polling Mode in Fee/NvM.

Check:
  • Are JobEnd Notification and JobError Notification and the corresponding include file configured in the driver (Fls or Eep) or does the interface layer (Fee, Ea) use Polling Mode towards the MCAL layer?
  • Are JobEnd Notification and JobError Notification and the corresponding include file configured in the interface layer (Fee, Ea) or does NvM use Polling Mode to get the status from the interface layer?
     
If notifications are configured or polling is enabled between the different layers and the problem still occurs, try to find out which component is pending and does not answer to the layer above. Therefore, check some variables:

Option 1: MICROSAR Standard Fee is Used

In the structure Fee_Globals_t you can find some information about the current job, the current block and the current internal status of the Fee and the Fls. To find out which component is pending and does not answer to the layer above, especially the variables FeeModuleStatus_t and FlsJobResult_t are interesting. FeeModuleStatus_t stores the status of the Fee as seen from outside (Fee_GetStatus) and FlsJobResult_t shows the result of the last job requested to the Fls.

If the FlsJobResult_t still contains the result MEMIF_JOB_PENDING, the Fls driver did not finish its job correctly. The Fee is still waiting for the result of the last job forwarded to the Fls. In this case, also the Fee is in MEMIF_JOB_PENDING, because as long as the Fee does not have the job result from the Fls, the Fee cannot forward the result to the NvM and the NvM cannot forward the result to its application. Try to debug the reason why the Fls cannot finish its job in the Fls driver.

If the FlsJobResult_t contains a result different from MEMIF_JOB_PENDING, the Fls driver finished its last job. In case the FeeModuleStatus_t still has the result MEMIF_JOB_PENDING, the Fee cannot finish the job. You can assume the problem is in Fee. If the FeeModuleStatus_t also contains a result different from MEMIF_JOB_PENDING and the block is still pending in the NvM you can assume the problem is in the NvM.

Option 2: MICROSAR SmallSector Fee is Used

In the structure Fee_30_SmallSector_ComponentParameter you can find some information about the current status of the Fee. To find out which component is pending and does not answer to the layer above, especially the variable Status and the current status of the Fls driver are interesting. The Status of Fee_30_SmallSector_ComponentParameter stores the status of the Fee as seen from outside (Fee_GetStatus). 

If the Fls driver is still in the status MEMIF_JOB_PENDING then the Fls driver did not finish its job correctly. The Fee is still waiting for the result of the last job forwarded to the Fls. In this case also the Fee is in MEMIF_JOB_PENDING because as long as the Fee does not have the jobresult from the Fls, the Fee cannot forward the result to the NvM and the NvM cannot forward the result to its application. Try to debug the reason why the Fls cannot finish its job in the Fls driver.

If the status of the Fls driver is different to MEMIF_JOB_PENDING then the Fls driver has finished its last job. In case the status of Fee_30_SmallSector_ComponentParameter has still the result MEMIF_JOB_PENDING, the Fee cannot finish the job. Then you can assume that the problem is in the Fee. If the Status of Fee_30_SmallSector_ComponentParameter has a result different to MEMIF_JOB_PENDING and the block is still pending in the NvM, you can assume that the problem why job is not finished is in the NvM.

Option 3: MICROSAR Ea Lower Than Version 6.00.00 is Used

To find out which component is pending and does not answer to the layer above, especially the two variables Ea_ModuleStatus_t and EepJobResult_t are interesting. Ea_ModuleStatus_t stores the status of the Ea as seen from outside (Ea_GetStatus) and EepJobResult_t shows the result of the last job requested to Eep.

If EepJobResult_t still contains the result MEMIF_JOB_PENDING, then the Eep driver did not finish its job correctly. The Ea is still waiting for the result of the last job forwarded to the Eep. In this case the Ea is also in MEMIF_JOB_PENDING, because as long as the Ea does not have the job result from the Eep, the Ea cannot forward the result to the NvM and the NvM cannot forward the result to its application. Try to debug the reason why the Eep cannot finish its job in the Eep driver.

If EepJobResult_t contains a result different from MEMIF_JOB_PENDING, then the Eep driver has finished its last job. In case the Ea_ModuleStatus_t has still the result MEMIF_JOB_PENDING, the Ea cannot finish the job. You can assume the problem is in Ea. If the result of Ea_ModuleStatus_t is also different form MEMIF_JOB_PENDING and the block is still pending in the NvM, you can assume that the problem is in the NvM.

Option 4: MICROSAR Ea Since Version 6.00.00 is Used

To find out which component is pending and does not answer to the layer above, especially the two variables Ea_ComponentParameter and the current status of the Eep driver are interesting. Ea_ComponentParameter stores the status of the Ea as seen from outside (Ea_GetStatus). 

If the status of the Eep driver is still MEMIF_JOB_PENDING, then the Eep driver did not finish its job correctly. The Ea is still waiting for the result of the last job forwarded to the Eep. In this case also the Ea is in MEMIF_JOB_PENDING, because as long as the Ea does not have the job result from the Eep, the Ea cannot forward the result to the NvM and the NvM cannot forward the result to its application. Try to debug the reason why Eep cannot finish its job in the Eep driver.

If the status of the Eep driver is different from MEMIF_JOB_PENDING, then the Eep driver finished its last job. In case the Ea_ComponentParameter has still the result MEMIF_JOB_PENDING, the Ea cannot finish the job. You can assume the problem is in the Ea. If the result of Ea_ComponentParameter is also different from MEMIF_JOB_PENDING and the block is still pending in the NvM, you can assume that the problem is in the NvM.
 
 
Article Options
2018-08-09
Views: 259
Error(s) occurred processing form.
Please complete all required fields. Fields marked with * are required.