Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ihbai
rt-thread
提交
456492e7
R
rt-thread
项目概览
ihbai
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
456492e7
编写于
11月 17, 2021
作者:
H
Huang bo
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加支持中断栈部分代码,修改格式
上级
3639963a
变更
27
展开全部
隐藏空白更改
内联
并排
Showing
27 changed file
with
361 addition
and
5644 deletion
+361
-5644
bsp/ti-c6678/driver/KeyStone_common.c
bsp/ti-c6678/driver/KeyStone_common.c
+0
-4355
bsp/ti-c6678/driver/KeyStone_common.h
bsp/ti-c6678/driver/KeyStone_common.h
+0
-1090
bsp/ti-tms320c6678/.ccsproject
bsp/ti-tms320c6678/.ccsproject
+0
-0
bsp/ti-tms320c6678/.cproject
bsp/ti-tms320c6678/.cproject
+0
-0
bsp/ti-tms320c6678/.project
bsp/ti-tms320c6678/.project
+0
-0
bsp/ti-tms320c6678/.settings/org.eclipse.cdt.codan.core.prefs
...ti-tms320c6678/.settings/org.eclipse.cdt.codan.core.prefs
+0
-0
bsp/ti-tms320c6678/.settings/org.eclipse.cdt.debug.core.prefs
...ti-tms320c6678/.settings/org.eclipse.cdt.debug.core.prefs
+0
-0
bsp/ti-tms320c6678/.settings/org.eclipse.core.resources.prefs
...ti-tms320c6678/.settings/org.eclipse.core.resources.prefs
+0
-0
bsp/ti-tms320c6678/KeyStone.cmd
bsp/ti-tms320c6678/KeyStone.cmd
+0
-0
bsp/ti-tms320c6678/applications/board.c
bsp/ti-tms320c6678/applications/board.c
+10
-13
bsp/ti-tms320c6678/applications/board.h
bsp/ti-tms320c6678/applications/board.h
+0
-0
bsp/ti-tms320c6678/applications/main.c
bsp/ti-tms320c6678/applications/main.c
+80
-0
bsp/ti-tms320c6678/driver/drv_timer.c
bsp/ti-tms320c6678/driver/drv_timer.c
+0
-0
bsp/ti-tms320c6678/driver/drv_timer.h
bsp/ti-tms320c6678/driver/drv_timer.h
+0
-0
bsp/ti-tms320c6678/readme.txt
bsp/ti-tms320c6678/readme.txt
+3
-0
bsp/ti-tms320c6678/rtconfig.h
bsp/ti-tms320c6678/rtconfig.h
+0
-0
bsp/ti-tms320c6678/rtconfig_project.h
bsp/ti-tms320c6678/rtconfig_project.h
+0
-0
libcpu/ti-dsp/c6x/c66xx.h
libcpu/ti-dsp/c6x/c66xx.h
+2
-3
libcpu/ti-dsp/c6x/context.asm
libcpu/ti-dsp/c6x/context.asm
+34
-18
libcpu/ti-dsp/c6x/contextinc.asm
libcpu/ti-dsp/c6x/contextinc.asm
+187
-0
libcpu/ti-dsp/c6x/cpuport.c
libcpu/ti-dsp/c6x/cpuport.c
+1
-29
libcpu/ti-dsp/c6x/interrupt.c
libcpu/ti-dsp/c6x/interrupt.c
+0
-1
libcpu/ti-dsp/c6x/intexc.asm
libcpu/ti-dsp/c6x/intexc.asm
+10
-115
libcpu/ti-dsp/c6x/stack.asm
libcpu/ti-dsp/c6x/stack.asm
+5
-1
libcpu/ti-dsp/c6x/trap.c
libcpu/ti-dsp/c6x/trap.c
+11
-1
libcpu/ti-dsp/c6x/trap.h
libcpu/ti-dsp/c6x/trap.h
+2
-2
libcpu/ti-dsp/c6x/vector.asm
libcpu/ti-dsp/c6x/vector.asm
+16
-16
未找到文件。
bsp/ti-c6678/driver/KeyStone_common.c
已删除
100644 → 0
浏览文件 @
3639963a
此差异已折叠。
点击以展开。
bsp/ti-c6678/driver/KeyStone_common.h
已删除
100644 → 0
浏览文件 @
3639963a
此差异已折叠。
点击以展开。
bsp/ti-c6678/.ccsproject
→
bsp/ti-
tms320
c6678/.ccsproject
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/.cproject
→
bsp/ti-
tms320
c6678/.cproject
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/.project
→
bsp/ti-
tms320
c6678/.project
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/.settings/org.eclipse.cdt.codan.core.prefs
→
bsp/ti-
tms320
c6678/.settings/org.eclipse.cdt.codan.core.prefs
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/.settings/org.eclipse.cdt.debug.core.prefs
→
bsp/ti-
tms320
c6678/.settings/org.eclipse.cdt.debug.core.prefs
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/.settings/org.eclipse.core.resources.prefs
→
bsp/ti-
tms320
c6678/.settings/org.eclipse.core.resources.prefs
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/KeyStone.cmd
→
bsp/ti-
tms320
c6678/KeyStone.cmd
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/applications/board.c
→
bsp/ti-
tms320
c6678/applications/board.c
浏览文件 @
456492e7
...
...
@@ -22,13 +22,13 @@
*/
void
rt_hw_systick_isr
(
void
)
{
/* enter interrupt */
rt_interrupt_enter
();
/* enter interrupt */
rt_interrupt_enter
();
rt_tick_increase
();
rt_tick_increase
();
/* leave interrupt */
rt_interrupt_leave
();
/* leave interrupt */
rt_interrupt_leave
();
}
/**
...
...
@@ -46,15 +46,12 @@ void rt_hw_board_init(void)
rt_trap_init
();
// initial system timer
hw_system_timer_init
();
hw_system_timer_init
();
#ifdef RT_USING_HEAP
/* initialize memory system */
rt_kprintf
(
"heap: 0x%08x - 0x%08x
\n
"
,
RT_HW_HEAP_BEGIN
,
RT_HW_HEAP_END
);
rt_system_heap_init
(
RT_HW_HEAP_BEGIN
,
RT_HW_HEAP_END
);
#endif
// ......
/* initialize memory system */
rt_kprintf
(
"heap: 0x%08x - 0x%08x
\n
"
,
RT_HW_HEAP_BEGIN
,
RT_HW_HEAP_END
);
rt_system_heap_init
(
RT_HW_HEAP_BEGIN
,
RT_HW_HEAP_END
);
hw_system_timer_start
();
hw_system_timer_start
();
}
bsp/ti-c6678/applications/board.h
→
bsp/ti-
tms320
c6678/applications/board.h
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/applications/main.c
→
bsp/ti-
tms320
c6678/applications/main.c
浏览文件 @
456492e7
...
...
@@ -15,19 +15,8 @@
void
rt_init_thread_entry
(
void
*
parameter
)
{
while
(
1
)
{
rt_thread_sleep
(
10
);
}
}
void
rt_my_thread_entry
(
void
*
parameter
)
{
while
(
1
)
{
rt_thread_sleep
(
20
);
}
rt_kprintf
(
"hello rt-thread
\n
"
);
return
0
;
}
int
rt_application_init
(
void
)
...
...
@@ -41,14 +30,6 @@ int rt_application_init(void)
}
else
{
return
-
1
;
}
/******************************************************************/
tid
=
rt_thread_create
(
"mythread"
,
rt_my_thread_entry
,
RT_NULL
,
4096
,
3
,
200
);
if
(
tid
!=
RT_NULL
)
{
rt_thread_startup
(
tid
);
}
else
{
return
-
1
;
}
return
0
;
}
...
...
@@ -58,42 +39,42 @@ int rt_application_init(void)
*/
void
rtthread_startup
(
void
)
{
/* disable interrupt first */
rt_hw_interrupt_disable
();
/* disable interrupt first */
rt_hw_interrupt_disable
();
/* init board */
rt_hw_board_init
();
/* init board */
rt_hw_board_init
();
/* show version */
rt_show_version
();
/* show version */
rt_show_version
();
/* init timer system */
rt_system_timer_init
();
/* init timer system */
rt_system_timer_init
();
/* init scheduler system */
rt_system_scheduler_init
();
/* init scheduler system */
rt_system_scheduler_init
();
/* init application */
rt_application_init
();
/* init application */
rt_application_init
();
/* init timer thread */
rt_system_timer_thread_init
();
/* init timer thread */
rt_system_timer_thread_init
();
/* init idle thread */
rt_thread_idle_init
();
/* init idle thread */
rt_thread_idle_init
();
/* start scheduler */
rt_system_scheduler_start
();
/* start scheduler */
rt_system_scheduler_start
();
/* never reach here */
return
;
/* never reach here */
return
;
}
void
main
(
void
)
{
/* startup RT-Thread RTOS */
rtthread_startup
();
/* startup RT-Thread RTOS */
rtthread_startup
();
for
(
;
;
);
for
(
;
;
);
}
bsp/ti-c6678/driver/drv_timer.c
→
bsp/ti-
tms320
c6678/driver/drv_timer.c
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/driver/drv_timer.h
→
bsp/ti-
tms320
c6678/driver/drv_timer.h
浏览文件 @
456492e7
文件已移动
bsp/ti-tms320c6678/readme.txt
0 → 100644
浏览文件 @
456492e7
本工程使用TI公司编译器CCS5.5进行编译,工程中使用到了TI官方提供的K1_STK_v1.1,
如有需要的请到TI官方论坛自行下载,并将K1_STK_v1.1中的KeyStone_common.c和KeyStone_common.h文件
放置到本工程的driver目录下。
\ No newline at end of file
bsp/ti-c6678/rtconfig.h
→
bsp/ti-
tms320
c6678/rtconfig.h
浏览文件 @
456492e7
文件已移动
bsp/ti-c6678/rtconfig_project.h
→
bsp/ti-
tms320
c6678/rtconfig_project.h
浏览文件 @
456492e7
文件已移动
libcpu/ti-dsp/c6x/c66xx.h
浏览文件 @
456492e7
...
...
@@ -91,14 +91,13 @@ extern cregister volatile unsigned int DNUM; /* Core number */
#define __dint() asm(" DINT")
#define __rint() asm(" RINT")
#define __system_call() asm(" SWE")
#define __enter_idle() asm(" IDLE")
#define __nop() asm(" NOP")
#define __mfence() asm(" MFENCE")
#define __SYSREG(ADDR, TYPE)
(*(volatile TYPE*)(ADDR))
#define __SYSREGA(ADDR, TYPE)
((volatile TYPE*)(ADDR))
#define __SYSREG(ADDR, TYPE) (*(volatile TYPE*)(ADDR))
#define __SYSREGA(ADDR, TYPE) ((volatile TYPE*)(ADDR))
extern
void
rt_hw_enable_exception
(
void
);
...
...
libcpu/ti-dsp/c6x/context.asm
浏览文件 @
456492e7
...
...
@@ -12,12 +12,17 @@
; context switch for C6678 DSP
;-----------------------------------------------------------
.include
"
contextinc.asm
"
;-----------------------------------------------------------
; macro definition
;-----------------------------------------------------------
DP
.set
B14
SP
.set
B15
;-----------------------------------------------------------
; extern variable
;-----------------------------------------------------------
.ref
rt_system_stack_top
;
;-----------------------------------------------------------
;
...
...
@@ -28,7 +33,6 @@ SP .set B15
.global
rt_interrupt_from_thread
.global
rt_interrupt_to_thread
.global
rt_thread_switch_interrupt_flag
;
;-----------------------------------------------------------
;
...
...
@@ -100,18 +104,17 @@ rt_hw_context_switch:
STDW
.D2T2
B13
:
B12
,
*
SP
--
[
1
]
; Store PC:CSR
||
MVC
.S2
TSR
,
B5
MVC
ILC
,
B11
;
MVC
RILC
,
B10
;
MVC
.S2
ILC
,
B11
;
MVC
.S2
RILC
,
B10
;
STDW
.D2T2
B11
:
B10
,
*
SP
--
[
1
]
; Store RILC:ILC
||
MV
.S1X
B5
,
A3
ZERO
A2
;
STDW
.D2T1
A3
:
A2
,
*
SP
--
[
1
]
; Store TSR:stack type
STW
SP
,
*
A4
; Save thread's stack pointer
MV
B4
,
A4
;
B
rt_hw_context_switch_to
NOP
5
MV
B4
,
A4
;
NOP
4
;}
;
...
...
@@ -138,13 +141,13 @@ rt_hw_context_switch_to:
MV
B13
,
B3
; Restore PC
MVC
.S2
B12
,
CS
R
; Restore CSR
LDDW
*++
SP
[
1
],
B11
:
B10
LDDW
*++
SP
[
1
],
B13
:
B12
LDDW
*++
SP
[
1
],
A11
:
A10
LDDW
*++
SP
[
1
],
A13
:
A12
LDDW
*++
SP
[
1
],
A15
:
A14
LDDW
.D2T2
*++
SP
[
1
],
B11
:
B10
LDDW
.D2T2
*++
SP
[
1
],
B13
:
B12
LDDW
.D2T1
*++
SP
[
1
],
A11
:
A10
LDDW
.D2T1
*++
SP
[
1
],
A13
:
A12
LDDW
.D2T1
*++
SP
[
1
],
A15
:
A14
B
B3
; Return to caller
ADDAW
SP
,
2
,
SP
ADDAW
.D2
SP
,
2
,
SP
NOP
4
; Delay slots
_rt_thread_interrupt_stack:
ADDAW
.D1X
SP
,
30
,
A15
...
...
@@ -204,6 +207,7 @@ _rt_thread_interrupt_stack:
; void rt_hw_context_switch_interrupt(rt_uint32_t from, rt_uint32_t to)
; A4 --> from
; B4 --> to
;{
.global
rt_hw_context_switch_interrupt
rt_hw_context_switch_interrupt:
SUB
B15
,
0x8
,
B15
...
...
@@ -285,14 +289,26 @@ rt_interrupt_context_restore:
||
LDDW
.D2T2
*++
SP
[
1
],
B13
:
B12
MV
.D2X
A15
,
SP
||
MVKL
.S1
rt_system_stack_top
,
A15
MVKH
.S1
rt_system_stack_top
,
A15
||
ADDAW
.D1X
SP
,
6
,
A14
STW
.D1T1
A14
,
*
A15
; save system stack pointer
LDDW
.D2T1
*++
SP
[
1
],
A15
:
A14
B
.S2
IRP
; return from interruption
LDDW
.D2T2
*+
SP
[
1
],
SP
:
DP
NOP
4
rt_preempt_context_restore:
ZERO
A12
STW
A12
,
*
A3
; clear rt_thread_switch_interrupt_flag
STW
A12
,
*
A3
; clear rt_thread_switch_interrupt_flag
;
; restore saved registers by system stack
;
REST
ORE_ALL
IRP
,
ITSR
;
; store registers to thread stack
;
THREAD_SAVE_ALL
IRP
,
ITSR
MVKL
rt_interrupt_from_thread
,
A11
MVKH
rt_interrupt_from_thread
,
A11
...
...
@@ -302,10 +318,10 @@ rt_preempt_context_restore:
MVKH
rt_interrupt_to_thread
,
B10
LDW
*
B10
,
B11
NOP
3
STW
SP
,
*
A10
; store sp in preempted tasks's TCB
MV
B11
,
A4
;
B
rt_hw_context_switch_to
NOP
5
STW
SP
,
*
A10
; store sp in preempted tasks's TCB
B
rt_hw_context_switch_to
MV
B11
,
A4
;
NOP
4
;}
.end
...
...
libcpu/ti-dsp/c6x/contextinc.asm
0 → 100644
浏览文件 @
456492e7
;
; Copyright (c) 2021, Shenzhen Academy of Aerospace Technology
;
; SPDX-License-Identifier: Apache-2.0
;
; Change Logs:
; Date Author Notes
; 2021-11-16 Dystopia the first version
;
;-----------------------------------------------------------
; macro definition
;-----------------------------------------------------------
SAVE_ALL
.macro
__rp
,
__tsr
STW
.D2T2
B0
,
*
SP
--
[
2
]
; save original B0
MVKL
.S2
rt_system_stack_top
,
B0
MVKH
.S2
rt_system_stack_top
,
B0
LDW
.D2T2
*
B0
,
B1
; system stack
NOP
3
STW
.D2T2
B1
,
*+
SP
[
1
]
; save original B1
XOR
.D2
SP
,
B1
,
B0
; (SP ^ KSP, check current stack types)
LDW
.D2T2
*+
SP
[
1
],
B1
; restore B0/B1
LDW
.D2T2
*++
SP
[
2
],
B0
SHR
.S2
B0
,
12
,
B0
; 0 if already using system stack
[
B0
]
STDW
.D2T2
SP
:
DP
,
*--
B1
[
1
]
; thread: save thread sp/dp system stack
[
B0
]
MV
.S2
B1
,
SP
; and switch to system stack
||[!
B0
]
STDW
.D2T2
SP
:
DP
,
*--
SP
[
1
]
; kernel: nest interrupt save(not support)
SUBAW
.D2
SP
,
2
,
SP
ADD
.D1X
SP
,
-
8
,
A15
||
STDW
.D2T1
A15
:
A14
,
*
SP
--
[
16
]
; save A15:A14
STDW
.D2T2
B13
:
B12
,
*
SP
--
[
1
]
||
STDW
.D1T1
A13
:
A12
,
*
A15
--
[
1
]
||
MVC
.S2
__rp
,
B13
STDW
.D2T2
B11
:
B10
,
*
SP
--
[
1
]
||
STDW
.D1T1
A11
:
A10
,
*
A15
--
[
1
]
||
MVC
.S2
CS
R
,
B12
STDW
.D2T2
B9
:
B8
,
*
SP
--
[
1
]
||
STDW
.D1T1
A9
:
A8
,
*
A15
--
[
1
]
||
MVC
.S2
RILC
,
B11
STDW
.D2T2
B7
:
B6
,
*
SP
--
[
1
]
||
STDW
.D1T1
A7
:
A6
,
*
A15
--
[
1
]
||
MVC
.S2
ILC
,
B10
STDW
.D2T2
B5
:
B4
,
*
SP
--
[
1
]
||
STDW
.D1T1
A5
:
A4
,
*
A15
--
[
1
]
STDW
.D2T2
B3
:
B2
,
*
SP
--
[
1
]
||
STDW
.D1T1
A3
:
A2
,
*
A15
--
[
1
]
||
MVC
.S2
__tsr
,
B5
STDW
.D2T2
B1
:
B0
,
*
SP
--
[
1
]
||
STDW
.D1T1
A1
:
A0
,
*
A15
--
[
1
]
||
MV
.S1X
B5
,
A5
STDW
.D2T2
B31
:
B30
,
*
SP
--
[
1
]
||
STDW
.D1T1
A31
:
A30
,
*
A15
--
[
1
]
||
MVKL
1
,
A4
STDW
.D2T2
B29
:
B28
,
*
SP
--
[
1
]
||
STDW
.D1T1
A29
:
A28
,
*
A15
--
[
1
]
STDW
.D2T2
B27
:
B26
,
*
SP
--
[
1
]
||
STDW
.D1T1
A27
:
A26
,
*
A15
--
[
1
]
STDW
.D2T2
B25
:
B24
,
*
SP
--
[
1
]
||
STDW
.D1T1
A25
:
A24
,
*
A15
--
[
1
]
STDW
.D2T2
B23
:
B22
,
*
SP
--
[
1
]
||
STDW
.D1T1
A23
:
A22
,
*
A15
--
[
1
]
STDW
.D2T2
B21
:
B20
,
*
SP
--
[
1
]
||
STDW
.D1T1
A21
:
A20
,
*
A15
--
[
1
]
STDW
.D2T2
B19
:
B18
,
*
SP
--
[
1
]
||
STDW
.D1T1
A19
:
A18
,
*
A15
--
[
1
]
STDW
.D2T2
B17
:
B16
,
*
SP
--
[
1
]
||
STDW
.D1T1
A17
:
A16
,
*
A15
--
[
1
]
STDW
.D2T2
B13
:
B12
,
*
SP
--
[
1
]
; save PC and CSR
STDW
.D2T2
B11
:
B10
,
*
SP
--
[
1
]
; save RILC and ILC
STDW
.D2T1
A5
:
A4
,
*
SP
--
[
1
]
; save TSR and orig A4
.endm
REST
ORE_ALL
.macro
__rp
,
__tsr
LDDW
.D2T2
*++
SP
[
1
],
B9
:
B8
; get TSR (B9)
LDDW
.D2T2
*++
SP
[
1
],
B11
:
B10
; get RILC (B11) and ILC (B10)
LDDW
.D2T2
*++
SP
[
1
],
B13
:
B12
; get PC (B13) and CSR (B12)
ADDAW
.D1X
SP
,
30
,
A15
LDDW
.D1T1
*++
A15
[
1
],
A17
:
A16
||
LDDW
.D2T2
*++
SP
[
1
],
B17
:
B16
LDDW
.D1T1
*++
A15
[
1
],
A19
:
A18
||
LDDW
.D2T2
*++
SP
[
1
],
B19
:
B18
LDDW
.D1T1
*++
A15
[
1
],
A21
:
A20
||
LDDW
.D2T2
*++
SP
[
1
],
B21
:
B20
LDDW
.D1T1
*++
A15
[
1
],
A23
:
A22
||
LDDW
.D2T2
*++
SP
[
1
],
B23
:
B22
LDDW
.D1T1
*++
A15
[
1
],
A25
:
A24
||
LDDW
.D2T2
*++
SP
[
1
],
B25
:
B24
LDDW
.D1T1
*++
A15
[
1
],
A27
:
A26
||
LDDW
.D2T2
*++
SP
[
1
],
B27
:
B26
LDDW
.D1T1
*++
A15
[
1
],
A29
:
A28
||
LDDW
.D2T2
*++
SP
[
1
],
B29
:
B28
LDDW
.D1T1
*++
A15
[
1
],
A31
:
A30
||
LDDW
.D2T2
*++
SP
[
1
],
B31
:
B30
LDDW
.D1T1
*++
A15
[
1
],
A1
:
A0
||
LDDW
.D2T2
*++
SP
[
1
],
B1
:
B0
LDDW
.D1T1
*++
A15
[
1
],
A3
:
A2
||
LDDW
.D2T2
*++
SP
[
1
],
B3
:
B2
||
MVC
.S2
B9
,
__tsr
LDDW
.D1T1
*++
A15
[
1
],
A5
:
A4
||
LDDW
.D2T2
*++
SP
[
1
],
B5
:
B4
||
MVC
.S2
B11
,
RILC
LDDW
.D1T1
*++
A15
[
1
],
A7
:
A6
||
LDDW
.D2T2
*++
SP
[
1
],
B7
:
B6
||
MVC
.S2
B10
,
ILC
LDDW
.D1T1
*++
A15
[
1
],
A9
:
A8
||
LDDW
.D2T2
*++
SP
[
1
],
B9
:
B8
||
MVC
.S2
B13
,
__rp
LDDW
.D1T1
*++
A15
[
1
],
A11
:
A10
||
LDDW
.D2T2
*++
SP
[
1
],
B11
:
B10
||
MVC
.S2
B12
,
CS
R
LDDW
.D1T1
*++
A15
[
1
],
A13
:
A12
||
LDDW
.D2T2
*++
SP
[
1
],
B13
:
B12
MV
.D2X
A15
,
SP
||
MVKL
.S1
rt_system_stack_top
,
A15
MVKH
.S1
rt_system_stack_top
,
A15
||
ADDAW
.D1X
SP
,
6
,
A14
STW
.D1T1
A14
,
*
A15
; save system stack pointer
LDDW
.D2T1
*++
SP
[
1
],
A15
:
A14
LDDW
.D2T2
*+
SP
[
1
],
SP
:
DP
NOP
4
.endm
THREAD_SAVE_ALL
.macro
__rp
,
__tsr
STDW
.D2T2
SP
:
DP
,
*--
SP
[
1
]
SUBAW
.D2
SP
,
2
,
SP
ADD
.D1X
SP
,
-
8
,
A15
||
STDW
.D2T1
A15
:
A14
,
*
SP
--
[
16
]
; save A15:A14
STDW
.D2T2
B13
:
B12
,
*
SP
--
[
1
]
||
STDW
.D1T1
A13
:
A12
,
*
A15
--
[
1
]
||
MVC
.S2
__rp
,
B13
STDW
.D2T2
B11
:
B10
,
*
SP
--
[
1
]
||
STDW
.D1T1
A11
:
A10
,
*
A15
--
[
1
]
||
MVC
.S2
CS
R
,
B12
STDW
.D2T2
B9
:
B8
,
*
SP
--
[
1
]
||
STDW
.D1T1
A9
:
A8
,
*
A15
--
[
1
]
||
MVC
.S2
RILC
,
B11
STDW
.D2T2
B7
:
B6
,
*
SP
--
[
1
]
||
STDW
.D1T1
A7
:
A6
,
*
A15
--
[
1
]
||
MVC
.S2
ILC
,
B10
STDW
.D2T2
B5
:
B4
,
*
SP
--
[
1
]
||
STDW
.D1T1
A5
:
A4
,
*
A15
--
[
1
]
STDW
.D2T2
B3
:
B2
,
*
SP
--
[
1
]
||
STDW
.D1T1
A3
:
A2
,
*
A15
--
[
1
]
||
MVC
.S2
__tsr
,
B5
STDW
.D2T2
B1
:
B0
,
*
SP
--
[
1
]
||
STDW
.D1T1
A1
:
A0
,
*
A15
--
[
1
]
||
MV
.S1X
B5
,
A5
STDW
.D2T2
B31
:
B30
,
*
SP
--
[
1
]
||
STDW
.D1T1
A31
:
A30
,
*
A15
--
[
1
]
||
MVKL
1
,
A4
STDW
.D2T2
B29
:
B28
,
*
SP
--
[
1
]
||
STDW
.D1T1
A29
:
A28
,
*
A15
--
[
1
]
STDW
.D2T2
B27
:
B26
,
*
SP
--
[
1
]
||
STDW
.D1T1
A27
:
A26
,
*
A15
--
[
1
]
STDW
.D2T2
B25
:
B24
,
*
SP
--
[
1
]
||
STDW
.D1T1
A25
:
A24
,
*
A15
--
[
1
]
STDW
.D2T2
B23
:
B22
,
*
SP
--
[
1
]
||
STDW
.D1T1
A23
:
A22
,
*
A15
--
[
1
]
STDW
.D2T2
B21
:
B20
,
*
SP
--
[
1
]
||
STDW
.D1T1
A21
:
A20
,
*
A15
--
[
1
]
STDW
.D2T2
B19
:
B18
,
*
SP
--
[
1
]
||
STDW
.D1T1
A19
:
A18
,
*
A15
--
[
1
]
STDW
.D2T2
B17
:
B16
,
*
SP
--
[
1
]
||
STDW
.D1T1
A17
:
A16
,
*
A15
--
[
1
]
STDW
.D2T2
B13
:
B12
,
*
SP
--
[
1
]
; save PC and CSR
STDW
.D2T2
B11
:
B10
,
*
SP
--
[
1
]
; save RILC and ILC
STDW
.D2T1
A5
:
A4
,
*
SP
--
[
1
]
; save TSR and orig A4
.endm
libcpu/ti-dsp/c6x/cpuport.c
浏览文件 @
456492e7
...
...
@@ -27,7 +27,6 @@ RT_WEAK void rt_hw_cpu_shutdown(void)
RT_ASSERT
(
0
);
}
//-----------------------------------------------------------------------------
/*------------ nested_exception_handler() function ---------------------------
* DESCRIPTION: Function handles Nested Exception
...
...
@@ -40,8 +39,6 @@ void nested_exception_handler(void)
{
for
(
;
;
);
}
//-----------------------------------------------------------------------------
/*------------ hw_nmi_handler() function --------------------------------------
* DESCRIPTION: Function handles NMI interrupt
...
...
@@ -53,8 +50,6 @@ void hw_nmi_handler(struct rt_hw_exp_stack_register *regs)
{
for
(
;
;
);
}
//-----------------------------------------------------------------------------
/*------------ hw_bad_handler() function --------------------------------------
* DESCRIPTION: Function handles Bad interrupt
...
...
@@ -66,8 +61,6 @@ void hw_bad_handler(void)
{
for
(
;
;
);
}
//-----------------------------------------------------------------------------
/*------------ hw_int4_handler() function -------------------------------------
* DESCRIPTION: Function handles INT4 interrupt
...
...
@@ -79,8 +72,6 @@ void hw_int4_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int5_handler() function -------------------------------------
* DESCRIPTION: Function handles INT5 interrupt
...
...
@@ -92,8 +83,6 @@ void hw_int5_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int6_handler() function -------------------------------------
* DESCRIPTION: Function handles INT6 interrupt
...
...
@@ -105,8 +94,6 @@ void hw_int6_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int7_handler() function -------------------------------------
* DESCRIPTION: Function handles INT7 interrupt
...
...
@@ -118,8 +105,6 @@ void hw_int7_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int8_handler() function -------------------------------------
* DESCRIPTION: Function handles INT8 interrupt
...
...
@@ -131,8 +116,6 @@ void hw_int8_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int9_handler() function -------------------------------------
* DESCRIPTION: Function handles INT9 interrupt
...
...
@@ -144,8 +127,6 @@ void hw_int9_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int10_handler() function ------------------------------------
* DESCRIPTION: Function handles INT10 interrupt
...
...
@@ -157,8 +138,6 @@ void hw_int10_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int11_handler() function ------------------------------------
* DESCRIPTION: Function handles INT11 interrupt
...
...
@@ -170,8 +149,6 @@ void hw_int11_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int12_handler() function ------------------------------------
* DESCRIPTION: Function handles INT12 interrupt
...
...
@@ -181,9 +158,8 @@ void hw_int11_handler(void)
-----------------------------------------------------------------------------*/
void
hw_int12_handler
(
void
)
{
}
//-----------------------------------------------------------------------------
/*------------ hw_int13_handler() function ------------------------------------
* DESCRIPTION: Function handles INT13 interrupt
...
...
@@ -195,8 +171,6 @@ void hw_int13_handler(void)
{
}
//-----------------------------------------------------------------------------
/*------------------ hw_int14_handler() function ------------------------------
* DESCRIPTION: Function handles INT14 interrupt
...
...
@@ -209,8 +183,6 @@ void hw_int14_handler(void)
extern
void
rt_hw_systick_isr
();
rt_hw_systick_isr
();
}
//-----------------------------------------------------------------------------
/*------------ hw_int15_handler() function ------------------------------------
* DESCRIPTION: Function handles INT15 interrupt
...
...
libcpu/ti-dsp/c6x/interrupt.c
浏览文件 @
456492e7
...
...
@@ -8,7 +8,6 @@
* 2021-11-16 Dystopia the first version
*/
#include "c66xx.h"
#include "interrupt.h"
...
...
libcpu/ti-dsp/c6x/in
ct
.asm
→
libcpu/ti-dsp/c6x/in
texc
.asm
浏览文件 @
456492e7
此差异已折叠。
点击以展开。
libcpu/ti-dsp/c6x/stack.asm
浏览文件 @
456492e7
...
...
@@ -13,7 +13,7 @@
;-----------------------------------------------------------
;-----------------------------------------------------------
;
macro definition
; macro definition
;-----------------------------------------------------------
ADDRESS_MSK
.set
0xFFFFFFF0
...
...
@@ -22,6 +22,10 @@ ADDRESS_MSK .set 0xFFFFFFF0
;
.sect
".text"
;
;-----------------------------------------------------------
;
;
; rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter, rt_uint8_t *stack_addr, void *texit)
; tentry --> A4
...
...
libcpu/ti-dsp/c6x/trap.c
浏览文件 @
456492e7
...
...
@@ -14,8 +14,18 @@
#include <rthw.h>
#include <rtthread.h>
#include <rtdef.h>
#define RT_SYS_STACK_SIZE 4096
rt_uint8_t
rt_system_stack
[
RT_SYS_STACK_SIZE
];
rt_uint8_t
*
rt_system_stack_top
;
void
rt_trap_init
(
void
)
{
rt_system_stack_top
=
&
rt_system_stack
[
RT_SYS_STACK_SIZE
-
1
];
rt_system_stack_top
=
(
rt_uint8_t
*
)
RT_ALIGN_DOWN
((
rt_uint32_t
)
rt_system_stack_top
,
8
);
ack_exception
(
EXCEPT_TYPE_NXF
);
ack_exception
(
EXCEPT_TYPE_EXC
);
ack_exception
(
EXCEPT_TYPE_IXF
);
...
...
@@ -319,7 +329,7 @@ int rt_hw_process_exception(struct rt_hw_exp_stack_register *regs)
int
ie_num
=
9
;
/* default is unknown exception */
while
((
type
=
get_except_type
())
!=
0
)
{
type_num
=
fls
(
type
)
-
1
;
type_num
=
__
fls
(
type
)
-
1
;
switch
(
type_num
)
{
case
EXCEPT_TYPE_NXF
:
/* NMI exception */
...
...
libcpu/ti-dsp/c6x/trap.h
浏览文件 @
456492e7
...
...
@@ -67,8 +67,8 @@ struct rt_exception_info {
#define BKPT_OPCODE 0x56454314
/* illegal opcode */
#define INTC_MEXPMASK __SYSREGA(0x018000e0, unsigned int)
#define __ffs(a)
(_lmbd(1, _bitr(a)))
#define
fls(a)
(!(a) ? 0 : (32 - _lmbd(1, (a))))
#define __ffs(a)
(_lmbd(1, _bitr(a)))
#define
__fls(a)
(!(a) ? 0 : (32 - _lmbd(1, (a))))
void
rt_trap_init
(
void
);
...
...
libcpu/ti-dsp/c6x/vector.asm
浏览文件 @
456492e7
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录