I am confused about the SMPU and MPU in MPC5744P.
In the Application Note: AN4939- MPC5744P Software Start Up and Optimization , the MPU is intialized by asm.
I have check the MPC5744P SMPU Intialization, the demo code is like MPC5748G.
What is the differences?
the main difference between SMPU and CMPU is that SMPU is implemented on crossbar, so we can configure access right for all masters. CMPU is implemented on core. The key point is that CMPU is used to check only core accesses. It does not affect other masters. For example, let’s say you configure certain RAM area as read-only (this will be configured on CMPU on core 0, for example). Then core 0 can’t write this area – exception would be triggered. However, this restriction is not visible for other masters like DMA because it is core feature, not system feature. That means other master can write this area despite of CMPU. This is the reason why also SMPU is implemented.
I shared sample code for CMPU initialization for MPC5744P here on the community:
There’s also link to excel configurator (https://community.nxp.com/docs/DOC-335468) which can help you to easily generate initialization code as required.
And here are sample codes for SMPU written for MPC5748G microcontroller. But the principle is still the same:
Thank you very much !
I am transplant Micrium uCOSIII Operating system to MPC5744P, which is using in the MPC5748G, in the Micrium website.
But there are a lot of problems, Is that a big difference between the MPC5748G and MPC5744P ?
I have know that the core of MPC5748G is e200z42004n3 , and the core of MPC5744P is e200z4251n3 from the AN4802 document.( Qorivva MPC57xx e200zx Core Differences ).
Is the instructions difference between the two cores? Is there anything in particular I should pay attention to ?
asm code written for MPC5748G should work also for MPC5744P. There's no difference in the instruction set. The troubles can be caused rather by differences in memory map or in different feature set.