【分享】USB_HOST_MSC移植到BIOS详细步骤 - TMS320C6748 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 6380|回复: 29

【分享】USB_HOST_MSC移植到BIOS详细步骤

[复制链接]

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
发表于 2015-6-4 14:31:40 | 显示全部楼层 |阅读模式
Step1.新建BIOS(选择Typical)工程,命名为USB_HOST_MSC_sysbios


我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有29人回答

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近访问 头像模式 列表模式
回复

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:32:10 | 显示全部楼层
Step2. 把原USB_HOST_MSC工程中的main.c文件外的两个c文件复制到
USB_ HOST _MSC_sysbios工程中。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:33:13 | 显示全部楼层
Step3. 复制原工程的main.c文件中除main函数外的所有代码,粘贴到新工程的main.c文件中#include <ti/sysbios/knl/Task.h>语句后面

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:33:54 | 显示全部楼层
Step4.把原工程main函数中do之前的语句复制,粘贴到新工程main函数
System_printf("enter main()\n");语句后面

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:35:00 | 显示全部楼层
本帖最后由 lushidegreen 于 2015-6-4 14:37 编辑

Step5. 把原工程main函数中do{……}while(1);中的所有内容复制,粘贴到新工程main函数taskFxn()任务函数中,替代其原来的内容。并在do语句前加入变量定义int iStatus;。
Step6. 添加平台配置,如下图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:38:07 | 显示全部楼层
本帖最后由 lushidegreen 于 2015-6-4 14:39 编辑

Step7. 参考原工程添加包含路径
Step8. 参考原工程添加包含库文件
需要注意的是,Step6Step7Step8的相关路径应该根据自己的文件夹结构进行设置。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:40:25 | 显示全部楼层
本帖最后由 lushidegreen 于 2015-6-4 14:41 编辑

Step9.编译工程,出现1个错误和23个警告。
双击警告并不能正确定位错误位置。

错误原因是integer.h22行枚举类型BOOL的定义与xdc\std.h中对FALSETRUE有冲突。
根据错误信息..\..\..\Library\ThirdParty\fatfs\src\integer.h,找到Library\ThirdParty\fatfs\src文件夹,把其中的3h文件都复制到新工程目录下。
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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:42:15 | 显示全部楼层
重新编译,注意此时要用Rebuild Project,没有错误,23个警告。
到工程选项中添加一个宏定义ewarm。

重新编译,剩1个警告。这是由于InterruptInit()函数的声明和实体不一致造成的,在前面声明部分加上static即可。
应注意的是,在原工程USB_HOST_MSC中配置了一个宏DMA_MODE,该宏可能是用于控制USB的数据传输方式。因此在新工程中也应定义DMA_MODE,方法和添加ewarm定义相同。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:43:34 | 显示全部楼层
本帖最后由 lushidegreen 于 2015-6-4 14:44 编辑

Step10.删除DSP中断初始化函数InterruptInit(),因为BIOS启动后会对DSP中断进行初始化。
Step11.注册USB中断函数
USBInterruptInit()的功能是将USB中断映射到硬件中断INT5上,中断ID为SYS_INT_USB0(19),中断函数USB0HostIntHandler ()。
在BIOS中,到cfg文件中进行配置,如下图,配置完成后,将USBInterruptInit()函数删除。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

22

主题

122

帖子

1253

积分

金牌会员

Rank: 6Rank: 6

积分
1253
 楼主| 发表于 2015-6-4 14:45:08 | 显示全部楼层
Step12.接下来要处理的是DelayTimerSetup()等函数。
这是StarterWare中的函数,所在头文件为delay.h。到StarterWare目录
C:\ti\C6748_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"语句删除即可。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  回帖提醒

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号-1  

GMT+8, 2018-5-26 14:23 , Processed in 0.335256 second(s), 60 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表