Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
宁楠萍
rt-thread
提交
29d63fe2
R
rt-thread
项目概览
宁楠萍
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
29d63fe2
编写于
1月 22, 2013
作者:
P
prife
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' into simposix
上级
3f3b6b7d
8bbd54dd
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
97 addition
and
279 deletion
+97
-279
components/drivers/include/drivers/mtd_nand.h
components/drivers/include/drivers/mtd_nand.h
+6
-5
components/drivers/usb/usbdevice/core/core.c
components/drivers/usb/usbdevice/core/core.c
+41
-4
components/finsh/cmd.c
components/finsh/cmd.c
+6
-2
components/finsh/finsh.h
components/finsh/finsh.h
+13
-2
components/finsh/finsh_var.c
components/finsh/finsh_var.c
+3
-1
components/finsh/finsh_vm.c
components/finsh/finsh_vm.c
+11
-1
components/libc/newlib/SConscript
components/libc/newlib/SConscript
+8
-1
components/libc/newlib/math.c
components/libc/newlib/math.c
+0
-260
src/timer.c
src/timer.c
+9
-3
未找到文件。
components/drivers/include/drivers/mtd_nand.h
浏览文件 @
29d63fe2
...
...
@@ -25,11 +25,12 @@
struct
rt_mtd_nand_driver_ops
;
#define RT_MTD_NAND_DEVICE(device) ((struct rt_mtd_nand_device*)(device))
#define RT_MTD_EOK 0
#define RT_MTD_EECC 1
#define RT_MTD_EBUSY 2
#define RT_MTD_EIO 3
#define RT_MTD_ENOMEM 4
#define RT_MTD_EOK 0
/* NO error */
#define RT_MTD_EECC 1
/* ECC error */
#define RT_MTD_EBUSY 2
/* hardware busy */
#define RT_MTD_EIO 3
/* generic IO issue */
#define RT_MTD_ENOMEM 4
/* out of memory */
#define RT_MTD_ESRC 5
/* source issue */
struct
rt_mtd_nand_device
{
...
...
components/drivers/usb/usbdevice/core/core.c
浏览文件 @
29d63fe2
...
...
@@ -124,7 +124,7 @@ static rt_err_t _get_string_descriptor(struct udevice* device, ureq_t setup)
}
}
if
(
setup
->
length
==
0xFF
)
if
(
setup
->
length
>
len
)
len
=
str_desc
.
bLength
;
else
len
=
setup
->
length
;
...
...
@@ -355,6 +355,38 @@ static rt_err_t _set_address(struct udevice* device, ureq_t setup)
return
RT_EOK
;
}
/**
* This function will handle standard request to
* interface that defined in class-specifics
*
* @param device the usb device object.
* @param setup the setup request.
*
* @return RT_EOK on successful.
*/
static
rt_err_t
_request_interface
(
struct
udevice
*
device
,
ureq_t
setup
)
{
uintf_t
intf
;
uclass_t
cls
;
rt_err_t
ret
;
/* parameter check */
RT_ASSERT
(
device
!=
RT_NULL
);
RT_ASSERT
(
setup
!=
RT_NULL
);
RT_DEBUG_LOG
(
RT_DEBUG_USB
,
(
"_request_interface
\n
"
));
intf
=
rt_usbd_find_interface
(
device
,
setup
->
index
&
0xFF
,
&
cls
);
if
(
intf
!=
RT_NULL
)
{
ret
=
intf
->
handler
(
device
,
cls
,
setup
);
}
else
ret
=
-
RT_ERROR
;
return
ret
;
}
/**
* This function will handle standard request.
*
...
...
@@ -419,9 +451,14 @@ static rt_err_t _standard_request(struct udevice* device, ureq_t setup)
_set_interface
(
device
,
setup
);
break
;
default:
rt_kprintf
(
"unknown interface request
\n
"
);
dcd_ep_stall
(
device
->
dcd
,
0
);
break
;
if
(
_request_interface
(
device
,
setup
)
!=
RT_EOK
)
{
rt_kprintf
(
"unknown interface request
\n
"
);
dcd_ep_stall
(
device
->
dcd
,
0
);
return
-
RT_ERROR
;
}
else
break
;
}
break
;
case
USB_REQ_TYPE_ENDPOINT
:
...
...
components/finsh/cmd.c
浏览文件 @
29d63fe2
...
...
@@ -623,7 +623,9 @@ long list(void)
rt_kprintf
(
"--Variable List:
\n
"
);
{
struct
finsh_sysvar
*
index
;
for
(
index
=
_sysvar_table_begin
;
index
<
_sysvar_table_end
;
index
++
)
for
(
index
=
_sysvar_table_begin
;
index
<
_sysvar_table_end
;
FINSH_NEXT_SYSVAR
(
index
))
{
#ifdef FINSH_USING_DESCRIPTION
rt_kprintf
(
"%-16s -- %s
\n
"
,
index
->
name
,
index
->
desc
);
...
...
@@ -761,7 +763,9 @@ void list_prefix(char *prefix)
/* checks in system variable */
{
struct
finsh_sysvar
*
index
;
for
(
index
=
_sysvar_table_begin
;
index
<
_sysvar_table_end
;
index
++
)
for
(
index
=
_sysvar_table_begin
;
index
<
_sysvar_table_end
;
FINSH_NEXT_SYSVAR
(
index
))
{
if
(
str_is_prefix
(
prefix
,
index
->
name
)
==
0
)
{
...
...
components/finsh/finsh.h
浏览文件 @
29d63fe2
...
...
@@ -64,8 +64,16 @@ typedef unsigned char u_char;
typedef
unsigned
short
u_short
;
typedef
unsigned
long
u_long
;
#if !defined(__CC_ARM) && !defined(__IAR_SYSTEMS_ICC__) && !defined(__ADSPBLACKFIN__) && !defined(_MSC_VER)
#if !defined(__CC_ARM) && \
!defined(__IAR_SYSTEMS_ICC__) && \
!defined(__ADSPBLACKFIN__) && \
!defined(_MSC_VER)
#if !(defined(__GNUC__) && defined(__x86_64__))
typedef
unsigned
int
size_t
;
#else
#include <stdio.h>
#endif
#ifndef NULL
#define NULL RT_NULL
...
...
@@ -148,11 +156,14 @@ struct finsh_sysvar
void
*
var
;
/* the address of variable */
};
#if defined(_MSC_VER)
#if defined(_MSC_VER)
|| (defined(__GNUC__) && defined(__x86_64__))
struct
finsh_syscall
*
finsh_syscall_next
(
struct
finsh_syscall
*
call
);
struct
finsh_sysvar
*
finsh_sysvar_next
(
struct
finsh_sysvar
*
call
);
#define FINSH_NEXT_SYSCALL(index) index=finsh_syscall_next(index)
#define FINSH_NEXT_SYSVAR(index) index=finsh_sysvar_next(index)
#else
#define FINSH_NEXT_SYSCALL(index) index++
#define FINSH_NEXT_SYSVAR(index) index++
#endif
/* system variable item */
...
...
components/finsh/finsh_var.c
浏览文件 @
29d63fe2
...
...
@@ -121,7 +121,9 @@ struct finsh_sysvar* finsh_sysvar_lookup(const char* name)
struct
finsh_sysvar
*
index
;
struct
finsh_sysvar_item
*
item
;
for
(
index
=
_sysvar_table_begin
;
index
<
_sysvar_table_end
;
index
++
)
for
(
index
=
_sysvar_table_begin
;
index
<
_sysvar_table_end
;
FINSH_NEXT_SYSVAR
(
index
))
{
if
(
strcmp
(
index
->
name
,
name
)
==
0
)
return
index
;
...
...
components/finsh/finsh_vm.c
浏览文件 @
29d63fe2
...
...
@@ -83,7 +83,7 @@ void finsh_syscall_append(const char* name, syscall_func func)
}
#endif
#if
def _MSC_VER
#if
defined(_MSC_VER) || (defined(__GNUC__) && defined(__x86_64__))
struct
finsh_syscall
*
finsh_syscall_next
(
struct
finsh_syscall
*
call
)
{
unsigned
int
*
ptr
;
...
...
@@ -93,6 +93,16 @@ struct finsh_syscall* finsh_syscall_next(struct finsh_syscall* call)
return
(
struct
finsh_syscall
*
)
ptr
;
}
struct
finsh_sysvar
*
finsh_sysvar_next
(
struct
finsh_sysvar
*
call
)
{
unsigned
int
*
ptr
;
ptr
=
(
unsigned
int
*
)
(
call
+
1
);
while
((
*
ptr
==
0
)
&&
((
unsigned
int
*
)
ptr
<
(
unsigned
int
*
)
_sysvar_table_end
))
ptr
++
;
return
(
struct
finsh_sysvar
*
)
ptr
;
}
#endif
struct
finsh_syscall
*
finsh_syscall_lookup
(
const
char
*
name
)
...
...
components/libc/newlib/SConscript
浏览文件 @
29d63fe2
...
...
@@ -11,6 +11,13 @@ cwd = GetCurrentDir()
src
=
Glob
(
'*.c'
)
CPPPATH
=
[
cwd
]
group
=
DefineGroup
(
'newlib'
,
src
,
depend
=
[
'RT_USING_NEWLIB'
],
CPPPATH
=
CPPPATH
)
# link with libm in default.
# libm is a frequently used lib. Newlib is compiled with -ffunction-sections in
# recent GCC tool chains. The linker would just link in the functions that have
# been referenced. So setting this won't result in bigger text size.
LIBS
=
[
'm'
]
group
=
DefineGroup
(
'newlib'
,
src
,
depend
=
[
'RT_USING_NEWLIB'
],
CPPPATH
=
CPPPATH
,
LIBS
=
LIBS
)
Return
(
'group'
)
components/libc/newlib/math.c
已删除
100644 → 0
浏览文件 @
3f3b6b7d
#include <math.h>
/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS CRT
* FILE: lib/crt/math/cos.c
* PURPOSE: Generic C Implementation of cos
* PROGRAMMER: Timo Kreuzer (timo.kreuzer@reactos.org)
*/
#define PRECISION 9
static
double
cos_off_tbl
[]
=
{
0
.
0
,
-
M_PI
/
2
.,
0
,
-
M_PI
/
2
.};
static
double
cos_sign_tbl
[]
=
{
1
,
-
1
,
-
1
,
1
};
static
double
sin_off_tbl
[]
=
{
0
.
0
,
-
M_PI
/
2
.,
0
,
-
M_PI
/
2
.};
static
double
sin_sign_tbl
[]
=
{
1
,
-
1
,
-
1
,
1
};
double
sin
(
double
x
)
{
int
quadrant
;
double
x2
,
result
;
/* Calculate the quadrant */
quadrant
=
x
*
(
2
.
/
M_PI
);
/* Get offset inside quadrant */
x
=
x
-
quadrant
*
(
M_PI
/
2
.);
/* Normalize quadrant to [0..3] */
quadrant
=
(
quadrant
-
1
)
&
0x3
;
/* Fixup value for the generic function */
x
+=
sin_off_tbl
[
quadrant
];
/* Calculate the negative of the square of x */
x2
=
-
(
x
*
x
);
/* This is an unrolled taylor series using <PRECISION> iterations
* Example with 4 iterations:
* result = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8!
* To save multiplications and to keep the precision high, it's performed
* like this:
* result = 1 - x^2 * (1/2! - x^2 * (1/4! - x^2 * (1/6! - x^2 * (1/8!))))
*/
/* Start with 0, compiler will optimize this away */
result
=
0
;
#if (PRECISION >= 10)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
*
15
*
16
*
17
*
18
*
19
*
20
);
result
*=
x2
;
#endif
#if (PRECISION >= 9)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
*
15
*
16
*
17
*
18
);
result
*=
x2
;
#endif
#if (PRECISION >= 8)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
*
15
*
16
);
result
*=
x2
;
#endif
#if (PRECISION >= 7)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
);
result
*=
x2
;
#endif
#if (PRECISION >= 6)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
);
result
*=
x2
;
#endif
#if (PRECISION >= 5)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
);
result
*=
x2
;
#endif
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
);
result
*=
x2
;
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
);
result
*=
x2
;
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
);
result
*=
x2
;
result
+=
1
.
/
(
1
.
*
2
);
result
*=
x2
;
result
+=
1
;
/* Apply correct sign */
result
*=
sin_sign_tbl
[
quadrant
];
return
result
;
}
double
cos
(
double
x
)
{
int
quadrant
;
double
x2
,
result
;
/* Calculate the quadrant */
quadrant
=
x
*
(
2
.
/
M_PI
);
/* Get offset inside quadrant */
x
=
x
-
quadrant
*
(
M_PI
/
2
.);
/* Normalize quadrant to [0..3] */
quadrant
=
quadrant
&
0x3
;
/* Fixup value for the generic function */
x
+=
cos_off_tbl
[
quadrant
];
/* Calculate the negative of the square of x */
x2
=
-
(
x
*
x
);
/* This is an unrolled taylor series using <PRECISION> iterations
* Example with 4 iterations:
* result = 1 - x^2/2! + x^4/4! - x^6/6! + x^8/8!
* To save multiplications and to keep the precision high, it's performed
* like this:
* result = 1 - x^2 * (1/2! - x^2 * (1/4! - x^2 * (1/6! - x^2 * (1/8!))))
*/
/* Start with 0, compiler will optimize this away */
result
=
0
;
#if (PRECISION >= 10)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
*
15
*
16
*
17
*
18
*
19
*
20
);
result
*=
x2
;
#endif
#if (PRECISION >= 9)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
*
15
*
16
*
17
*
18
);
result
*=
x2
;
#endif
#if (PRECISION >= 8)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
*
15
*
16
);
result
*=
x2
;
#endif
#if (PRECISION >= 7)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
*
13
*
14
);
result
*=
x2
;
#endif
#if (PRECISION >= 6)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
*
11
*
12
);
result
*=
x2
;
#endif
#if (PRECISION >= 5)
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
*
9
*
10
);
result
*=
x2
;
#endif
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
*
7
*
8
);
result
*=
x2
;
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
*
5
*
6
);
result
*=
x2
;
result
+=
1
.
/
(
1
.
*
2
*
3
*
4
);
result
*=
x2
;
result
+=
1
.
/
(
1
.
*
2
);
result
*=
x2
;
result
+=
1
;
/* Apply correct sign */
result
*=
cos_sign_tbl
[
quadrant
];
return
result
;
}
static
const
int
N
=
100
;
double
coef
(
int
n
)
{
double
t
;
if
(
n
==
0
)
{
return
0
;
}
t
=
1
.
0
/
n
;
if
(
n
%
2
==
0
)
{
t
=
-
t
;
}
return
t
;
}
double
horner
(
double
x
)
{
double
u
=
coef
(
N
);
int
i
;
for
(
i
=
N
-
1
;
i
>=
0
;
i
--
)
{
u
=
u
*
x
+
coef
(
i
);
}
return
u
;
}
double
sqrt
(
double
b
)
{
double
x
=
1
;
int
step
=
0
;
while
((
x
*
x
-
b
<-
0
.
000000000000001
||
x
*
x
-
b
>
0
.
000000000000001
)
&&
step
<
50
)
{
x
=
(
b
/
x
+
x
)
/
2
.
0
;
step
++
;
}
return
x
;
}
double
ln
(
double
x
)
{
int
i
;
if
(
x
>
1
.
5
)
{
for
(
i
=
0
;
x
>
1
.
25
;
i
++
)
{
x
=
sqrt
(
x
);
}
return
(
1
<<
i
)
*
horner
(
x
-
1
);
}
else
if
(
x
<
0
.
7
&&
x
>
0
)
{
for
(
i
=
0
;
x
<
0
.
7
;
i
++
)
{
x
=
sqrt
(
x
);
}
return
(
1
<<
i
)
*
horner
(
x
-
1
);
}
else
if
(
x
>
0
)
{
return
horner
(
x
-
1
);
}
}
double
exp
(
double
x
)
{
double
sum
=
1
;
int
i
;
for
(
i
=
N
;
i
>
0
;
i
--
)
{
sum
/=
i
;
sum
*=
x
;
sum
+=
1
;
}
return
sum
;
}
double
pow
(
double
m
,
double
n
)
{
return
exp
(
n
*
ln
(
m
));
}
src/timer.c
浏览文件 @
29d63fe2
...
...
@@ -273,12 +273,18 @@ rt_err_t rt_timer_start(rt_timer_t timer)
for
(
n
=
timer_list
->
next
;
n
!=
timer_list
;
n
=
n
->
next
)
{
t
=
rt_list_entry
(
n
,
struct
rt_timer
,
list
);
/*
* It supposes that the new tick shall less than the half duration of
* tick max.
* tick max. And if we have two timers that timeout at the same time,
* it's prefered that the timer inserted early get called early.
*/
if
((
t
->
timeout_tick
-
timer
->
timeout_tick
)
<
RT_TICK_MAX
/
2
)
if
((
t
->
timeout_tick
-
timer
->
timeout_tick
)
==
0
)
{
rt_list_insert_after
(
n
,
&
(
timer
->
list
));
break
;
}
else
if
((
t
->
timeout_tick
-
timer
->
timeout_tick
)
<
RT_TICK_MAX
/
2
)
{
rt_list_insert_before
(
n
,
&
(
timer
->
list
));
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录