From 1d6a69b3e68a5d7bd42f1af67c3a924e15c98a2f Mon Sep 17 00:00:00 2001 From: Yuguo Zou Date: Thu, 7 Sep 2017 10:58:45 +0800 Subject: [PATCH 1/5] Update MSP setup Use asm code to set MSP --- .../TOOLCHAIN_ARM_STD/rtl8195a_startup.S | 31 ++++++++++++++++++ .../TOOLCHAIN_GCC_ARM/rtl8195a_startup.S | 32 +++++++++++++++++++ .../device/TOOLCHAIN_IAR/rtl8195a_startup.S | 31 ++++++++++++++++++ .../TARGET_RTL8195A/device/rtl8195a_init.c | 21 ++++-------- 4 files changed, 101 insertions(+), 14 deletions(-) create mode 100644 targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_ARM_STD/rtl8195a_startup.S create mode 100644 targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_GCC_ARM/rtl8195a_startup.S create mode 100644 targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_IAR/rtl8195a_startup.S diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_ARM_STD/rtl8195a_startup.S b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_ARM_STD/rtl8195a_startup.S new file mode 100644 index 00000000000..c184bdff725 --- /dev/null +++ b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_ARM_STD/rtl8195a_startup.S @@ -0,0 +1,31 @@ +; +; Copyright (c) 2017 Realtek Semiconductor Corp. +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. + + PRESERVE8 + THUMB + + AREA |i.PLAT_Start|, CODE, READONLY + +PLAT_Start PROC + + EXPORT PLAT_Start + IMPORT |Image$$ARM_LIB_STACK$$ZI$$Limit| + IMPORT PLAT_Init + LDR SP, =|Image$$ARM_LIB_STACK$$ZI$$Limit| + LDR R0, =PLAT_Init + BX R0 + ENDP + ALIGN + END diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_GCC_ARM/rtl8195a_startup.S b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_GCC_ARM/rtl8195a_startup.S new file mode 100644 index 00000000000..219265a5083 --- /dev/null +++ b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_GCC_ARM/rtl8195a_startup.S @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2017 Realtek Semiconductor Corp. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + .syntax unified + .thumb + + .global __StackTop + .global PLAT_Init + + /* entry point of application image */ + .section .text.PLAT_Start + .weak PLAT_Start + .type PLAT_Start, %function +PLAT_Start: + ldr sp, =__StackTop + ldr r0, =PLAT_Init + bx r0 + .size PLAT_Start, .-PLAT_Start + .end diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_IAR/rtl8195a_startup.S b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_IAR/rtl8195a_startup.S new file mode 100644 index 00000000000..4e00f35c3db --- /dev/null +++ b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_IAR/rtl8195a_startup.S @@ -0,0 +1,31 @@ +; +; Copyright (c) 2017 Realtek Semiconductor Corp. +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. + + MODULE ?cstartup + + SECTION .text:CODE:NOROOT:REORDER(2) + EXTERN CSTACK$$Limit + EXTERN PLAT_Init + + ; Default image 2 entry + THUMB + PUBWEAK PLAT_Start + +PLAT_Start + LDR SP, =CSTACK$$Limit + LDR R0, =PLAT_Init + BX R0 + + END diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c index 9e1faafe2f3..b5aaac4165a 100644 --- a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c +++ b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c @@ -27,7 +27,6 @@ #if defined(__CC_ARM) || \ (defined (__ARMCC_VERSION) && __ARMCC_VERSION >= 6010050) -extern uint32_t Image$$ARM_LIB_STACK$$ZI$$Limit; extern uint8_t Image$$RW_IRAM2$$ZI$$Base[]; extern uint8_t Image$$RW_IRAM2$$ZI$$Limit[]; extern uint8_t Image$$TCM_OVERLAY$$ZI$$Base[]; @@ -40,7 +39,6 @@ extern uint8_t Image$$RW_DRAM2$$ZI$$Limit[]; #define __bss_dtcm_end__ Image$$TCM_OVERLAY$$ZI$$Limit #define __bss_dram_start__ Image$$RW_DRAM2$$ZI$$Base #define __bss_dram_end__ Image$$RW_DRAM2$$ZI$$Limit -#define __stackp Image$$ARM_LIB_STACK$$ZI$$Limit #elif defined (__ICCARM__) @@ -55,7 +53,6 @@ void __iar_data_init_app(void) __bss_start__ = (uint8_t *)__section_begin(".ram.bss"); __bss_end__ = (uint8_t *)__section_end(".ram.bss"); } -#define __stackp CSTACK$$Limit #else @@ -68,12 +65,12 @@ extern uint8_t __bss_dtcm_end__[]; extern uint8_t __bss_dram_start__[]; extern uint8_t __bss_dram_end__[]; -#define __stackp __StackTop #endif extern VECTOR_Func NewVectorTable[]; extern void SystemCoreClockUpdate(void); extern void PLAT_Start(void); +extern void PLAT_Init(void); extern void PLAT_Main(void); IMAGE2_START_RAM_FUN_SECTION @@ -173,16 +170,19 @@ void TRAP_HardFaultHandler_Patch(void) extern _LONG_CALL_ void * __rtl_memset_v1_00(void * m , int c , size_t n); // Image2 Entry Function -void PLAT_Start(void) +void PLAT_Init(void) { uint32_t val; -#if defined (__ICCARM__) - __iar_data_init_app(); + // Overwrite vector table + NewVectorTable[2] = (VECTOR_Func) TRAP_NMIHandler; +#if defined ( __ICCARM__ ) + NewVectorTable[3] = (VECTOR_Func) TRAP_HardFaultHandler_Patch; #endif // Clear RAM BSS #if defined (__ICCARM__) + __iar_data_init_app(); __rtl_memset_v1_00((void *)__bss_start__, 0, __bss_end__ - __bss_start__); #else __rtl_memset_v1_00((void *)__bss_sram_start__, 0, __bss_sram_end__ - __bss_sram_start__); @@ -190,13 +190,6 @@ void PLAT_Start(void) __rtl_memset_v1_00((void *)__bss_dram_start__, 0, __bss_dram_end__ - __bss_dram_start__); #endif - // Set MSP - __set_MSP((uint32_t)&__stackp - 0x100); - // Overwrite vector table - NewVectorTable[2] = (VECTOR_Func) TRAP_NMIHandler; -#if defined ( __ICCARM__ ) - NewVectorTable[3] = (VECTOR_Func) TRAP_HardFaultHandler_Patch; -#endif extern HAL_TIMER_OP_EXT HalTimerOpExt; __rtl_memset_v1_00((void *)&HalTimerOpExt, 0, sizeof(HalTimerOpExt)); From 2642ab321ebce68e62d5462e216c2280affcac18 Mon Sep 17 00:00:00 2001 From: Yuguo Zou Date: Thu, 7 Sep 2017 11:05:06 +0800 Subject: [PATCH 2/5] Update wlan lib to fix debug profile The issue of mutex returning osErrorISR with debug profile is fixed --- .../TOOLCHAIN_ARM_STD/lib_wlan_mbed_arm.ar | Bin 940930 -> 940926 bytes .../TOOLCHAIN_GCC_ARM/lib_wlan_mbed_gcc.a | Bin 6151536 -> 6151596 bytes .../device/TOOLCHAIN_IAR/lib_wlan_mbed_iar.a | Bin 1198572 -> 1198580 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_ARM_STD/lib_wlan_mbed_arm.ar b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_ARM_STD/lib_wlan_mbed_arm.ar index 41d9b5f3aa95a4f3e585780158f51c0c319c42b7..fb75e4a5c70ed3cd2cee8ca31499568b0f59007c 100644 GIT binary patch delta 8145 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 Ki%VVoV*U>V&eAsk delta 8195 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 DoU`cT diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_GCC_ARM/lib_wlan_mbed_gcc.a b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/TOOLCHAIN_GCC_ARM/lib_wlan_mbed_gcc.a index a7786cbbd5b9c77a33ee9b076376a8ad4497d094..b16999a7748ad8ffb71571b3b3184635a1c6abae 100644 GIT binary patch delta 16335 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 delta 15848 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 From 22269ad12c79ad9c39e88db35c2f59ff46543a36 Mon Sep 17 00:00:00 2001 From: Yuguo Zou Date: Thu, 7 Sep 2017 11:07:13 +0800 Subject: [PATCH 3/5] Increase tcpip thread stacksize for REALTEK_RTL8195AM The default stack size is not enough for debug profile (low compiler optimization) --- features/FEATURE_LWIP/lwip-interface/mbed_lib.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/features/FEATURE_LWIP/lwip-interface/mbed_lib.json b/features/FEATURE_LWIP/lwip-interface/mbed_lib.json index ef77cf81069..d1e4feff039 100644 --- a/features/FEATURE_LWIP/lwip-interface/mbed_lib.json +++ b/features/FEATURE_LWIP/lwip-interface/mbed_lib.json @@ -84,5 +84,10 @@ "help": "Thread stack size for PPP", "value": 768 } + }, + "target_overrides": { + "REALTEK_RTL8195AM": { + "tcpip-thread-stacksize": 1600 + } } } From ba3bb7ea3591b6e6291103aa1d600756b2312c08 Mon Sep 17 00:00:00 2001 From: Yuguo Zou Date: Thu, 7 Sep 2017 15:10:08 +0800 Subject: [PATCH 4/5] Remove unused code Clean rtl8195a_init.c a little bit --- .../TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c index b5aaac4165a..462a9b99634 100644 --- a/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c +++ b/targets/TARGET_Realtek/TARGET_AMEBA/TARGET_RTL8195A/device/rtl8195a_init.c @@ -44,7 +44,6 @@ extern uint8_t Image$$RW_DRAM2$$ZI$$Limit[]; #pragma section=".ram.bss" -extern uint32_t CSTACK$$Limit; uint8_t *__bss_start__; uint8_t *__bss_end__; @@ -56,8 +55,6 @@ void __iar_data_init_app(void) #else -extern uint32_t __StackTop; -extern uint32_t __StackLimit; extern uint8_t __bss_sram_start__[]; extern uint8_t __bss_sram_end__[]; extern uint8_t __bss_dtcm_start__[]; @@ -70,7 +67,6 @@ extern uint8_t __bss_dram_end__[]; extern VECTOR_Func NewVectorTable[]; extern void SystemCoreClockUpdate(void); extern void PLAT_Start(void); -extern void PLAT_Init(void); extern void PLAT_Main(void); IMAGE2_START_RAM_FUN_SECTION @@ -190,7 +186,6 @@ void PLAT_Init(void) __rtl_memset_v1_00((void *)__bss_dram_start__, 0, __bss_dram_end__ - __bss_dram_start__); #endif - extern HAL_TIMER_OP_EXT HalTimerOpExt; __rtl_memset_v1_00((void *)&HalTimerOpExt, 0, sizeof(HalTimerOpExt)); __rtl_memset_v1_00((void *)&HalTimerOp, 0, sizeof(HalTimerOp)); From f7bc12626d067eb684b1833813960fdc1d0c02e4 Mon Sep 17 00:00:00 2001 From: Yuguo Zou Date: Fri, 15 Sep 2017 18:53:24 +0800 Subject: [PATCH 5/5] Re-work Rtl8195AM ticker Remove intermediate variances and use uint64 instead; Remove HalTimerIrqEn called in us_ticker.c --- .../TARGET_AMEBA/RTWInterface.cpp | 2 +- .../TARGET_AMEBA/sdk/os/rtx2/rtx2_service.c | 2 +- .../TARGET_Realtek/TARGET_AMEBA/us_ticker.c | 56 ++++++++++--------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/RTWInterface.cpp b/targets/TARGET_Realtek/TARGET_AMEBA/RTWInterface.cpp index 273e3d1a695..4410b92f8d6 100644 --- a/targets/TARGET_Realtek/TARGET_AMEBA/RTWInterface.cpp +++ b/targets/TARGET_Realtek/TARGET_AMEBA/RTWInterface.cpp @@ -28,7 +28,7 @@ #include "osdep_service.h" typedef struct _wifi_scan_hdl { - void *scan_sema; + _sema scan_sema; nsapi_size_t ap_num; nsapi_size_t scan_num; WiFiAccessPoint *ap_details; diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/sdk/os/rtx2/rtx2_service.c b/targets/TARGET_Realtek/TARGET_AMEBA/sdk/os/rtx2/rtx2_service.c index 9876be86e83..f3d91ac100e 100644 --- a/targets/TARGET_Realtek/TARGET_AMEBA/sdk/os/rtx2/rtx2_service.c +++ b/targets/TARGET_Realtek/TARGET_AMEBA/sdk/os/rtx2/rtx2_service.c @@ -548,7 +548,7 @@ _func_exit_; static u32 _rtx2_get_current_time(void) { - return osKernelGetTickCount(); + return osKernelGetSysTimerCount(); } static u32 _rtx2_systime_to_ms(u32 systime) diff --git a/targets/TARGET_Realtek/TARGET_AMEBA/us_ticker.c b/targets/TARGET_Realtek/TARGET_AMEBA/us_ticker.c index 4969b5f84b5..87b5ede9eb5 100644 --- a/targets/TARGET_Realtek/TARGET_AMEBA/us_ticker.c +++ b/targets/TARGET_Realtek/TARGET_AMEBA/us_ticker.c @@ -23,24 +23,33 @@ #define SYS_TIM_ID 1 // the G-Timer ID for System #define APP_TIM_ID 6 // the G-Timer ID for Application +#define TICK_TO_US(x) (uint64_t)(((x)/2) * 61 + ((x)%2) * TIMER_TICK_US) + static int us_ticker_inited = 0; static TIMER_ADAPTER TimerAdapter; extern HAL_TIMER_OP HalTimerOp; extern HAL_TIMER_OP_EXT HalTimerOpExt; -VOID _us_ticker_irq_handler(IN VOID *Data) +VOID _us_ticker_irq_handler(void *Data) { us_ticker_irq_handler(); + HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId); } void us_ticker_init(void) { - if (us_ticker_inited) return; + if (us_ticker_inited){ + return; + } + us_ticker_inited = 1; - + HalTimerOp.HalTimerDis(SYS_TIM_ID); + HalTimerOpExt.HalTimerReLoad(SYS_TIM_ID, 0xFFFFFFFFUL); + HalTimerOp.HalTimerEn(SYS_TIM_ID); + // Initial a G-Timer TimerAdapter.IrqDis = 0; // Enable Irq @ initial TimerAdapter.IrqHandle.IrqFun = (IRQ_FUN) _us_ticker_irq_handler; @@ -52,50 +61,45 @@ void us_ticker_init(void) TimerAdapter.TimerLoadValueUs = 0xFFFFFFFF; TimerAdapter.TimerMode = USER_DEFINED; - HalTimerOp.HalTimerInit((VOID*) &TimerAdapter); + HalTimerOp.HalTimerInit((void *) &TimerAdapter); DBG_TIMER_INFO("%s: Timer_Id=%d\n", __FUNCTION__, APP_TIM_ID); } -uint32_t us_ticker_read() +uint32_t us_ticker_read(void) { uint32_t tick_cnt; - uint32_t ticks_125ms; - uint32_t ticks_remain; - uint64_t us_tick; - + uint64_t tick_us; + + if (!us_ticker_inited) { + us_ticker_init(); + } + tick_cnt = HalTimerOp.HalTimerReadCount(SYS_TIM_ID); - tick_cnt = 0xffffffff - tick_cnt; // it's a down counter - ticks_125ms = tick_cnt/(GTIMER_CLK_HZ/8); //use 125ms as a intermediate unit; - ticks_remain = tick_cnt - (ticks_125ms*(GTIMER_CLK_HZ/8)); //calculate the remainder - us_tick = ticks_125ms * 125000; //change unit to us, 125ms is 125000 us - us_tick += (ticks_remain * 1000000)/GTIMER_CLK_HZ; //also use us as unit + tick_us = TICK_TO_US(0xFFFFFFFFUL - tick_cnt); - return ((uint32_t)us_tick); //return ticker value in micro-seconds (us) + return ((uint32_t)tick_us); //return ticker value in micro-seconds (us) } void us_ticker_set_interrupt(timestamp_t timestamp) { - uint32_t cur_time_us; - uint32_t time_dif; + uint32_t time_cur; + uint32_t time_cnt; HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId); - cur_time_us = us_ticker_read(); - if ((uint32_t)timestamp > cur_time_us) { - time_dif = (uint32_t)timestamp - cur_time_us; + time_cur = us_ticker_read(); + if (timestamp > time_cur + TIMER_TICK_US) { + time_cnt = timestamp - time_cur; } else { HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, 0xffffffff); - HalTimerOpExt.HalTimerIrqEn((u32)TimerAdapter.TimerId); HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId); - NVIC_SetPendingIRQ(TIMER2_7_IRQ); + us_ticker_fire_interrupt(); return; } - TimerAdapter.TimerLoadValueUs = time_dif; - HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, time_dif / TIMER_TICK_US); - HalTimerOpExt.HalTimerIrqEn((u32)TimerAdapter.TimerId); + TimerAdapter.TimerLoadValueUs = time_cnt / TIMER_TICK_US; + HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, TimerAdapter.TimerLoadValueUs); HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId); - } void us_ticker_fire_interrupt(void)