Added wait states to the RAM accesses as specified on the DS.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5643 35acf78f-673a-0410-8e92-d51de3d6d3f4master
parent
406621d200
commit
9bbb4ac554
|
@ -6,7 +6,7 @@ Settings: SYSCLK=150
|
||||||
*** ChibiOS/RT test suite
|
*** ChibiOS/RT test suite
|
||||||
***
|
***
|
||||||
*** Kernel: 2.5.2unstable
|
*** Kernel: 2.5.2unstable
|
||||||
*** Compiled: Apr 29 2013 - 10:23:56
|
*** Compiled: Apr 29 2013 - 11:08:09
|
||||||
*** Compiler: GCC 4.6.3 build on 2013-01-07
|
*** Compiler: GCC 4.6.3 build on 2013-01-07
|
||||||
*** Architecture: Power Architecture
|
*** Architecture: Power Architecture
|
||||||
*** Core Variant: e200z4
|
*** Core Variant: e200z4
|
||||||
|
@ -100,51 +100,51 @@ Settings: SYSCLK=150
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.1 (Benchmark, messages #1)
|
--- Test Case 11.1 (Benchmark, messages #1)
|
||||||
--- Score : 660320 msgs/S, 1320640 ctxswc/S
|
--- Score : 543008 msgs/S, 1086016 ctxswc/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.2 (Benchmark, messages #2)
|
--- Test Case 11.2 (Benchmark, messages #2)
|
||||||
--- Score : 545062 msgs/S, 1090124 ctxswc/S
|
--- Score : 448711 msgs/S, 897422 ctxswc/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.3 (Benchmark, messages #3)
|
--- Test Case 11.3 (Benchmark, messages #3)
|
||||||
--- Score : 545061 msgs/S, 1090122 ctxswc/S
|
--- Score : 448712 msgs/S, 897424 ctxswc/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.4 (Benchmark, context switch)
|
--- Test Case 11.4 (Benchmark, context switch)
|
||||||
--- Score : 1927888 ctxswc/S
|
--- Score : 1547056 ctxswc/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.5 (Benchmark, threads, full cycle)
|
--- Test Case 11.5 (Benchmark, threads, full cycle)
|
||||||
--- Score : 423422 threads/S
|
--- Score : 358539 threads/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.6 (Benchmark, threads, create only)
|
--- Test Case 11.6 (Benchmark, threads, create only)
|
||||||
--- Score : 614312 threads/S
|
--- Score : 518581 threads/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
|
--- Test Case 11.7 (Benchmark, mass reschedule, 5 threads)
|
||||||
--- Score : 168227 reschedules/S, 1009362 ctxswc/S
|
--- Score : 137368 reschedules/S, 824208 ctxswc/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.8 (Benchmark, round robin context switching)
|
--- Test Case 11.8 (Benchmark, round robin context switching)
|
||||||
--- Score : 1153440 ctxswc/S
|
--- Score : 915500 ctxswc/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
|
--- Test Case 11.9 (Benchmark, I/O Queues throughput)
|
||||||
--- Score : 1898864 bytes/S
|
--- Score : 1624592 bytes/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.10 (Benchmark, virtual timers set/reset)
|
--- Test Case 11.10 (Benchmark, virtual timers set/reset)
|
||||||
--- Score : 2238006 timers/S
|
--- Score : 1897166 timers/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
|
--- Test Case 11.11 (Benchmark, semaphores wait/signal)
|
||||||
--- Score : 2968164 wait+signal/S
|
--- Score : 2688244 wait+signal/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
|
--- Test Case 11.12 (Benchmark, mutexes lock/unlock)
|
||||||
--- Score : 2172344 lock+unlock/S
|
--- Score : 1855960 lock+unlock/S
|
||||||
--- Result: SUCCESS
|
--- Result: SUCCESS
|
||||||
----------------------------------------------------------------------------
|
----------------------------------------------------------------------------
|
||||||
--- Test Case 11.13 (Benchmark, RAM footprint)
|
--- Test Case 11.13 (Benchmark, RAM footprint)
|
||||||
|
|
|
@ -53,12 +53,6 @@
|
||||||
void hal_lld_init(void) {
|
void hal_lld_init(void) {
|
||||||
uint32_t n;
|
uint32_t n;
|
||||||
|
|
||||||
/* FLASH wait states and prefetching setup.*/
|
|
||||||
FLASH_A.BIUCR.R = SPC5_FLASH_BIUCR | SPC5_FLASH_WS;
|
|
||||||
FLASH_A.BIUCR2.R = 0;
|
|
||||||
FLASH_B.BIUCR.R = SPC5_FLASH_BIUCR | SPC5_FLASH_WS;
|
|
||||||
FLASH_B.BIUCR2.R = 0;
|
|
||||||
|
|
||||||
/* The SRAM is parked on the load/store port, for some unknown reason it
|
/* The SRAM is parked on the load/store port, for some unknown reason it
|
||||||
is defaulted on the instructions port and this kills performance.*/
|
is defaulted on the instructions port and this kills performance.*/
|
||||||
XBAR.SGPCR2.B.PARK = 1; /* RAM slave on load/store port.*/
|
XBAR.SGPCR2.B.PARK = 1; /* RAM slave on load/store port.*/
|
||||||
|
@ -110,6 +104,13 @@ void hal_lld_init(void) {
|
||||||
*/
|
*/
|
||||||
void spc_clock_init(void) {
|
void spc_clock_init(void) {
|
||||||
|
|
||||||
|
/* Setting up RAM/Flash wait states and the prefetching bits.*/
|
||||||
|
ECSM.MUDCR.R = SPC5_RAM_WS;
|
||||||
|
FLASH_A.BIUCR.R = SPC5_FLASH_BIUCR | SPC5_FLASH_WS;
|
||||||
|
FLASH_A.BIUCR2.R = 0;
|
||||||
|
FLASH_B.BIUCR.R = SPC5_FLASH_BIUCR | SPC5_FLASH_WS;
|
||||||
|
FLASH_B.BIUCR2.R = 0;
|
||||||
|
|
||||||
#if !SPC5_NO_INIT
|
#if !SPC5_NO_INIT
|
||||||
/* PLL activation.*/
|
/* PLL activation.*/
|
||||||
FMPLL.ESYNCR1.B.EMODE = 1; /* Enhanced mode on. */
|
FMPLL.ESYNCR1.B.EMODE = 1; /* Enhanced mode on. */
|
||||||
|
|
|
@ -241,6 +241,15 @@
|
||||||
#define SPC5_FLASH_WS (BIUCR_APC_4 | BIUCR_RWSC_4 | BIUCR_WWSC_3)
|
#define SPC5_FLASH_WS (BIUCR_APC_4 | BIUCR_RWSC_4 | BIUCR_WWSC_3)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief RAM wait states are a function of the system clock.
|
||||||
|
*/
|
||||||
|
#if (SPC5_SYSCLK <= 98000000) || defined(__DOXYGEN__)
|
||||||
|
#define SPC5_RAM_WS 0
|
||||||
|
#else
|
||||||
|
#define SPC5_RAM_WS 0x40000000
|
||||||
|
#endif
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver data structures and types. */
|
/* Driver data structures and types. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
|
@ -111,7 +111,7 @@
|
||||||
*/
|
*/
|
||||||
#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0))
|
#define TLB0_MAS0 (MAS0_TBLMAS_TBL | MAS0_ESEL(0))
|
||||||
#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K)
|
#define TLB0_MAS1 (MAS1_VALID | MAS1_IPROT | MAS1_TSISE_256K)
|
||||||
#define TLB0_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE | MAS2_I)
|
#define TLB0_MAS2 (MAS2_EPN(0x40000000) | MAS2_VLE)
|
||||||
#define TLB0_MAS3 (MAS3_RPN(0x40000000) | \
|
#define TLB0_MAS3 (MAS3_RPN(0x40000000) | \
|
||||||
MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \
|
MAS3_UX | MAS3_SX | MAS3_UW | MAS3_SW | \
|
||||||
MAS3_UR | MAS3_SR)
|
MAS3_UR | MAS3_SR)
|
||||||
|
|
Loading…
Reference in New Issue