单片机通过USB(U盘)升级固件的方法.docx
单片机升级固件的方法有很多中,比如:ISP(在系疣编程)、ICP(在电路编程)、IAP(在应用编程)等.今天结合瑞萨单片机(RA4M3)、e2studio开发环境给大家讲述的是单片机通过USB(U盘)升级固件的方法。RA4M3通过USB实现固件升破O1.固件更新应用案例< 1)修更程序错误< 2)功能升级02首先必须规划好BOOt1.Oader和APP1.iCatiOn的空间分配“如下图所示,案例使用R7FA4M3AF3CFB.有IM的ROM.BoOtIOader从0x000000开始存储,结束地址为OxIFFFF,所占空间大小为0x20000:App1.ication从0x20000开始存储,结束地址为OXooOFFFFF,所占空间大小为OxEOOOO.VAVI5"2VUOxO1.A1OO0x010081B40x0100_80F00x0010.000x0000,005-pf1.ash(OptaVsett1.ngmemory)Reservedarea”On-ChiPRash(FaetoryF1.aSh)Reservedarea”On-chipf1.ash(codef1.ash)(read1.y),<03创建一个BOot1.oader工程,添加SB-HMSC,F1.ash、RTC和CRC等外设.,其中USB添加主机大容Ift存储类(HMSO驱动程序,它实现了USBHMSC接口,可从USB大容量存储设备中读取、写入和擦除数据.04使用RTC设置系统时间.rorrtcinit();“(以WrCrn*w>«Ke1.In1.tfi1.d/AF-W-MIXMT(rV"TC:N:TFA1.1.COVn">;"”】WT(sXniitSyttC1W0tWTUrn);*rorst.ft<.<1.Mar.t1.(>if(rCC!rror)rtc.<n1.t();MZr.tM.HtXWT(VrtaTCU1.M<rY1.MUtfnw.rr<1.M1.f*tMdHw*.M*trtthejf1.1.ct1.C);1.eiap1.y(>);3JR.TWp);1mHUMTTIm“Mttoc<<tfvnya);初始化f1.ash驶动,然后在dataf1.ash中读取设得设SI的1.og.*M»MQ"3S.W.E5eWT1.tM1.Pe»KrT,皿RVV-);<wUy<>);,>ta.Ms1.M)>r*or*t*r1.1.tA-<.rM(<k1.*t.t)Mv1.c.Mt.aa>Un.1.*M<(*¼A.KM4*.t,»fW$rW?_yT4入E);ir(r_s«cass*or)uMevu>-cMrr1.erUactt*cRgQMtIMtU1.1.M>tzM*");初始化USB%动,等待US8设备插入,如果检测到有USB设备捅入,将会根据文件"O:Put1.mageHere/update.txt"中的内容.找到相应的Jsrec文件,并打开文件读写数据(将文件内容解析后烧写到APP1.iCation对应的地址空间),读写完成后将文件名改为"0:PUtImageHere1.oadcd.t×t".表示己完成数据读写if(*S<SCCCWS!rw)W*.K1MT(rWrwininitU1.izir«ATenUS»_XeCrrt>>1.dDitp1.yO);)18(1.""1.”WAC"""d2Mt«wrt,t*ta)>(U皿3.8ud4t.dv1.c.pr();if<!4Xt.0k)(1.O1.tp1.<F<>);W(<1.fM.1.W.ist>C1.Mt«Here”.3)Uupt.M)C”二c*jonKw;1.dMp1.y(2>(rWa三p1.tirwruRt.r>cutSaf1.y1.)<ctr11);utb2<4<2y.>ct()207Hi据信息类型擦除dataf1.ash中的数据,擦除成功后写入新的设备设置参数。*,10*9r(a<Mavi*s*.aw5),udMvi>O);ftB1.XuH>>».,<<gI1.K*U.WtW.tMU.1.WUMIUIM*4c.we><.M4*1.*>.JwM)(*u<V在属性分设置中输出SreC格式文件作为Boot1.oader烧录文件。09将Boot1.oader烧录到EK-RA4M3开发板上.首先,利用J-F1.ash1.ite将RA4M3整片擦除,然后将ra4m3JmSjnORTOS.srec烧写到芯片中,由于此时app部分内容为空,红色1.ED闪烁(按卜reset大概10秒后,红色IED闪烁).10打开e2studio新建App1.ication工程,用来脸证可以通过BOotIOader成功升级APPIiCation,若成功升级,三颗IED灯会不停地闪燥。M.X0.1.C1.,.11wJCCWwU1.0U_i«rert_rtri,1.1.2.grjc>>>M.叫JCyE.PiiMrcwas;打开memory,regions.1.d文件.F1.ASH.1.ENGTH三0x100000;更新为F1.ASH_1.ENGTH=OxEOOOO;由TBoOtIOader占用T0x20000大小,因此对TEK-RA4M3来说,仅剌下Ox100000-0x20000=OxEOOOO大小可供App1.ication使用.APP1.iCation工程生成SreC格式文件,卜图红框位.置勾选Section:-j.text&-j.data,使得app1.icationproject仅生成codef1.ash对1应的内容。准备一个U盘(FAT32格式),在里面建一个文件夹,命名为“PutImageHere”,将RA4M3_BUNKY.srec文件添加进去Uft(三)»FVI1.M4geHeeR23/?检312O?V2A1132SMC«W文尊文update.txt文件里面添加R4M3.B1.INKY.srecttf1.BU3«mwRA4MJBHNKYvec将U盘插入,开发板上电,当前运行的代码是Boot1.oader,由于此时尚未执行APPIiCation升级,因此1.ED2常亮,按下复位键,使得8oOt1.Oader卡新运行,执行APPHCat1.On代码升级,可以看到IED灯按照RA4M3,B1.INKY程序闪烁.将U盘插归I电脑查看'"PutImageHere"文件夹,可以看到update.txt变为Ioaded.txt,程序升级成功。看到这里,你掌握了吗?