keil startup dosyaları

Başlatan armsistem, 22 Eylül 2011, 19:09:49

armsistem

Arkadaşlar selam,
1- nxp'nin sitesinden 'code.bundle.lpc23xx.lpc24xx.uvision' samples ları indirdim ,ilk sorum startup.s dosyasından baska  swi_handler.s diye bir dosya daha var bu dosyanın yaptığı iş nedir.
2 - keil-target girdiğimde ram lerle ilgili değerlerin farklı olduğunu gördüm bunları neye göre belirliyoruz.
IROM1:0x0---------0x80000 (TİK VAR)
IRAM1:0x4000000-----0x8000 (SOLDA TİK VAR SAĞDA YOK)
IRAM2:0x7FE0000-----0x3800 (SOLDA TİK YOK SAĞDA VAR)


;/*****************************************************************************
;*   swi_handler.s: SWI handler file for NXP LPC23xx Family Microprocessors
;*
;*   Copyright(C) 2006, NXP Semiconductor
;*   All rights reserved.
;*
;*   History
;*   2006.09.01  ver 1.00    Prelimnary version, first Release
;*
;*****************************************************************************/

	PRESERVE8
	
SWI_IRQ_DIS		EQU	0
SWI_IRQ_EN		EQU	1
SWI_FIQ_DIS		EQU	2
SWI_FIQ_EN		EQU	3

I_Bit			EQU	0x80
F_Bit			EQU	0x40
	
;The exported labels and functions
	EXPORT		SoftwareInterrupt    
	EXPORT		IntEnable
	EXPORT		IntDisable

	CODE32
	AREA		SWI_HANDLER,CODE,READONLY
	ENTRY
    
;********************************************************************
;*  SWI interrupt handler											*
;*  Function :	SoftwareInterrupt(SWI_Number)						*
;*		The SWI_Number is 0 through 3								*
;*		See below "SwiFunction" table below							*
;*  Parameters:    None												*
;*  input  :       SWI_Number										* 
;*  output :       None												*
;********************************************************************
SoftwareInterrupt			
	CMP		R0, #4
	LDRLO	PC, [PC, R0, LSL #2]
	MOVS	PC, LR
	
SwiFunction
	DCD	IRQDisable		;0
	DCD	IRQEnable		;1
	DCD	FIQDisable		;2
	DCD	FIQEnable		;3

IRQDisable
	MRS		R0, SPSR
	ORR		R0, R0, #I_Bit
	MSR		SPSR_c, R0
	MOVS	PC, LR

IRQEnable
	MRS		R0, SPSR
	BIC		R0, R0, #I_Bit	
	MSR		SPSR_c, R0
	MOVS	PC, LR

FIQDisable
	MRS		R0, SPSR
	ORR		R0, R0, #F_Bit
	MSR		SPSR_c, R0
	MOVS	PC, LR

FIQEnable
	MRS		R0, SPSR
	BIC		R0, R0, #F_Bit	
	MSR		SPSR_c, R0
	MOVS	PC, LR

;**********************************************************************
;*  Call SWI to enable IRQ                                            *
;*  Function : void IntEnable(void)                                   *
;*  Parameters:      None                                             *
;*  input  :         None                                             * 
;*  output :         None                                             *
;**********************************************************************
IntEnable
	SWI     SWI_IRQ_EN	
	BX      lr	
; end of IntEnable

;**********************************************************************
;*  Call SWI to disable IRQ                                           *
;*  Function : void IntDisable(void)                                  *
;*  Parameters     : None                                             *
;*  input          : None                                             * 
;*  output         : None                                             *
;**********************************************************************
IntDisable
	SWI     SWI_IRQ_DIS		
	BX      lr
; end of IntDisable

	END
;/*************************************************************************
;**                            End Of File
;**************************************************************************/

z

#1
SWI rurinlerini yöneten yazılım parçacığı (SWI Handler) asm ile yazılmış ve bu dosya içine konmuş.
Verilen örnek C kod satırlarında SoftwareInterrupt(X) fonksiyonu gördüğünde bu asm dosyadaki kodlar işletilecek demektir.
Ayrıca IntEnable ve IntDisable olarak da çağrılabilir kodlar gene burada.

SoftwareInterrupt(X)  fonksiyonuna ait X değerleri ve anlamları;

IRQDisable ; X=0
IRQEnable ; X=1
FIQDisable ; X=2
FIQEnable  ; X=3

Sorunun ikinci bölümüneki  ayarlamaların geçerli olabilmesi için linker de Use memory layout from target dialog kutucuğunun tıklanmış olması lazım.

Buraya yazılacak değerler çipe göre değişir. (Başlangıç adresi sabit fakat uzunluk çipe bağımlı)
Ayrıca donanıma harici ram yada rom bağlanacaksa gene burada tanımlanıyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com