新手上路
- 积分
- 34
- 金钱
- 34
- 注册时间
- 2017-11-18
- 在线时间
- 9 小时
|
楼主 |
发表于 2017-11-27 10:08:22
|
显示全部楼层
本帖最后由 wan710 于 2017-11-27 10:12 编辑
说一下这几天遇到的一些问题,留作记录.
1.插入SD卡以后,rt-thread启动时报异常,只要插入SD卡,启动就出这个异常,不插SD卡就没事,SD卡初始化和tshell初始化的之间有什么相互影响之类的猫腻呢?花了一些时间跟踪,找到问题的一些眉目
tshell初始化:
INIT_COMPONENT_EXPORT(finsh_system_init);
SD卡初始化:
INIT_DEVICE_EXPORT(rt_hw_sdcard_init);
都是借助系统components初始化框架完成的,具体不详述, 但是不知道怎么去调整他们之间的初始化顺序,于是不采用上面的方式初始化,自己在application初始化程序里去掉SD卡的初始化程序,将sdcard.c中INIT_DEVICE_EXPORT(rt_hw_sdcard_init);此语句注释掉,在shell.c文件放在finsh_system_init(void)里面去调用rt_hw_sdcard_init,问题竟然解决了。至于根本原因,目前还不得而知。
2. 加入ucgui后rtt的线程被阻塞,经过查找发现
GUI_X_Delay和GUI_Delay阻塞了线程,将函数修改成下面问题解决
void GUI_X_Delay(int ms) {
GUI_TOUCH_Exec();
rt_thread_delay(ms);
}
void GUI_Delay(int Period) {
int EndTime = GUI_GetTime()+Period;
int tRem; /* remaining Time */
GUI_ASSERT_NO_LOCK();
GUI_Exec();
GUI_X_Delay(Period);
}
|
|