Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
逝缘~
rt-thread
提交
b8a75f8f
R
rt-thread
项目概览
逝缘~
/
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,发现更多精彩内容 >>
未验证
提交
b8a75f8f
编写于
8月 04, 2021
作者:
B
Bernard Xiong
提交者:
GitHub
8月 04, 2021
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4901 from mysterywolf/eth
[stm32][eth] beautify codes
上级
230b7b3b
b339b5cf
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
77 addition
and
39 deletion
+77
-39
bsp/stm32/libraries/HAL_Drivers/drv_eth.c
bsp/stm32/libraries/HAL_Drivers/drv_eth.c
+16
-8
bsp/stm32/libraries/HAL_Drivers/drv_eth.h
bsp/stm32/libraries/HAL_Drivers/drv_eth.h
+4
-8
components/net/lwip-1.4.1/src/lwipopts.h
components/net/lwip-1.4.1/src/lwipopts.h
+7
-0
components/net/lwip-1.4.1/src/netif/ethernetif.c
components/net/lwip-1.4.1/src/netif/ethernetif.c
+4
-4
components/net/lwip-2.0.2/src/lwipopts.h
components/net/lwip-2.0.2/src/lwipopts.h
+9
-2
components/net/lwip-2.0.2/src/netif/ethernetif.c
components/net/lwip-2.0.2/src/netif/ethernetif.c
+4
-4
components/net/lwip-2.0.3/src/lwipopts.h
components/net/lwip-2.0.3/src/lwipopts.h
+9
-2
components/net/lwip-2.0.3/src/netif/ethernetif.c
components/net/lwip-2.0.3/src/netif/ethernetif.c
+4
-4
components/net/lwip-2.1.2/src/lwipopts.h
components/net/lwip-2.1.2/src/lwipopts.h
+9
-2
components/net/lwip-2.1.2/src/netif/ethernetif.c
components/net/lwip-2.1.2/src/netif/ethernetif.c
+4
-4
src/Kconfig
src/Kconfig
+4
-0
src/kservice.c
src/kservice.c
+3
-1
未找到文件。
bsp/stm32/libraries/HAL_Drivers/drv_eth.c
浏览文件 @
b8a75f8f
...
...
@@ -41,9 +41,9 @@ struct rt_stm32_eth
/* interface address info, hw address */
rt_uint8_t
dev_addr
[
MAX_ADDR_LEN
];
/* ETH_Speed */
uint32_t
ETH_Speed
;
rt_
uint32_t
ETH_Speed
;
/* ETH_Duplex_Mode */
uint32_t
ETH_Mode
;
rt_
uint32_t
ETH_Mode
;
};
static
ETH_DMADescTypeDef
*
DMARxDscrTab
,
*
DMATxDscrTab
;
...
...
@@ -167,8 +167,14 @@ static rt_err_t rt_stm32_eth_control(rt_device_t dev, int cmd, void *args)
{
case
NIOCTL_GADDR
:
/* get mac address */
if
(
args
)
rt_memcpy
(
args
,
stm32_eth_device
.
dev_addr
,
6
);
else
return
-
RT_ERROR
;
if
(
args
)
{
SMEMCPY
(
args
,
stm32_eth_device
.
dev_addr
,
6
);
}
else
{
return
-
RT_ERROR
;
}
break
;
default
:
...
...
@@ -214,7 +220,7 @@ rt_err_t rt_stm32_eth_tx(rt_device_t dev, struct pbuf *p)
while
((
byteslefttocopy
+
bufferoffset
)
>
ETH_TX_BUF_SIZE
)
{
/* Copy data to Tx buffer*/
memcpy
((
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
(
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
(
ETH_TX_BUF_SIZE
-
bufferoffset
));
SMEMCPY
((
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
(
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
(
ETH_TX_BUF_SIZE
-
bufferoffset
));
/* Point to next descriptor */
DmaTxDesc
=
(
ETH_DMADescTypeDef
*
)(
DmaTxDesc
->
Buffer2NextDescAddr
);
...
...
@@ -236,7 +242,7 @@ rt_err_t rt_stm32_eth_tx(rt_device_t dev, struct pbuf *p)
}
/* Copy the remaining bytes */
memcpy
((
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
(
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
byteslefttocopy
);
SMEMCPY
((
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
(
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
byteslefttocopy
);
bufferoffset
=
bufferoffset
+
byteslefttocopy
;
framelength
=
framelength
+
byteslefttocopy
;
}
...
...
@@ -327,7 +333,7 @@ struct pbuf *rt_stm32_eth_rx(rt_device_t dev)
while
((
byteslefttocopy
+
bufferoffset
)
>
ETH_RX_BUF_SIZE
)
{
/* Copy data to pbuf */
memcpy
((
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
(
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
(
ETH_RX_BUF_SIZE
-
bufferoffset
));
SMEMCPY
((
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
(
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
(
ETH_RX_BUF_SIZE
-
bufferoffset
));
/* Point to next descriptor */
dmarxdesc
=
(
ETH_DMADescTypeDef
*
)(
dmarxdesc
->
Buffer2NextDescAddr
);
...
...
@@ -338,7 +344,7 @@ struct pbuf *rt_stm32_eth_rx(rt_device_t dev)
bufferoffset
=
0
;
}
/* Copy remaining data in pbuf */
memcpy
((
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
(
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
byteslefttocopy
);
SMEMCPY
((
uint8_t
*
)((
uint8_t
*
)
q
->
payload
+
payloadoffset
),
(
uint8_t
*
)((
uint8_t
*
)
buffer
+
bufferoffset
),
byteslefttocopy
);
bufferoffset
=
bufferoffset
+
byteslefttocopy
;
}
}
...
...
@@ -385,7 +391,9 @@ void HAL_ETH_RxCpltCallback(ETH_HandleTypeDef *heth)
rt_err_t
result
;
result
=
eth_device_ready
(
&
(
stm32_eth_device
.
parent
));
if
(
result
!=
RT_EOK
)
{
LOG_I
(
"RxCpltCallback err = %d"
,
result
);
}
}
void
HAL_ETH_ErrorCallback
(
ETH_HandleTypeDef
*
heth
)
...
...
bsp/stm32/libraries/HAL_Drivers/drv_eth.h
浏览文件 @
b8a75f8f
...
...
@@ -28,13 +28,12 @@
/* The PHY ID one register */
#define PHY_ID1_REG 0x02U
/* The PHY ID two register */
#define PHY_ID2_REG 0x03U
/* The PHY auto-negotiate advertise register */
#define PHY_AUTONEG_ADVERTISE_REG 0x04U
#ifdef PHY_USING_LAN8720A
/* The PHY interrupt source flag register. */
#define PHY_INTERRUPT_FLAG_REG 0x1DU
...
...
@@ -51,9 +50,8 @@
#define PHY_Status_SPEED_10M(sr) ((sr) & PHY_10M_MASK)
#define PHY_Status_SPEED_100M(sr) ((sr) & PHY_100M_MASK)
#define PHY_Status_FULL_DUPLEX(sr) ((sr) & PHY_FULL_DUPLEX_MASK)
#endif
/* PHY_USING_LAN8720A */
#
ifdef PHY_USING_DM9161CEP
#
elif defined(PHY_USING_DM9161CEP)
#define PHY_Status_REG 0x11U
#define PHY_10M_MASK ((1<<12) || (1<<13))
#define PHY_100M_MASK ((1<<14) || (1<<15))
...
...
@@ -69,9 +67,7 @@
#define PHY_LINK_CHANGE_MASK (1<<9)
#define PHY_INT_MASK 0
#endif
/* PHY_USING_DM9161CEP */
#ifdef PHY_USING_DP83848C
#elif defined(PHY_USING_DP83848C)
#define PHY_Status_REG 0x10U
#define PHY_10M_MASK (1<<1)
#define PHY_FULL_DUPLEX_MASK (1<<2)
...
...
@@ -87,6 +83,6 @@
/* The PHY interrupt mask register. */
#define PHY_INTERRUPT_MASK_REG 0x12U
#define PHY_INT_MASK (1<<5)
#endif
/* PHY_USING_DP83848C */
#endif
#endif
/* __DRV_ETH_H__ */
components/net/lwip-1.4.1/src/lwipopts.h
浏览文件 @
b8a75f8f
...
...
@@ -222,6 +222,13 @@
#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT)
/* ---------- Memory options ---------- */
#ifdef RT_USING_ASM_MEMCPY
#define MEMCPY(dst,src,len) rt_memcpy(dst,src,len)
#else
#define MEMCPY(dst,src,len) memcpy(dst,src,len)
#endif
/* RT_USING_ASM_MEMCPY */
#define SMEMCPY(dst,src,len) MEMCPY(dst,src,len)
#define MEM_ALIGNMENT 4
#define MEM_LIBC_MALLOC 1
...
...
components/net/lwip-1.4.1/src/netif/ethernetif.c
浏览文件 @
b8a75f8f
...
...
@@ -201,14 +201,14 @@ int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
rt_memcpy
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
SMEMCPY
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
SMEMCPY
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
lwip_freeaddrinfo
(
res
);
if
(
inet_aton
(
inet_ntoa
(
ina
),
&
target_addr
)
==
0
)
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
SMEMCPY
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
/* new a socket */
if
((
s
=
lwip_socket
(
AF_INET
,
SOCK_RAW
,
IP_PROTO_ICMP
))
<
0
)
...
...
@@ -331,7 +331,7 @@ static int netdev_add(struct netif *lwip_netif)
netdev
->
mtu
=
lwip_netif
->
mtu
;
netdev
->
ops
=
&
lwip_netdev_ops
;
netdev
->
hwaddr_len
=
lwip_netif
->
hwaddr_len
;
rt_memcpy
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
SMEMCPY
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
netdev
->
ip_addr
=
lwip_netif
->
ip_addr
;
netdev
->
gw
=
lwip_netif
->
gw
;
netdev
->
netmask
=
lwip_netif
->
netmask
;
...
...
components/net/lwip-2.0.2/src/lwipopts.h
浏览文件 @
b8a75f8f
...
...
@@ -230,14 +230,21 @@
#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT)
/* ---------- Memory options ---------- */
#ifdef RT_USING_ASM_MEMCPY
#define MEMCPY(dst,src,len) rt_memcpy(dst,src,len)
#else
#define MEMCPY(dst,src,len) memcpy(dst,src,len)
#endif
/* RT_USING_ASM_MEMCPY */
#define SMEMCPY(dst,src,len) MEMCPY(dst,src,len)
#ifdef RT_LWIP_MEM_ALIGNMENT
#define MEM_ALIGNMENT RT_LWIP_MEM_ALIGNMENT
#else
#define MEM_ALIGNMENT 4
#endif
#define MEMP_OVERFLOW_CHECK 1
////
#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 1
////
#define MEMP_OVERFLOW_CHECK 1
#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 1
//#define MEM_LIBC_MALLOC 1
//#define MEM_USE_POOLS 1
//#define MEMP_USE_CUSTOM_POOLS 1
...
...
components/net/lwip-2.0.2/src/netif/ethernetif.c
浏览文件 @
b8a75f8f
...
...
@@ -210,14 +210,14 @@ int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
rt_memcpy
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
SMEMCPY
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
SMEMCPY
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
lwip_freeaddrinfo
(
res
);
if
(
inet_aton
(
inet_ntoa
(
ina
),
&
target_addr
)
==
0
)
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
SMEMCPY
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
/* new a socket */
if
((
s
=
lwip_socket
(
AF_INET
,
SOCK_RAW
,
IP_PROTO_ICMP
))
<
0
)
...
...
@@ -340,7 +340,7 @@ static int netdev_add(struct netif *lwip_netif)
netdev
->
mtu
=
lwip_netif
->
mtu
;
netdev
->
ops
=
&
lwip_netdev_ops
;
netdev
->
hwaddr_len
=
lwip_netif
->
hwaddr_len
;
rt_memcpy
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
SMEMCPY
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
netdev
->
ip_addr
=
lwip_netif
->
ip_addr
;
netdev
->
gw
=
lwip_netif
->
gw
;
netdev
->
netmask
=
lwip_netif
->
netmask
;
...
...
components/net/lwip-2.0.3/src/lwipopts.h
浏览文件 @
b8a75f8f
...
...
@@ -230,14 +230,21 @@
#define LWIP_DBG_TYPES_ON (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT)
/* ---------- Memory options ---------- */
#ifdef RT_USING_ASM_MEMCPY
#define MEMCPY(dst,src,len) rt_memcpy(dst,src,len)
#else
#define MEMCPY(dst,src,len) memcpy(dst,src,len)
#endif
/* RT_USING_ASM_MEMCPY */
#define SMEMCPY(dst,src,len) MEMCPY(dst,src,len)
#ifdef RT_LWIP_MEM_ALIGNMENT
#define MEM_ALIGNMENT RT_LWIP_MEM_ALIGNMENT
#else
#define MEM_ALIGNMENT 4
#endif
#define MEMP_OVERFLOW_CHECK 1
////
#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 1
////
#define MEMP_OVERFLOW_CHECK 1
#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 1
//#define MEM_LIBC_MALLOC 1
//#define MEM_USE_POOLS 1
//#define MEMP_USE_CUSTOM_POOLS 1
...
...
components/net/lwip-2.0.3/src/netif/ethernetif.c
浏览文件 @
b8a75f8f
...
...
@@ -210,14 +210,14 @@ int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
rt_memcpy
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
SMEMCPY
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
SMEMCPY
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
lwip_freeaddrinfo
(
res
);
if
(
inet_aton
(
inet_ntoa
(
ina
),
&
target_addr
)
==
0
)
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
SMEMCPY
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
/* new a socket */
if
((
s
=
lwip_socket
(
AF_INET
,
SOCK_RAW
,
IP_PROTO_ICMP
))
<
0
)
...
...
@@ -340,7 +340,7 @@ static int netdev_add(struct netif *lwip_netif)
netdev
->
mtu
=
lwip_netif
->
mtu
;
netdev
->
ops
=
&
lwip_netdev_ops
;
netdev
->
hwaddr_len
=
lwip_netif
->
hwaddr_len
;
rt_memcpy
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
SMEMCPY
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
netdev
->
ip_addr
=
lwip_netif
->
ip_addr
;
netdev
->
gw
=
lwip_netif
->
gw
;
netdev
->
netmask
=
lwip_netif
->
netmask
;
...
...
components/net/lwip-2.1.2/src/lwipopts.h
浏览文件 @
b8a75f8f
...
...
@@ -242,9 +242,16 @@
#endif
/* ---------- Memory options ---------- */
#ifdef RT_USING_ASM_MEMCPY
#define MEMCPY(dst,src,len) rt_memcpy(dst,src,len)
#else
#define MEMCPY(dst,src,len) memcpy(dst,src,len)
#endif
/* RT_USING_ASM_MEMCPY */
#define SMEMCPY(dst,src,len) MEMCPY(dst,src,len)
#define MEM_ALIGNMENT 4
#define MEMP_OVERFLOW_CHECK 1
////
#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 1
////
#define MEMP_OVERFLOW_CHECK 1
#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 1
//#define MEM_LIBC_MALLOC 1
//#define MEM_USE_POOLS 1
//#define MEMP_USE_CUSTOM_POOLS 1
...
...
components/net/lwip-2.1.2/src/netif/ethernetif.c
浏览文件 @
b8a75f8f
...
...
@@ -208,14 +208,14 @@ int lwip_netdev_ping(struct netdev *netif, const char *host, size_t data_len,
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
rt_memcpy
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
SMEMCPY
(
&
h
,
&
res
->
ai_addr
,
sizeof
(
struct
sockaddr_in
*
));
SMEMCPY
(
&
ina
,
&
h
->
sin_addr
,
sizeof
(
ina
));
lwip_freeaddrinfo
(
res
);
if
(
inet_aton
(
inet_ntoa
(
ina
),
&
target_addr
)
==
0
)
{
return
-
RT_ERROR
;
}
rt_memcpy
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
SMEMCPY
(
&
(
ping_resp
->
ip_addr
),
&
target_addr
,
sizeof
(
ip_addr_t
));
/* new a socket */
if
((
s
=
lwip_socket
(
AF_INET
,
SOCK_RAW
,
IP_PROTO_ICMP
))
<
0
)
...
...
@@ -338,7 +338,7 @@ static int netdev_add(struct netif *lwip_netif)
netdev
->
mtu
=
lwip_netif
->
mtu
;
netdev
->
ops
=
&
lwip_netdev_ops
;
netdev
->
hwaddr_len
=
lwip_netif
->
hwaddr_len
;
rt_memcpy
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
SMEMCPY
(
netdev
->
hwaddr
,
lwip_netif
->
hwaddr
,
lwip_netif
->
hwaddr_len
);
netdev
->
ip_addr
=
lwip_netif
->
ip_addr
;
netdev
->
gw
=
lwip_netif
->
gw
;
netdev
->
netmask
=
lwip_netif
->
netmask
;
...
...
src/Kconfig
浏览文件 @
b8a75f8f
...
...
@@ -131,6 +131,10 @@ config RT_KSERVICE_USING_TINY_SIZE
bool "Enable kservice to use tiny size"
default n
config RT_USING_ASM_MEMCPY
bool
default n
endmenu
menuconfig RT_DEBUG
...
...
src/kservice.c
浏览文件 @
b8a75f8f
...
...
@@ -198,6 +198,7 @@ RT_WEAK void *rt_memset(void *s, int c, rt_ubase_t count)
}
RTM_EXPORT
(
rt_memset
);
#ifndef RT_USING_ASM_MEMCPY
/**
* This function will copy memory content from source address to destination
* address.
...
...
@@ -208,7 +209,7 @@ RTM_EXPORT(rt_memset);
*
* @return the address of destination memory
*/
RT_WEAK
void
*
rt_memcpy
(
void
*
dst
,
const
void
*
src
,
rt_ubase_t
count
)
void
*
rt_memcpy
(
void
*
dst
,
const
void
*
src
,
rt_ubase_t
count
)
{
#ifdef RT_KSERVICE_USING_TINY_SIZE
char
*
tmp
=
(
char
*
)
dst
,
*
s
=
(
char
*
)
src
;
...
...
@@ -280,6 +281,7 @@ RT_WEAK void *rt_memcpy(void *dst, const void *src, rt_ubase_t count)
#endif
/* RT_KSERVICE_USING_TINY_SIZE */
}
RTM_EXPORT
(
rt_memcpy
);
#endif
/* RT_USING_ASM_MEMCPY */
#ifndef RT_KSERVICE_USING_STDLIB
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录