EZ-USB FX2(68013)固件研究(1)——Cypress 固件架构彻底解析
算是给所有正在学习 还徘徊着不得其门而入的朋友一个入门的契机吧,我也深知入门的
痛苦,有些人入门就是抱着那什么 协议,包定义,帧格式。。。。。。啃来啃去的,结果啃
不出个所以然来。
依我的经验来看,协议方面的东东,随便找本书,过一遍就行了;然后,你的终点应该放在你
如何来写第一个成功的 固件;而要写 固件,那么了解 固件架构是必要的,也
是重中之重;再然后,等你积累了一些端点,控制,,中断传输, 等等的经
验后,再 回过头去看协议方面的内容,就会有更加深刻的体会了;然后,你就可以试着更改
。 文件了——这个时候你就是高手了。
【1】:首先,还是说下工具吧!
:你要有一块 的 板子,淘宝随便买块好了,还送不少资料。
:要准备开发工具,去 官网下一个 的开发包,全称:
!"#$%&'(')*"
网址:+'',--...**$%-/01
*安装开发包。工具就是 22$&$ 了。怎么用不用我说了吧,这偏文章主题是
固件架构*
【】好了,进入主题,固件架构(汗--!好多废话)。以一个 3684 开发包自带的例子讲解。
(1) 进入目录(个人找自己的):0,3$4%2(3335"%3673
$$,
(2)到 0,3$4%2(33384' 文件价下把 头文件
"*+,!"4*+,&#*+ 这三个头文件拷到 $$ 文件夹里。
(3)( 设置 $'' 里关掉 9&22$4%2:(前面的勾去掉)(别说不会用
(。。。)
(4)检查 (2) 文件路径是否正确。(如果你的 ( 是直接装载 ,3;(。。下,那不会有错
误,否则,自行设置正确的路径。)
【】现在可以打开 bulkloop 工程并编译链接正确了。
在工程下,有以下几个文件:
其中,<%*<5=*7 基本上是每个工程都要添加的,是一些中断向量表,5= 的
函数库等等,不用管它们。
现在重点看前面三个文件:
(1)fw.c,这个文件是整个 的固件根本((% 的缩写), 协议方面的通信都是
在这里完成的,包括上电枚举,重枚举,唤醒以及调用用户自己的程序和控制命令等等。基本上,
如非必要,尽量不要动这个文件的内容,也不要在里面书写你自己的任何代码。
(2)bulkllop.c,这个就是用户自己的代码书写文件(原始名称:(+*)。我们所有的代码
都在这个文件里书写。 已经给我们搭好了架构。
void TD_Init(void):这个函数只会在 启动后调用一次。在这个函数里添加你自己的初始
化代码,也就是传输数据前要处理的,例如 口配置,时钟,端点, 的选择等等。
我们看 $$ 的初始化,它在 的 (&,$' 传输启动前进行了哪些初始化:
时钟频率, 工作模式选择,端点选择,端点传输方向, 大小的配置等等。
void TD_Poll(void):$ 中文意思调度,这个函数就是用户调度程序, 会在空闲的时候
反复调用该函数,所以我们把自己需要反复执行的代码放在这里。例如在 $$ 里,它就实现
了反复从端点 接收上位机数据然后传给端点 ,再从端点 传给上位机(, 端点一样)。
BOOL DR_VendorCmnd(void):这个函数就是自定义命令代码的书写处。我们的 >&#$
命令都会写在这里,!.* 固件会自动调用我们的代码。
评论1
最新资源