Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Mozi
rt-thread
提交
74f6a0ba
R
rt-thread
项目概览
Mozi
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
0
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,发现更多精彩内容 >>
提交
74f6a0ba
编写于
5月 13, 2021
作者:
G
greedyhao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bluetrum] Fix the cache mechanism
上级
eca044f8
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
46 addition
and
29 deletion
+46
-29
bsp/bluetrum/ab32vg1-ab-prougen/board/board.c
bsp/bluetrum/ab32vg1-ab-prougen/board/board.c
+22
-4
bsp/bluetrum/ab32vg1-ab-prougen/link.lds
bsp/bluetrum/ab32vg1-ab-prougen/link.lds
+8
-12
bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/libhal.a
bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/libhal.a
+0
-0
bsp/bluetrum/libraries/hal_libraries/bmsis/source/startup.S
bsp/bluetrum/libraries/hal_libraries/bmsis/source/startup.S
+16
-13
未找到文件。
bsp/bluetrum/ab32vg1-ab-prougen/board/board.c
浏览文件 @
74f6a0ba
...
...
@@ -19,14 +19,13 @@ void rt_soft_isr(int vector, void *param);
void
cpu_irq_comm
(
void
);
void
set_cpu_irq_comm
(
void
(
*
irq_hook
)(
void
));
void
load_cache
();
void
os_cache_init
(
void
);
void
sys_error_hook
(
uint8_t
err_no
);
typedef
void
(
*
os_cache_setfunc_func
)(
void
*
load_cache_func
,
void
*
io_read
);
typedef
void
(
*
spiflash_init_func
)(
uint8_t
sf_read
,
uint8_t
dummy
);
#define os_cache_setfunc ((os_cache_setfunc_func) 0x84024)
static
struct
rt_mutex
mutex_spiflash
=
{
0
};
static
struct
rt_mutex
mutex_cache
=
{
0
};
extern
volatile
rt_uint8_t
rt_interrupt_nest
;
extern
uint32_t
__heap_start
,
__heap_end
;
...
...
@@ -148,8 +147,9 @@ void rt_hw_us_delay(rt_uint32_t us)
RT_SECTION
(
".irq.cache"
)
void
cache_init
(
void
)
{
os_cache_
setfunc
(
load_cache
,
NULL
);
os_cache_
init
(
);
rt_mutex_init
(
&
mutex_spiflash
,
"flash_mutex"
,
RT_IPC_FLAG_FIFO
);
rt_mutex_init
(
&
mutex_cache
,
"cache_mutex"
,
RT_IPC_FLAG_FIFO
);
}
RT_SECTION
(
".irq.cache"
)
...
...
@@ -170,6 +170,24 @@ void os_spiflash_unlock(void)
}
}
RT_SECTION
(
".irq.cache"
)
void
os_cache_lock
(
void
)
{
// if (rt_thread_self()->stat == RT_THREAD_RUNNING) {
if
((
rt_thread_self
()
!=
RT_NULL
)
&&
(
rt_interrupt_nest
==
0
))
{
rt_mutex_take
(
&
mutex_cache
,
RT_WAITING_FOREVER
);
}
}
RT_SECTION
(
".irq.cache"
)
void
os_cache_unlock
(
void
)
{
// if (rt_thread_self()->stat == RT_THREAD_RUNNING) {
if
((
rt_thread_self
()
!=
RT_NULL
)
&&
(
rt_interrupt_nest
==
0
))
{
rt_mutex_release
(
&
mutex_cache
);
}
}
RT_SECTION
(
".irq.err.str"
)
static
const
char
stack_info
[]
=
"thread sp=0x%x name=%s"
;
...
...
bsp/bluetrum/ab32vg1-ab-prougen/link.lds
浏览文件 @
74f6a0ba
...
...
@@ -43,7 +43,7 @@ SECTIONS
. = ALIGN(4);
PROVIDE(__ctors_start__ = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array))
KEEP (*(.init_array
*
))
PROVIDE(__ctors_end__ = .);
. = ALIGN(4);
...
...
@@ -73,21 +73,17 @@ SECTIONS
.comm __comm_vma : {
. = ALIGN(4);
KEEP(*(.vector))
*(.irq.cache)
*(.irq*)
/*applications**.o (.text .rodata)*/
*hal_libraries*ab32vg1_hal**.o (.text .rodata)
*(.text.unlikely)
*(.text.startup)
*hal_drivers**.o (.rodata)
*audio*drv_sound.o (.rodata)
*system_ab32vgx.o (.rodata)
EXCLUDE_FILE(*lib_a**.o *cp-demangle.o *cp-demangle.o
*src*mem.o *src*memheap.o *dfs**.o *components.o *drivers*sdio**.o *cmd.o *msh_file.o
*drv_sdio.o *drv_wdt.o) *(.rodata.str1.4)
EXCLUDE_FILE(*lib_a**.o *unwind*.o) *(.srodata)
*components*src**.o (.text* .rodata*)
*ab32vg1_hal**.o (.text* .rodata*)
*drv_gpio.o (.text* .rodata*)
*drv_usart.o (.rodata*)
EXCLUDE_FILE(*lib_a**.o *unwind*.o) *(.srodata*)
*(.rela*)
*(.data*)
*(.sdata*)
*(.com_text*)
} > comm AT > flash
.bss (NOLOAD):
...
...
bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/libhal.a
0 → 100644
浏览文件 @
74f6a0ba
文件已添加
bsp/bluetrum/libraries/hal_libraries/bmsis/source/startup.S
浏览文件 @
74f6a0ba
...
...
@@ -9,6 +9,8 @@
.
global
_start
.
section
.
reset
,
"ax"
_start
:
la
tp
,
_tp
la
gp
,
_gp
//
load
comm
la
a0
,
__comm_vma
...
...
@@ -25,7 +27,7 @@ _start:
la
a0
,
__irq_stack_start
//
Stack
清成
0x23
li
a1
,
0x23
la
a2
,
__irq_stack_size
call
memset
call
0x84040
la
ra
,
__irq_stack
lui
a5
,
0x1
sw
zero
,
-
1920
(
a5
)
...
...
@@ -35,7 +37,7 @@ _start:
la
a0
,
__bss_start
li
a1
,
0
la
a2
,
__bss_size
call
memset
call
0x84040
call
cache_init
...
...
@@ -56,32 +58,33 @@ __exception:
.
org
0x40
jal
x0
,
low_prio_irq
mret
.
org
0x80
#define METHOD 1
#if METHOD == 1
addi
sp
,
sp
,
-
6
*
4
lw
a0
,
PICEN
(
zero
)
#
lw
a0
,
PICEN
(
zero
)
lw
a1
,
EPC
(
zero
)
lw
a2
,
EPICCON
(
zero
)
sw
a0
,
3
*
4
(
sp
)
#
sw
a0
,
3
*
4
(
sp
)
sw
a1
,
4
*
4
(
sp
)
sw
a2
,
5
*
4
(
sp
)
andi
a0
,
a0
,
1
sw
a0
,
PICEN
(
zero
)
#
andi
a0
,
a0
,
1
#
sw
a0
,
PICEN
(
zero
)
li
a2
,
0
sw
a2
,
EPICCON
(
zero
)
la
a0
,
0
f
sw
a0
,
EPC
(
zero
)
j
0x84020
j
isr_cache
0
:
sw
a0
,
0
(
sp
)
sw
a1
,
4
(
sp
)
sw
a2
,
8
(
sp
)
lw
a0
,
3
*
4
(
sp
)
#
lw
a0
,
3
*
4
(
sp
)
lw
a1
,
4
*
4
(
sp
)
lw
a2
,
5
*
4
(
sp
)
sw
a0
,
PICEN
(
zero
)
#
sw
a0
,
PICEN
(
zero
)
sw
a1
,
EPC
(
zero
)
sw
a2
,
EPICCON
(
zero
)
...
...
@@ -90,9 +93,6 @@ __exception:
lw
a2
,
8
(
sp
)
addi
sp
,
sp
,
6
*
4
mret
.
align
4
1
:
.
word
0
,
0
j
0x84020
#endif
.
global
cpu_irq_comm
...
...
@@ -102,3 +102,6 @@ cpu_irq_comm:
j
cpu_irq_comm_do
ret
.
global
_tp
.
set
_tp
,
0x84800
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录