Arm9 跑马灯程序阅读.docx

上传人:b****6 文档编号:7296924 上传时间:2023-01-22 格式:DOCX 页数:61 大小:45.25KB
下载 相关 举报
Arm9 跑马灯程序阅读.docx_第1页
第1页 / 共61页
Arm9 跑马灯程序阅读.docx_第2页
第2页 / 共61页
Arm9 跑马灯程序阅读.docx_第3页
第3页 / 共61页
Arm9 跑马灯程序阅读.docx_第4页
第4页 / 共61页
Arm9 跑马灯程序阅读.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

Arm9 跑马灯程序阅读.docx

《Arm9 跑马灯程序阅读.docx》由会员分享,可在线阅读,更多相关《Arm9 跑马灯程序阅读.docx(61页珍藏版)》请在冰豆网上搜索。

Arm9 跑马灯程序阅读.docx

Arm9跑马灯程序阅读

目录

Arm9跑马灯程序阅读

(1)--2410addr.h&2410addr.inc2

Arm9跑马灯程序阅读

(2)--Memcfg.inc6

Arm9跑马灯程序阅读(3)--Option.h&Option.inc10

Arm9跑马灯程序阅读(5)--2410slib.s11

Arm9跑马灯程序阅读(6)--2410lib.c21

Arm9跑马灯程序阅读(7)--start.s

(1)33

Arm9跑马灯程序阅读

(1)--2410addr.h&2410addr.inc

2010-06-1115:

12:

42|  分类:

Linux嵌入式学习|  标签:

|字号大中小 订阅

写在前面:

网易这个不知道为什么不能从eclipse粘贴出来不能带颜色了,让我很不爽。

//FileName:

2410addr.h(2410addr.inc和2410addr.h实现的功能一样,只是他是为汇编提供的头文件)

//Function :

S3C2410DefineAddressRegister

//这个文件的内容就不全粘贴出来了,因为太长了,这个文件主要是定义了S3C2410的寄存器地址。

其中包括:

//Memorycontrol

#definerBWSCON   (*(volatileunsigned*)0x48000000)//Buswidth&waitstatus

...

#definerMRSRB7   (*(volatileunsigned*)0x48000030)//ModeregistersetforSDRAM

//INTERRUPT

#definerSRCPND    (*(volatileunsigned*)0x4a000000)//Interruptrequeststatus

#definerINTMOD    (*(volatileunsigned*)0x4a000004)//Interruptmodecontrol

#definerINTMSK    (*(volatileunsigned*)0x4a000008)//Interruptmaskcontrol

#definerPRIORITY  (*(volatileunsigned*)0x4a00000c)//IRQprioritycontrol

#definerINTPND    (*(volatileunsigned*)0x4a000010)//Interruptrequeststatus

#definerINTOFFSET (*(volatileunsigned*)0x4a000014)//Interruotrequestsourceoffset

#definerSUBSRCPND (*(volatileunsigned*)0x4a000018)//Subsourcepending

#definerINTSUBMSK (*(volatileunsigned*)0x4a00001c)//Interruptsubmask

//DMA0-3

#definerDISRC0    (*(volatileunsigned*)0x4b000000)//DMA0Initialsource

...

#definerDMASKTRIG0(*(volatileunsigned*)0x4b000020)//DMA0Masktrigger

 

//CLOCK&POWERMANAGEMENT

#definerLOCKTIME  (*(volatileunsigned*)0x4c000000)//PLLlocktimecounter

#definerMPLLCON   (*(volatileunsigned*)0x4c000004)//MPLLControl

#definerUPLLCON   (*(volatileunsigned*)0x4c000008)//UPLLControl

#definerCLKCON    (*(volatileunsigned*)0x4c00000c)//Clockgeneratorcontrol

#definerCLKSLOW   (*(volatileunsigned*)0x4c000010)//Slowclockcontrol

#definerCLKDIVN   (*(volatileunsigned*)0x4c000014)//Clockdividercontrol

//LCDCONTROLLER

#definerLCDCON1   (*(volatileunsigned*)0x4d000000)//LCDcontrol1

...

#definePALETTE    0x4d000400                        //Palettestartaddress

//NANDflash

#definerNFCONF    (*(volatileunsigned*)0x4e000000)     //NANDFlashconfiguration

...

#definerNFECC2    (*(volatileU8 *)0x4e000016)

//UART0-2

#definerULCON0    (*(volatileunsigned*)0x50000000)//UART0Linecontrol

...

#definerUBRDIV0   (*(volatileunsigned*)0x50000028)//UART0Baudratedivisor

//有关大小端方面的设置,这里是小端

#ifdef__BIG_ENDIAN

...

#defineURXH2      (0x50008024+3)

#else//LittleEndian

#definerUTXH0(*(volatileunsignedchar*)0x50000020)//UART0TransmissionHold

...

#defineURXH2      (0x50008024)

#endif

//PWMTIMER

#definerTCFG0 (*(volatileunsigned*)0x51000000)//Timer0configuration

...

#definerTCNTO4(*(volatileunsigned*)0x51000040)//Timercountobservation4

//USBDEVICE

#ifdef__BIG_ENDIAN

#definerFUNC_ADDR_REG    (*(volatileunsignedchar*)0x52000143)//Functionaddress

...

#definerEP4_DMA_TTC_H    (*(volatileunsignedchar*)0x5200026f)

#else //LittleEndian

#definerFUNC_ADDR_REG    (*(volatileunsignedchar*)0x52000140)//Functionaddress

...

#definerEP4_DMA_TTC_H    (*(volatileunsignedchar*)0x5200026c)

#endif  //__BIG_ENDIAN

//WATCHDOGTIMER

#definerWTCON  (*(volatileunsigned*)0x53000000)//Watch-dogtimermode

#definerWTDAT  (*(volatileunsigned*)0x53000004)//Watch-dogtimerdata

#definerWTCNT  (*(volatileunsigned*)0x53000008)//Eatch-dogtimercount

//IIC

#definerIICCON (*(volatileunsigned*)0x54000000)//IICcontrol

#definerIICSTAT(*(volatileunsigned*)0x54000004)//IICstatus

#definerIICADD (*(volatileunsigned*)0x54000008)//IICaddress

#definerIICDS  (*(volatileunsigned*)0x5400000c)//IICdatashift

//IIS

#definerIISCON (*(volatileunsigned*)0x55000000)//IISControl

#definerIISMOD (*(volatileunsigned*)0x55000004)//IISMode

#definerIISPSR (*(volatileunsigned*)0x55000008)//IISPrescaler

#definerIISFCON(*(volatileunsigned*)0x5500000c)//IISFIFOcontrol

#ifdef__BIG_ENDIAN

#defineIISFIFO ((volatileunsignedshort*)0x55000012)//IISFIFOentry

#else//LittleEndian

#defineIISFIFO ((volatileunsignedshort*)0x55000010)//IISFIFOentry

#endif

//I/OPORTA-H以及IO的其他功能(GPIO)

#definerGPACON   (*(volatileunsigned*)0x56000000)//PortAcontrol

...

#definerGPHUP    (*(volatileunsigned*)0x56000078)//Pull-upcontrolH

//IO的其他function

#definerMISCCR   (*(volatileunsigned*)0x56000080)//Miscellaneouscontrol

...

#definerGSTATUS4 (*(volatileunsigned*)0x560000bc)//Saveddata0(32-bit)beforeenteringPOWER_OFFmode

//RTC

#ifdef__BIG_ENDIAN

...

#definerBCDYEAR  (*(volatileunsignedchar*)0x5700008b)//BCDyear

#else//LittleEndian

#definerRTCCON   (*(volatileunsignedchar*)0x57000040)//RTCcontrol

...

#definerBCDYEAR  (*(volatileunsignedchar*)0x57000088)//BCDyear

#endif //RTC

//ADC

#definerADCCON   (*(volatileunsigned*)0x58000000)//ADCcontrol

#definerADCTSC   (*(volatileunsigned*)0x58000004)//ADCtouchscreencontrol

#definerADCDLY   (*(volatileunsigned*)0x58000008)//ADCstartorIntervalDelay

#definerADCDAT0  (*(volatileunsigned*)0x5800000c)//ADCconversiondata0

#definerADCDAT1  (*(volatileunsigned*)0x58000010)//ADCconversiondata1

//SPI

#definerSPCON0   (*(volatileunsigned*)0x59000000)//SPI0control

...

#definerSPRDAT1  (*(volatileunsigned*)0x59000034)//SPI1Rxdata

//SDInterface

#definerSDICON    (*(volatileunsigned*)0x5a000000)//SDIcontrol

...

#definerSDIIMSK   (*(volatileunsigned*)0x5a000040)//SDIinterruptmask

#ifdef__BIG_ENDIAN

#definerSDIDAT   (*(volatileunsigned*)0x5a00003f)//SDIdata

#defineSDIDAT    0x5a00003f

#else //LittleEndian

#definerSDIDAT   (*(volatileunsigned*)0x5a00003c)//SDIdata

#defineSDIDAT    0x5a00003c

#endif  //SDInterface

//ISR

#definepISR_RESET    (*(unsigned*)(_ISR_STARTADDRESS+0x0))

...

#definepISR_ADC      (*(unsigned*)(_ISR_STARTADDRESS+0x9c))

//PENDINGBIT

#defineBIT_EINT0     (0x1)

...

#defineBIT_SUB_RXD0  (0x1<<0)

#define EnableIrq(bit)  rINTMSK&=~(bit)

#define DisableIrq(bit)  rINTMSK|=(bit)

#define EnableSubIrq(bit) rINTSUBMSK&=~(bit)

#define DisableSubIrq(bit) rINTSUBMSK|=(bit)

__inlinevoidClearPending(intbit)

{

 registeri;

 rSRCPND=bit;

 rINTPND=bit;

 i=rINTPND;

}

__inlinevoidClearSubPending(intbit)

{

 registeri;

 rSUBSRCPND=bit;

 i=rINTPND;

}

#ifdef__cplusplus

}

#endif

#endif //__2410ADDR_H___

Arm9跑马灯程序阅读

(2)--Memcfg.inc

2010-06-1315:

02:

50|  分类:

Linux嵌入式学习|  标签:

|字号大中小 订阅

;************************************************

;NAME   :

MEMCFG.A

;DESC  :

Memorybankconfigurationfile

; 这里主要配置的就是内存

; S3C2410的存储控制器有以下特性:

; 1.—Little/Bigendian(selectablebyasoftware) 大小端设置;

; 2.—Addressspace:

128Mbytesperbank(total1GB/8banks) 地址空间:

每个bank为128MB(总共1GB);

; 3.—Programmableaccesssize(8/16/32-bit)forallbanksexceptbank0(16/32-bit) 除了bank0其余所有banks的数据位宽是可编程的(8/16/32-bit);

; 4. —Total8memorybanks总共8个memorybanks

;   SixmemorybanksforROM,SRAM,etc. 其中6个bank是接ROM,SRAM等

;       RemainingtwomemorybanksforROM,SRAM,SDRAM,etc. 其余2个bank是接ROM,SRAM,SDRAM等

; 5.—Sevenfixedmemorybankstartaddress 7个memorybank的起始地址是固定的;(发现size也是固定的,128MB)

; 6.—Oneflexiblememorybankstartaddressandprogrammablebanksize 1个memorybank的起始地址和大小是可灵活可变的;

; 7.—Programmableaccesscyclesforallmemorybanks 所有banks的访问周期数是可编程的;

; 8.—Externalwaittoextendthebuscycles 支持片外等待信号以扩充总线周期;

; 9.—Supportingself-refreshandpowerdownmodeinSDRAM SDRAM在Powerdown模式下支持自动刷新.

; bank6和bank7的大小必须一样,并且bank7的起始地址根据bank6的大小不同而不同

;************************************************

;MemoryArea 内存挂在bank上的片选

;GCS616bit(16MB)SDRAM(0x0c000000-0x0cffffff)

;GCS716bit(16MB)SDRAM(0x0d000000-0x0dffffff)

;         or

;GCS632bit(32MB)SDRAM(0x0c000000-0x0dffffff)

 

;BWSCON

DW8  EQU (0x0)

DW16  EQU (0x1)

DW32  EQU (0x2)

WAIT  EQU (0x1<<2)

UBLB  EQU (0x1<<3)

 ASSERT:

DEF:

BUSWIDTH

   [BUSWIDTH=16

B1_BWSCON EQU(DW16)

B2_BWSCON EQU(DW16)

B3_BWSCON EQU(DW16)

B4_BWSCON EQU(DW16)

B5_BWSCON EQU(DW16)

B6_BWSCON EQU(DW16)

B7_BWSCON EQU(DW16)

   |;BUSWIDTH=32

B1_BWSCON EQU(DW32)

B2_BWSCON EQU(DW16)

B3_BWSCON EQU(DW16)

B4_BWSCON EQU(DW16)

B5_BWSCON EQU(DW16)

B6_BWSCON EQU(DW32)

B7_BWSCON EQU(DW32)

   ]

;BANK0CON

B0_Tacs  EQU 0x0 ;0clk

B0_Tcos  EQU 0x0 ;0clk

B0_Tacc  EQU 0x7 ;14clk

B0_Tcoh  EQU 0x0 ;0clk

B0_Tah  EQU 0x0 ;0clk

B0_Tacp  EQU 0x0 

B0_PMC  EQU 0x0 ;normal

;BANK1CON

B1_Tacs  EQU 0x0 ;0clk

B1_Tcos  EQU 0x0 ;0clk

B1_Tacc  EQU 0x7 ;14clk

B1_Tcoh  EQU 0x0 ;0clk

B1_Tah  EQU 0x0 ;0clk

B1_Tacp  EQU 0x0 

B1_PMC  EQU 0x0 ;normal

;Bank2parameter

B2_Tacs  EQU 0x0 ;0clk

B2_Tcos  EQU 0x0 ;0clk

B2_Tacc  EQU 0x7 ;14clk

B2_Tcoh  EQU 0x0 ;0clk

B2_Tah  EQU 0x0 ;0clk

B2_Tacp  EQU 0x0 

B2_PMC  EQU 0x0 ;normal

;Bank3parameter

B3_Tacs  EQU 0x0 ;0clk

B3_Tcos  EQU 0x0 ;0clk

B3_Tacc  EQU 0x7 ;14clk

B3_Tcoh  EQU 0x0 ;0clk

B3_Tah  EQU 0x0 ;0clk

B3_Tacp  EQU 0x0 

B3_PMC  EQU 0x0 ;normal

;Bank4parameter

B4_Tacs  EQU 0x0 ;0clk

B4_Tcos  EQU 0x0 ;0clk

B4_Tacc  EQU 0x7 ;14clk

B4_Tcoh  EQU 0x0 ;0clk

B4_Tah  EQU 0x0 ;0clk

B4_Tacp  EQU 0x0 

B4_PMC  EQU 0x0 ;normal

;Bank5parameter

B5_Tacs  EQU 0x0 ;0clk

B5_Tcos  EQU 0x0 ;0clk

B5_Tacc  EQU 0x7 ;14clk

B5_Tcoh  EQU 0x0 ;0clk

B5_Tah  EQU 0x0 ;0clk

B5_Tacp  EQU 0x0 

B5_PMC  EQU 0x0 ;normal

;bank6.7以及REFRESH可以在手册的MEMORYCONTROLLER章节查到具体的含义

;这里主要还涉及到连个参数CAS和RAS,具体可以参考手册上的这个图“S3C2410XSDRAMTimingDiagram”

;CAS意为列地址选通脉冲(ColumnAddressStrobe或者ColumnAddressSelect),

;CAS控制着从收到命令到执行命令的间隔时间,通常

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 研究生入学考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1