📄 flash.s79
字号:
//////////////////////////////////////////////////////////////////////////////
// /
// 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 + -