S3C24402410的LCD实验代码.docx

上传人:b****7 文档编号:10179760 上传时间:2023-02-09 格式:DOCX 页数:73 大小:32.97KB
下载 相关 举报
S3C24402410的LCD实验代码.docx_第1页
第1页 / 共73页
S3C24402410的LCD实验代码.docx_第2页
第2页 / 共73页
S3C24402410的LCD实验代码.docx_第3页
第3页 / 共73页
S3C24402410的LCD实验代码.docx_第4页
第4页 / 共73页
S3C24402410的LCD实验代码.docx_第5页
第5页 / 共73页
点击查看更多>>
下载资源
资源描述

S3C24402410的LCD实验代码.docx

《S3C24402410的LCD实验代码.docx》由会员分享,可在线阅读,更多相关《S3C24402410的LCD实验代码.docx(73页珍藏版)》请在冰豆网上搜索。

S3C24402410的LCD实验代码.docx

S3C24402410的LCD实验代码

一.Makefile文件

CC=arm-linux-gcc

LD=arm-linux-ld

AR=arm-linux-ar

OBJCOPY=arm-linux-objcopy

OBJDUMP=arm-linux-objdump

INCLUDEDIR:

=$(shellpwd)/include

CFLAGS:

=-Wall-O2

CPPFLAGS:

=-nostdinc-I$(INCLUDEDIR)

exportCCLDAROBJCOPYOBJDUMPINCLUDEDIRCFLAGSCPPFLAGS

objs:

=head.oinit.onand.ointerrupt.oserial.olcddrv.oframebuffer.olcdlib.omain.olib/libc.a

lcd.bin:

$(objs)

${LD}-Tlcd.lds-olcd_elf$^

${OBJCOPY}-Obinary-Slcd_elf$@

${OBJDUMP}-D-marmlcd_elf>lcd.dis

.PHONY:

lib/libc.a

lib/libc.a:

cdlib;make;cd..

%.o:

%.c

${CC}$(CPPFLAGS)$(CFLAGS)-c-o$@$<

%.o:

%.S

${CC}$(CPPFLAGS)$(CFLAGS)-c-o$@$<

clean:

makeclean-Clib

rm-flcd.binlcd_elflcd.dis*.o

lcd.lds文件文件

SECTIONS{

.=0x00000000;

.init:

AT(0){head.oinit.onand.o}

.=0x30000000;

.text:

AT(4096){*(.text)}

.rodataALIGN(4):

AT((LOADADDR(.text)+SIZEOF(.text)+3)&~(0x03)){*(.rodata*)}

.dataALIGN(4):

AT((LOADADDR(.rodata)+SIZEOF(.rodata)+3)&~(0x03)){*(.data)}

__bss_start=.;

.bssALIGN(4):

{*(.bss)*(COMMON)}

__bss_end=.;

}

二.S3C24**.h

/*WOTCHDOGregister*/

#defineWTCON(*(volatileunsignedlong*)0x53000000)

#defineWTDAT(*(volatileunsignedlong*)0x53000004)

#defineWTCNT(*(volatileunsignedlong*)0x53000008)

/*SDRAMregisers*/

#defineMEM_CTL_BASE0x48000000

#defineSDRAM_BASE0x30000000

/*NANDFlashregisters*/

#ifdefS3C2410

#defineNFCONF(*(volatileunsignedint*)0x4e000000)

#defineNFCMD(*(volatileunsignedchar*)0x4e000004)

#defineNFADDR(*(volatileunsignedchar*)0x4e000008)

#defineNFDATA(*(volatileunsignedchar*)0x4e00000c)

#defineNFSTAT(*(volatileunsignedchar*)0x4e000010)

#else/*S3C2440*/

#defineNFCONF(*(volatileunsignedint*)0x4e000000)

#defineNFCONT(*(volatileunsignedshort*)0x4e000004)

#defineNFCMD(*(volatileunsignedchar*)0x4e000008)

#defineNFADDR(*(volatileunsignedshort*)0x4e00000C)

#defineNFDATA(*(volatileunsignedshort*)0x4e000010)

#defineNFSTAT(*(volatileunsignedchar*)0x4e000020)

#endif

/*GPIOregisters*/

#defineGPACON(*(volatileunsignedlong*)0x56000000)

#defineGPADAT(*(volatileunsignedlong*)0x56000004)

#defineGPBCON(*(volatileunsignedlong*)0x56000010)

#defineGPBDAT(*(volatileunsignedlong*)0x56000014)

#defineGPBUP(*(volatileunsignedlong*)0x56000018)

#defineGPCCON(*(volatileunsignedlong*)0x56000020)

#defineGPCDAT(*(volatileunsignedlong*)0x56000024)

#defineGPCUP(*(volatileunsignedlong*)0x56000028)

#defineGPDCON(*(volatileunsignedlong*)0x56000030)

#defineGPDDAT(*(volatileunsignedlong*)0x56000034)

#defineGPDUP(*(volatileunsignedlong*)0x56000038)

#defineGPECON(*(volatileunsignedlong*)0x56000040)

#defineGPEDAT(*(volatileunsignedlong*)0x56000044)

#defineGPEUP(*(volatileunsignedlong*)0x56000048)

#defineGPFCON(*(volatileunsignedlong*)0x56000050)

#defineGPFDAT(*(volatileunsignedlong*)0x56000054)

#defineGPFUP(*(volatileunsignedlong*)0x56000058)

#defineGPGCON(*(volatileunsignedlong*)0x56000060)

#defineGPGDAT(*(volatileunsignedlong*)0x56000064)

#defineGPGUP(*(volatileunsignedlong*)0x56000068)

#defineGPHCON(*(volatileunsignedlong*)0x56000070)

#defineGPHDAT(*(volatileunsignedlong*)0x56000074)

#defineGPHUP(*(volatileunsignedlong*)0x56000078)

/*UARTregisters*/

#defineULCON0(*(volatileunsignedlong*)0x50000000)

#defineUCON0(*(volatileunsignedlong*)0x50000004)

#defineUFCON0(*(volatileunsignedlong*)0x50000008)

#defineUMCON0(*(volatileunsignedlong*)0x5000000c)

#defineUTRSTAT0(*(volatileunsignedlong*)0x50000010)

#defineUTXH0(*(volatileunsignedchar*)0x50000020)

#defineURXH0(*(volatileunsignedchar*)0x50000024)

#defineUBRDIV0(*(volatileunsignedlong*)0x50000028)

/*interruptregistes*/

#defineSRCPND(*(volatileunsignedlong*)0x4A000000)

#defineINTMOD(*(volatileunsignedlong*)0x4A000004)

#defineINTMSK(*(volatileunsignedlong*)0x4A000008)

#definePRIORITY(*(volatileunsignedlong*)0x4A00000c)

#defineINTPND(*(volatileunsignedlong*)0x4A000010)

#defineINTOFFSET(*(volatileunsignedlong*)0x4A000014)

#defineSUBSRCPND(*(volatileunsignedlong*)0x4A000018)

#defineINTSUBMSK(*(volatileunsignedlong*)0x4A00001c)

/*externalinterruptregisters*/

#defineEINTMASK(*(volatileunsignedlong*)0x560000a4)

#defineEINTPEND(*(volatileunsignedlong*)0x560000a8)

/*clockregisters*/

#defineLOCKTIME(*(volatileunsignedlong*)0x4c000000)

#defineMPLLCON(*(volatileunsignedlong*)0x4c000004)

#defineUPLLCON(*(volatileunsignedlong*)0x4c000008)

#defineCLKCON(*(volatileunsignedlong*)0x4c00000c)

#defineCLKSLOW(*(volatileunsignedlong*)0x4c000010)

#defineCLKDIVN(*(volatileunsignedlong*)0x4c000014)

/*PWM&Timerregisters*/

#defineTCFG0(*(volatileunsignedlong*)0x51000000)

#defineTCFG1(*(volatileunsignedlong*)0x51000004)

#defineTCON(*(volatileunsignedlong*)0x51000008)

#defineTCNTB0(*(volatileunsignedlong*)0x5100000c)

#defineTCMPB0(*(volatileunsignedlong*)0x51000010)

#defineTCNTO0(*(volatileunsignedlong*)0x51000014)

/*I2Cregisters*/

#defineIICCON(*(volatileunsignedchar*)0x54000000)//IICcontrol

#defineIICSTAT(*(volatileunsignedchar*)0x54000004)//IICstatus

#defineIICADD(*(volatileunsignedchar*)0x54000008)//IICaddress

#defineIICDS(*(volatileunsignedchar*)0x5400000c)//IICdatashift

//LCDCONTROLLER

#defineLCDCON1(*(volatileunsignedlong*)0x4d000000)//LCDcontrol1

#defineLCDCON2(*(volatileunsignedlong*)0x4d000004)//LCDcontrol2

#defineLCDCON3(*(volatileunsignedlong*)0x4d000008)//LCDcontrol3

#defineLCDCON4(*(volatileunsignedlong*)0x4d00000c)//LCDcontrol4

#defineLCDCON5(*(volatileunsignedlong*)0x4d000010)//LCDcontrol5

#defineLCDSADDR1(*(volatileunsignedlong*)0x4d000014)//STN/TFTFramebufferstartaddress1

#defineLCDSADDR2(*(volatileunsignedlong*)0x4d000018)//STN/TFTFramebufferstartaddress2

#defineLCDSADDR3(*(volatileunsignedlong*)0x4d00001c)//STN/TFTVirtualscreenaddressset

#defineREDLUT(*(volatileunsignedlong*)0x4d000020)//STNRedlookuptable

#defineGREENLUT(*(volatileunsignedlong*)0x4d000024)//STNGreenlookuptable

#defineBLUELUT(*(volatileunsignedlong*)0x4d000028)//STNBluelookuptable

#defineDITHMODE(*(volatileunsignedlong*)0x4d00004c)//STNDitheringmode

#defineTPAL(*(volatileunsignedlong*)0x4d000050)//TFTTemporarypalette

#defineLCDINTPND(*(volatileunsignedlong*)0x4d000054)//LCDInterruptpending

#defineLCDSRCPND(*(volatileunsignedlong*)0x4d000058)//LCDInterruptsource

#defineLCDINTMSK(*(volatileunsignedlong*)0x4d00005c)//LCDInterruptmask

#defineLPCSEL(*(volatileunsignedlong*)0x4d000060)//LPC3600Control

#definePALETTE0x4d000400//Palettestartaddress

#defineISR_EINT0_OFT0#defineISR_EINT1_OFT1

#defineISR_EINT2_OFT2#defineISR_EINT3_OFT3

#defineISR_EINT4_7_OFT4#defineISR_EINT8_23_OFT5

#defineISR_NOTUSED6_OFT6#defineISR_BAT_FLT_OFT7

#defineISR_TICK_OFT8#defineISR_WDT_OFT9

#defineISR_TIMER0_OFT10#defineISR_TIMER1_OFT11

#defineISR_TIMER2_OFT12#defineISR_TIMER3_OFT13

#defineISR_TIMER4_OFT14#defineISR_UART2_OFT15

#defineISR_LCD_OFT16#defineISR_DMA0_OFT17

#defineISR_DMA1_OFT18#defineISR_DMA2_OFT19

#defineISR_DMA3_OFT20#defineISR_SDI_OFT21

#defineISR_SPI0_OFT22#defineISR_UART1_OFT23

#defineISR_NOTUSED24_OFT24#defineISR_USBD_OFT25

#defineISR_USBH_OFT26#defineISR_IIC_OFT27

#defineISR_UART0_OFT28#defineISR_SPI1_OFT29

#defineISR_RTC_OFT30#defineISR_ADC_OFT31

//PENDINGBIT

#defineBIT_EINT0(0x1)#defineBIT_EINT1(0x1<<1)

#defineBIT_EINT2(0x1<<2)#defineBIT_EINT3(0x1<<3)

#defineBIT_EINT4_7(0x1<<4)#defineBIT_EINT8_23(0x1<<5)

#defineBIT_CAM(0x1<<6)//Addedfor2440.

#defineBIT_BAT_FLT(0x1<<7)#defineBIT_TICK(0x1<<8)

#defineBIT_WDT_AC97(0x1<<9)#defineBIT_TIMER0(0x1<<10)

#defineBIT_TIMER1(0x1<<11)#defineBIT_TIMER2(0x1<<12)

#defineBIT_TIMER3(0x1<<13)#defineBIT_TIMER4(0x1<<14)

#defineBIT_UART2(0x1<<15)#defineBIT_LCD(0x1<<16)

#defineBIT_DMA0(0x1<<17)#defineBIT_DMA1(0x1<<18)

#defineBIT_DMA2(0x1<<19)#defineBIT_DMA3(0x1<<20)

#defineBIT_SDI(0x1<<21)#defineBIT_SPI0(0x1<<22)

#defineBIT_UART1(0x1<<23)#defineBIT_NFCON(0x1<<24)//Addedfor2440.

#defineBIT_USBD(0x1<<25)#defineBIT_USBH(0x1<<26)

#defineBIT_IIC(0x1<<27)#defineBIT_UART0(0x1<<28)

#defineBIT_SPI1(0x1<<29)#defineBIT_RTC(0x1<<30)

#defineBIT_ADC(0x1<<31)#defineBIT_ALLMSK(0xffffffff)

#defineBIT_SUB_ALLMSK(0x7fff)#defineBIT_SUB_AC97(0x1<<14)

#defineBIT_SUB_WDT(0x1<<13)#defineBIT_SUB_CAM_S(0x1<<12)//Addedfor2440.

#defineBIT_SUB_CAM_C(0x1<<11)//Addedfor2440.

#defineBIT_SUB_ADC(0x1<<10)#defineBIT_SUB_TC(0x1<<9)

#defineBIT_SUB_ERR2(0x1<<8)#defineBIT_SUB_TXD2(0x1<<7)

#defineBIT_SUB_RXD2(0x1<<6)#defineBIT_SUB_ERR1(0x1<<5)

#defineBIT_SUB_TXD1(0x1<<4)#defineBIT_SUB_RXD1(0x1<<3)

#defineBIT_SUB_ERR0(0x1<<2)#defineBIT_SUB_TXD0(0x1<<1)

#defineBIT_SUB_RXD0(0x1<<0)

#defineGSTATUS1(*(volatileunsignedlong*)0x560000B0)

三.head.s

@******************************************************************************

@File:

head.S

@功能:

设置SDRAM,将程序复制到SDRAM,然后跳到SDRAM继续执行

@******************************************************************************

.externmain

.text

.global_start

_start:

@******************************************************************************

@中断向量,本程序中,除Reset和HandleIRQ外,其它异常都没有使用

@******************************************************************************

bReset

@0x04:

未定义指令中止模式的向量地址

HandleUndef:

bHandleUndef

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

当前位置:首页 > 小学教育 > 语文

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

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