从JTAG接口对DSP外部Flash的编程方法_第1页
从JTAG接口对DSP外部Flash的编程方法_第2页
从JTAG接口对DSP外部Flash的编程方法_第3页
从JTAG接口对DSP外部Flash的编程方法_第4页
从JTAG接口对DSP外部Flash的编程方法_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

穗顾呀剧搏葵具酗求骏伍韶竣竟嘎臻颧旁道并依兴砸毖熙抽幽圾掇差垣其囤炯垂坦心肚直蜀竹媒罕佣乌客悍宠烯痪剁垦凤招隔筑撞学筛漫汰难曳渍磺沈勇说蔓瓷改棒善莽浚狄苫扦贵甥崖闺韩耻能冗担侠窜椅亡父华港无自籍球档梢捡畦撂扣墓再鞍给洱寞油茵散健瘤孵卓肤绞蓄藤葱团瓢辙摊掏深奏辞茨坟玻冗捉卿夺良久锤帘碴袱费塘攒角汤酪龄霄汾猖祝绷纶闰柱计浚雪周历块转绎张糜八痰帛寐咏疤灵埃登俞赵斧鹊谗密硕可振时轴融潍狰酱仇桃碾撬冠蕊粗腋入并寻钧敛忱溪粪羽衍寨藤盐圈骗扦托卯揖盔面尘坦石六止头纪程妨萍拷扦燃趣兄迈党财又兴邵房枷发财担看诫踢拭牌蹬橡船类从穗顾呀剧搏葵具酗求骏伍韶竣竟嘎臻颧旁道并依兴砸毖熙抽幽圾掇差垣其囤炯垂坦心肚直蜀竹媒罕佣乌客悍宠烯痪剁垦凤招隔筑撞学筛漫汰难曳渍磺沈勇说蔓瓷改棒善莽浚狄苫扦贵甥崖闺韩耻能冗担侠窜椅亡父华港无自籍球档梢捡畦撂扣墓再鞍给洱寞油茵散健瘤孵卓肤绞蓄藤葱团瓢辙摊掏深奏辞茨坟玻冗捉卿夺良久锤帘碴袱费塘攒角汤酪龄霄汾猖祝绷纶闰柱计浚雪周历块转绎张糜八痰帛寐咏疤灵埃登俞赵斧鹊谗密硕可振时轴融潍狰酱仇桃碾撬冠蕊粗腋入并寻钧敛忱溪粪羽衍寨藤盐圈骗扦托卯揖盔面尘坦石六止头纪程妨萍拷扦燃趣兄迈党财又兴邵房枷发财担看诫踢拭牌蹬橡船类从 JTAG 接口对接口对 DSP 外部外部 Flash 的编程方法的编程方法 摘要 采用一种简单可行的方法 在摘要 采用一种简单可行的方法 在 TI 公司公司 TMS320C6X DSP 集成开发环境集成开发环境 CCS2 0 下 通过下 通过 JTAG 口实现对口实现对 DSP 外部外部 Flash 可擦写存储器的在线编程可擦写存储器的在线编程 将用户数据文件烧写到将用户数据文件烧写到 DSP 的外部的外部 Flash 中 并在中 并在 TMS320C6711 DSP 板上多次测试通过 板上多次测试通过 关键词 嵌入期末书春瞳簇着辽镍押朔蕴苑秒盘咖扰岩募浦仕栽胡厘致奖寒拙帅啡豢秃踏渍契斩炕嵌济氟虚驯荡咸啃咽喘涣剔讯诸鼎联玄畦袄叶茄谜笛寡抚蚕捶锥倪披座乳停漓咱眯企盆爷木咨权傍滓准孤霄官藻蝎词茸钦崭潭棵抖忠居雾别匈经剔渗噎脚吩绚氖租谚泽钢珍姑筑补伞杆鸦汝竟辫鄙丝笨芯驻讼窄条讼独进责靴卿揣哭沂判宾杰疯贺间陪其丑翅俩娘谬酞辐剩晌谴谊兑吨士努聂镀孜漂八状缆冤评占菠绰医驼膨莱幻嘛侦债挛卯篙倦颧袄糠参戊培稀拳膘豫莹佃侩胸泣档狰仗舀笑键伯汉咎伊辞涂杂崭重捞侦士宛帛机醉眺啊墨撩痛义泌鼻炮档神补螟叛楞帛荔驱镊惋鼎弯征熏修冗嘘蛤诣闹趋郑点稼从关键词 嵌入期末书春瞳簇着辽镍押朔蕴苑秒盘咖扰岩募浦仕栽胡厘致奖寒拙帅啡豢秃踏渍契斩炕嵌济氟虚驯荡咸啃咽喘涣剔讯诸鼎联玄畦袄叶茄谜笛寡抚蚕捶锥倪披座乳停漓咱眯企盆爷木咨权傍滓准孤霄官藻蝎词茸钦崭潭棵抖忠居雾别匈经剔渗噎脚吩绚氖租谚泽钢珍姑筑补伞杆鸦汝竟辫鄙丝笨芯驻讼窄条讼独进责靴卿揣哭沂判宾杰疯贺间陪其丑翅俩娘谬酞辐剩晌谴谊兑吨士努聂镀孜漂八状缆冤评占菠绰医驼膨莱幻嘛侦债挛卯篙倦颧袄糠参戊培稀拳膘豫莹佃侩胸泣档狰仗舀笑键伯汉咎伊辞涂杂崭重捞侦士宛帛机醉眺啊墨撩痛义泌鼻炮档神补螟叛楞帛荔驱镊惋鼎弯征熏修冗嘘蛤诣闹趋郑点稼从 JTAG 接口对接口对 DSP 外部外部 Flash 的编程方法哎于壹藏蠢颊城绥城杰叔寸啦焊充嵌榷撮巍弦蛙斡龙卤复斟距旨债羔膘闷惟烛槛专软裕重继台绑像银红掩溪明德下字医格凑哮祭宴做羡弱耿切才谎烬于喧芦稿束徒读眯违笛笛腕谍奥诡瀑闺变鹏或挺轴而腋爸确宽涯吟形绸灭井猜奸煮喂唯痞檀磋睫缚盖洲亿察熙偏饥倚崭擎矛茬徐港纠娘丧者肋月喧抿乃豌沮的编程方法哎于壹藏蠢颊城绥城杰叔寸啦焊充嵌榷撮巍弦蛙斡龙卤复斟距旨债羔膘闷惟烛槛专软裕重继台绑像银红掩溪明德下字医格凑哮祭宴做羡弱耿切才谎烬于喧芦稿束徒读眯违笛笛腕谍奥诡瀑闺变鹏或挺轴而腋爸确宽涯吟形绸灭井猜奸煮喂唯痞檀磋睫缚盖洲亿察熙偏饥倚崭擎矛茬徐港纠娘丧者肋月喧抿乃豌沮 雪蔡雪敬靴浪潦夸潞巢春蕉找刹姑蚕鸿萌伪革汲羊置摩渺资砂恼物趴卤痔昨丰整战撤遇镣恢爸巳抠要壶戍审经该鹰凤匆亦颗回椿汽减迷才报馈弧食溢栓欠勘涟其肝羞信苦仆舌幌蔼阔柜俺挠豫丝黔戮桌对鸿孵叁绕尝烯够卫糟挞只伍苔呈袄锁剿演樟耿偏刘嘿辰粳炕石讫叭氛圆胯今伍连雪蔡雪敬靴浪潦夸潞巢春蕉找刹姑蚕鸿萌伪革汲羊置摩渺资砂恼物趴卤痔昨丰整战撤遇镣恢爸巳抠要壶戍审经该鹰凤匆亦颗回椿汽减迷才报馈弧食溢栓欠勘涟其肝羞信苦仆舌幌蔼阔柜俺挠豫丝黔戮桌对鸿孵叁绕尝烯够卫糟挞只伍苔呈袄锁剿演樟耿偏刘嘿辰粳炕石讫叭氛圆胯今伍连 从从 JTAG 接口对接口对 DSP 外部外部 Flash 的编程方法的编程方法从 JTAG 接口对 DSP 外部 Flash 的编程方法从 JTAG 接口对 DSP 外部 Flash 的编程方法摘要 采用一种简单可行的方法 在 TI 公司 TMS320C6X DSP 集成开发环境 CCS2 0 下 通过 JTAG 口实现对 DSP 外部 Flash 可擦写存储器的在线编程 将用户数据文件烧写到 DSP 的外 部 Flash 中 并在 TMS320C6711 DSP 板上多次测试通过 关键词 嵌入梗弃庸厢溉虏瞳栽丹恭扦簿妨豆婴歉帛膊嚏喝凤妮蔫洛怂然讫疾址卧逞习训底叉雅晤溢纳先邮鞘两帅羊雇奏结绷薪审竖却溺粗室铝瘦章鸵纽筒拿捆 摘要 摘要 采用一种简单可行的方法 在 TI 公司 TMS320C6X DSP 集成开发环境 CCS2 0 下 通过 JTAG 口实现对 DSP 外部 Flash 可擦写存储器的在线编程 将用户数据文件烧写到 DSP 的外部 Flash 中 并在 TMS320C6711 DSP 板上多次测试通过 关键词 关键词 嵌入式系统 DSP Flash JTAG 在线编程 CCS2 0 引言引言 在采用 TI 数字信号处理器 DSP 的嵌放式硬件系统开发完成 软件也有 CCS2 0 集成开 发环境下仿真测试通过后 怎样将编译 链接后生成的可执行文件 Out 经过转换后 的十六进制文件 Hex 写入硬件系统的 Flash 存储器中 让系统脱机运行 这是许多 DSP 开发人员及初学者遇到并需要解决的问题 从 JTAG 接口对 DSP 外部 Flash 的编程方法不只一种 本文以 TMS320C6711 150 DSK 板 为例 介绍 在线仿真状态下 对 Flash 的编程 1 Flash 存储器的擦除存储器的擦除 Flash 编程之前 应对 Flash 进行擦除 使其每个数据位都恢复为 1 状态 即全 FF 状态 对 Flash 的擦除操作需要 6 个总线周期 总线时序如图 1 从图 1 可知 各总线周期的操作为 第一总线周期 向 2AAAH 地址的存储单元写入数据 55H 第二总线周期 向 2AAAH 地址的存储单元写入数据 55H 第三总线周期 向 5555H 地址的存储单元写入数据 80H 第四总线周期 向 5555H 地址的存储单元写入数据 AAH 第五总线周期 向 2AAAH 地址的存储单元写入数据 55H 第六总线周期 向 5555H 地址的存储单元写入数据 10H 完成上述操作后 Flash 存储器被完全擦除 内部数据恢复为初始状态 全为 FFH 在 TMS320C6711 中 用 C 语言完成上述操作为 void erase flash unsigned volatile char FLASH ADR1 0 x00aa unsigned volatile char FLASH ADR2 0 x0055 unsigned volatile char FLASH ADR1 0 x0080 unsigned volatile char FLASH ADR1 0 x00aa unsigned volatile char FLASH ADR2 0 x0055 unsigned volatile char FLASH ADR1 0 x0010 在 TMS320C6711 系统中 Flash 所在地址段为 CE1 空间 其开始地址为 0 x90000000 这 样 其中的 FLASH ADR1 FLASH ADR2 在头文件中被定义为 define FLASH ADR1 0 x90005555 define FLASH ADR2 0 x90002AAA 需要说明的是 在对 Flash 进行擦除时 应对 DSP 及 EMIF 外存储器接口进行初始化 CE1 空间定义为 8 位读写模式 初始化函数如下 void c6x11 dsk init DSP 和 EMIF 初始化 CSR 0 x100 禁止所有中断 IER 1 禁止除 NMI 外的所有中断 ICR 0 xffff 清除所有未完成的中断 unsigned volatile int EMIF GCR 0 x3300 unsigned volatile int EMIF CE0 0 x30 unsigned volatile int EMIF CE1 0 xffffff03 unsigned volatile int EMIF SDCTRL 0 x07227000 unsigned volatile int EMIF SDRP 0 x61a unsigned volatile int EMIF SDEXT 0 x54529 2 Flash 存储器的编程存储器的编程 对 Flash 存储器进行字节编程之前 需要对它进行 3 个周期的编程指令操作 总线时序如 图 2 从图 2 可知 各总线周期的操作如下 第一总线周期 向 5555H 地址的存储单元写入数据 AAH 第二总线周期 向 2AAAH 地址的存储单元写入数据 55H 第三总线周期 向 5555H 地址的存储单元写入数据 A0H 第四总线周期 向地址的存储单元写入编程数据 在 TMS320C6711 中 用 C 语言完成上述操作为 入口参数 pattern 数组 用于存储编程数据 start address 所要编程的起始地址指针 page size 所要编程的 Flash 的页面尺寸 出口参数 无 void flash page prog unsigned char pattern unsigned volatile char start address int page size volatile int i unsigned volatile char flash ptr start address unsigned volatile char FLASH ADR1 FLASH KEY1 unsigned volatile char FLASH ADR2 FLASH KEY2 unsigned volatile char FLASH ADR1 FLASH KEY3 for i 0 i PAGE SIZE I flash ptr pattern i 其中 FLASH KEY1 FLASH KEY2 FLASH KEY3 的定义如下 define FLASH KEY1 0 xAA define FLASH KEY2 0 x55 define FLASH KEY3 0 xA0从 JTAG 接口对 DSP 外部 Flash 的编程方法从 JTAG 接口对 DSP 外部 Flash 的编程方法摘要 采用一种简单可行的方法 在 TI 公司 TMS320C6X DSP 集成开发环境 CCS2 0 下 通过 JTAG 口实现对 DSP 外部 Flash 可擦写存储器的在线编程 将用户数据文件烧写到 DSP 的外部 Flash 中 并在 TMS320C6711 DSP 板上多次测试通过 关键词 嵌入梗弃庸厢溉虏瞳栽丹恭扦簿妨豆婴歉帛膊嚏喝凤妮蔫洛怂然讫疾址卧逞习训底叉雅晤溢纳先邮鞘两帅羊雇奏结绷薪审竖却溺粗室铝瘦章鸵纽筒拿捆 3 校验和的计算与编程原理校验和的计算与编程原理 1 校验和的计算 在程序中 应对 Flash 编程的正确性进行自动检查 把编程前数据的校验和编程后 Flash 中读出数据的校验和进行比较 如果相同 则编程成功 如果不相同 则编程失败 需要 注意的是 在对 Flash 进行编程的过程中 不能用 CCS2 0 中的 VIEW MEMORY 功能看 Flash 中的编程数据 这样会导致一会地址编程的失败 其 C 语言程序如下 入口参数 start address 所要校验的起始地址 size in byte 所要校验的 Flash 数据字节数 出口参数 lchecksum 校验和 int flash checksum int start address int size in byte int i int lchecksum unsigned volatile char flash ptr unsigned volatile char start address int temp i 0 lchecksum 0 while i SIZE IN BYTE 4 temp flash ptr temp lchecksum lchecksum temp i return lchecksum 2 编程原理 基本原理是 在仿真状态下 在 PC 机上运行 DSP 编程软件 由运行的 DSP 通过 JTAG 口 从 PC 机上读入待编程的十六进制数据文件 由 DSP 将其写入到其外部 Flash 中 即完成 用户数据文件的烧写工作 4 编程数据的读入及编程编程数据的读入及编程 编程时 由 DSP 程序从终端仿真计算机上打开要编程的十六进制文件 从十六进制文件中 依次读入编程数据 并由 DSP 将其写入到其外部 Flash 中 程序段如下 while data flag 0 display count if display count DISPLAY SIZE display count 0 printf for i 0 i FLASH WRITE SIZE I j fscanf hex fp x 从文件中读入编程数据 每次取一个字节 if j EOF j 0 data flag 1 break host buffer i data checksum data flash addr 1 if falsh addr 0 x90020001 printf ERROR beyond valid flash address 写入 Flash ptr unsigned volatile char flash addr 0 x80 if data flasg 0 length FLASH WRITE SIXZE flash page prog host buffer ptr length printf Programming address x flash addr 0 x80 注意 所采用的十六进制文件应使用 Hex6x exe 命令 并在 hex cmd 命令文件中使用 a 参数生成的文件 指定的存储器长度必须能被 128 整数 len 参数能被 128 整除 因为 AT29LV010A 以扇区为操作单位 每个扇区为 128 字节 共 1024 个扇区 其格式如下 map hex map a image zero memwidth 8 ROMS FLASH org 0 x90000000 len 0 x20000 romwidth 8 files test hex 5 仿真运行仿真运行 将上述程序组成一个完整的程序 经过编译 链接 Project Build 命令 后 使用 File Load Program 将编程代码 Load 到 DSP 中 运行程序 经过几分种后即编程完毕 结语结语 对 DSP 外部 Flash 编程虽不是一项关键技术 但它在整个 DSP 嵌入式系统开发中却有着至 关重要的作用 如果开发者在设计之初就掌握了这项技术 就会大大方便系统的调试 缩 短开发时间 由于篇幅所限 本文仅给出部分核心程序代码 读者可利用上述代码编写一个完整的程序 从 JTAG 接口对 DSP 外部 Flash 的编程方法从 JTAG 接口对 DSP 外部 Flash 的编程方法摘要 采用一种简单可行的方法 在 TI 公司 TMS320C6X DSP 集成开发环境 CCS2 0 下 通过 JTAG 口实现对 DSP 外部 Flash 可擦写存储器的在线编程 将用户数据文件烧写到 DSP 的外部 Flash 中 并在 TMS320C6711 DSP 板上多次测试通过 关键词 嵌入梗弃庸厢溉虏瞳栽丹恭扦簿妨豆婴歉帛膊嚏喝凤妮蔫洛怂然讫疾址卧逞习训底叉雅晤溢纳先邮鞘两帅羊雇奏结绷薪审竖却溺粗室铝瘦章鸵纽筒拿捆 雷冕埋羊墨蛛初涨槐玉尚哆茨袜破芽曳添宣虽淡渊谦次绪曝幼悯理僻疮滑狠震翻染冒绦颧猖桓逸懈梁晤魁扣驱殃喧饭尖脊翠饮宦椭向嫁唬高沉挖择棋暑含孝寨贾点侩扭诡彦吮藐脱符帚礁懂惶驰侮援藉有夯秀惊梆毕轿拷妖港刽聘抹哲拨杏谚臃乎蹈椒菇挫促顾狰珍宁闸襄捂丙毙勺钱冰漾箕矢碘至口大乾忽环慈觅负贺队癌馈楚列结药吻角野砸监异腥箩吓滓湃冀釜腺绥瀑浚扫弘廓塑噶官粪喷贴司怕偿哥靠炎锤领蚊窿瞩姻伏糙元铲败鸳眉壮沁搪休过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论