LCD实验学习笔记(二):head.S】的更多相关文章

ARM加电后从0地址开始取指执行. 连接为bin文件时时,连接脚本lcd.lds指定将head.o放在开头,所以head.S就是系统起步的地方. head.S开头就是异常向量定义,0地址就是reset中断. 发生不同的异常,系统跳转到相应函数处理. 系统启动时就进入reset函数进行初始化,并将程序复制到SDRAM,然后跳到SDRAM继续执行. .extern main @表示全局查找外部文件中的main函数 .text .global _start _start: b Reset @0地址,b…
硬件组成: REGBANK是LCD控制寄存器组,含17个寄存器及一块256*16的调色板,用来设置参数. LCDCDMA中有两个FIFO,当FIFO空或数据减少到阈值,自动发起DMA传输,从内存获取图像数据,不需CPU干涉. VIDPRCS将LCDCDMA中的数据组成特定格式,从VD[23:0]发送LCD屏. TIMEGEN产生控制信号VSYNC,HSYNC,VCLK,VDEN,LEND.VSYNC是跳到左上角的信号,HSYNC是跳到下一行最左边的信号.每个VCLK表示正在传输一个像素的数据.…
主Makefile总领全局的就这句—— lcd.bin: $(objs) 要生成lcd.bin,依赖于objs列举的一堆文件:head.o init.o nand.o interrupt.o serial.o lcddrv.o framebuffer.o lcdlib.o main.o lib/libc.a 所以要先找到这些文件,几个.o,还有一个.a .o目标文件怎么生成? %.o:%.c和%.o:%.S是生成规则,就是依赖于.c或.S文件,使用交叉编译命令生成. .a是库文件,到lib子目录…
s3c2440包含三个通用异步收发器,可工作于中断模式或DMA模式.每个UART包含两个64字节的FIFOs用于接收和发送数据.可编程设置波特率.1或2个停止位,5/6/7/8个数据位和奇偶校验状态. 串口线一般是3条,TxD,RxD,Gnd,即发送线,接收线和地线. 数据传送之前,UART之间约定好传输速率(每位所占据的时间,其倒数沩波特率).数据传输的格式(多少个数据位.是否使用校验位.奇校验还是偶校验.多少个停止位). 发送数据时,CPU先将数据写入发送FIFO,UART会自动将FIFO中…
s3c2440有60个中断源(其中15个为子中断源). 31个32位的通用寄存器,6个程序状态寄存器.有6种工作模式(系统/用户模式,快中断模式,管理模式,数据访问中止模式,中断模式,未定指令中止模式).每种模式都有16个通用寄存器和1(或2)个程序状态寄存器. R15(pc)是程序计数器,R14(lr)是连接寄存器,在异常时自动保存pc备份,r13(sp)是栈指针寄存器. CPSR是当状程序状态寄存器.其[7:0]为控制位,[7]为中断禁止位,[6]为快中断禁止位,[5]为CPU状态位,[4:…
s3c2440 CPU内置NAND FLASH控制器.相关寄存大器起始地址为0x4e000000. 通过设置NFCONF寄存器,设置NAND FLASH 时序. 通过设置NFCONT寄存器,使能NAND FLASH.初始化ECC等. 代码: #define GSTATUS1 (*(volatile unsigned int *)0x560000B0) //读此寄存器可以知道CPU芯片型号#define BUSY 1 #define NAND_SECTOR_SIZE_LP 2048 //大页每页2…
s3c2440可使用地址空间为1GB(0x00000000到0x40000000). 1G空间分为8个BANK,每个BANK为128MB. 设27条地址线,和8个片选引脚(nGCS0-nGCS7). 内存控制器根据地址所在的BANK,自动决定要使用的片选引脚,以使能相应的BANK所连接的设备. 32位CPU不一定用32条地址线. CPU认为一个地址对应一个字节(8bit).CPU发出一个地址,要读取内存一个字节的数据(内存在BANK6地址从0x30000000开始),内存控制器操作片选引脚和地址…
内存管理分别页表机制和内存分配机制两块. 页表机制就是管理设备真实物理地址与虚拟地址的动态或静态的映射,基于cpu内部的mmu(内存管理单元)进行. CP15(协处理器)的C0(缓存)是一级页表,含4096个索引(每索引4字节,共16K). 每个索引项代表1MB地址空间,4096*1MB=4GB=32位CPU可寻址4GB空间. 4096个索引欺项,对应虚拟地址[31:20]. 每个索项引占4字节32位,其[1:0]含义为: 00无效,MMU向CPU发出缺页异常: 01粗页表,二级页表是64K或4…
一般CPU频率(FCLK)高于内存.网卡等设备频率(HCLK),而串口.USB.I2C等设备频率(PCLK)更低. 系统时钟: 系统时钟源为晶振,初始频率12MHz. 通过设置MPLLCON寄存器的MDIV.PDIV.SDIV(s3c2440手册上有时钟设置取值表),可设置系统时钟FCLK. [19:12]设置MDIV,[9:4]设置PDIV,[1:0]设置SDIV. 设置公式: * S3C2410: MPLL(FCLK) = (m * Fin)/(p * 2^s) * S3C2410: MPL…
看门狗是为了能够防止程序跑飞用的.程序应该定时的去喂狗.如果程序跑飞了,那么就不会去喂狗了.如果超过了喂狗的时间,那么狗就会生成一个信号来reset CPU.一般程序不需要,特殊情况下需要这种机制. 看门狗默认在启用状态.狗自已倒数,然后自动使CPU重启. /* WATCH DOG register  看门狗寄存器 */#define WTCON (*(volatile unsigned long *)0x53000000)#define WTDAT (*(volatile unsigned l…