求助,44bo程序烧写问题

[复制链接]
4476|17
 楼主| zhaoem82 发表于 2007-1-3 17:29 | 显示全部楼层 |阅读模式
我的硬件系统是44b0+sst39vf1601,使用h-jtag调试时正常,但使用H-flasher将程序下载到flash中程序不能运行。我下载开发板提供的目标代码正常。<br />我ads中的arm&nbsp;linker中的ro-base中设置为0x0(flash起始地址),rw-base中设置为0X0C000000(我的开发板中的sdram的起始地址是0X0C000000)。<br />并在layout中设置起止部分为44binit.o,section为init<br />附启动程序,请大家帮忙看看,谢谢!<br />&nbsp;&nbsp;INCLUDE&nbsp;..\inc\option.s<br />&nbsp;&nbsp;&nbsp;&nbsp;INCLUDE&nbsp;..\inc\memcfg.s<br />&nbsp;&nbsp;&nbsp;&nbsp;EXPORT&nbsp;START<br /><br />;****************************************************************************<br />;存储器空间<br />;GCS6&nbsp;64M&nbsp;16bit(8MB)&nbsp;DRAM/SDRAM(0xc000000-0xc7fffff)<br />;APP&nbsp;&nbsp;&nbsp;&nbsp;RAM=0xc000000~0xc7effff&nbsp;<br />;44BMON&nbsp;RAM=0xc7f0000-0xc7fffff<br />;STACK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=0xc7ffa00&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />;****************************************************************************<br />;中断控制预定义<br />INTPND&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01e00004<br />INTMOD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01e00008<br />INTMSK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01e0000c<br />I_ISPR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01e00020<br />I_CMST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01e0001c<br /><br />;****************************************************************************<br />;看门狗定时器预定义<br />WTCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01d30000<br /><br />;****************************************************************************<br />;系统时钟预定义<br />PLLCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01d80000<br />CLKCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01d80004<br />LOCKTIME&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x01d8000c<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />;****************************************************************************<br />;存储器控制预定义<br />REFRESH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;0x01c80024<br /><br />;****************************************************************************<br />;BDMA目的寄存器<br />BDIDES0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;0x1f80008<br />BDIDES1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;0x1f80028<br /><br />;****************************************************************************<br />;预定义常数(常量)<br />USERMODE&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x10<br />FIQMODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x11<br />IRQMODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x12<br />SVCMODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x13<br />ABORTMODE&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x17<br />UNDEFMODE&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x1b<br />MODEMASK&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0x1f<br />NOINT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;EQU&nbsp;&nbsp;&nbsp;&nbsp;0xc0<br /><br />;****************************************************************************<br />;检查是否使用tasm.exe进行编译<br />&nbsp;&nbsp;&nbsp;&nbsp;GBLL&nbsp;&nbsp;&nbsp;&nbsp;THUMBCODE<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;{CONFIG}&nbsp;=&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;<br />THUMBCODE&nbsp;SETL&nbsp;&nbsp;&nbsp;&nbsp;{TRUE}<br />&nbsp;&nbsp;&nbsp;&nbsp;CODE32<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;<br />THUMBCODE&nbsp;SETL&nbsp;&nbsp;&nbsp;&nbsp;{FALSE}<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;THUMBCODE<br />&nbsp;&nbsp;&nbsp;&nbsp;CODE32&nbsp;&nbsp;&nbsp;;for&nbsp;start-up&nbsp;code&nbsp;for&nbsp;Thumb&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;MACRO<br />$HandlerLabel&nbsp;HANDLER&nbsp;$HandleLabel<br /><br />;****************************************************************************<br />$HandlerLabel<br />&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,sp,#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;decrement&nbsp;sp(to&nbsp;store&nbsp;jump&nbsp;address)<br />&nbsp;&nbsp;&nbsp;&nbsp;stmfd&nbsp;&nbsp;&nbsp;sp!,{r0}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;PUSH&nbsp;the&nbsp;work&nbsp;register&nbsp;to&nbsp;stack(lr&nbsp;does't&nbsp;push&nbsp;because&nbsp;it&nbsp;return&nbsp;to&nbsp;original&nbsp;address)<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=$HandleLabel;load&nbsp;the&nbsp;address&nbsp;of&nbsp;HandleXXX&nbsp;to&nbsp;r0<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[r0]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;load&nbsp;the&nbsp;contents(service&nbsp;routine&nbsp;start&nbsp;address)&nbsp;of&nbsp;HandleXXX<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,[sp,#4]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;store&nbsp;the&nbsp;contents(ISR)&nbsp;of&nbsp;HandleXXX&nbsp;to&nbsp;stack<br />&nbsp;&nbsp;&nbsp;&nbsp;ldmfd&nbsp;&nbsp;&nbsp;sp!,{r0,pc}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;POP&nbsp;the&nbsp;work&nbsp;register&nbsp;and&nbsp;pc(jump&nbsp;to&nbsp;ISR)<br />&nbsp;&nbsp;&nbsp;&nbsp;MEND<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;&nbsp;&nbsp;|Image$$RO$$Limit|&nbsp;&nbsp;;&nbsp;End&nbsp;of&nbsp;ROM&nbsp;code&nbsp;(=start&nbsp;of&nbsp;ROM&nbsp;data)<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;&nbsp;&nbsp;|Image$$RW$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;of&nbsp;RAM&nbsp;to&nbsp;initialise<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;&nbsp;&nbsp;|Image$$ZI$$Base|&nbsp;&nbsp;&nbsp;;&nbsp;Base&nbsp;and&nbsp;limit&nbsp;of&nbsp;area<br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;&nbsp;&nbsp;|Image$$ZI$$Limit|&nbsp;&nbsp;;&nbsp;to&nbsp;zero&nbsp;initialise<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IMPORT&nbsp;&nbsp;Main&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;The&nbsp;main&nbsp;entry&nbsp;of&nbsp;mon&nbsp;program&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;&nbsp;&nbsp;&nbsp;Init,CODE,READONLY<br /><br />;****************************************************************************<br />&nbsp;&nbsp;&nbsp;&nbsp;ENTRY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;汇编程序入口<br />START<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;ResetHandler&nbsp;&nbsp;;for&nbsp;debug<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;HandlerUndef&nbsp;&nbsp;;handlerUndef<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;HandlerSWI&nbsp;&nbsp;&nbsp;&nbsp;;SWI&nbsp;interrupt&nbsp;handler<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;HandlerPabort&nbsp;;handlerPAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;HandlerDabort&nbsp;;handlerDAbort<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;handlerReserved<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;HandlerIRQ<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;HandlerFIQ<br />&nbsp;&nbsp;&nbsp;&nbsp;;***IMPORTANT&nbsp;NOTE***<br />&nbsp;&nbsp;&nbsp;&nbsp;;If&nbsp;the&nbsp;H/W&nbsp;vectored&nbsp;interrutp&nbsp;mode&nbsp;is&nbsp;enabled,&nbsp;The&nbsp;above&nbsp;two&nbsp;instructions&nbsp;should<br />&nbsp;&nbsp;&nbsp;&nbsp;;be&nbsp;changed&nbsp;like&nbsp;below,&nbsp;to&nbsp;work-around&nbsp;with&nbsp;H/W&nbsp;bug&nbsp;of&nbsp;S3C44B0X&nbsp;interrupt&nbsp;controller.&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;b&nbsp;HandlerIRQ&nbsp;&nbsp;-&gt&nbsp;&nbsp;subs&nbsp;pc,lr,#4<br />&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;b&nbsp;HandlerIRQ&nbsp;&nbsp;-&gt&nbsp;&nbsp;subs&nbsp;pc,lr,#4<br /><br />;****************************************************************************<br />VECTOR_BRANCH<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerEINT0&nbsp;&nbsp;&nbsp;&nbsp;;mGA&nbsp;&nbsp;&nbsp;&nbsp;H/W&nbsp;interrupt&nbsp;vector&nbsp;table<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerEINT1&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerEINT2&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerEINT3&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerEINT4567&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerTICK&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;mGA<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerZDMA0&nbsp;&nbsp;&nbsp;&nbsp;;mGB<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerZDMA1&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerBDMA0&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerBDMA1&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerWDT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerUERR01&nbsp;&nbsp;&nbsp;;mGB<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerTIMER0&nbsp;&nbsp;&nbsp;;mGC<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerTIMER1&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerTIMER2&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerTIMER3&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerTIMER4&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerTIMER5&nbsp;&nbsp;&nbsp;;mGC<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerURXD0&nbsp;&nbsp;&nbsp;&nbsp;;mGD<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerURXD1&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerIIC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerSIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerUTXD0&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerUTXD1&nbsp;&nbsp;&nbsp;&nbsp;;mGD<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerRTC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;mGKA<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;mGKA<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=HandlerADC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;mGKB<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;mGKB<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;.<br />;0xe0=EnterPWDN<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;pc,=EnterPWDN<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LTORG&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />;****************************************************************************<br />HandlerFIQ&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleFIQ<br />HandlerIRQ&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleIRQ<br />HandlerUndef&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleUndef<br />HandlerSWI&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleSWI<br />HandlerDabort&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleDabort<br />HandlerPabort&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandlePabort<br /><br />HandlerADC&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleADC<br />HandlerRTC&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleRTC<br />HandlerUTXD1&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleUTXD1<br />HandlerUTXD0&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleUTXD0<br />HandlerSIO&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleSIO<br />HandlerIIC&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleIIC<br />HandlerURXD1&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleURXD1<br />HandlerURXD0&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleURXD0<br />HandlerTIMER5&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleTIMER5<br />HandlerTIMER4&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleTIMER4<br />HandlerTIMER3&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleTIMER3<br />HandlerTIMER2&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleTIMER2<br />HandlerTIMER1&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleTIMER1<br />HandlerTIMER0&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleTIMER0<br />HandlerUERR01&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleUERR01<br />HandlerWDT&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleWDT<br />HandlerBDMA1&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleBDMA1<br />HandlerBDMA0&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleBDMA0<br />HandlerZDMA1&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleZDMA1<br />HandlerZDMA0&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleZDMA0<br />HandlerTICK&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleTICK<br />HandlerEINT4567&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleEINT4567<br />HandlerEINT3&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleEINT3<br />HandlerEINT2&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleEINT2<br />HandlerEINT1&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleEINT1<br />HandlerEINT0&nbsp;&nbsp;&nbsp;&nbsp;HANDLER&nbsp;HandleEINT0<br /><br /><br />;****************************************************************************<br />;下面两个程序中的一个可以用作无向量中断<br />IsrIRQ&nbsp;&nbsp;&nbsp;&nbsp;;using&nbsp;I_ISPR&nbsp;register.<br />&nbsp;&nbsp;&nbsp;&nbsp;sub&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,sp,#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;reserved&nbsp;for&nbsp;PC<br />&nbsp;&nbsp;&nbsp;&nbsp;stmfd&nbsp;&nbsp;&nbsp;sp!,{r8-r9}&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;IMPORTANT&nbsp;CAUTION<br />&nbsp;&nbsp;&nbsp;&nbsp;;if&nbsp;I_ISPC&nbsp;isn't&nbsp;used&nbsp;properly,&nbsp;I_ISPR&nbsp;can&nbsp;be&nbsp;0&nbsp;in&nbsp;this&nbsp;routine.<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,=I_ISPR<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,[r9]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,&nbsp;#0x0&nbsp;&nbsp;&nbsp;&nbsp;;If&nbsp;the&nbsp;IDLE&nbsp;mode&nbsp;work-around&nbsp;is&nbsp;used,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;r9&nbsp;may&nbsp;be&nbsp;0&nbsp;sometimes.<br />&nbsp;&nbsp;&nbsp;&nbsp;beq&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%F2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r8,#0x0<br />0<br />&nbsp;&nbsp;&nbsp;&nbsp;movs&nbsp;&nbsp;&nbsp;&nbsp;r9,r9,lsr&nbsp;#1<br />&nbsp;&nbsp;&nbsp;&nbsp;bcs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%F1<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r8,r8,#4<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%B0<br /><br />1<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,=HandleADC<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,r9,r8<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,[r9]<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r9,[sp,#8]<br />&nbsp;&nbsp;&nbsp;&nbsp;ldmfd&nbsp;&nbsp;&nbsp;sp!,{r8-r9,pc}<br /><br />2<br />&nbsp;&nbsp;&nbsp;&nbsp;ldmfd&nbsp;&nbsp;&nbsp;&nbsp;sp!,{r8-r9}<br />&nbsp;&nbsp;&nbsp;&nbsp;add&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,sp,#4<br />&nbsp;&nbsp;&nbsp;&nbsp;subs&nbsp;&nbsp;&nbsp;&nbsp;pc,lr,#4<br /><br />;****************************************************************************<br />;初始化程序开始<br />ResetHandler<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=WTCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;禁止看门狗<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=INTMSK<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x07ffffff&nbsp;&nbsp;;禁止所有中断<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;设定时钟控制寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=LOCKTIME<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=0xfff<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;PLLONSTART<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r0,=PLLCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;锁相环倍频设定<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;r1,=((M_DIV&lt&lt12)+(P_DIV&lt&lt4)+S_DIV)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;设定系统主时钟频率<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;r1,][r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=CLKCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x7ff8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;所有功能单元块时钟使能<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />;****************************************************************************<br />;为BDMA改变BDMACON的复位值<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=BDIDES0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x40000000&nbsp;&nbsp;&nbsp;;BDIDESn&nbsp;reset&nbsp;value&nbsp;should&nbsp;be&nbsp;0x40000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=BDIDES1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=0x40000000&nbsp;&nbsp;&nbsp;;BDIDESn&nbsp;reset&nbsp;value&nbsp;should&nbsp;be&nbsp;0x40000000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />;****************************************************************************<br />;设定存储器控制寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=SMRDATA<br />&nbsp;&nbsp;&nbsp;&nbsp;ldmia&nbsp;&nbsp;&nbsp;r0,{r1-r13}<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=0x01c80000&nbsp;&nbsp;;BWSCON&nbsp;Address<br />&nbsp;&nbsp;&nbsp;&nbsp;stmia&nbsp;&nbsp;&nbsp;r0,{r1-r13}<br /><br />;****************************************************************************<br />;初始化堆栈<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,&nbsp;=SVCStack<br />&nbsp;&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InitStacks<br /><br />;****************************************************************************<br />;设置中断处理<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=HandleIRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;This&nbsp;routine&nbsp;is&nbsp;needed<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,=IsrIRQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;if&nbsp;there&nbsp;isn't&nbsp;'subs&nbsp;pc,lr,#4'&nbsp;at&nbsp;0x18,&nbsp;0x1c<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,[r0]<br /><br />;****************************************************************************<br />;Copy&nbsp;and&nbsp;paste&nbsp;RW&nbsp;data/zero&nbsp;initialized&nbsp;data<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;=|Image$$RO$$Limit|&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Get&nbsp;pointer&nbsp;to&nbsp;ROM&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=|Image$$RW$$Base|&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;and&nbsp;RAM&nbsp;copy<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;=|Image$$ZI$$Base|&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;;Zero&nbsp;init&nbsp;base&nbsp;=&gt&nbsp;top&nbsp;of&nbsp;initialised&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,&nbsp;r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Check&nbsp;that&nbsp;they&nbsp;are&nbsp;different<br />&nbsp;&nbsp;&nbsp;&nbsp;BEQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%F1<br />0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;r3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Copy&nbsp;init&nbsp;data<br />&nbsp;&nbsp;&nbsp;&nbsp;LDRCC&nbsp;&nbsp;&nbsp;r2,&nbsp;[r0],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;--&gt&nbsp;LDRCC&nbsp;r2,&nbsp;[r0]&nbsp;+&nbsp;ADD&nbsp;r0,&nbsp;r0,&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;STRCC&nbsp;&nbsp;&nbsp;r2,&nbsp;[r1],&nbsp;#4&nbsp;&nbsp;&nbsp;&nbsp;;--&gt&nbsp;STRCC&nbsp;r2,&nbsp;[r1]&nbsp;+&nbsp;ADD&nbsp;r1,&nbsp;r1,&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;BCC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%B0<br />1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;LDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;=|Image$$ZI$$Limit|&nbsp;;&nbsp;Top&nbsp;of&nbsp;zero&nbsp;init&nbsp;segment<br />&nbsp;&nbsp;&nbsp;&nbsp;MOV&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2,&nbsp;#0<br />2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CMP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r3,&nbsp;r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;Zero&nbsp;init<br />&nbsp;&nbsp;&nbsp;&nbsp;STRCC&nbsp;&nbsp;&nbsp;r2,&nbsp;[r3],&nbsp;#4<br />&nbsp;&nbsp;&nbsp;&nbsp;BCC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%B2<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;:LNOT:THUMBCODE<br />&nbsp;&nbsp;&nbsp;&nbsp;BL&nbsp;&nbsp;&nbsp;&nbsp;Main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;从汇编进入C语言代码空间,不要使用main()<br />&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;THUMBCODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;for&nbsp;start-up&nbsp;code&nbsp;for&nbsp;Thumb&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lr,pc,#1<br />&nbsp;&nbsp;&nbsp;&nbsp;bx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lr<br />&nbsp;&nbsp;&nbsp;&nbsp;CODE16<br />&nbsp;&nbsp;&nbsp;&nbsp;bl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;从汇编进入C语言代码空间,不要使用main()<br />&nbsp;&nbsp;&nbsp;&nbsp;b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.<br />&nbsp;&nbsp;&nbsp;&nbsp;CODE32<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br /><br />;****************************************************<br />;本函数用来初始化堆栈<br />;****************************************************<br />InitStacks<br />&nbsp;&nbsp;&nbsp;&nbsp;;Don't&nbsp;use&nbsp;DRAM,such&nbsp;as&nbsp;stmfd,ldmfd......<br />&nbsp;&nbsp;&nbsp;&nbsp;;SVCstack&nbsp;is&nbsp;initialized&nbsp;before<br />&nbsp;&nbsp;&nbsp;&nbsp;;Under&nbsp;toolkit&nbsp;ver&nbsp;2.50,&nbsp;'msr&nbsp;cpsr,r1'&nbsp;can&nbsp;be&nbsp;used&nbsp;instead&nbsp;of&nbsp;'msr&nbsp;cpsr_cxsf,r1'<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;mrs&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,cpsr<br />&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODEMASK<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#UNDEFMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;UndefMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=UndefStack<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#ABORTMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;AbortMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=AbortStack<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#IRQMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;IRQMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=IRQStack<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#FIQMODE|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;FIQMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=FIQStack<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;bic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#MODEMASK|NOINT<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,r0,#SVCMODE<br />&nbsp;&nbsp;&nbsp;&nbsp;msr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpsr_cxsf,r1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;SVCMode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sp,=SVCStack<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;;USER&nbsp;mode&nbsp;is&nbsp;not&nbsp;initialized.<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,lr&nbsp;;The&nbsp;LR&nbsp;register&nbsp;may&nbsp;be&nbsp;not&nbsp;valid&nbsp;for&nbsp;the&nbsp;mode&nbsp;changes.<br /><br />;****************************************************<br />;本函数用来进入掉电模式<br />;****************************************************<br />;void&nbsp;EnterPWDN(int&nbsp;CLKCON);<br />EnterPWDN<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2,r0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;r0=CLKCON<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=REFRESH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r3,[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;r3<br />&nbsp;&nbsp;&nbsp;&nbsp;orr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;r1,&nbsp;#0x400000&nbsp;&nbsp;&nbsp;;self-refresh&nbsp;enable<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r1,&nbsp;[r0]<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;nop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;Wait&nbsp;until&nbsp;self-refresh&nbsp;is&nbsp;issued.&nbsp;May&nbsp;not&nbsp;be&nbsp;needed.<br />&nbsp;&nbsp;&nbsp;&nbsp;nop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;If&nbsp;the&nbsp;other&nbsp;bus&nbsp;master&nbsp;holds&nbsp;the&nbsp;bus,&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;nop&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;&nbsp;mov&nbsp;r0,&nbsp;r0<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br />&nbsp;&nbsp;&nbsp;&nbsp;nop<br /><br />;enter&nbsp;POWERDN&nbsp;mode<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=CLKCON<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r2,[r0]<br /><br />;wait&nbsp;until&nbsp;enter&nbsp;SL_IDLE,STOP&nbsp;mode&nbsp;and&nbsp;until&nbsp;wake-up<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,#0xff<br />0&nbsp;&nbsp;&nbsp;subs&nbsp;&nbsp;&nbsp;&nbsp;r0,r0,#1<br />&nbsp;&nbsp;&nbsp;&nbsp;bne&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;%B0<br /><br />;exit&nbsp;from&nbsp;DRAM/SDRAM&nbsp;self&nbsp;refresh&nbsp;mode.<br />&nbsp;&nbsp;&nbsp;&nbsp;ldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r0,=REFRESH<br />&nbsp;&nbsp;&nbsp;&nbsp;str&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r3,[r0]<br />&nbsp;&nbsp;&nbsp;&nbsp;mov&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc,lr<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;LTORG<br /><br />SMRDATA&nbsp;DATA<br />;*****************************************************************<br />;存储器最好配置成最优的性能,下面的参数不是最优化的<br />;*****************************************************************<br /><br />;***&nbsp;memory&nbsp;access&nbsp;cycle&nbsp;parameter&nbsp;strategy&nbsp;***<br />;&nbsp;1)&nbsp;Even&nbsp;FP-DRAM,&nbsp;EDO&nbsp;setting&nbsp;has&nbsp;more&nbsp;late&nbsp;fetch&nbsp;point&nbsp;by&nbsp;half-clock<br />;&nbsp;2)&nbsp;The&nbsp;memory&nbsp;settings,here,&nbsp;are&nbsp;made&nbsp;the&nbsp;safe&nbsp;parameters&nbsp;even&nbsp;at&nbsp;66Mhz.<br />;&nbsp;3)&nbsp;FP-DRAM&nbsp;Parameters:tRCD=3&nbsp;for&nbsp;tRAC,&nbsp;tcas=2&nbsp;for&nbsp;pad&nbsp;delay,&nbsp;tcp=2&nbsp;for&nbsp;bus&nbsp;load.<br />;&nbsp;4)&nbsp;DRAM&nbsp;refresh&nbsp;rate&nbsp;is&nbsp;for&nbsp;40Mhz.&nbsp;<br /><br />;bank0&nbsp;&nbsp;&nbsp;&nbsp;16bit&nbsp;BOOT&nbsp;ROM&nbsp;SST39VF160/SST39VF320<br />;bank1&nbsp;&nbsp;&nbsp;&nbsp;8bit&nbsp;Nand&nbsp;Flash&nbsp;K9F2808U0A/K9F5608U0A<br />;bank2&nbsp;&nbsp;&nbsp;&nbsp;16bit&nbsp;USB1.1&nbsp;PDIUSBD12<br />;bank3&nbsp;&nbsp;&nbsp;&nbsp;RTL8019<br />;bank4&nbsp;&nbsp;&nbsp;&nbsp;No&nbsp;Uesed<br />;bank5&nbsp;&nbsp;&nbsp;&nbsp;No&nbsp;Uesed<br />;bank6&nbsp;&nbsp;&nbsp;&nbsp;16bit&nbsp;SDRAM<br />;bank7&nbsp;&nbsp;&nbsp;&nbsp;16bit&nbsp;SDRAM<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;BUSWIDTH=16<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x11111111&nbsp;&nbsp;&nbsp;&nbsp;;Bank0=OM][1:0],&nbsp;Bank0~Bank7=16bit<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x11111001&nbsp;&nbsp;&nbsp;&nbsp;;Bank0=OM[1:0]&nbsp;&nbsp;16bit&nbsp;BootRomSST39VF160/SST39VF320)&nbsp;:0x0<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|||||||-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bank1=8bit&nbsp;Nand&nbsp;Flash<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|||||---&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bank2=8bit&nbsp;PDIUSBD12<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;||||----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bank3=16bit&nbsp;RTL8019<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|||-----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bank4~5=16bit&nbsp;No&nbsp;Uesd<br />;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bank6~7=16bit&nbsp;SDRAM<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;;BUSWIDTH=32<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x22222220&nbsp;&nbsp;&nbsp;&nbsp;;Bank0=OM[1:0],&nbsp;Bank1~Bank7=32bit<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B0_Tacs&lt&lt13)+(B0_Tcos&lt&lt11)+(B0_Tacc&lt&lt8)+(B0_Tcoh&lt&lt6)+(B0_Tah&lt&lt4)+(B0_Tacp&lt&lt2)+(B0_PMC))&nbsp;&nbsp;&nbsp;&nbsp;;GCS0<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B1_Tacs&lt&lt13)+(B1_Tcos&lt&lt11)+(B1_Tacc&lt&lt8)+(B1_Tcoh&lt&lt6)+(B1_Tah&lt&lt4)+(B1_Tacp&lt&lt2)+(B1_PMC))&nbsp;&nbsp;&nbsp;&nbsp;;GCS1&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B2_Tacs&lt&lt13)+(B2_Tcos&lt&lt11)+(B2_Tacc&lt&lt8)+(B2_Tcoh&lt&lt6)+(B2_Tah&lt&lt4)+(B2_Tacp&lt&lt2)+(B2_PMC))&nbsp;&nbsp;&nbsp;&nbsp;;GCS2<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B3_Tacs&lt&lt13)+(B3_Tcos&lt&lt11)+(B3_Tacc&lt&lt8)+(B3_Tcoh&lt&lt6)+(B3_Tah&lt&lt4)+(B3_Tacp&lt&lt2)+(B3_PMC))&nbsp;&nbsp;&nbsp;&nbsp;;GCS3<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B4_Tacs&lt&lt13)+(B4_Tcos&lt&lt11)+(B4_Tacc&lt&lt8)+(B4_Tcoh&lt&lt6)+(B4_Tah&lt&lt4)+(B4_Tacp&lt&lt2)+(B4_PMC))&nbsp;&nbsp;&nbsp;&nbsp;;GCS4<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B5_Tacs&lt&lt13)+(B5_Tcos&lt&lt11)+(B5_Tacc&lt&lt8)+(B5_Tcoh&lt&lt6)+(B5_Tah&lt&lt4)+(B5_Tacp&lt&lt2)+(B5_PMC))&nbsp;&nbsp;&nbsp;&nbsp;;GCS5<br />&nbsp;&nbsp;&nbsp;&nbsp;[&nbsp;BDRAMTYPE=&quot;DRAM&quot;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B6_MT&lt&lt15)+(B6_Trcd&lt&lt4)+(B6_Tcas&lt&lt3)+(B6_Tcp&lt&lt2)+(B6_CAN))&nbsp;&nbsp;&nbsp;&nbsp;;GCS6&nbsp;check&nbsp;the&nbsp;MT&nbsp;value&nbsp;in&nbsp;parameter.a<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B7_MT&lt&lt15)+(B7_Trcd&lt&lt4)+(B7_Tcas&lt&lt3)+(B7_Tcp&lt&lt2)+(B7_CAN))&nbsp;&nbsp;&nbsp;&nbsp;;GCS7<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;;&quot;SDRAM&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B6_MT&lt&lt15)+(B6_Trcd&lt&lt2)+(B6_SCAN))&nbsp;&nbsp;&nbsp;&nbsp;;GCS6<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((B7_MT&lt&lt15)+(B7_Trcd&lt&lt2)+(B7_SCAN))&nbsp;&nbsp;&nbsp;&nbsp;;GCS7<br />&nbsp;&nbsp;&nbsp;&nbsp;]<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;((REFEN&lt&lt23)+(TREFMD&lt&lt22)+(Trp&lt&lt20)+(Trc&lt&lt18)+(Tchr&lt&lt16)+REFCNT)&nbsp;&nbsp;&nbsp;&nbsp;;REFRESH&nbsp;RFEN=1,&nbsp;TREFMD=0,&nbsp;trp=3clk,&nbsp;trc=5clk,&nbsp;tchr=3clk,count=1019<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;SCLK&nbsp;power&nbsp;down&nbsp;mode,&nbsp;BANKSIZE&nbsp;32M/32M<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MRSR6&nbsp;CL=2clk<br />&nbsp;&nbsp;&nbsp;&nbsp;DCD&nbsp;0x20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;MRSR7<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;ALIGN<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;AREA&nbsp;RamData,&nbsp;DATA,&nbsp;READWRITE<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;^&nbsp;&nbsp;&nbsp;&nbsp;(_ISR_STARTADDRESS-0x500)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />UserStack&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;256&nbsp;&nbsp;&nbsp;&nbsp;;c1(c7)ffa00<br />SVCStack&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;256&nbsp;&nbsp;&nbsp;&nbsp;;c1(c7)ffb00<br />UndefStack&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;256&nbsp;&nbsp;&nbsp;&nbsp;;c1(c7)ffc00<br />AbortStack&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;256&nbsp;&nbsp;&nbsp;&nbsp;;c1(c7)ffd00<br />IRQStack&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;256&nbsp;&nbsp;&nbsp;&nbsp;;c1(c7)ffe00<br />FIQStack&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;;c1(c7)fff00<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^&nbsp;&nbsp;&nbsp;&nbsp;_ISR_STARTADDRESS<br />HandleReset&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleUndef&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleSWI&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandlePabort&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleDabort&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleReserved&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleIRQ&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleFIQ&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br /><br />;Don't&nbsp;use&nbsp;the&nbsp;label&nbsp;'IntVectorTable',<br />;because&nbsp;armasm.exe&nbsp;cann't&nbsp;recognize&nbsp;this&nbsp;label&nbsp;correctly.<br />;the&nbsp;value&nbsp;is&nbsp;different&nbsp;with&nbsp;an&nbsp;address&nbsp;you&nbsp;think&nbsp;it&nbsp;may&nbsp;be.<br />;IntVectorTable<br />HandleADC&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleRTC&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleUTXD1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleUTXD0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleSIO&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleIIC&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleURXD1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleURXD0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleTIMER5&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleTIMER4&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleTIMER3&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleTIMER2&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleTIMER1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleTIMER0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleUERR01&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleWDT&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleBDMA1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleBDMA0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleZDMA1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleZDMA0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleTICK&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleEINT4567&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleEINT3&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleEINT2&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleEINT1&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4<br />HandleEINT0&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp;;0xc1(c7)fff84<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;END<br />;****************************************************************************
 楼主| zhaoem82 发表于 2007-1-4 08:38 | 显示全部楼层

请高手帮忙,我调了几天了,还是不行,谢谢!

  
龙兄 发表于 2007-1-4 09:23 | 显示全部楼层

为什么不在FLASH中调试一下呢

为什么不在FLASH中调试一下呢?这样就可以看到你的程序在哪里出错啊
 楼主| zhaoem82 发表于 2007-1-4 10:08 | 显示全部楼层

龙兄,怎样在flash中调试?

是否是跟在sdram中调试一样只是将地址改到flash?
js_wawayu 发表于 2007-1-4 18:34 | 显示全部楼层

开发板原来提供的工程里rw-base也是0xc000000吗

  
 楼主| zhaoem82 发表于 2007-1-4 20:27 | 显示全部楼层

开发板原来提供的工程ro-base 0xc000000 rw-base 0xc5f0000

不过是调试模式的,没有找到其它设置.我看开发板上的说明是SDRAM的片选引脚接在nSCS6上面,它的地址从0X0C000000开始。flash的起始地址是0X00000000。
js_wawayu 发表于 2007-1-5 08:16 | 显示全部楼层

我以前用开放板调试时,SDRAM起始地址和你一样

不过设置的RW-BASE不是起始地址,因为开放板需要利用SDRAM起始的一段空间作为LCD的显存,你最好仔细看看开放板的资料。
 楼主| zhaoem82 发表于 2007-1-5 20:40 | 显示全部楼层

我的开发板上没有LCD,我只是写了个简单程序测试

我把程序下载到sdram中运行正常,但修改ro-base下载到flash中运行不正常!<br />我的开发板说明书好简单,没有说明这方面的,我自己试了好几天,还是不行,希望大家帮帮忙,谢谢!
zky2003 发表于 2007-1-6 14:34 | 显示全部楼层

你下载是的是不是.hex的文件?

1.建议你编译一个.ELF文件用FLASHPGM下载下去试试<br />2.在FLASH里用AXD调试,但是加载文件的时候选用&quot;debug&nbsp;symbol&quot;
 楼主| zhaoem82 发表于 2007-1-6 21:26 | 显示全部楼层

我下载是.hex的文件

我的jtag小板是sdt方式的,好像FLASHPGM不支持这种方式,用h-flasher行吗?<br />先谢谢了!
 楼主| zhaoem82 发表于 2007-1-18 21:17 | 显示全部楼层

我调了一个多星期,还没解决,请大家帮忙!

  
kyflash 发表于 2007-1-18 23:47 | 显示全部楼层

地址问题吧

一般bootloader会把烧写在FLASH中的代码拷贝到SDRAM里面再运行的,你的板子肯定也是这么做的,所以你的代码RO&nbsp;&nbsp;RW段的地址都必须是SDRAM地址能够覆盖的地址空间.<br />你再把RO&nbsp;改成FLASH地址,运行时候SDRAM当然寻址不到了<br /><br /><br />
yxhyxh 发表于 2007-1-19 08:59 | 显示全部楼层

先把ARM的启动过程搞清楚再去调吧。

另外想问一点,你用什么手段将代码下载到FLASH中去的,确定是下载到FLASH中去了么?<br />我以前做的时候,是将启动代码作了一定的修改,使它具备在RAM中运行程序的功能,再加上通过串行口将应用程序写入FLASH的功能的。裸机时的第一版程序是通过FLUTED软件,通过JTAG口下载到FLASH中去的
 楼主| zhaoem82 发表于 2007-1-19 09:21 | 显示全部楼层

回kyflash

RO不是要改成FLASH地址的起始地址吗?我的flash的起始地址就0x0,我现在将r0设成0x0,Sdram的起始地址为0xc000000,我将rw设置成0xc000000
 楼主| zhaoem82 发表于 2007-1-19 09:29 | 显示全部楼层

回yxhyxh

我的板已用过FLUTED软件下载程序了并且能正常运行,不过下载的文件是开发板光盘中的bin文件,的自己编写了一个程序和我在开发板中找到的工程文件编译成后,下载不能正常动行,因为开发板没有技术支持,没办法.
 楼主| zhaoem82 发表于 2007-1-19 09:34 | 显示全部楼层

补充一点

程序应当已下载到开发板中,因为我写的程序是定时向串口中发送一串字符,我在串口监控中看到程序开始时发送的字符,不过之后就好像死机了.复位后又能发送一点.程序我在sdram中调试是正常的.请大家指点.
kyflash 发表于 2007-1-19 15:48 | 显示全部楼层

该去看看ARM7启动过程

0地址一般是外部FLASH起始地址,也有ARM7芯片外部FLASH不是接在0地址,ARM7启动始终从0地址开始,并且0地址应连续几个字节存放中断向量表.<br />bootloader就是从0地址启动运行,初始化系统以后,再根据你下载的代码中的RO,RW地址把你下载到FLASH中的代码拷贝到SDRAM里面,完后就开始从你代码起始处(main函数)开始运行.或者bootloader完成一些初始化工作后直接跳转到你代码起始处运行.RO&nbsp;&nbsp;RW的设置就是告诉bootloader两个地址而已.<br />如果你没有使用bootloader的话,比如跑简单的流水灯啊,可以直接下载到FLASH里,配合外部SDRAM或者内部CACHE运行,此时RO才设置为FLASH地址<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

75

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部