⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.s79

📁 IAPBootLoader源程序是单片机ARM的在系统编程方法1
💻 S79
📖 第 1 页 / 共 2 页
字号:
//////////////////////////////////////////////////////////////////////////////
//                                                                           /
// IAR ARM ANSI C/C++ Compiler V4.40A/W32              17/Jan/2007  16:16:24 /
// Copyright 1999-2005 IAR Systems. All rights reserved.                     /
//                                                                           /
//    Cpu mode        =  arm                                                 /
//    Endian          =  little                                              /
//    Stack alignment =  4                                                   /
//    Source file     =  D:\lilian\STR71X\application note\IAP using         /
//                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\source\flash /
//                       .c                                                  /
//    Command line    =  "D:\lilian\STR71X\application note\IAP using        /
//                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\source\flash /
//                       .c" -lC "D:\lilian\STR71X\application note\IAP      /
//                       using UART\an2078_IAR(forum)\an2078\IAP_V2.0\user\D /
//                       ebug\List\" -lA "D:\lilian\STR71X\application       /
//                       note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2 /
//                       .0\user\Debug\List\" -o "D:\lilian\STR71X\applicati /
//                       on note\IAP using UART\an2078_IAR(forum)\an2078\IAP /
//                       _V2.0\user\Debug\Obj\" -z2 --no_cse --no_unroll     /
//                       --no_inline --no_code_motion --no_tbaa              /
//                       --no_clustering --no_scheduling --debug --cpu_mode  /
//                       arm --endian little --cpu ARM7TDMI --stack_align 4  /
//                       -e --fpu None --dlib_config "C:\Program Files\IAR   /
//                       Systems\Embedded Workbench                          /
//                       4.0\arm\LIB\dl4tpannl8n.h" --segment                /
//                       code=CODE_Flash -I "D:\lilian\STR71X\application    /
//                       note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2 /
//                       .0\user\..\include\" -I "D:\lilian\STR71X\applicati /
//                       on note\IAP using UART\an2078_IAR(forum)\an2078\IAP /
//                       _V2.0\user\..\common\" -I "C:\Program Files\IAR     /
//                       Systems\Embedded Workbench 4.0\arm\INC\"            /
//    List file       =  D:\lilian\STR71X\application note\IAP using         /
//                       UART\an2078_IAR(forum)\an2078\IAP_V2.0\user\Debug\L /
//                       ist\flash.s79                                       /
//                                                                           /
//                                                                           /
//////////////////////////////////////////////////////////////////////////////

        NAME flash

        RTMODEL "StackAlign4", "USED"
        RTMODEL "__cpu_mode", "__pcs__arm"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "6"

        RSEG CSTACK:DATA:NOROOT(2)

        PUBLIC FLASH_Init
        FUNCTION FLASH_Init,0203H
        PUBLIC FLASH_SectorErase
        FUNCTION FLASH_SectorErase,0203H
        LOCFRAME CSTACK, 8, STACK
        PUBLIC FLASH_WaitForLastTask
        FUNCTION FLASH_WaitForLastTask,0203H
        PUBLIC FLASH_WordWrite
        FUNCTION FLASH_WordWrite,0203H
        LOCFRAME CSTACK, 12, STACK
        PUBLIC FLASH_WritePrConfig
        FUNCTION FLASH_WritePrConfig,0203H
        LOCFRAME CSTACK, 12, STACK
        
        CFI Names cfiNames0
        CFI StackFrame CFA R13 HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, CPSR:32, R13:32
        CFI Resource R14:32, SPSR:32
        CFI VirtualResource ?RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress ?RET CODE
        CFI CFA R13+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI CPSR SameValue
        CFI R14 Undefined
        CFI SPSR SameValue
        CFI ?RET R14
        CFI EndCommon cfiCommon0
        
// D:\lilian\STR71X\application note\IAP using UART\an2078_IAR(forum)\an2078\IAP_V2.0\source\flash.c
//    1 /******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
//    2 * File Name          : flash.c
//    3 * Author             : MCD Application Team
//    4 * Date First Issued  : 07/28/2003
//    5 * Description        : This file provides all the Flash software functions.
//    6 ********************************************************************************
//    7 * History:
//    8 *  02/01/2006 : IAP Version 2.0
//    9 *  11/24/2004 : IAP Version 1.0
//   10 *******************************************************************************
//   11  THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
//   12  CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
//   13  AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
//   14  OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
//   15  OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
//   16  CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
//   17 *******************************************************************************/
//   18 
//   19 #include "flash.h"
//   20 
//   21 /*******************************************************************************
//   22 * Function Name  : FLASH_Init
//   23 * Description    : Initialise the Flash registers to their default values.
//   24 * Input          : None.
//   25 * Return         : None.
//   26 *******************************************************************************/

        RSEG CODE_Flash:CODE:NOROOT(2)
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function FLASH_Init
        ARM
//   27 void FLASH_Init(void)
//   28 {
//   29 /* Reset Flash Control Registers */
//   30   FLASHR->CR0 = 0x00000000;
FLASH_Init:
        MOV      R0,#+1073741824
        ORR      R0,R0,#0x100000
        MOV      R1,#+0
        STR      R1,[R0, #+0]
//   31   FLASHR->CR1 = 0x00000000;
        MOV      R0,#+1073741828
        ORR      R0,R0,#0x100000
        MOV      R1,#+0
        STR      R1,[R0, #+0]
//   32 /* Reset Flash Data Registers */
//   33   FLASHR->DR0 = 0xFFFFFFFF;
        MOV      R0,#+1073741832
        ORR      R0,R0,#0x100000
        MVN      R1,#+0
        STR      R1,[R0, #+0]
//   34   FLASHR->DR1 = 0xFFFFFFFF;
        MOV      R0,#+1073741836
        ORR      R0,R0,#0x100000
        MVN      R1,#+0
        STR      R1,[R0, #+0]
//   35 /* Reset Flash Error Register */
//   36   FLASHR->ER  = 0x00000000;
        MOV      R0,#+1073741844
        ORR      R0,R0,#0x100000
        MOV      R1,#+0
        STR      R1,[R0, #+0]
//   37 }
        MOV      PC,LR            ;; return
        CFI EndBlock cfiBlock0
//   38 
//   39 /*******************************************************************************
//   40 * Function Name  : FLASH_WordWrite
//   41 * Description    : Writes a Word in the Flash.
//   42 * Input 1        : Address of the Destination.
//   43 * Input 2        : Word to program at Address.
//   44 * Return         : None.
//   45 *******************************************************************************/

        RSEG CODE_Flash:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function FLASH_WordWrite
        ARM
//   46 void FLASH_WordWrite(u32 XtargetAdd, u32 Xdata)
//   47 {
FLASH_WordWrite:
        PUSH     {R4,R5,LR}
        CFI ?RET Frame(CFA, -4)
        CFI R5 Frame(CFA, -8)
        CFI R4 Frame(CFA, -12)
        CFI CFA R13+12
        MOVS     R4,R0
        MOVS     R5,R1
//   48   /* Wait until another operation going on is completed */
//   49   FLASH_WaitForLastTask();
        BL       FLASH_WaitForLastTask
//   50   /* Set the Word Programming bit 'WPG' in the CR0 Reg */
//   51   FLASHR->CR0 |= FLASH_WPG_Mask;
        MOV      R0,#+1073741824
        ORR      R0,R0,#0x100000
        MOV      R1,#+1073741824
        ORR      R1,R1,#0x100000
        LDR      R1,[R1, #+0]
        ORRS     R1,R1,#0x20000000
        STR      R1,[R0, #+0]
//   52   /* Load the destination address in AR */
//   53   FLASHR->AR   = XtargetAdd;
        MOV      R0,#+1073741840
        ORR      R0,R0,#0x100000
        STR      R4,[R0, #+0]
//   54   /* Load DATA to be programmed in DR0 */
//   55   FLASHR->DR0  = Xdata;
        MOV      R0,#+1073741832
        ORR      R0,R0,#0x100000
        STR      R5,[R0, #+0]
//   56   /* Set the Write Mode Start bit 'WMS' in the CR0 Reg to Start Write Operation */
//   57   FLASHR->CR0 |= FLASH_WMS_Mask;
        MOV      R0,#+1073741824
        ORR      R0,R0,#0x100000
        MOV      R1,#+1073741824

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -