Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
a3ef5f37
R
rt-thread
项目概览
BaiXuePrincess
/
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看板
未验证
提交
a3ef5f37
编写于
6月 04, 2018
作者:
B
Bernard Xiong
提交者:
GitHub
6月 04, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1502 from zheng-chow/master
Fix the SD Card and EMAC issue:
上级
d450f541
ed75173c
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
23 addition
and
3 deletion
+23
-3
bsp/lpc54608-LPCXpresso/drivers/drv_emac.c
bsp/lpc54608-LPCXpresso/drivers/drv_emac.c
+7
-3
bsp/lpc54608-LPCXpresso/drivers/drv_sd.c
bsp/lpc54608-LPCXpresso/drivers/drv_sd.c
+16
-0
未找到文件。
bsp/lpc54608-LPCXpresso/drivers/drv_emac.c
浏览文件 @
a3ef5f37
...
...
@@ -433,6 +433,8 @@ rt_err_t lpc_emac_tx(rt_device_t dev, struct pbuf *p)
enet_handle_t
*
enet_handle
=
&
lpc_emac_device
.
handle
;
ENET_Type
*
enet_base
=
lpc_emac_device
.
base
;
uint8_t
*
data
;
uint16_t
len
;
RT_ASSERT
(
p
!=
NULL
);
RT_ASSERT
(
enet_handle
!=
RT_NULL
);
...
...
@@ -454,11 +456,13 @@ rt_err_t lpc_emac_tx(rt_device_t dev, struct pbuf *p)
}
}
data
=
(
uint8_t
*
)
ENET_ALIGN
(
&
lpc_emac_device
.
RxDataBuff
[
lpc_emac_device
.
txIdx
*
ENET_ALIGN
(
ENET_RXBUFF_SIZE
)]);
pbuf_copy_partial
(
p
,
data
,
p
->
tot_len
,
0
);
// fix RxDataBuff -> TxDataBuff, ENET_RXBUFF_SIZE -> ENET_TXBUFF_SIZE
data
=
(
uint8_t
*
)
ENET_ALIGN
(
&
lpc_emac_device
.
TxDataBuff
[
lpc_emac_device
.
txIdx
*
ENET_ALIGN
(
ENET_TXBUFF_SIZE
)]);
len
=
pbuf_copy_partial
(
p
,
data
,
p
->
tot_len
,
0
);
lpc_emac_device
.
txIdx
=
(
lpc_emac_device
.
txIdx
+
1
)
/
ENET_TXBD_NUM
;
result
=
ENET_SendFrame
(
enet_base
,
enet_handle
,
data
,
p
->
len
);
// fix 'p->len' to 'len', avoid send wrong partial packet.
result
=
ENET_SendFrame
(
enet_base
,
enet_handle
,
data
,
len
);
if
((
result
==
kStatus_ENET_TxFrameFail
)
||
(
result
==
kStatus_ENET_TxFrameOverLen
)
||
(
result
==
kStatus_ENET_TxFrameBusy
))
{
...
...
bsp/lpc54608-LPCXpresso/drivers/drv_sd.c
浏览文件 @
a3ef5f37
...
...
@@ -407,6 +407,22 @@ rt_err_t mci_hw_init(const char *device_name)
rt_kprintf
(
"SD_Init failed!
\n
"
);
return
-
RT_ERROR
;
}
/*
follow the page: https://community.nxp.com/thread/454769
The issue concerns sdmmc library bug (I finally solved) in SD_Init() in the file sdmmc/src/fsl_sd.c:SD_SelectBusTiming()
calls SD_SwitchFunction() which sets block size to 64bytes (512bits).Therefore SD_SetBlockSize(card, FSL_SDMMC_DEFAULT_BLOCK_SIZE)
should be called again before SD_Init() exits.
*/
if
(
kStatus_Success
!=
SDMMC_SetBlockSize
(
_mci_device
->
card
.
host
.
base
,
_mci_device
->
card
.
host
.
transfer
,
FSL_SDMMC_DEFAULT_BLOCK_SIZE
))
{
SD_Deinit
(
&
_mci_device
->
card
);
memset
(
&
_mci_device
->
card
,
0U
,
sizeof
(
_mci_device
->
card
));
rt_kprintf
(
"SD_Init failed!
\n
"
);
return
-
RT_ERROR
;
}
/* initialize mutex lock */
rt_mutex_init
(
&
_mci_device
->
lock
,
device_name
,
RT_IPC_FLAG_FIFO
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录