Hi Gaute,
When you say that you are running Linux on core 0 and FreeRTOS on core
1, do you mean that you are running both Linux and FreeRTOS on the
Cortex-A cluster in separate virtual machines, using a hypervisor?
Or are they running on separate clusters, such as FreeRTOS on Cortex-M/R
and Linux on a Cortex-A?
Cheers,
Stefano
On Mon, 7 Sep 2020, Gaute Nilsson via Openamp-rp wrote:
> We are running Linux on core 0 and FreeRTOS on core 1.
>
> We have a high priority FreeRTOS task that needs to run with a 100 µs
> interval. When the system is up and running, no cross core
> communication takes place.
>
> If I login with a ssh session into the Linux core, this will cause a
> performance hit on the FreeRTOS core and cause the high priority task
> to miss its deadline.
>
> I can see that even an ISR on FreeRTOS core that normally takes 4.5 µs
> to execute, temporarily will take 7.6 µs to execute just when I open a
> ssh session into Linux core. So everything will temporarily run slower
> on FreeRTOS core before it goes back to normal.
>
>
> What can cause this, and how can we prevent activity on Linux core
> affecting performance on FreeRTOS core?
>
> -Gaute Nilsson
>
We are running Linux on core 0 and FreeRTOS on core 1.
We have a high priority FreeRTOS task that needs to run with a 100 µs
interval. When the system is up and running, no cross core communication
takes place.
If I login with a ssh session into the Linux core, this will cause a
performance hit on the FreeRTOS core and cause the high priority task to
miss its deadline.
I can see that even an ISR on FreeRTOS core that normally takes 4.5 µs to
execute, temporarily will take 7.6 µs to execute just when I open a ssh
session into Linux core. So everything will temporarily run slower on
FreeRTOS core before it goes back to normal.
What can cause this, and how can we prevent activity on Linux core
affecting performance on FreeRTOS core?
-Gaute Nilsson
We are running Linux on core 0 and FreeRTOS on core 1.
We have a high priority FreeRTOS task that needs to run with a 100 µs
interval. When the system is up and running, no cross core
communication takes place.
If I login with a ssh session into the Linux core, this will cause a
performance hit on the FreeRTOS core and cause the high priority task
to miss its deadline.
I can see that even an ISR on FreeRTOS core that normally takes 4.5 µs
to execute, temporarily will take 7.6 µs to execute just when I open a
ssh session into Linux core. So everything will temporarily run slower
on FreeRTOS core before it goes back to normal.
What can cause this, and how can we prevent activity on Linux core
affecting performance on FreeRTOS core?
-Gaute Nilsson
Branch: refs/heads/master
Home: https://github.com/OpenAMP/libmetal
Commit: 8dfbbadc2d92fb06ba0ee0bf1837b281e7a021c8
https://github.com/OpenAMP/libmetal/commit/8dfbbadc2d92fb06ba0ee0bf1837b281…
Author: Simon Leiner <simon(a)leiner.me>
Date: 2020-09-07 (Mon, 07 Sep 2020)
Changed paths:
M lib/atomic.h
Log Message:
-----------
Use <atomic> when compiled as C++
This is necessary for the use of libmetal together with C++ clients that
require <atomic> as the replacement headers create a conflict with
<atomic>.
Signed-off-by: Simon Leiner <simon(a)leiner.me>
Commit: db77c464376e603bc46122b38a7956c87597895b
https://github.com/OpenAMP/libmetal/commit/db77c464376e603bc46122b38a7956c8…
Author: Simon Leiner <simon(a)leiner.me>
Date: 2020-09-07 (Mon, 07 Sep 2020)
Changed paths:
M lib/io.h
Log Message:
-----------
Perform strict typecasts for atomic_store_explicit
This is required by the implementation of atomic_store_explicit in the
C++ standard library.
Signed-off-by: Simon Leiner <simon(a)leiner.me>
Compare: https://github.com/OpenAMP/libmetal/compare/9a3162ecc0a3...db77c464376e
Branch: refs/heads/master
Home: https://github.com/OpenAMP/libmetal
Commit: 9a3162ecc0a353e4b14fe9e81a0d3d69f9c67eca
https://github.com/OpenAMP/libmetal/commit/9a3162ecc0a353e4b14fe9e81a0d3d69…
Author: Simon Leiner <simon(a)leiner.me>
Date: 2020-09-07 (Mon, 07 Sep 2020)
Changed paths:
M lib/system/freertos/mutex.h
M lib/system/generic/mutex.h
Log Message:
-----------
Stop using atomic_flag_*() for atomic_int in mutex
The atomic_flag_* functions are only defined for operands of the type
atomic_flag so the previous implementation relied on undefined behavior.
Because of the need for a read without side effects (in
__metal_mutex_is_acquired), it is not possible to use the atomic_flags
type for the mutex implementation. Because of this, all atomic_flag_*
functions are replaced with the appropriate functions for atomic value
types.
Signed-off-by: Simon Leiner <simon(a)leiner.me>
Branch: refs/heads/master
Home: https://github.com/OpenAMP/libmetal
Commit: 9e03c4fceda40ff037c7f4355c431fd775486199
https://github.com/OpenAMP/libmetal/commit/9e03c4fceda40ff037c7f4355c431fd7…
Author: Simon Leiner <simon(a)leiner.me>
Date: 2020-09-07 (Mon, 07 Sep 2020)
Changed paths:
M lib/compiler/gcc/compiler.h
M lib/compiler/iar/compiler.h
Log Message:
-----------
Introduce metal_asm
This can be used as a future replacement for asm, which is not allowed in
the strict ISO C modes of GCC and IAR.
Signed-off-by: Simon Leiner <simon(a)leiner.me>
Commit: 5cae751afe8c516b4c533a4516a4e80412e93ac1
https://github.com/OpenAMP/libmetal/commit/5cae751afe8c516b4c533a4516a4e804…
Author: Simon Leiner <simon(a)leiner.me>
Date: 2020-09-07 (Mon, 07 Sep 2020)
Changed paths:
M examples/system/freertos/zynqmp_r5/zynqmp_amp_demo/common.h
M examples/system/generic/zynqmp_r5/zynqmp_amp_demo/common.h
M lib/processor/aarch64/cpu.h
M lib/processor/x86/cpu.h
M lib/processor/x86_64/cpu.h
M lib/system/freertos/zynq7/sys.c
M lib/system/freertos/zynqmp_a53/sys.c
M lib/system/freertos/zynqmp_r5/sys.c
M lib/system/generic/microblaze_generic/sys.c
M lib/system/generic/zynq7/sys.c
M lib/system/generic/zynqmp_a53/sys.c
M lib/system/generic/zynqmp_r5/sys.c
M lib/system/zephyr/cortexm/sys.c
M test/system/freertos/main.c
Log Message:
-----------
Use metal_asm instead of asm and __asm__
This enables GCC compilation in strict mode (-std=c11 -pedantic)
Signed-off-by: Simon Leiner <simon(a)leiner.me>
Compare: https://github.com/OpenAMP/libmetal/compare/821fd4fc3db2...5cae751afe8c