my derived class xxxMessage contain two class objects xxxQueue and xxxMutex as member, but it seems KEIL compiles them as member function (I add __packed and found this problem in KEIL).
As a result, the first member variable of objects xxxQueue and xxxMutex set with wrong value and the second member variable carry with the value first member variable set manually, it seem bytes alignment problems
but some values seems has been insert into the RAM memory position of the first member variable of both objects . ALL my member variables are 32bits int so I dont think it's bytes alignment problems . I wonder to know why KEIL treat the two class objects as member function? and the two" member function " copy the position of the first member variable.
ALL my code runs well in vs2019 and does not have such problems .
This is hardly possible to explain without being able to reproduce this. But anyhow, as the old Arm Compiler 5 is no longer recommended for developing projects, you should anyhow stay with the current Arm Compiler for Embedded 6. And as things work with 6.16 and probably also the current version of the Arm Compiler for Embedded 6, you can go on with using this for your project.