Commit Graph

652 Commits

Author SHA1 Message Date
bigmagic 3c5329a9b7 mips repair constraint 2020-04-07 14:43:20 +08:00
bigmagic c024e2e485 add ls2k bsp config 2020-04-07 14:39:20 +08:00
bigmagic 990f731b77 fix mips64 some bug 2020-04-07 14:39:12 +08:00
bigmagic 0f26ffa7a2 add ls2k bsp 2020-04-07 14:38:58 +08:00
bigmagic efbb5490d7 add soc timer cntpct 2020-04-03 20:18:18 +08:00
bigmagic e6600dbf10 remove cortex-a53 from libcpu/arm 2020-03-18 14:22:37 +08:00
bigmagic 6416a18554 add cache option api 2020-03-18 14:21:11 +08:00
bigmagic cc95025f05 fix build err 2020-03-02 20:49:27 +08:00
bigmagic ff10eaed9c [bsp/raspi3-64]fix gpio drvier 2020-03-02 20:49:27 +08:00
bigmagic 53211b3c6e replace space to tab 2020-02-26 15:43:23 +08:00
bigmagic 773f7cdf52 [bsp/raspi3-64]add core timer driver 2020-02-26 15:35:07 +08:00
bigmagic b6031497b9 fix execption printf err 2020-02-26 15:35:07 +08:00
bigmagic 2d3ae92075 space instead of table keep the code style 2020-02-21 21:29:06 +08:00
bigmagic 0458f0b798 remove comments in Chinese and keep the code style 2020-02-20 23:00:17 +08:00
bigmagic 0471b6d344 [bsp/raspi3] raspi3 mmu 2020-02-20 23:00:17 +08:00
Bernard Xiong 581dbe4ffa
Merge pull request #3370 from nongxiaoming/master
[libcpu]context-m33:fix label error in context_gcc.S
2020-02-17 12:25:38 +08:00
Bernard Xiong 0dcbe0e0e1
Merge pull request #3379 from DavidLin1577/patch-7
Fixed function spelling mistakes in context_iar.S
2020-02-17 12:09:49 +08:00
David Lin 36d2652f0d
Fixed typo 'threah' and 'swithc' in cpuport.c
Fixed typo:
    threah -> thread
    swithc -> switch
2020-02-17 09:13:17 +08:00
David Lin 7ef85206dd
Fixed function spelling mistakes in context_iar.S
swtich_to_thread -> switch_to_thread
2020-02-16 20:39:50 +08:00
nongxiaoming 607ed93513 [libcpu]context-m33:fix label error in context_gcc.S. 2020-02-11 21:39:35 +08:00
Watson Zeng fe24ae7ca4 [bsp][synopsys] add basic new embarc bsp support
* the initial support of synopsys designware ARC processor
  using embARC_BSP, all synopsys ARC-based boards are
  supported:
  -ARC Software Development Platform
  -ARC EM Starter Kit
  -ARC EM Software Development Platform
  -ARC HS Development Kit
  -ARC IoT Development Kit

* The embARC BSP is a new generation embARC software development
  package.  ​It is designed to be the inter-layer between hardware and
  operating system. ​ BSP could hide the difference of hardware/boards,
  provide a unified interface to upper-layer.

* the initial support of synopsys MWDT toolchain.
  The DesignWare® ARC® MetaWare Development Toolkit builds upon
  a 25-year legacy of industry-leading compiler and debugger products.
  It is a complete solution that contains all the components needed to
  support the development, debugging and tuning of embedded applications
  for the DesignWare ARC processors.

* for detailed board information, pls go embarc.org.

Signed-off-by: Watson Zeng <zhiwei@synopsys.com>
2020-01-16 16:02:00 +08:00
bigmagic f922bf2e31 Add comment information 2020-01-15 16:46:19 +08:00
bigmagic 08f55d9fda add raspi3-32 in bsp 2020-01-15 16:38:22 +08:00
bigmagic fdde8ab198 add raspi2 and raspi3 BSP 2020-01-10 10:38:21 +08:00
Jiaxun Yang 9ef986929c [libcpu] mips: Merge loongson_1 into gs232
Previously Loongson 1B and Loongson 1C have their own libcpu
implemention, but they're almost identical. So we merge them
into gs232 and adapt to new common code.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
2019-12-11 15:24:42 +08:00
Jiaxun Yang 7c66501861 [libcpu] Refine MIPS common code
MIPS common code was highly duplicated, This commit
is a attempt to clean-up and refine these code.

The context and exception handle flow is mostly identical
with Linux, but a notable difference is that when FPU enabled,
we save FP registers in stackframe unconditionally.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
2019-12-11 15:24:04 +08:00
Bernard Xiong a972fcc0b5 [BSP] move libcpu/mips/x1000 to bsp/x1000/cpu 2019-12-11 11:01:40 +08:00
Xiao Lifan 66d1510ac7 convert intentation tabs to spaces 2019-12-09 09:29:12 +08:00
Xiao Lifan 01b27b9e91 [libcpu][c28x]add support for c28x mcu hardware fpu 2019-12-05 21:50:48 +08:00
ZhangTao 80a4912baf 修改了上下文切换退出时的bug,该bug会导致中断被提前打开造成死锁 2019-11-05 10:30:47 +08:00
tangyuxin a16f27d84e [libcpu][cm33] support cortex-m33 2019-10-29 09:45:17 +08:00
ZYH cabdbf5bbf [libcpu][M7]修复cache编译警告
Signed-off-by: ZYH <lymz@foxmail.com>
2019-10-23 15:04:34 +08:00
aozima 525d353403 fixed linker script and stack align issues. 2019-10-22 09:47:41 +08:00
shaojinchun cb07e5fb24 开放spinlock相关函数 2019-09-27 14:38:33 +08:00
tangyuxin 8316646b85 [libcpu][arm] 修复因提前返回,导致sp指针不对称问题 2019-09-19 18:27:07 +08:00
xiaofan 94551979e0 Fix Cortex-M0 Cannot Execute Reboot
Signed-off-by: xiaofan <xfan1024@live.com>
2019-09-07 21:20:46 +08:00
xuzhuoyi a101327d24 [bsp][tms320f28379d] Fix an issue that interrupts are disabled in the thread 2019-08-24 18:42:54 +08:00
liufeilong ab818cda30 参照龙芯1c手册更正看门狗寄存器宏定义 2019-08-21 13:44:55 +08:00
tyustli 49e9d19c82 first version 2019-07-24 17:03:26 +08:00
Zhou Yanjie d45efced1c libcpu: MIPS: 更新版权信息/Update copyright information.
更新版权信息。

Update copyright information.

Signed-off-by: Zhou Yanjie <zhouyanjie@zoho.com>
2019-07-19 21:05:00 +08:00
Zhou Yanjie d6b2f56f15 libcpu: MIPS: 清理代码/Clean up code.
清理内容重复的头文件。

Clean up duplicate header files.

Signed-off-by: Zhou Yanjie <zhouyanjie@zoho.com>
2019-07-19 21:00:34 +08:00
Bernard Xiong ba9dbed372
Merge pull request #2827 from yangjie11/ac6
[libcpu/arm]add __rt_ffs() for armclang in CORTEX M3/4/7
2019-07-05 15:23:57 +08:00
明德无敌赵晓薇 d68220d866 [libcpu][c28x]Add __rt_ffs support
Use a native instruction "Count Sign Bits" to support fast ffs function, then add __rt_ffs support in C28x.
2019-07-03 19:31:54 +08:00
yangjie 31ffc4582c [libcpu/arm]add __rt_ffs() for armclang in CORTEX M3/4/7 2019-07-03 18:47:11 +08:00
Bernard Xiong 38d5c2aa72
Merge pull request #2796 from lymzzyh/cache
修复cortex-a 中cache操作没有 dsb isb
2019-06-19 11:41:05 +08:00
ZYH fc155f8810 fix cortex-a cahce 2019-06-19 10:40:13 +08:00
明德无敌赵晓薇 21d32cdb3a
[libcpu][C28x] Fix bugs of old c28x interrupt api which can not save and restore int status
In C28x DSP, interrupt status are stored in ST1 register. Both INTM and DBGM is used for masking interrupt, while the latter one is used in real-time debug mode. The origin function rudely enable and disable the interrupt without considering the recent interrupt status, which not only may cause  problem in some situation but also is not in conformity with rt-thread design specifications. The new api will fix this bug.
2019-06-18 20:59:00 +08:00
Bernard Xiong 0b4e2a984e
Merge pull request #2731 from jesven/a9-fpu
add cortex-a fpu support
2019-05-29 18:30:44 +08:00
shaojinchun 043611b98a add cortex-a fpu support 2019-05-29 08:40:41 +08:00
HubretXie 36ffdc058b
对CM3,CM4,CM7 自动开启RT_USING_CPU_FFS 2019-05-28 21:30:45 +08:00
neal 257d21c0bd [bsp][at91sam9g45]Fix build bugs which caused by the change of libcpu/arm/arm926/start_gcc.S 2019-05-13 18:36:31 -07:00
Bernard Xiong ec6cb9f260 [BSP][qemu-vexpress-a9] code cleaup for compiling warning. 2019-05-12 15:07:26 +08:00
shaojinchun bcb7fac0d0 fix signals for k210 2019-05-11 09:37:25 +08:00
shaojinchun 6cdfb2ac92 fix signal code 2019-05-11 09:34:26 +08:00
Bernard Xiong d729448f5e [libcpu][arm/cortex-a] Add correct comments. 2019-05-09 08:48:38 +08:00
misonyo 0f33da3f0e [libcpu/cortex-m7]add cache driver 2019-04-27 17:35:46 +08:00
shaojinchun 1e7bd3d8a1 修改lwp支持中arm cortex-a的swi入口函数处理 2019-04-27 13:54:51 +08:00
qz721 61f2a71511 Rename 'platform.h' in 'imx6ul' and 'qemu-vexpress-a9' BSPs.
This filename conflicts with the 'mbedtls' package. They are renamed
in the name of the corresponding chips and included in 'board.h'.
Files that rely on this file should include 'board.h' instead.
2019-04-26 10:50:48 +08:00
Bernard Xiong 41aabf3736
Merge pull request #2573 from xuzhuoyi/tms320f28379d
[bsp][tms320f28379d] Improve finsh support and update README.md
2019-04-14 15:39:37 +08:00
xuzhuoyi 752152b63e [bsp][tms320f28379d] Fix FPU config problem 2019-04-14 12:26:25 +08:00
xuzhuoyi 4acd8db61e [bsp][tms320f28379d] Add finsh init in rt_init_thread 2019-04-10 22:33:25 +08:00
Bernard Xiong 44c3f55996
Merge pull request #2527 from xuzhuoyi/gd32e230
[bsp] Add GD32E230K-START support
2019-04-07 16:59:27 +08:00
Bernard Xiong 238c93468f
Merge pull request #2530 from qz721/libcpu_cortex_a
Disable the data alignment check.
2019-04-01 17:43:19 +08:00
qz721 b10039f396 Disable the data alignment check. 2019-04-01 14:21:59 +08:00
xuzhuoyi fd8eb60a67 [bsp][gd32e230k-start] Update Kconfig 2019-03-31 23:26:35 +08:00
xuzhuoyi 5a460aadcd [bsp][gd32e230k-start] Update Sconscript 2019-03-31 21:17:55 +08:00
xuzhuoyi 5d166c389d [bsp][gd32e230k-start] Add GD32E230K-START BSP port 2019-03-31 15:44:24 +08:00
Bernard Xiong 459ddc3b06
Merge pull request #2523 from qz721/libcpu_cortex_a
Add standard rt-thread cache interfaces for arm/cortex-a.
2019-03-30 05:57:47 +08:00
qz721 fbd40fc5b8 Add standard rt-thread cache interfaces for arm/cortex-a.
Add cache invalidate and clean interfaces.
Adjust the default cache type of memory to 'WriteBach with WriteAllocate'.
2019-03-29 20:22:25 +08:00
ZYH fcb88f7034 [libcpu][k210]fix stack frame print 2019-03-28 17:05:52 +08:00
BernardXiong bd8f0d0423 [libcpu] Fix the build directory issue 2019-03-26 13:36:01 +00:00
Bernard Xiong 94e7f7316b
Merge pull request #2503 from qz721/libcpu_cortex_a
Make 'qemu-vexpress-a9' and 'imx6ul' use the same libcpu code.
2019-03-25 21:58:48 +08:00
qz721 2eb1bef773 Make 'qemu-vexpress-a9' and 'imx6ul' use the same libcpu code. 2019-03-25 20:03:49 +08:00
tangyuxin e6d1537327 移除 SConscript.1 临时文件 2019-03-25 15:18:09 +08:00
ZYH c41bf3120f [libcpu][k210]add stack info printf 2019-03-21 15:10:55 +08:00
ZYH 3dd72f956b [libcpu][k210]add description of exception 2019-03-20 12:23:17 +08:00
shaojinchun 29264edde8 修改arm926中machine.c的协议声明 2019-03-14 17:54:21 +08:00
shaojinchun 159def753f arm926内容整理 2019-03-14 17:24:35 +08:00
Wayne Ren d8aa99a29c [bsp][synopsys] add the support of synopsys arc emsk
* the initial support of synopsys designware arc processor
* the initial support of synospsy ARC EM Starter Kit
* the bsp code is based on embarc which is a common SDK for
all synopsys ARC-based boards
* use "scons --gdb" to debug emsk with em9d configuration
* for detailed board information, pls go embarc.org

Signed-off-by: Wayne Ren <wei.ren@synopsys.com>
2019-01-25 10:29:34 +08:00
Bernard Xiong 3a3c6c51f8 [libcpu] remove cache.h from mips/common folder. 2019-01-07 21:16:05 +08:00
Bernard Xiong 4c0aafb57f [libcpu] Fix the SCoscript issue in cpu/MIPS. 2019-01-07 09:20:30 +08:00
Bernard Xiong bde47018b8 [libcpu] Add SConscript in libcpu. 2019-01-07 06:09:45 +08:00
shaojinchun 86c76b0e8a add k210 SMP support 2018-12-28 09:41:18 +08:00
zhuhongbing fb693418ee add project support for at91sam9260, add support for at91sam9g45 2018-12-26 12:50:52 +08:00
Bernard Xiong 597d71cc03 [bsp][k210] Add get_free_heap_size function.
* Add get_free_heap_size function;
* Increase shell stack for KPU module.
2018-12-23 14:11:25 +08:00
Bernard Xiong 5e0f8cb3aa [libcpu] Add k210 BSP. 2018-12-18 21:01:03 +08:00
Bernard Xiong c72dc1a7e5
Merge pull request #2072 from yufanyufan77/master
添加cpu复位函数
2018-12-15 11:53:17 +08:00
Bernard Xiong 885d99ee9b
[libcpu][risc-v] fix rt_thread_switch_interrupt_flag issue. 2018-12-15 11:47:59 +08:00
Bernard Xiong fd347fdb90
[libcpu][risc-v] fix the rt_thread_switch_interrupt_flag issue 2018-12-15 11:47:10 +08:00
yufanyufan77 b40a8f816b 添加cpu复位函数
RT_WEAK void rt_hw_cpu_reset(void)
2018-12-14 08:58:40 +08:00
Bernard Xiong 08521ceaa5 [libcpu] Fix the E310 compiling issue. 2018-12-08 17:08:52 +08:00
Bernard Xiong c9576c3e53 [BSP] Add RV32M1_VEGA BSP. 2018-12-08 10:44:56 +08:00
Bernard Xiong 36b194aeb6 [BSP] Update Hifive1 BSP with unified RV porting. 2018-12-08 10:42:40 +08:00
Bernard Xiong 2a7d814f77 [libcpu] Add unified RISC-V libcpu porting. 2018-12-08 10:41:38 +08:00
liruncong cea021781e [libcpu/mips/ppc405]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:42 +08:00
liruncong c7a1c1c1db [libcpu/mips/sep6200]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:40 +08:00
liruncong 2502114e34 [libcpu/mips/xburst]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:38 +08:00
liruncong da9bc3d677 [libcpu/mips/x1000]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:35 +08:00
liruncong 33c6a9c795 [libcpu/mips/longson_1c]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:33 +08:00
liruncong 2ce284c4b3 [libcpu/mips/longson_1b]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:26 +08:00
liruncong bef3256db5 [libcpu/arm/ia32]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:05 +08:00
liruncong 849421709b [libcpu/arm/zynq7000]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:43:02 +08:00
liruncong 3e05f24608 [libcpu/arm/sep4020]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:42:54 +08:00
liruncong 46c5c8267a [libcpu/arm/s3c24x0]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:36:48 +08:00
liruncong 96691760dc [libcpu/arm/realview-a8-vmm]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:36:34 +08:00
liruncong 7be87217b5 [libcpu/arm/lpc24xx]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:36:18 +08:00
liruncong 5321f202c4 [libcpu/arm/lpc214x]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:35:58 +08:00
liruncong 8ce36092c5 [libcpu/arm/cortex-r4]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:35:43 +08:00
liruncong cbe07afabe [libcpu/arm/cortex-a]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:35:34 +08:00
liruncong 8200137327 [libcpu/arm/AT9ASAM7X]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:35:17 +08:00
liruncong 2635cc1694 [libcpu/arm/am335x]rt_hw_interrupt_install函数name参数增加const限定 2018-12-05 20:35:02 +08:00
Bernard Xiong 9f477667ab
Merge pull request #1770 from xuzhuoyi/master
添加对 TI C2000 DSP 的移植
2018-11-24 20:35:50 +08:00
xuzhuoyi 6c081947b5 [bsp][tms320f28379d] Classify c28x into ti-dsp 2018-11-24 17:41:55 +08:00
Bernard Xiong 46dae3f35f
Merge branch 'master' into dev-4.0.x 2018-11-20 23:13:45 +08:00
xuzhuoyi 17301e463c [bsp][tms320f28379d] Add support of Kconfig 2018-11-18 12:06:52 +08:00
xuzhuoyi b7a76b5e52 [bsp][tms320f28379d] Change license to Apache-2.0 2018-11-16 20:30:56 +08:00
xuzhuoyi 37db67d94a Merge remote-tracking branch 'upstream/master'
# Conflicts:
#	src/thread.c
2018-11-16 20:09:46 +08:00
Bernard Xiong 00a655ac1c [Kernel] Add ARCH_CPU_STACK_GROWS_UPWARD option 2018-11-11 15:56:02 +08:00
Bernard Xiong 484afe9d2c [Kernel] Add 64bit CPU support. 2018-10-26 06:35:42 +08:00
Bernard Xiong bd731fe1f0 [license] Fix the bad license header for lpc24xx. 2018-10-16 09:18:53 +08:00
Bernard Xiong 7c425408b4 [license] Change the license of libarm to Apache. 2018-10-15 01:35:07 +08:00
Bernard Xiong 1253a1b445
Merge pull request #1812 from liruncong/am335x-mmu
修正am335x中mmu问题
2018-10-10 08:49:18 +08:00
Bernard Xiong 5c91f241bd
Merge pull request #1861 from jg1uaa/master
avoid to conflicting types for 'uint32_t' error.
2018-10-03 23:08:17 +08:00
SASANO Takayoshi 54f23a4293 avoid to conflicting types for 'uint32_t' error.
already uint32_t is defined at components/libc/compilers/minilibc/stdint.h.

there is two ways to solve, using <stdint.h>/uint32_t pair or
<rtthread.h>/rt_uint32_t pair.

I choose former because this code belongs to C compiler, not RT-Thread system.
2018-10-03 21:03:00 +09:00
Bernard Xiong d96027f156 [libcpu] Fix the FPU definition in M4/M7 for ARM Clang 2018-09-25 11:08:58 +08:00
Bernard Xiong ff08faf605 [Kernel] Adjust the copyright information 2018-09-25 11:06:07 +08:00
Bernard Xiong b98a0ba804 [Kernel] Add ARMCC 6.x support. 2018-09-23 12:08:44 +08:00
Bernard Xiong b9e7cf7fa3 [BSP] Enable memory pool for i.MXRT1050-EVK. 2018-09-22 22:22:18 +08:00
liruncong af1044955a 修正am335x中mmu问题
1) mmu_disable_dcache/mmu_enable_dcache等, 应使用rt_cpu_xxx相关函数,否则会跑飞. armcc并没有提供rt_cpu_xxx对应汇编代码,先删除
2) mmu_setmtt抽取为函数mmu_setmtts,并增加RT_WEAK.mmu_setmtts此处作为示例函数.实际用户板子可在bsp中重新实现该函数.可在rt_components_board_init函数前调用rt_hw_mmu_init
2018-09-15 11:37:14 +08:00
liruncong 6d16685011 rt_hw_backtrace中多余括号删除. armclang给出警告 2018-09-10 19:58:28 +08:00
xuzhuoyi 9d8e27e626 [bsp][tms320f28379d] Modify to C28x Compiler Register Conventions 2018-09-03 23:02:16 +08:00
xuzhuoyi 5fd1213e73 [bsp][tms320f28379d] __rt_ffs() problem caused by 16-bit int 2018-09-03 21:39:56 +08:00
xuzhuoyi 697a4495a6 [bsp][tms320f28379d] Add support for upward-growing stack 2018-09-03 00:03:06 +08:00
xuzhuoyi d85981a715 [BSP][tms320f28379d] Add port for tms320f28379d 2018-09-02 18:44:28 +08:00
hichard_ren@yeah.net b46e7f3172 add rt_hw_cpu_reset for cortex-m cpu 2018-08-01 11:57:56 +08:00
aozima d431f4b5f9 [libcpu][comtex-m7] enhancement hard fault exception handler. 2018-07-25 21:39:45 +08:00
aozima 6c39b2d54d [libcpu][comtex-m4] enhancement hard fault exception handler. 2018-07-25 21:39:44 +08:00
aozima a0fe71f78f fixed get sp in HardFault_Handler. close #1646 2018-07-25 21:39:43 +08:00
= 944b0f1c94 fix annotation error 2018-06-13 15:04:31 +08:00
liang yongxiang 7785dc5d01 [libcpu] add c-sky ck802 support 2018-06-11 09:43:39 +08:00
ArdaFu aa08164cb3 [libcpu] Sconscript: fix spell srror. 2018-06-04 14:23:54 +08:00
ArdaFu 099062de78 [tools][building] Add ASFLAGS in DefineGroup. 2018-06-04 14:18:31 +08:00
ArdaFu 7a1f8ee1c4 [libcpu][arm][arm926] Using C header file to define stack and heap size. 2018-06-04 13:34:45 +08:00
liang yongxiang 32c5b2515f [libcpu] add risc-v e310 porting 2018-05-31 14:53:26 +08:00
Bernard Xiong fe691c2ab3
Merge pull request #1484 from TanekLiang/riscv-update
remove hifive1 bsp and risc-v/e310 porting
2018-05-29 16:20:39 +08:00
liang yongxiang 46b9be6038 [libcpu] remove nds32 porting 2018-05-29 12:59:54 +08:00
liang yongxiang 5faae3350c [libcpu] remove libcpu/risc-v 2018-05-29 12:59:13 +08:00
zhuangwei123 330bdf6989 [bsp/ls1cdev]跟上一提交,漏提两个文件 2018-05-12 19:36:08 +08:00
zhuangwei123 9a7caed323 [bsp/ls1cdev]添加自引导特性,添加配置选项
1、添加自引导特性,添加配置选项
2、修复cpuport.c的bug
3、修复ls1c_pin.c不能默认复用的bug
2018-05-12 19:33:32 +08:00
aozima dd1041bb7f [libcpu]: fixed #1196 FPU FPCA issue. 2018-01-31 18:54:11 +08:00