ARM嵌入式期末考试题库精心整理版_第1页
ARM嵌入式期末考试题库精心整理版_第2页
ARM嵌入式期末考试题库精心整理版_第3页
ARM嵌入式期末考试题库精心整理版_第4页
ARM嵌入式期末考试题库精心整理版_第5页
已阅读5页,还剩72页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、 智能物联网工程师群,免费共享100G学习资料2、 qq群号码:5384355433、 欢迎大家加入交流经验,互相学习分享4、 cortex-A8 中只有CP14和CP15 两种协处理器。CP14用来测试(test),CP15用作系统控制.5、 cortex-A8中协处理器CP15是协助处理器做管理工作,属于A8内部。6、 cortex-A8的通用寄存器和状态寄存器属于A8内部 的32位存储器 。7、 跳转指令BL只能实现前后32M的小范围的跳转,使用“LDR PC,.” 伪指令可以实现大范围的跳转。大范围4G8、 汇编中用#注释( F)。 错误,是符号注释9、 根据ATPCS标准,子程序

2、间通过寄存器R0、R1、R2、R3来传递参数,如果参数多余4个,则多出的部分用堆栈传递,返回值用R0传递。10、 寄存器R13用作数据栈指针,记作SP。11、 寄存器R14称为链接寄存器,记作LR,它用于保存子程序的返回地址。12、 寄存器R15是程序计数器,记作PC,不能用作其它用途。13、 汇编的优点是效率高,体积小。(对)14、 S5PV210内部对模块的管理是分区域管理的,分为那几个区域( )、( )、( )。不清楚答案,查询得知,S5PV210由ARM内核、系统外围设备、存储器子系统、多媒体加速、电源管理、连接性模块 等模块组成, p4215、 S5PV210内部有三条总线,他们是A

3、PB总线,频率100兆以下、AHB总线,200-100兆、AXI总线。16、 S5PV210的AHB总线的工作频率范围是200M100M。17、 S5PV210的APB总线的工作频率范围是100M以下。18、 CortexA8的工作频率高达(1GHZ),定时器的PLCK的值是( 66MHZ)。19、 S5PV210内部有( 5 )个定时器,其中有PWM引脚的有定时器( T0 T1 T2 T3 ),有死区功能的有定时器( T0 T1 )。20、 占空比就是输出的PWM中,高电平保持的时间 及该PWM的时钟周期的时间之比。21、 可以通过改变高低电平的时间改变占空比,也可以通过修改时钟周期的时间改

4、变占空比。(F) 前面话对,后面话错22、 ARM 处理器有两个级别的中断请求,他们分别是( fiq )和( irq )。ARM上实现内存管理的单元叫( MMU )。23、 ARM的全称是( Advanced RISC Machine)目前常用的嵌入式外围设备按功能可以分为( 存储设备 )、( 通信设备 )和( 显示设备 )。硬件设备=嵌入式处理器+外围设备外围设备是完成存储通信调试显示等辅助功能的其他部件。目前常用,存储设备(ram,sram,flash),通信设备(rs232接口,),显示设备(显示屏)。24、 嵌入式linux操作系统属于免费的操作系统。25、 ARM 有3种含义,它是(

5、 一个公司名词 ),是( 一类微处理器通称 ),还是( 一种技术 )的名称。26、 ARM支持( 大端 )和( 小端 )两种内存模式。27、 CPSR寄存器是( 程序状态寄存器 )寄存器,SPSR寄存器是( 程序状态保存 )寄存器。28、 嵌入式系统的硬件包括( 嵌入式处理器 )和( 外围设备 )。29、 S5PV210的APB总线的工作频率范围是100M以下。(ÖT )正确,APB总线的工作频率范围是100M以下,AHB总线的工作频率范围是200M-100M嵌入式系统是,以应用为中心,计算机技术为基础,软硬件可剪裁,适应应用系统对功能成本体积功耗等要求的专用计算机系统根据掉电是否丢

6、失数据分为RAM ROMRAM随机存储器,又称内存,易失存储器,RAM分为 SRAM静态存储器 利用触发器保存信息,和 DRAM动态存储器,利用MOS电容储存电荷保存信息,优于前者。ROM 只读存储器,是非易失存储器一种flash是非易失存储器优秀一种。掉电不会丢失,速度快,擦写方便。risc和cisc区别p16arm体系构架v4 arm7v5 arm9 arm10 有dsp指令v6 arm11 4种指令集v7 cortex a r m系列a高端 r实时性 m满足传统市场arm7特点,简答题p19成熟的大批量32位 risc芯片最高主频130mips功耗低,兼容16位处理器代码及arm9 ar

7、m10E兼容开发工具多调试机制完善提供0.25 0.18 0.13微米 多样 生产工艺arm采用32位架构,基本数据类型4种,填空Byte 8位 字节HalfWord 16 半字2字节对齐Word 32 4DoubleWord 64 8大端小端内存模式,小端是默认模式,平常就是这个大端模式,高地址,放数据低位v6体系 引入be-8模式,改变be-32大端模式be-8模式str r0,【r1】数据位高地址,放数据低位ldrb r2,【r1】内核工作模式,cortex a8,(课本8种)8种填空usrfiqirqsvc特权模式abt数据访问中止模式und未定义指令中止模式sysmon监控模式, 可

8、在安全模式和非安全模式切换8个模式中,除用户模式usr, 其他7个全部特权模式7个特权模式中,除了系统模式,剩下6个都属于异常模式异常模式:快速中断请求模式(FIQ)    用于高速数据传输 外部中断请求模式(IRQ)   用于通常的中断处理特权模式(SVC)  数据访问终止模式(abt)   当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护 未定义指令中止模式(und)   用于支持硬件协处理器的软件仿真(浮点、微量运算)mon监控模式一、Ar

9、m工作模式:Arm微处理器工作模式,分别为: (课文8种)1 用户模式(Usr)            用于正常执行程序2 快速中断模式(FIQ)    用于高速数据传输3 外部中断模式(IRQ)   用于通常的中断处理4  特权模式(SVC)         操作系统使用的保护模式(高权限),复位

10、和软件中断进入5 数据访问中止模式(abt)   当数据或指令预取终止时进入该模式,可用于虚拟内存及存储保护6 系统模式(sys)            运行均有特权的操作系统任务7 未定义指令终止模式(und)   用于支持硬件协处理器的软件仿真(浮点、微量运算)8mon监控模式, 可在安全模式和非安全模式切换异常模式优先级如下:1(最高)    SVC 复位2 abt  数据中止3

11、FIQ(快速中断请求)4 IRQ(外部中断请求)5 abt 预取指令中止6(最低) und 未定义指令,SWI 软件中断存储系统管理,通常使用协处理器cp15:系统控制协处理器多级存储器系统:内核级(最快存储量最少),芯片级,板卡级,外设级cp15包含16个32位寄存器,编号0-15较高级操作系统,存储系统管理使用存储管理单元,MMU,启动后转换映射虚拟地址arm7为止使用流水线3级取指令,从寄存器装载一条指令译码 为下一周期准备控制信号执行 处理指令,结果写会寄存器arm9,五级流水线 3级+缓冲/数据 回写arm10 6级流水线影响流水线性能因素1.互锁,指令结果是下一个指令操作

12、数,等待指令结果才能进行下一条2.跳转指令,预取指令不得不丢弃cortex A8 总共40个32位寄存器p3732个通用寄存器7个状态寄存器:1个CPSR 当前程序状态寄存器6个SPSR 备份程序状态寄存器1个PC程序计数器寄存器R13用作数据栈指针,记作SP。寄存器R14称为链接寄存器,记作LR,它用于保存子程序的返回地址。寄存器R15是程序计数器,记作PC,不能用作其它用途。CPSR 当前程序状态寄存器 p39 理解CPSR格式,里面标志位含义等等CPSR模式控制位M4:0,控制有哪些模式,对应可以访问哪些寄存器 p41表格M4:0,八个处理器模式p59跳转指令,bl跳转32mb范围,跳转

13、pc,如ldrb pc,.可以4GB范围p83 AAPCS标准 子程序调用,用R0-R3存储参数,R0存返回值p175 I2C总线,填空I2C总线,通过串行数据线(SDA)和串行时钟线 (SCL)在连接到总线的器件间传递信息。起始位每几位一个应答?P177每个字节8位,每个字节后必须跟一个响应位,所以应该是,起始位每8位一个应答吧。二、 判断题:(每题1分,共10分)1、ARM只是一种处理器架构。 (× )2、除用户模式和系统模式外,其它模式均为异常模式。 ()3、FCLK是CPU的时钟,也是定时器的工作时钟。 (× )4、汇编中用 #注释。 ( × ) 号注释5

14、、S3C2440的时钟源只能是外部晶振。 (× )6、同一时间里,INTPND寄存器上只能有一位被设置为1。 ( )7、CISC将被RISC所取代。.( × )8、S5PV210的AHB总线的工作频率范围是200M100M。(Ö)9、cortex-A8 中只有CP14和CP15 两种协处理器。CP14用来测试,CP15用作系统控制。(Ö)10、可以通过改变高低电平的时间改变占空比,也可以通过修改时钟周期的时间改变占空比。 (F)11、S5PV210的DSYS domain的主频为166MHZ . ()不考试,相关知识点:S5PV210中包含3大类时钟do

15、main,分别是主系统时钟domain (简称MSYS,下面将使用简称来进行相关讲解)、显示相关的时钟domain (DSYS)、外围设备的时钟domain (PSYS)。12、芯片的缓存区越多,读取的速度就越快。()13、S5PV210的AD转换后都会触发一个中断。( )三、选择题:三、简答题:(共20分) 1、Cortex-A8是ARMv7-A 架构的,共有哪几种工作模式,其中哪几种属于异常模式?usr用户模式fiqirqsvc特权模式abt数据访问中止und未定义指令中止模式sys系统模式mon监控模式,安全模式切换8种工作模式,除用户模式,都是特权模式特权模式里面,除系统模式,其他都是

16、异常模式。即异常模式6种:Fiq 快速中断异常模式Irq 外部中断请求模式svc特权模式abt数据访问中止模式und未定义指令中止模式mon监控模式简答题2.寄存器CPSR,SPSR的功能各是什么?CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。中断时,保存当前程序状态,处理器模式等等。每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSRCPSR格式CPSR格式如下

17、所示。SPSR和CPSR格式相同。31 30 29 28 27 26 7 6 5 4 3 2 1 0N Z C V Q DNM(RAZ) I F T M4 M3 M2M1 M0*条件标志位*Nn=1表示运算结果为负数,n=0表示结果为正数或零。zz=1表示运算的结果为零;z=0表示运算的结果不为零。C进位,借位标志VV=1表示符号位溢出M控制位,5位,M4:0这5位表示处于什么处理器模式M控制位控制处理器模式,具体含义如下:表格M4:0 处理器模式 可访问的寄存器ob10000 user pc,r14r0,CPSR0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7R0,CPSR,

18、SPSR_FIQ0b10010 IRQ PC,R14_IRQ-R13_IRQ,R12R0,CPSR,SPSR_IRQ0B10011 SUPERVISOR PC,R14_SVC-R13_SVC,R12R0,CPSR,SPSR_SVC0b10111 ABORT PC,R14_ABT-R13_ABT,R12R0,CPSR,SPSR_ABT0b11011 UNDEFINED PC,R14_UND-R8_UND,R12R0,CPSR,SPSR_UND0b11111 SYSTEM PC,R14-R0,CPSR(ARM V4以及更高版本)2、 简述S5PV210 外部中断处理和响应的流程。.没有标准答案,找

19、不到。VIC有四个组,其中每个组均包含有32个中断源,合计128个中断源,先判断vic哪个组,如vic0,然后定位具体中断源。中断发生后,处理: 通过堆栈和spsr寄存器,入栈保存现场,设置cpsr模式位,处理器模式变成外部中断模式。外部中断中断发生后,VIC0IRQSTATUS相应位置改变,中断向量地址VIC0ADDRESS相应位改变,pc跳到向量表的特定地址,从该地址开始执行,使能向量地址通道16,通道16选择为IRQ中断,VIC0ADDRESS16 安装中断服务函数到向量地址通道,强制转换提取EINT16_31_IRQHandler函数地址,rVIC0VECTADDR16 = (unsi

20、gned int)EINT16_31_IRQHandler;,IRQHandler函数里面跳转调用我们写的中断处理函数,_程序跳转到中断处理程序入口,执行中断处理程序。/*4.使能向量地址通道16中断*/rVIC0INTENABLE|=(1<<16);/*5.向量地址通道16选择为IRQ中断*/rVIC0INTSELECT|=(1<<16);/0为fiq模式,1 irq/* 5.安装中断服务函数到VIC0VECTADDR16 ,强制转换提取EINT16_31_IRQHandler函数地址*/rVIC0VECTADDR16 = (unsigned int)EINT16_3

21、1_IRQHandler;void EINT16_31_IRQHandler(void)4、 程序解释及程序填空题:(每题10分,共20分)程序解释及程序填空题1用汇编语言和ARM指令集书写一个初始值为0x6000000的延时函数。汇编的为:delay:ldr r0,=0x6000000temp:sub r0,r0,#1cmp r0,#0bne tempbx lr 上面程序参考c语言的写法void delay()volatile int i,j;for(i=0;i<0x6000000;i+);程序解释及程序填空题2:按k2按键,松手,led闪烁#include "stdio.h

22、"#include "s5pv210.h"#define rGPJ2CON *(volatile unsigned long *)0xe0200280) #define rGPJ2DAT *(volatile unsigned long *)0xe0200284) void key_init()rGPH2CON &=(0xf<<0); /全部清0,设置输入模式,然后按键被按值变成0void led_init()rGPJ2CON &=(0xf<<0);rGPJ2CON |=(0x1<<0);rGPJ2DAT |=(

23、0x1<<0);void delay()int i,j;for(i=0;i<100;i+)for(j=0;j<100;j+);int keyled(void)printf("按键灯测试n");key_init();led_init();while(1)if(rGPH2DAT &(0x1<<0) = 0) /如果按键2按下,按键值0,/printf("key2 put down!n");delay();if(rGPH2DAT &(0x1<<0) = 0) /重新判断消抖动影响/printf(&

24、quot;key really put down!n");while(!(rGPH2DAT&(0x1<<0); /松手检测rGPJ2DAT &=(0x1<<0); /亮delay();rGPJ2DAT |=(0x1<<0); /led暗return 0;五、编程题:(15分)编程题 15分配置定时器,实现led灯每一秒闪烁一次。(写出定时器3初始化,配置led开关,定时器中断处理函数等等)#define rGPJ2CON *(volatile unsigned long *)0xe0200280) #define rGPJ2DAT

25、*(volatile unsigned long *)0xe0200284) 定时器void timer_init(void) /类似,修改定时器3/*1.设置定时器输入频率=PCLK 外设时钟66M/(预分频值+1)/分频值 =66000000/(65+1)/16 =62500Hz TCNTB0进行减1计数为62500HZ的时候就代表是1秒的时间rTCFG0 = (65<<0);rTCFG1 = (4<<0);/*2.设置定时器计数值 */rTCNTB0=62500; /1SrTCNTB3=62500/*3.设置定时器比较值为0,因为我当前不需要进行PWM功能,即不需

26、要产生电平变化*/rTCMPB0=0; /rTCMPB3=0;/*4.安装定时器0中断服务函数*/rVIC0VECTADDR21 = (unsigned int)timer0_irq_handler;/*5.使能当前VIC0第21通道为IRQ中断*/rVIC0INTSELECT &=(1<<21);/*6.允许当前VIC0第21通道中断*/rVIC0INTENABLE |= (1<<21);/*7.当前没有有效的中断服务函数,也代表说清零*/rVIC0ADDRESS = 0;/*8.启动定时器 1)先手动更新TCNTB0及TCMPB0的值2)启动定时器并自动重载

27、rTCON|=(1<<1);rTCON =(1<<3)|(1<<0);/*9.使能定时器中断*/rTINT_CSTAT =(1<<5)|(1<<0);void led_init()rGPJ2CON &=(0xf<<0);rGPJ2CON |=(0x1<<0);void delay()int i,j;for(i=0;i<100;i+)for(j=0;j<100;j+); /时间到触发中断,自动执行下面Void timer0_irq_handler()rVIC0ADDRESS = 0;led_i

28、nit();rGPJ2CON &=(0x1<<0);Delay();rGPJ2CON |=(0x1<<0);arm老师画的重点页数p2 5 14 17 19 28 30 31 32 35 37 39 59 83 175填空10个,判断10个,多选5个*3分=15分,简答15分,程序解释,编程题基础中断代码#include "stdio.h"#include "s5pv210.h"void Eint16_isr()rEXT_INT_2_PEND |=(0x1<<0); /中断发生,1表示清除中断状态位printf

29、("key2 put down!n"); /中断处理函数,需要中断后led灯闪烁这里添加void keyinit_intr() /初始化寄存器/GPH2CON3:0=0B1111/EXT_INT_2_CON2:0 = 010/EXT_INT_2_MASK0 = 0/EXT_INT_2_PEND0 = 1 write 1 clear 0void keyvic0_init()/VIC0INTENCLEAR16=1/rVIC0INTSELECT16=0, irq/rVIC0INTENABLE16=1int keyled_intr()keyinit_intr();keyvic0_i

30、nit();while(1);S5PV210 中断编程流程 按键中断一.需掌握知识:怎样初始化中断,怎样设置一级二级向量表。二.程序效果:今天编写interrput程序,预期的实验结果是,在S5PV210开发板上通过按键,以中断的方式实现led闪烁。三. 常用概念1.一级向量表:在以下地址寄存器中写入当异常是调用的函数。#define ABORT_UNDEFINED_TABLE (volatile unsigned int*)0XD0037404)#define ABORT_RESET_TABLE (volatile unsigned int*)0XD0037400)#define ABORT

31、_SOFTWARE_TABLE (volatile unsigned int*)0XD0037408)#define ABORT_PREFETCH_TABLE (volatile unsigned int*)0XD003740c)#define ABORT_DATA_TABLE (volatile unsigned int*)0XD0037410)#define ABORT_IRQ_TABLE (volatile unsigned int*)0XD0037418)#define ABORT_FIQ_TABLE (volatile unsigned int*)0XD003741c)2.ISR:I

32、nterrput Server Routing,中断服务程序。3.S5PV210一共有128个中断源。四.程序执行的过程1.烧写程序,按下K1,产生IRQ。2.从一级向量表中找到指定的函数。3.通过对寄存器的读取,得到之前写好的ISR,执行。五编程思路1.第一步查看芯片手册interrput章节,浏览其中所有的寄存器描述。2.第二步根据寄存器描述写出初始化中断的函数。3.第三步写出提供给其他模块中断设置的函数。例如(中断源使能,中断源模式选择,中断源服务程序绑定等)4.第四步查看芯片手册key章节,浏览key和中断相关的寄存器,浏览其寄存器的描述。结合第三步写出key中断初始化函数。5.调用初

33、始化函数,查看功能时候实现。六.相关寄存器中断一二级向量表初始化:VICIRQSTATUS:查看哪个中断源发出中断请求。VICADDRESS:当前活动的服务程序,服务程序后清除。A read of this register returns the address of the ISR and setsthe current interrupt as being serviced. A read must beperformed while there is an active interrupt.A write of any value to this register clears the

34、 current interrupt.A write must only be performed at the end of an interruptservice routine.中断中断源设置模块:VICCECTADDR:Contains ISR vector addresses.VICINTSELECT:中断源选择中断类型(IRQ,FIQ)VICINTENABLE,VICINTENCLEAR:使能和关闭中断源。(总开关)按键中断初始化:rGPH2CON :  按键的引脚功能设置为中断。*EXT_INT_2_CON : 中断设置触发方式(高,低电平)(下降沿,上升沿)。*EXT

35、_INT_2_MASK :使能对应中断源的中断。 (分开关)*EXT_INT_2_PEND :查看具体中断源。判断具体哪个按键按下。七主程序和相关函数1.主函数int xmain()init_led();  *rGPJ2DAT = 0x00;init_interrput();init_itr_key();close_buzzer();while(1)return 0;2./查询方式和串口通讯。void init_uart()/将特定的GPIO口设置为UART模式。*GPA0CON = 0x22; *UFCON0 = 0x0;*UMCON0 = 0x0;*ULCON0 = (3<

36、<0)|(0<<2)|(0<<5)|(0<<6); *UCON0 = (1<<0)|(1<<2)|(1<<8)|(1<<9)|(0<<10); /(66700000/(115200*16)  -1)*UBRDIV0 = 35;*UDIVSLOT = 0x888; 3.ISR和按键中断初始化void ISR_key(void)/中断发生位,判断是具体那个按键发出的中断if( (*EXT_INT_2_PEND & (1<<0) = 0x1)*rGPJ2DAT = (*

37、rGPJ2DAT);*EXT_INT_2_PEND = *EXT_INT_2_PEND | 0x01;else*EXT_INT_2_PEND = 0xff;void init_itr_key()/设置中断方式,下降沿触发*EXT_INT_2_CON = 0x2;/使能中断源16*EXT_INT_2_MASK = 0x0;*rGPH2CON = 0xf;set_ISR_itr(16,ISR_key);set_type_itr(16,0);set_enable_itr(16);4.中断相关的函数/*  interrput */static void init_abort_table();

38、static void clear_address();static void clear_enable();/interrput中断初始化函数void init_interrput()init_abort_table();clear_address();clear_enable();/初始化一级异常中断向量表extern void IRQ_handle(void);static void init_abort_table()*ABORT_IRQ_TABLE = (volatile unsigned int)IRQ_handle;/二级异常向量处理函数,设置执行ISR的程序void irq_h

39、dle(void)volatile unsigned int i = 0;ISR_fun f;volatile unsigned int* vicAdd=VICADRESS0,VICADRESS1,VICADRESS2,VICADRESS3;volatile unsigned int* vicStatus=VICIRQSTATUS0,VICIRQSTATUS1,VICIRQSTATUS2,VICIRQSTATUS3;for(i=0;i<4;+i)if( *(vicStatusi) != 0x00)f = (ISR_fun)(*vicAddi);f(); *(vicAddi) = 0x0;

40、/清除中断寄存器static void clear_address()*VICADRESS0 = 0XFFFFFFFF;*VICADRESS1 = 0XFFFFFFFF;*VICADRESS2 = 0XFFFFFFFF;*VICADRESS3 = 0XFFFFFFFF;/关闭所有中断static void clear_enable()*VICINTCLEAR0 = 0XFFFFFFFF;*VICINTCLEAR1 = 0XFFFFFFFF;*VICINTCLEAR2 = 0XFFFFFFFF;*VICINTCLEAR3 = 0XFFFFFFFF;/使能相应的中断void set_enable_

41、itr(unsigned int no)volatile unsigned int i = 0;volatile unsigned int row = 0;volatile unsigned int col = 0;i=no;if(no < 128)row = i/32;col = i%32;volatile unsigned int* virEnable = VICINTENABLE0,VICINTENABLE1,VICINTENABLE2,VICINTENABLE3;*(virEnablerow) &= (1 << col); /对应位清0*(virEnabler

42、ow) |= (1 << col); /对应位至1/设置中断源类型void set_type_itr(unsigned int no,unsigned int type) volatile unsigned int* virType = VICINTSELECT0,VICINTSELECT1,VICINTSELECT2,VICINTSELECT3;volatile unsigned int row = 0;volatile unsigned int col = 0;row = no/32;col = no%32;if(no < 128)*(virTyperow) &=

43、 (1 << col); /对应位清0*(virTyperow) |= (type?1:0) << col); /对应位至1/设置中断服务程序isrvoid set_ISR_itr(unsigned int no,ISR_fun f)volatile unsigned int* virISR = VICVECTADDR0,VICVECTADDR1,VICVECTADDR2,VICVECTADDR3;volatile unsigned int row = 0;volatile unsigned int col = 0;row = no/32;col = no%32;

44、60;if(no < 128)*(virISRrow + col) = (volatile unsigned int)f;Arm课程设计代码参考#include "stdio.h"#include "s5pv210.h"#include "welcome.h"#include "bg.h"#include "myself.h"#include "bg_led.h"#include "bg_PWM.h"#include "bg_ADC.h&q

45、uot;#include "bg_ME.h"#include "bg_NF.h"#include "bg_Pic.h"#include "kb0.h"#include "kb1.h"#include "kb2.h"/*vv Nand Flash 相关宏定义 vv*/#define TACLS 2#define TWRPH0 4#define TWRPH1 2#define NFCONF ( *(volatile unsigned long *)0xB0E00000) )#de

46、fine NFCONT ( *(volatile unsigned long *)0xB0E00004) )#define NFCMMD ( *(volatile unsigned char *)0xB0E00008) )#define NFADDR ( *(volatile unsigned char *)0xB0E0000C) )#define NFDATA ( *(volatile unsigned char *)0xB0E00010) )#define NFSTAT ( *(volatile unsigned long *)0xB0E00028) )#define MP0_1CON (

47、 *(volatile unsigned long *)0xE02002E0) )#define MP0_2CON ( *(volatile unsigned long *)0xE0200300) )#define MP0_3CON ( *(volatile unsigned long *)0xE0200320) )#define MP0_6CON ( *(volatile unsigned long *)0xE0200380) )#define MAX_NAND_BLOCK 4096 /blocks in chip#define NAND_PAGE_SIZE 2048 /size of pa

48、ge#define NAND_BLOCK_NUM 64 /pages in a block#define NAND_BLOCK_SIZE (NAND_PAGE_SIZE*NAND_BLOCK_NUM) /size of block#define NAND_CMD_READ_1st 0x00 #define NAND_CMD_READ_2st 0x30#define NAND_CMD_RANDOM_WRITE 0x85#define NAND_CMD_RANDOM_READ_1st 0x05#define NAND_CMD_RANDOM_READ_2st 0xe0#define NAND_CMD

49、_READ_CB_1st 0x00#define NAND_CMD_READ_CB_2st 0x35#define NAND_CMD_READ_ID 0x90#define NAND_CMD_RES 0xff /reset command#define NAND_CMD_WRITE_PAGE_1st 0x80#define NAND_CMD_WRITE_PAGE_2st 0x10#define NAND_CMD_BLOCK_ERASE_1st 0x60#define NAND_CMD_BLOCK_ERASE_2st 0xd0#define NAND_CMD_READ_STATUS 0x70#d

50、efine ECC_EN (1<<4)#define CHIP_SELECTED (1<<1)#define CHIP_DESELECTED (1<<1)#define CONTROL_EN(1<<0)/* Nand Flash 相关宏定义 */static void EINT16_31_IRQHandler(void);static int fun_num=0;static int fun_OK=0;static int pic_num=0;static int time_flag=0;volatile int login_flag=0;voi

51、d Delay(void) volatile int z=0x100000;/【volatile】强制使用寄存器进行计数,既让编译器不要优化它!while(z-);void Delay_short(void) volatile int m=0x3000;/【volatile】强制使用寄存器进行计数,既让编译器不要优化它!while(m-);/*1、LCD相关定义及函数*/static unsigned int *g_pFrameBuffer=0x42000000;unsigned char HanZi=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0

52、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFE,0x3F,0

53、xFF,0xFF,0xFC,0x3E,0x00,0x1F,0xF8,0x30,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*&quo

54、t;一",0*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"9",9*/void lcd_init(void)/*1.配置引脚LCD_HSYNC LCD_VSYNC LCD_VDEN LCD_VCLKLCD_VD0 LCD_VD1 LCD_VD2 LCD_VD3rGPF0CON = 0x22222222;/*2.配置引脚LCD_VD4 LCD_VD5 LCD_VD6 LCD_VD7LCD_VD8 LCD_VD9 LCD_VD10 LCD_VD1

55、1rGPF1CON = 0x22222222;/*3.配置引脚LCD_VD12 LCD_VD13 LCD_VD14 LCD_VD15LCD_VD16 LCD_VD17 LCD_VD18 LCD_VD19rGPF2CON = 0x22222222;/*4.配置引脚LCD_VD20 LCD_VD21 LCD_VD22 LCD_VD23rGPF3CON &=(0xF<<12)|(0xF<<8)|(0xF<<4)|(0xF<<0);rGPF3CON |= (0x2<<12)|(0x2<<8)|(0x2<<4)|

56、(0x2<<0);/*5.VIDCON0 Note:ENVID and ENVID_F are set to “1” 0:1 Display On必须置11:1 Display On必须置14:1 因为显示的时钟需要用到33.3MHz的频率,那么要进行分频6:4 显示主区域的HCLK时钟为166MHz,为了得到33.3MHz左右的频率,当前的值要设置为418:0 因为我们当前是RGB并行接口,意思就是说一次发送3个字节,什么是串行接口,3个字节分3次来发送26:0 配置为RGB接口rVIDCON0=(0<<26)|(0<<18)|(4<<6)|(1<<4)|(1<<1)|(1<<0);/*6.VIDCON1,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论