Cortex-M3 optimization.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@834 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
93c5d059c0
commit
f43dbdc61b
|
@ -27,71 +27,74 @@ Settings: SYSCLK=72, ACR=0x12 (2 wait states)
|
|||
--- Test Case 3.3 (Mutexes, priority inheritance, complex case)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 4.1 (CondVar, signal test)
|
||||
--- Test Case 3.4 (CondVar, signal test)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 4.2 (CondVar, broadcast test)
|
||||
--- Test Case 3.5 (CondVar, broadcast test)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 5.1 (Messages, dispatch test)
|
||||
--- Test Case 3.6 (CondVar, inheritance boost test)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 6.1 (Mailboxes, queuing and timeouts)
|
||||
--- Test Case 4.1 (Messages, dispatch test)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 7.1 (Events, wait and broadcast)
|
||||
--- Test Case 5.1 (Mailboxes, queuing and timeouts)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 8.1 (Heap, allocation and fragmentation test)
|
||||
--- Size : 17220 bytes, not fragmented
|
||||
--- Test Case 6.1 (Events, wait and broadcast)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 9.1 (Memory Pools, allocation and enqueuing test)
|
||||
--- Test Case 7.1 (Heap, allocation and fragmentation test)
|
||||
--- Size : 17236 bytes, not fragmented
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Test Case 8.1 (Memory Pools, allocation and enqueuing test)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 10.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Test Case 9.1 (Dynamic APIs, threads creation from heap)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.1 (Benchmark, context switch #1, optimal)
|
||||
--- Test Case 9.2 (Dynamic APIs, threads creation from memory pool)
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 10.1 (Benchmark, context switch #1, optimal)
|
||||
--- Score : 216992 msgs/S, 433984 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.2 (Benchmark, context switch #2, empty ready list)
|
||||
--- Score : 178664 msgs/S, 357328 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.3 (Benchmark, context switch #3, 4 threads in ready list)
|
||||
--- Test Case 10.2 (Benchmark, context switch #2, empty ready list)
|
||||
--- Score : 178663 msgs/S, 357326 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.4 (Benchmark, threads creation/termination, worst case)
|
||||
--- Score : 164735 threads/S
|
||||
--- Test Case 10.3 (Benchmark, context switch #3, 4 threads in ready list)
|
||||
--- Score : 178663 msgs/S, 357326 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.5 (Benchmark, threads creation/termination, optimal)
|
||||
--- Score : 210633 threads/S
|
||||
--- Test Case 10.4 (Benchmark, threads creation/termination, worst case)
|
||||
--- Score : 168598 threads/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.6 (Benchmark, mass reschedulation, 5 threads)
|
||||
--- Test Case 10.5 (Benchmark, threads creation/termination, optimal)
|
||||
--- Score : 216994 threads/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 10.6 (Benchmark, mass reschedulation, 5 threads)
|
||||
--- Score : 55551 reschedulations/S, 333306 ctxswc/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.7 (Benchmark, I/O Queues throughput)
|
||||
--- Test Case 10.7 (Benchmark, I/O Queues throughput)
|
||||
--- Score : 489472 bytes/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.8 (Benchmark, virtual timers set/reset)
|
||||
--- Test Case 10.8 (Benchmark, virtual timers set/reset)
|
||||
--- Score : 647110 timers/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.9 (Benchmark, semaphores wait/signal)
|
||||
--- Test Case 10.9 (Benchmark, semaphores wait/signal)
|
||||
--- Score : 823324 wait+signal/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
--- Test Case 11.10 (Benchmark, mutexes lock/unlock)
|
||||
--- Test Case 10.10 (Benchmark, mutexes lock/unlock)
|
||||
--- Score : 601124 lock+unlock/S
|
||||
--- Result: SUCCESS
|
||||
---------------------------------------------------------------------------
|
||||
|
|
|
@ -42,19 +42,6 @@ void port_halt(void) {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Start a thread by invoking its work function.
|
||||
* If the work function returns @p chThdExit() is automatically invoked.
|
||||
*/
|
||||
/** @cond never */
|
||||
__attribute__((naked, weak))
|
||||
/** @endcond */
|
||||
void threadstart(void) {
|
||||
|
||||
asm volatile ("blx r1 \n\t" \
|
||||
"bl chThdExit");
|
||||
}
|
||||
|
||||
/**
|
||||
* System Timer vector.
|
||||
* This interrupt is used as system tick.
|
||||
|
|
|
@ -155,8 +155,8 @@ struct context {
|
|||
tp->p_ctx.r13->basepri = BASEPRI_USER; \
|
||||
tp->p_ctx.r13->lr_exc = (regarm_t)0xFFFFFFFD; \
|
||||
tp->p_ctx.r13->r0 = arg; \
|
||||
tp->p_ctx.r13->r1 = pf; \
|
||||
tp->p_ctx.r13->pc = threadstart; \
|
||||
tp->p_ctx.r13->lr_thd = chThdExit; \
|
||||
tp->p_ctx.r13->pc = pf; \
|
||||
tp->p_ctx.r13->xpsr = (regarm_t)0x01000000; \
|
||||
}
|
||||
|
||||
|
@ -303,7 +303,6 @@ struct context {
|
|||
extern "C" {
|
||||
#endif
|
||||
void port_halt(void);
|
||||
void threadstart(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -87,6 +87,8 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
|
|||
the macro chSysGetTime() in chTimeNow(), the old names are still recognized
|
||||
but marked as deprecated (fixes the bug 2678953 but goes a bit further by
|
||||
introducing a new API category "Time").
|
||||
- OPT: Small optimization to the Cortex-M3 port code, improved thread
|
||||
related performance scores and smaller code.
|
||||
- Removed testcond.c|h and moved the test cases into testmtx.c. Mutexes and
|
||||
condvars have to be tested together.
|
||||
- Added architecture diagram to the documentation.
|
||||
|
|
Loading…
Reference in New Issue