![FBTC程序编写_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/b65b7c76-f675-4607-b143-6386188c24a0/b65b7c76-f675-4607-b143-6386188c24a01.gif)
![FBTC程序编写_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/b65b7c76-f675-4607-b143-6386188c24a0/b65b7c76-f675-4607-b143-6386188c24a02.gif)
![FBTC程序编写_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/b65b7c76-f675-4607-b143-6386188c24a0/b65b7c76-f675-4607-b143-6386188c24a03.gif)
![FBTC程序编写_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/b65b7c76-f675-4607-b143-6386188c24a0/b65b7c76-f675-4607-b143-6386188c24a04.gif)
![FBTC程序编写_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-12/1/b65b7c76-f675-4607-b143-6386188c24a0/b65b7c76-f675-4607-b143-6386188c24a05.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、f bt c 程 序 编 写 ( 共 6 页 )-本页仅作为文档封面,使用时请直接删除即可- -内页可以根据需求调整合适字体及大小- 2 基于 dm642 的 fbtc 程序的编写一、引言在嵌入式系统开发过程中,把编写好的应用程序烧写进目标板的flash以实现系统的上电自举是非常重要的一个环节。对于嵌入式dsp系统,我们常使用flashburn system来对 flash进行烧写。 flashburn system由两部分组成,分别是flashburn应用软件( application)和 fbtc (flashburn target component )程序(program)。flash
2、brun的工作原理如图 1 所示:图 1 flashburn应用软件提供用户操作界面,把fbtc程序通过 ccs和 jtag仿真器下载到 dsp目标板中,由 fbtc程序对 flash 存储空间进行操作和管理,并把用户程序下载到flash 存储器中。由此可见, flashburn应用软件就相当于厂房里的各种机器设备,而fbtc程序则是生产和操作规程。从某种意义来说flashburn是硬件,而 fbtc是软件,在相同的flashburn里应用不同的 fbtc会得到完全不一样的效果。事实上,当 ccs 、dsp目标板、仿真器、 flashburn或 flash 芯片的型号不一样时, fbtc程序就
3、应做相应的改变,以成功地将用户程序烧写到flash中。本文试着将这些改变剖析一下。二、需要说明的问题本文使用的各种工具有、 dm642evm开发板、 xds560 jtag 仿真器、flashburn ,需要烧写的 flash芯片是 amd 公司的 am29lv033c 。3 该 flash 的容量是 4mbytes(0x400000),在 dm642 上对应的存储空间位于ce1 emif ,其首地址是 0x。该款 flash 芯片的 datasheet 如图 2:图 2从上图可知: 1)向 flash 的任意位置写入序列0 xaa, 0 x55, 0 x80, 0 xaa, 0 x55, 0
4、 x10,表示擦出该位置的数据;2)写入 0 xf0 表示将 flash 设置为读模式; 3)序列 0 xaa, 0 x55, 0 xa0后加上一字节的数据表式将该数据写入到flash 的某一位置上。本文所举的例子是在fbtc6416程序的基础上修改而成的,该程序所在的文件可以在 flashburn的安装文件中找到。之所以选择teb6416 ,是因为它和dm642 属于同一个 isa (instruction set architecture)家族。三、得到 fbtc642 的步骤。(1)将 fbtc6416文件夹复制到你自己的工作区域,将文件名和文件中所有的 6416 改成 642。用记事本
5、打开 .pjt 文件,将里面的teb6416改成 dm642,将 projectdir=c:ccflashburnpitvobflashburnersrcfbtcteb6416 引号里内容改成你现在的工程文件所在的路径。保存后,在ccs里打开该工程文件,将build option 设置为 full debug和 no optimization 后编译,链接。(2)修改 flash的起始地址和大小。在文件中:将“#define flash_size 0 x80000”改成“ #define flash_size 0 x40000”将“#define flash_start 0 x”改成“ #de
6、fine flash_start 0 x ”将“#define ce1_8 0 xffffff03 ”改成 “#define ce1_8 0 xf3a88e02 ”将 “#define ce1_32 0 xffffff23 ”改成 “#define ce1_32 0 xf3a88e22”4 (3)flash的寻址。flashburn把 flash image 当做是从下标为 0 开始的一个字节流, fbtc程序要做的就是把这一字节流和实际地址一一对应起来,这一任务由里的相关函数实现,另外还需要编写一个新的函数setflashpage() 来设置 fpga的页寄存器。即在里添加如下代码:void
7、 setflashpage(flash_image_index_type index) ptr_sized_int addr = (u32)getflashbase() + index; *flash_page = (addr & 0 x380000) 19;(4)把 flash设置为读状态。这一功能由函数 resetflash() 实现。根据 flash 的 datasheet,其代码应为:void resetflash() volatile flash_data_type* volatile flashaddr; flashaddr = getflashaddr(0); /* do
8、nt care what address is used */ *flashaddr = 0 xf0;这里不用修改。(5)从 flash中读取数据这一功能由函数 getnextflashaddr ,getflashval(), sendflashbuftohost()联合实现,第一个函数负责寻址,第二个负责取数,第三个负责传数。在文件中:函数 getflashval() 改成, u8 getflashval(unsigned long addr)*flash_page = (u8)(u32)addr & 0 x380000) 19);return *(volatile u8 *)(ad
9、dr & 0 xffc7ffff);(6)擦除 flash此功能由函数 eraseflash ()实现,由此型号的flash 可知,其参考代码如下:5 void eraseflash(void) volatile flash_data_type* volatile pbase = getflashbase(); /* code to erase amd29lv033c */ *pbase = 0 xaa; *pbase = 0 x55; *pbase = 0 x80; *pbase = 0 xaa; *pbase = 0 x55; *pbase = 0 x10; checkflashe
10、rase(); resetflash(); return;(7)写 flash此功能由函数 burnflash ()完成,参考代码如下:void burnflash(flash_image_index_type index, msg_data_type *data, u32 nbytes) u16 timeout; u8 c; volatile flash_data_type* volatile flashaddr; flash_image_index_type i = index; volatile flash_data_type* volatile pbase = getflashbase
11、();#if dbprint printf(burning %x bytes of flash at %xn, nbytes, flashaddr);#endif while(nbytes-) flashaddr = getflashaddr(i); setflashpage(i);6 *pbase = 0 xaa; *pbase = 0 x55; *pbase = 0 xa0; /* write a byte */ *flashaddr = *data; /* spin here until programming completes */ c = *data+; timeout = 0; do timeout += 1; while(*flashaddr != c & timeout (u16)0 xffff) ; i+; resetflash();对于不同型号的 flash ,*pbase对应的值不同,对于不同的开发板就看是否有分页。这些修改完成之后,就可以将整个工程进行编译、连接,得到的文件就可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年中国餐具洗涤用品研究报告
- 2025年度快递业务客户关系管理承包合同
- 2025年度绿色环保产业承包经营合同范本
- 2025年度电梯安全评估与整改服务合同
- 2025年度电子商务行业区块链技术应用合同
- 班级志愿者活动计划
- 团队激励机制的设计计划
- 促进员工团队意识的措施计划
- 理论学习与实践应用的结合计划
- 绩效考核体系年度优化计划
- 富血小板血浆(PRP)临床实践与病例分享课件
- 肿瘤性发热及护理
- 光伏工程施工组织设计
- 《护理科研》课件
- DB4101-T 121-2024 类家庭社会工作服务规范
- 五年级上册小数四则混合运算练习100道及答案
- 人教版(2024新版)八年级上册物理《开启科学探索之旅》教学设计
- 年产1万吨的二氧化碳捕集及资源化利用全流程示范项目可行性研究报告模板-立项拿地
- 部编版语文四年级下册第六单元大单元作业设计
- 2024年新高考全国1卷第16题说题课件
- 【财务共享服务模式探究的文献综述4000字】
评论
0/150
提交评论