完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Step3. 复制原工程的main.c文件中除main函数外的所有代码,粘贴到新工程的main.c文件中#include
|
|
|
|
|
|
|
|
Step5. 把原工程main函数中do{……}while(1);中的所有内容复制,粘贴到新工程main函数taskFxn()任务函数中,替代其原来的内容。并在do语句前加入变量定义int iStatus;。 Step6. 添加平台配置,如下图 |
|
|
|
Step7. 参考原工程添加包含路径 Step8. 参考原工程添加包含库文件 需要注意的是,Step6、Step7、Step8的相关路径应该根据自己的文件夹结构进行设置。 |
|
|
|
Step9.编译工程,出现1个错误和23个警告。 双击警告并不能正确定位错误位置。 错误原因是integer.h中22行枚举类型BOOL的定义与xdcstd.h中对FALSE和TRUE有冲突。 根据错误信息......LibraryThirdPartyfatfssrcinteger.h,找到LibraryThirdPartyfatfssrc文件夹,把其中的3个h文件都复制到新工程目录下。 把Step7中设置的包含路径../../../Library/ThirdParty/fatfs/src删除。 重新编译,依然出现1个错误和23个警告。 双击错误,可定位到integer.h文件的22行。 把integer.h文件22行改为typedef enum {mFALSE = 0, mTRUE} BOOL;,把工程中ff.c文件中的所有FALSE替换成mFALSE,所有TRUE替换成mTRUE。 |
|
|
|
重新编译,注意此时要用Rebuild Project,没有错误,23个警告。
到工程选项中添加一个宏定义ewarm。 重新编译,剩1个警告。这是由于InterruptInit()函数的声明和实体不一致造成的,在前面声明部分加上static即可。 应注意的是,在原工程USB_HOST_MSC中配置了一个宏DMA_MODE,该宏可能是用于控制USB的数据传输方式。因此在新工程中也应定义DMA_MODE,方法和添加ewarm定义相同。 |
|
|
|
Step10.删除DSP中断初始化函数InterruptInit(),因为BIOS启动后会对DSP中断进行初始化。 Step11.注册USB中断函数 USBInterruptInit()的功能是将USB中断映射到硬件中断INT5上,中断ID为SYS_INT_USB0(19),中断函数USB0HostIntHandler ()。 在BIOS中,到cfg文件中进行配置,如下图,配置完成后,将USBInterruptInit()函数删除。 |
|
|
|
Step12.接下来要处理的是DelayTimerSetup()等函数。
这是StarterWare中的函数,所在头文件为delay.h。到StarterWare目录 C:tiC6748_StarterWare_1_20_04_01下找到delay.c文件 (需事先安装StarterWare),将该文件复制到新建的工程中。 查看delay.c文件,可以发现其中的函数,都是直接调用了另外一个名字很像的函数。 delay.h文件所列函数如下图,上面的5个函数分别直接调用了下面的5个函数,即本质上只有5个函数。 在StarterWare目录搜索发现,下面的5个函数的实现是在sysdelay.c中。将sysdelay.c文件复制到新建工程中。 重新编,出现一个错误,将sysdelay.c中的#include "evmC6748.h"语句删除即可。 |
|
|
|
.pcb{margin-right:0}
大神,之所以是大神,就是因为他做了别人没有做的事儿,他才成为大神。今天加班,从早上到现在这一刻,我终于按着你说的移植成功,牛,给你32个赞,拿去,:kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss::kiss:r |
|
|
|
|
|
|
|
后续的开发过程中发现本帖有个问题。 当把读卡器从USB OTG接口拔下时,串口会发送“...disconnect”信息, 但是如果保持读卡器和USB OTG的连接,只拔插SD卡,程序会就会卡死。r |
|
|
|
经仿真跟踪,发现程序卡在了u***hostenum.c文件的USBHCDControlTransfer( )函数,卡在4222行语句:
while((g_sUSBHEP0State[ulIndex].eState != EP0_STATE_IDLE)&&(!IsTimerElapsed())) 硬件问题导致了while中的第一个条件总数成立。 然后就是IsTimerElapsed()函数了,该函数在工程的delay.c文件中。 该函数的返回值跟一个变量flagIsrCnt有关,而该变量被清零,才可能退出上述的while。 搜索文件,发现只有一个地方能将flagIsrCnt清零,那就是TimerIsr( )定时中断函数。 因此我判断,定时中断没有被正常调用。运行测试,发现果真如此。 r |
|
|
|
|
|
|
|
修改第一步:修改定时器的配置。 既然是无法进入定时器中断函数引起的,而在此定时器的作用只是判定超时,改用其他方法,不用中断了。 .cfg文件中,将定时器配置改为下图: 使用定时器1的低32位,周期赋值-1,其实就是0xFFFFFFFF,自动运行,周期性连续运行,中断号-1表示不启用,中断函数也写成null。 r |
|
|
|
修改第二步:修改delay.c中的函数。
先在开头定义两个变量:static volatile unsigned long tickstart, delaytime; StartTimer函数改为: void StartTimer(unsigned int milliSec) { tickstart = TimerCounterGet(SOC_TMR_1_REGS, TMR_TIMER12); delaytime = (unsigned long)milliSec * TMR_PERIOD_LSB32; } 将StopTimer函数内容清空。 IsTimerElapsed函数改为: unsigned int IsTimerElapsed(void) { unsigned long tickcurrent; tickcurrent = TimerCounterGet(SOC_TMR_1_REGS, TMR_TIMER12); if ((tickcurrent - tickstart) > delaytime) { return TRUE; } else { return FALSE; } } 可以将TimerIsr函数删除。 r |
|
|
|
至此,修改完成。
在应用程序中,如果检测到SD卡操作失败,则可通过 USBHMSCDriveClose(g_ulMSCInstance);函数关闭USB MSC设备, 并清除变量iStatus = 0; 然后重新跳到USB MSC的初始化部分执行,程序即可继续运行。r |
|
|
|
|
|
|
|
|
|
|
|
.pcb{margin-right:0}
SysDelayTimerSetup()函数的功能是初始化定时器TMR0_TMR12,即TMR0的低32位,然后将TMR0_TMR12中断映射到硬件中断INT10上,中断号为SYS_INT_T64P0_TINT12 (4),中断函数为TimerIsr()。 Sysdelay()函数的功能是,设置定时时间、启动定时器TMR0_TMR12,并等待直到定时时间到,即实现延时功能。在BIOS下实现时,可直接使用Task_sleep()实现。因此,将Sysdelay()函数改为如下: void Sysdelay(unsigned int milliSec) { Task_sleep(milliSec); } 再在文件头部加#include SysStartTimer()函数用于设定定时时间,并启动定时器TMR0_TMR12。 SysStopTimer()函数用于停止定时器TMR0_TMR12。 SysIsTimerElapsed()函数用于检测定时时间是否已经到。 r |
|
|
|
只有小组成员才能发言,加入小组>>
基于RK3588J的6路MIPI CSI视频采集案例分享,多路视频系统必看!
1211 浏览 0 评论
589 浏览 0 评论
【创龙科技TL570x-EVM开发板试用体验】 GStreamer 功能测评
8560 浏览 8 评论
【创龙科技TL570x-EVM开发板试用体验】创龙TL5708-EVM开发板入手使用体验评测
6575 浏览 0 评论
【创龙TLZ7x-EasyEVM评估板试用连载】+3.环境搭建vmware+ubuntu详细教程(二)
1397 浏览 0 评论
831浏览 0评论
【创龙科技AM64x开发板试用体验】创龙科技AM64x开发板及核心板介绍
827浏览 0评论
【创龙科技AM64x开发板试用体验】创龙科技AM64x开发板--板卡调试软件安装
845浏览 0评论
【创龙科技AM64x开发板试用体验】AM64x开发板开箱测评
835浏览 0评论
求助! 关于使用自制底板插入创龙IMX8MM 核心板无法启动问题
489浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 16:57 , Processed in 1.092771 second(s), Total 115, Slave 95 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号