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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

楼主: lushidegreen

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

[复制链接]

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-2 15:32:21 | 显示全部楼层
希望缄默 发表于 2015-6-2 15:29
谢谢分享~
不过我觉得单单这些步骤应该还不够吧

不知道怎么在帖子中间插入图片,所以只能分步上传。
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-2 15:33:18 | 显示全部楼层
本帖最后由 lushidegreen 于 2015-6-2 15:36 编辑

12.接下来要处理的是DelayTimerSetup()函数。
该函数是StarterWare中的函数,所在头文件为delay.h。到StarterWare目录
C:\ti\C6748_StarterWare_1_20_04_01下找到delay.c文件 (需事先安装StarterWare),将该文件复制到新建的工程中。
查看delay.c文件,可以发现其中的函数,都是直接调用了另外一个名字很像的函数。
delay.h文件所列函数如下图,上面的5个函数分别直接调用了下面的5个函数,即本质上只有5个函数。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-2 15:36:29 | 显示全部楼层
在StarterWare目录搜索发现,下面的5个函数的实现是在sysdelay.c中。将sysdelay.c文件复制到新建工程中。
重新编,出现一个错误,将sysdelay.c中的#include "evmC6748.h"语句删除即可。

事实上,DelayTimerSetup()函数的功能是初始化定时器TMR0_TMR12,即TMR0的低32位,
然后利用定时器实现比较准确的delay()延时函数,单位是ms。
在BIOS下实现时,可直接使用Task_sleep()实现。因此,将Sysdelay()函数改为如下:
void Sysdelay(unsigned int milliSec)
{
        Task_sleep(milliSec);
        flagIsrCnt = 1;
}
然后main函数中的DelayTimerSetup()函数删除。
重新编译,出现一个警告。
在sysdelay.c中添加#include <ti/sysbios/knl/Task.h>即可解决。
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-2 15:36:51 | 显示全部楼层
本帖最后由 lushidegreen 于 2015-6-2 15:39 编辑

13.接下来的3个语句
    SystickConfigure(SysTickHandler);
    SystickPeriodSet(10);
SystickEnable();
作用是用定时器驱动SysTickHandler()函数,每10毫秒执行一次。
这3个函数的实现在systick.c中,
跟上一步骤的一样,下图中前面4个函数,直接调用了后面4个函数,即本质上只有4个函数。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-2 15:39:38 | 显示全部楼层
本帖最后由 lushidegreen 于 2015-6-2 15:45 编辑

后面4个函数的实现是在timertick.c中。
到StarterWare目录搜索,找到systick.c和timertick.c,复制到新建的工程下。
重新编译,出现一个错误。
将systick.c中的#include "evmC6748.h"语句删除。
至此还未完成上述3个函数的功能实现。

查看它们的代码,可发现要实现的功能是将TMR0_TMR34,即TMR0高32位定时器初始化为10ms定时功能。由于BIOS系统占用了TMR0,因此可改用TMR1来实现。
到cfg文件配置,如下图:

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-2 15:45:21 | 显示全部楼层
配置完成后,屏蔽前面说的3个语句。
重新编译程序,没有错误和警告。
其实,systick.c和timertick.c两个文件并没有使用到,可以从工程中删除。前面把它们添加进来只是为了查看其中的代码,了解SystickConfigure(),   SystickPeriodSet(),SystickEnable()这3个函数的作用。

将程序下载到TL6748开发板,其运行结果和裸奔的USB_DEV_MSC是一样的。

至此,USB_DEV_MSC例程成功移植到SYS/BIOS下。

点评

应该给你点奖励 O(∩_∩)O哈哈~  详情 回复 发表于 2015-6-2 16:59
很好~ 不过你在用的时候中断部分有没有遇到什么问题呢? 在 USB 库中调用了 StarterWare 的中断配置函数  详情 回复 发表于 2015-6-2 16:58
回复 支持 反对

使用道具 举报

15

主题

1356

帖子

4562

积分

广州创龙

Rank: 8Rank: 8

积分
4562
发表于 2015-6-2 16:58:42 | 显示全部楼层
lushidegreen 发表于 2015-6-2 15:45
配置完成后,屏蔽前面说的3个语句。
重新编译程序,没有错误和警告。
其实,systick.c和timertick.c两个文 ...

很好~ 不过你在用的时候中断部分有没有遇到什么问题呢?
在 USB 库中调用了 StarterWare 的中断配置函数
回复 支持 反对

使用道具 举报

15

主题

1356

帖子

4562

积分

广州创龙

Rank: 8Rank: 8

积分
4562
发表于 2015-6-2 16:59:07 | 显示全部楼层
lushidegreen 发表于 2015-6-2 15:45
配置完成后,屏蔽前面说的3个语句。
重新编译程序,没有错误和警告。
其实,systick.c和timertick.c两个文 ...

应该给你点奖励 O(∩_∩)O哈哈~
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-3 09:14:52 | 显示全部楼层
希望缄默 发表于 2015-6-2 16:58
很好~ 不过你在用的时候中断部分有没有遇到什么问题呢?
在 USB 库中调用了 StarterWare 的中断配置函数 ...

步骤10~13就是把中断管理相关函数改为BIOS的配置,中断管理应该没问题了。
移植后正确实现了裸奔的USB_DEV_MSC的虚拟U盘功能。
我没有进行严格测试,不知道有没有其他问题存在,如有发现,欢迎跟帖指正!
回复 支持 反对

使用道具 举报

24

主题

125

帖子

1377

积分

金牌会员

Rank: 6Rank: 6

积分
1377
 楼主| 发表于 2015-6-3 09:20:11 | 显示全部楼层
希望缄默 发表于 2015-6-2 16:59
应该给你点奖励 O(∩_∩)O哈哈~

哈哈,这个可以有
有奖励可以鼓励大家多分享经验,有助于大家一起进步。很多高手都在潜水。

点评

有道理 应该在论坛搞些活动 送点代金券啦 板子什么的~  详情 回复 发表于 2015-6-3 12:42
回复 支持 反对

使用道具 举报

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

本版积分规则  回帖提醒

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

GMT+8, 2019-6-18 20:14 , Processed in 0.152883 second(s), 58 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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