msp430BSL程序烧写教程
- 格式:docx
- 大小:736.76 KB
- 文档页数:5


软件程序烧写操作规程软件程序烧写操作规程1. 引言软件程序是计算机系统的灵魂,正确烧写软件程序对于系统的正常运行至关重要。
为了规范烧写操作流程,保证烧写的准确性和安全性,制定本规程。
2. 适用范围本规程适用于所有需要进行软件程序烧写操作的场景,包括但不限于计算机、嵌入式设备和智能手机等。
3. 烧写环境要求3.1 确保烧写设备的供电稳定可靠,电压符合要求。
3.2 确保烧写设备的通信接口与被烧写的设备兼容。
3.3 确保烧写设备连接的计算机具备必要的硬件和软件支持。
4. 烧写准备工作4.1 确认被烧写设备的硬件版本和软件版本。
4.2 确认被烧写设备的存储空间是否满足软件程序的需求。
4.3 确保烧写设备已经连接到计算机并处于供电状态。
4.4 预先备份被烧写设备中的重要数据。
5. 烧写操作步骤5.1 打开烧写软件,选择正确的烧写模式。
5.2 在烧写软件中选择待烧写的程序文件。
5.3 确认烧写参数,包括目标设备类型、通信接口和波特率等。
5.4 建立与被烧写设备的通信连接。
5.5 擦除目标设备中的旧程序。
5.6 将待烧写的程序写入目标设备。
5.7 检查烧写结果,确保程序被烧写到正确的地址。
5.8 断开与被烧写设备的通信连接。
6. 烧写验证和测试6.1 使用合适的测试工具对烧写完成的设备进行功能验证。
6.2 确认被烧写设备的功能是否正常,程序是否稳定。
6.3 如发现烧写后存在问题,及时记录并进行排查。
6.4 对烧写成功的设备进行标记,以便后续追踪和管理。
7. 烧写记录和管理7.1 每次烧写操作都应该有相应的记录,包括烧写时间、烧写人员、烧写设备和程序版本等。
7.2 烧写记录要保存在可靠的介质上,确保数据的完整性和可追溯性。
7.3 定期对烧写设备进行维护和升级,及时更新烧写软件和固件版本。
7.4 实施烧写操作的人员需要接受相关的培训和考核,提高其烧写操作技能和意识。
8. 安全注意事项8.1 在烧写操作过程中,严禁拆卸或更换任何与被烧写设备有关的硬件部件。
步骤:加载文件------选择单片机型号-------选择烧写器--------连接器件--------烧写程序
1、加载文件
选择软件界面左上角“File”选项;
弹出下拉选项框,选择“Import”选项,弹出对话框;
在“查找范围”中选择要烧写文件的路径,然后选择要烧写的后缀为.hex的文件,再点击右下角“打开”按钮
2、选择单片机
选择软件界面第一行第八个“Configure”选项;
弹出下拉选项框,选择“Select Device”选项,弹出对话框,在Device选项的下拉框中选择所要烧写的单片机型号;
3、选择烧写器
选择软件界面第一行第六个“Programmer”选项;
弹出下拉选项框,选择“Select programmer”选项,弹出右拉选项框,选择第4项“PICkit_3”;
硬件连接好后,继续操作以下步骤:
4、连接器件
再次选择软件界面第一行第六个“Programmer”选项;
在此次下拉框中点击“Reconnect”选项
5、烧写程序
点击第一个图标。
程序工程文件烧写说明程序工程烧写步骤如下:一:打开烧写程序软件(启动MPLAB IDE);打开电脑“开始菜单”,点击“所有程序”找到“Microchip”,点击下面的“MPLAB IDE”项启动烧写程序工程软件。
具体步骤如下图:打开“开始菜单”打开“所有程序”找到“Microchip”项选择下面“”开启烧写程序;备注:也可直接双击电脑桌面上的MPLAB IDE快捷图标来打开烧写程序;如下图:桌面MPLAB IDE图标二:导入烧写程序文件;需要烧写的文件只有两个以扩展名为:.hex与.cof文件,首先找到这两个工程文件所保存的目录,然后点击MPLAB IDE中的“File”菜单项,打开“File”菜单项并选择下面“Import…”项,在弹出的对话框界面中查找范围项中选择找到“hex/cof”两文件所在目录,找到文件之后,在对话框显示文件方框中用鼠标左击选中一个文件(因有两个文件,所以要操作两次导入,一次选一个文件),选中后点击下面“打开”按钮。
具体图形操作步骤如下图:找到“File”菜单项下面的“Import..”项,如上图中红线所标处;备注:点击“Import…”后,会自动弹出一对话框界面;如下图;添加导入文件对话框图点击弹出对话框界面中查找范围下拉框,找到烧写文件所在目录;如下图;显示烧写文件如下图;烧写文件扩展名为:.cof与.hex两文件如上图备注:选中期中一个烧写文件后,点击对话框中“打开”把文件导入到工程中;具体如下图:导入文件后,Output提示框中有导入信息提示,如上图红线所标处;Hex与cof文件都导入工程后,如上图;三:MPLAB IDE配置说明把烧写导入到MPLAB IDE后,就可以进行烧写配置;烧写配置主要是配置两大项:一是烧写方式、一是烧写参数配置;具体烧写配置步骤如下:1:首先打开菜单项“Programmer”项,在下拉菜单项点击“Select Programmer”项,系统会自动弹出一下拉菜单项,选择期中“2 MPLAB ICD 2”项;2:打开菜单项“Configure”项,在其下拉菜单项选择“Select Device…”项,然后在弹出对话框中上面“Device”下拉框中选择“dsPIC30F6014”,再点击对话框中“OK”按钮;3: 然后再打开菜单“Configure”项,在其下拉菜单项中选择“Configuration Bits…”项,系统会自启弹出一配置对话框,在弹出对话框界面顶部找到“Configuration Bits set in code”并去掉前面的”√”,在其对话框中配置“Setting”项从上往下中二、三、六项,二项选择“Primary Oscillator”,三项选择“XT w/PLL 8x”项,六项选择“1:7”项,配置完后,把“Configuration Bits set in code”项前面方框中打上”√”;到这里整个配置就已经完成,下面接着就是烧写程序。
MSP430程序升级方式探讨蝴fE啪HA惭匡蚕MSP430程序升级方式探讨■中国海洋大学袁娟刊,克?眙闰建国对MSP430系列单片机进行编程的方式有以下3种:利用JTAG接口,利用BSL固件和利用用户自定义的升级固件.由于利用自定义升级固件进行程序升级的方式比较灵活,且用途广泛,因此本文将对其作重点介绍.1利用JTAG接口MSP430系列的单片机都集成了JTAG接口,该接口实现了遵循IEEESTD1149.1规定的测试访问端口状态机(TAPController).它使用一个4线串行接口(TEST用于引脚较少的芯片).数据或指令从TDI(测试数据输入)移入;串行数据从TDO(测试数据输出)移出;TCK(测试时钟)作为时钟信号输入;TMS(测试模式选择)信号控制TAP控制器的状态.利用该接口可移入指令和数据,从而控制目标芯片的地址线和数据线,达到读/写目标芯片Flash和仿真调试的目的Ⅲ另外,TI公司推出了新型的调试接口——SPY—BI—WIRE.它采用两线制,一根为数据线(双向),另一根为时钟线利用该接口的优点是,无须设计额外的电路和程序,采用仿真器即可下载程序.缺点是一旦用户为了保证代码的安全,烧断了JTAG的熔丝,那么就永久性地破坏了该接口,也就不能再使用该接口了.2利用BSL固件BSI是BootstrapLoader的缩写,中文名称是"程序装载器".它实质是固化在芯片中的一段通信程序(占用OCOOh~1000h的地址空间),利用它可实现对Flash的擦除和读/写.由于它是固化在芯片中的,因此不必担心被更改或丢失.该接口使用5根线:GND,TX(P1.i/P1.0),RX(P2.2/P1.1),RST和TCK(TEST).在RST和TCK(TEST)上加特定的电平时序信号,即可启动BSL程序,从而实现与目标芯片的通信.通信的字符格式是8个数据位,1个停止位和1个偶校验位.起始波特率为9600bps(BSL1.6版本可更改为38400bps).BSI协议要求首先接收一个80h字符用于同步时钟;然后发送应答字符90h;最后接收8个字符,并根据命令跳转到相应的处理例程.BSI程序的C语言描述如下:voidmain(){ByteB,bArray[8];LoCKSTATE=LOCK:InitPorts();while(1){B=ReceiveSyncByte();SyncTimer(B);SendAck();for(i=0;I<8;i++)bArray[i]一ReceiveByte();switch(bArray[i]){0x12://写Flashfor(I=0;i<bArray[7];i++){B=ReeeiveByte():if(LOCKSTATE==UNL()CK)WriteByte(B);)break;0xl0://接收口令Receive32Byte();if(PassWordCorreet)LOCKSTATE—UNL()CK;break;0xl8..0xn:if(PassWordCorreet)DoTask();)if(NoError)SendNak();elseif(TxData)SendData();elseSendAck();)}其实现细节可能因版本不同而有所变化.若用户想利用它来实现程序升级,则可见参考文献[2]和[3].利用BSI程序进行升级,优点是节省代码空间,用户无须实现自己的升级固件,而且现在已有很多现成的BSI升级工*****************.on(投稿专用)Micr.c0nt∞llers&EmbeddedSystemsb0艋具;缺点是须预留BSI接口,且需要现场接线.3利用用户自定义升级固件MSP430系列单片机的Flash存储器模块是一个可独立操作的物理存储单元.全部模块安排在同一个线性地址空间中,存储器被分为多个512字节的段(信息段大小为]28/64字节).各段可单独擦除,并目.在正常工作电压下程序u对Flash进行擦写操作,因此特别适合在线程序升级(InSystemProgramming).自定义升级崮件就是程序中内置一段用于升级应用程序的代码,即可利用现有通信接VI进行远程代码的升级.其实现原理足在目标芯片中放置两段代码:一段为应用程序;一段为升级程序.两者的地址段不重叠,这样就可以利用升级程序擦除应用程序,并写入新的代码.3.1引导程序复伉后先进入引导程序,由它来决定进入升级程序或应用程序.引导程序的苣义在于当应用程序不存在或出现错误时能直接进入升级程序.从而保证若升级不成功则可进行再次升级.引导程序的描述如下:voidmain(){while(1){if(ResetVectorV alid())Application();Updata();其中:ResetV eetorV alid()函数用于检测应用程序是否存在或是否有效.实现可以检测EnterApplication的入口地址是否合法,一种简单的实现是:#defineResetV eetorVMid()(ResetV ector!=FFFF)其中:ResetV ector为应用程序的入口地址,该地址通常放在一个固定的地址中,升级程序后再修改该入口地址. Application()为应用程序.它若正常执行则不会返回,只有在接收剑升级指令后才返回.可在Application()中使用return语句进入升级程序.Updata()为升级程序,其入门处必须加检测指令,以确认fE常进入升级程序.进入升级程序后,通信端庇先发送擦除指令,擦除原有代码;然后发送升级代码更新Flash.如果具有外部扩展存储器或用户程序较小,那么可先接收整个程序段,若校验正确再写入,这样可靠性会更高.这咀有个策略就是,最先擦除包含ResetVector的块?最后写入ResetVector的值,这样可以尽量保证不会进入不完整的应用程序.3.2应用程序的编写应用程序的编写没有大的变化,只需在通信协议中加入自定义的一个升级命令,以进入升级程序.另外,须更改链接文件(*.XCI),指定应用程序的地址范围.地址范围为2500h~F7DCh的应用程序如下(用//注释掉的为默认设置):ff代码//~Z(CODE)CSTART一2500一FFDF//一Z(CODE)CODE一2500一FFDF—Z(C()DE)CSTART=2500一F7DF—Z(CODE)CODE一25O0一F7DF}}嗨量//Z(CONST)DATAl6一C,DA TAl6一ID,DIFUNCT,CHECK—SUM一2500一FFDF—Z(CONST)DATA16一C,DATA16—1D,DIFUNCT,CHECK SUM=2500一F7DF//中断向量//一Z(CONST)INTVEC—FFE0一FFFF—Z(CONST)INTVEC—F7E0一F7FF修改完毕后将该文件添加到工程中.编译后的代码即可作为升级代码.3.3升级程序的编写新建一个工程,按上述方法将升级代码定位到与应用程序不重叠的区域(如F8()Oh~FFFFh),此时不修改;Z(CONST)INTVECFFEOFFFF在升级程序中,将除复位中断外的所有中断映射到应用程序中.一种方法是嵌入汇编,采用汇编的定位指令()RG;另一种是写15个中断映射函数.例如://重新映射中断向量地址#pragmavector0xO一~interruptvoidintvee一0(void){asm("br&.0F7E0h");//假设F7E0中存放中断15的地址另外也可采用动态确定中断入口地址的方法,即将中断向量地址放入约定好的RAM中.例如:一no—initvoid(*intvecl[16])()@0x200;//定义指向函数指针的数组,用于映射新的中断向量//重新映射中断向量地址世pragmavector=0xO一一interruptvoidintvec一0(void)asm("pushR15");asnl("mov#0x200,Rl5");asm("call@R15");asm("popR15"):66车'}一IL甚入鑫刍棚然后在应用程序中进行中断向量的映射,例如:intvcclETIMERA0一VECTOR/2]rimer—A一0;即在TIMERA0中断时执行Timer—A一0()函数.这样做的优点是町在运行时动态决定中断函数的人口,如高级语言中的虚函数(VirtualFunction).这两个函数块编写完毕后即可进行工程测试.3.4应用程序与升级程序同时完成如果需要两个函数在一个工程里完成,那么除了修改链接文什外,还须注意以下几点:①将升级程序的所有函数定位到升级程序空间,即在函数前而加如下定位指令:世pragmalocation一"UPDATECODE"//UPDA TECODE为升级程序所在段的名称②修改函数返叫调用的例程.当函数返回时会调用弹出寄存器的默认例程,而这些例程可能并不在升级程序的地址窄间内.一种解决方法是利用编译环境生成的IST文件(7r编代码),逐个修改甬数返回时调用的弹出寄存器例程,即可保证两者代码独立.这样做的缺点是每次更改c语言代码后,须重新修改汇编代码,比较繁琐.另一种方法是考虑到升级程序的工作就是接收和发送数据,一般无须使用巾断.这样就可以在升级函数前加入一monitor编译指令,指明该函数为原子操作.这类函数人L]处先压人SR并禁止中断,返回时使用RETI返回.此时编译器并不调用例程弹出保存的寄存器,而是根据进栈情况逐个弹出寄存器.③更改switch语句.使用switch语句时编译器也会产生默认例程调用,很难屏蔽掉,故只有将switch修改为多个判断语句.娃{五拿口口本文对MSP430系列单片机的升级方案进行_r详细介绍,读者只须按照一定步骤,即可轻松实现远程程序升级,这在实际应用中具有重要意义;而且本文的升级方法并仅限于MSP430系列,也可应用到类似的单片机系列中.照参考文献1ProgrammingaFlashBasedMSP430UsingtheJTAGInter {ace.Iiteratureno.SIAA1492FeaturesoftheMSP430BootstrapLoader.Literatureno.SLAAo89A3ApplicationofBootstrapLoaderinMSP430WithFlashHard—wareandSoftwareProposa1.Iiteratureno.SIAA096B4MSP430FamilyMixed—SignalMicrocontrollerApplication Reports.Literatureno.SLAA0245MSP430IARc/c++CompilerReferenceGuide6刘宏志,谢利理.FLASH单片机白编程技术的探讨.单片机与嵌入式系统应用,2004(3)袁娟t硕士,主要研究单片机控制和智能仪表的构建.孙克怡:教授,主要从事远程抄表和仪器仪表自动化图5串行数据输入时序DATA为111011110llOO110;③若设置接收频率(RX)为36.035MHz,则DATA成为lli00100001llOOl.注意:DA TA的低两位是命令控制码,11表示设置内部参考频率;10表示设置发射压控振荡器(VCO)的频率;0l表示设置接收VCO的频率;00表示进行低功耗或静爵控制.娃{点;口口本文基于MSP430嵌入式技术,设计并实现了车载无线手持终端系统.该系统性价比高,可靠性强,可扩展空问大,根据投放市场情况来看.具有很大市场潜力.若在该系统的基础之上再扩展cAN总线接口,即可实现午内局域网控制,这也是目前车载I殳备开发的一个趋势.艨参考文献1沈建华,杨艳琴,翟骁曙.MSP430系列16位超低功耗单片机原理与应用.北京:清华大学出版社,20042魏小龙.MSP430系列单片机接口技术及系统设计实例.北京:北京航宅航天大学出版社.20023沈建华,杨艳琴,翟骁曙.MSP430系列l6位超低功耗单片机实践与系统设计.北京:清华大学出版社,20054张其善.智能车辆定位导航系统及应用.北京:科学出版社,2OO25东芝(Toshiba)电子有限公司.TB3l224FUserManua1.200210周毅:硕士研究生.主要研究方向为嵌入式系统.李会萍:硕士研究生,主要研究方向为计算机通信与信息系统.赵进创:工学博士,教授.主要研究方向为嵌入式系统开发,现代信息检测与处理技术,成像技术和无线传感器罔络.(收稿日期;2006一O1—16)。