2013年3月16日

2440-LCD显示

摘要: 1、6410触摸屏是通过一个单片机间接操作的一线操作模式,甫华说操作很简单,不能像2440那样学到很多,于是我暂时不搞,开始LCD显示实验。(程序文件夹:LCD_test)2、将视频中演示代码搬到RVDS中,开始编译和调试工作。编译时出现了小小问题,不过都能解决,在研究一个警告时,发现了MDK的官方网站,里面好多好东西噢。于是我下载了很多。网址:http://www.realview.com.cn/index.asp3、调试过程中遇到错误: Processor ARM79_0 raised an exception.Cause: The processor was reset 。 解决方... 阅读全文

posted @ 2013-03-16 19:30 suwen 阅读(195) 评论(0) 推荐(0) 编辑

2440-触摸屏失败感悟

摘要: 昨天下午开始搞2440触摸屏,直到现在,以失败结束。。。期间碰到许许多多问题,也算一种别样的收获吧,现在做一下总结。(参考文件夹:touch_test,文档:Keil ARM RVMDK软件仿真及SDRAM中调试S3C2410程序.doc)1、 超级终端显示:Dummy_isr error, interrupt number: 0. INTMSK=0x7fffffff 参考网上的解决方法是(实验未成功): #include "mmu.h" 把 mmu.c和mmu.h加到工程中,接着在主函数中调用MMU_Init();初始化MMU,好像就解决了。 仿真的时候,你的程序是运行在 阅读全文

posted @ 2013-03-16 19:25 suwen 阅读(924) 评论(0) 推荐(1) 编辑

2440-按键中断编程步骤

摘要: 感慨于志锋能写出那么好的编程总结心得,6410的我就不重写了,自己写写2440的吧。(程序参考文件夹:Int_Test)1、6410调试的条件之一是下载u-boot到Nand Flash中或者自己编写一份初始化代码由AXD命令烧写进去,而2440则不同,2440编程用uVision4作为编译器,开发板的初始化工作在汇编文件S3C2440A.s中编写好了。当然中断的初始化工作也在其中。6410中断采用中断向量控制器管理中断,编程比较简单。而2440采用中断向量表和多个寄存器配合工作,需要我们自己一个个操作,所以比较麻烦,但对学习很有帮助。2、关于S3C2440A.s中中断初始化工作参考文档:中断 阅读全文

posted @ 2013-03-16 19:18 suwen 阅读(517) 评论(0) 推荐(0) 编辑

2440-存储管理器-MMU-nandflash的初步了解

摘要: 1、 今天上午学习中断剩下的知识,准备转向学习ARM11的编程环境和中断系统,但发觉6410的资料太乱了,整理了一阵子。意外发现2440的还有存储管理器、MMU和nand flash知识要了解,于是下午2点多开始这方面的学习。2、 存储管理器的知识,对于我是新的,之前没有接触过。其中涉及的重要文档是S3C2440.pdf中的第五章和一本书——《嵌入式Linux应用开发完全手册》,这里虽然是linux应用开发的,但是,我发现,该视频是关于linux系统学习的,但很多开发工具与我用的不同;视频里没有太多基于系统的应用开发的知识,而跟底层硬件知识的却很多,很关键,所以,我希望在后期学习中,再次翻看这 阅读全文

posted @ 2013-03-16 19:07 suwen 阅读(207) 评论(0) 推荐(0) 编辑

2440-中断的整个流程分析

摘要: 1、 在工程int_test中有几个重要文件,可以清晰的知道程序运行时的主要流程: 首先,在S3C2440A.s中,先有很多宏定义和跳转命令,而程序运行时从复位开始的,如下图所示: 从Reset_Handler开始执行,先设置中断向量表,一级中断源列表,异常中断入口,看门狗,再设置系统时钟等等的一系列初始化工作。当初始化完毕后,则会执行main主函数:如下图: 在主函数中,可根据我们的需要,重新设置系统时钟,设置串口等,其中也要涉及中断初始化工作,如下图: 在中断初始化函数中,我们将自己的中断处理函数挂在中断响应地址上,并对中断相关寄存器做必要修改,例如,我们将HaltUn... 阅读全文

posted @ 2013-03-16 18:58 suwen 阅读(838) 评论(0) 推荐(0) 编辑

2440-嵌入式体验班学习

摘要: 前两天考路试,没学习。今天学习是看了嵌入式体验班的视频,为什么在学习中断的过程中要回头看这些呢???唉,我也是很无奈,对2440开发环境只有模糊概念,学习中断调试时,发现要下载一个bin文件,再可以调试,需要用USB下载,尝试几次都失败,只好乖乖看一遍嵌入式体验班的视频,将2440的开发环境做一次了解,下载我终于明白咯,呵呵。 为什么之前装了USB下载线的驱动后用不了呢?今晚通过几次摸索,才得到解决。原因是,用secureCRT控制开发板准备下载程序时,发现找不到USB线,而当我拔掉J-link线时控制终端却不能输入命令了,重启开发板时suppervivi没有启动,几番尝试后,只好无奈拔... 阅读全文

posted @ 2013-03-16 17:43 suwen 阅读(154) 评论(0) 推荐(0) 编辑

2440-中断

摘要: 1、 CPU与外设之间的数据传送控制方式(即I/O控制方式),通常有以下三种: a) 查询方式 b) 中断方式 c) DMA方式(Direct Memory Access)2、 中断定义 在程序运行中,出现了某种紧急事件,CPU必须中止现行程序,转去处理此紧急事件(执行中断服务程序),并在处理完毕后再返回运行程序的过程。 中断的过程: a) 中断请求 b) 中断仲裁 c) 中断响应(含保护现场) d) 中断处理 e) 中断返回(含恢复现场)3、 ARM中断处理流程: a) 中断控制器捕获当前外设发出的中断信号,通知SOC。 b) SOC保存当前程序的运行环境,然后调用中... 阅读全文

posted @ 2013-03-16 17:37 suwen 阅读(382) 评论(0) 推荐(0) 编辑

2440-串行口

摘要: 1、 在通信领域内,有两种数据通信方式:并行通信和串行通信2、 串口的数据传输是以串行方式进行的。串口在数据通信中,一次只传输一个比特的数据。3、 串行数据的传输速度用bps或波特率来描述 每秒传输的二进制位数,单位为bps(bit per second )也称波特率4、 通用异步收发器简称UART,即“Universal Asynchronous Receiver Transmitter”,它用来传输串行数据。2440中UART之间以全双工方式传输数据。5、 UART使用标准TTL/CMOS逻辑电平表示数据 a) 0~5V、0~3.3V、0~2.5V或0~1.8V b) 高电平表示1,... 阅读全文

posted @ 2013-03-16 17:31 suwen 阅读(232) 评论(0) 推荐(0) 编辑

2440-内部上拉电阻的作用

摘要: 1、 内部上拉电阻的作用: a) (提高输出电流,提高驱动能力)用来解决总线驱动能力不足时提供电流 b) (提高抗干扰能力)管脚悬空就比较容易接受外界的电磁干扰,使用上拉电阻,使得引脚稳定在高电平,提高总线的抗电磁干扰能力。 c) 2、 GPIO开发注意事项: a) 方向--配置引脚端口GPxCON b) 是否需要提高电流,提高带负载能力。--使用内部上拉电阻GPxUP c) 驱动能力–扩展外部驱动电路模块 d) 读/写引脚电平-GPxDAT3、 阅读全文

posted @ 2013-03-16 17:20 suwen 阅读(237) 评论(0) 推荐(0) 编辑

2440-系统时钟

摘要: 1、 系统时钟: S3C2440A时钟控制逻辑通过外接晶振,给整个芯片提供三种时钟: FCLK:用于CPU核 HCLK:用于AHB(Advanced High Performance Bus)总线设备,比如:CPU核、存储器控制、中断控制器、LCD控制器、DMA和USB主机模块等 PCLK:用于APB(Advanced Peripheral Bus)总线上的设备,比如WATCHDOG、IIS、IIC、PWM定时器、MMC接口、ADC、UART、GPIO、RTC和SPI等 mini2440开发板外接晶振频率Fin为12MHz,需要通过时钟控制逻辑的PLL提高系统时钟(正常模式下为400... 阅读全文

posted @ 2013-03-16 17:19 suwen 阅读(210) 评论(0) 推荐(0) 编辑

arm-led汇编编程-LDR伪指令与MOV的区别

摘要: 在学习led汇编编程时,发现一个问题,下面这句语句:;led_on LDR R0, =pGPBDAT LDR R1, =0X1E0 ;这里要用到ldr指令来传数据,不能用mov STR R1, [R0]一开始用MOV R1, #0X1E0,运行错误了,那到底MOV与LDR伪指令有什么共同点和区别呢?我猜测的:MOV指令的立即数是有条件的解释(参考文件:E:\arm\读书笔记\ARM嵌入式技术原理和应用\ arm中ldr与mov的区别): ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令。想把数据从内存中某处读取到寄存器中,只能使用ldr。.. 阅读全文

posted @ 2013-03-16 17:16 suwen 阅读(341) 评论(0) 推荐(0) 编辑

arm汇编伪指令

摘要: 1、 在ARM汇编语言源程序中有些特殊助记符,它们没有相对应的操作码或者机器码,通常称为伪指令。 伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。在ARM汇编程序中,有如下几种伪指令:符号定义伪指令,数据定义伪指令,汇编控制伪指令,信息报告伪指令,宏指令以及其他伪指令2、 符号定义伪指令,用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。 常见的符号定义伪指令有如下几种(A表示data,L:logic,S:string): 定义局部变量的LCLA、LCLL、LCLS;(局部变量作用范围为当前段)... 阅读全文

posted @ 2013-03-16 17:13 suwen 阅读(1108) 评论(0) 推荐(0) 编辑

arm汇编语言与C语言的混合编程

摘要: 在C代码中实现汇编语言的方法有内联汇编和嵌入型汇编两种,使用它们可以在C语言中实现C语言不能完成的一些工作。例如,在下面几种情况必须使用内联汇编或嵌入式型汇编。(1)、程序中使用饱和算术运算,如SSAT16和USAT16指令(2)、程序需要对协处理器进行操作(3)、在C语言中完成对程序状态寄存器的操作1、 内联汇编 a) 语法:__asm{ 汇编语句}因为内联汇编嵌入在C或C++程序中,所以在用法上有其自身的一些特点: i. 如果同一行中包含多条指令,用分号隔开。 ii. 如果一条指令不能在一行中完成,使用“/”将其连接。 iii. 内联汇编中使用逗号“,”作为指令操作数的分... 阅读全文

posted @ 2013-03-16 17:02 suwen 阅读(1138) 评论(0) 推荐(0) 编辑

arm汇编的程序结构-20130113

摘要: 1、 汇编语言的程序格式 在ARM汇编语言程序中以程序段为单位组织代码。段是相对独立的指令或数据序列,具有特定的名称,分为代码段和数据段。 可执行文件通常由以下几个部分构成:(1)、一个或多个代码段,代码段的属性是只读;(2)、零个或多个数据段,数据段的属性为可读写。2、 汇编语言子程序调用(基本结构如下): AREA Init,CODE,READONLY ENTRY Start LDR R0,=0x3FF50000 LDR R1,0XFF STR R1,[R0] … PRINT_TEXT … MOV PC,BL … EN... 阅读全文

posted @ 2013-03-16 16:56 suwen 阅读(597) 评论(0) 推荐(0) 编辑

arm汇编指令学习2-20130112

摘要: 1、 做实验内容。在调试arm_test1时出现错误,如下:发现不能0x30003100内存地址不能被写入。解决方法是:选择Debug->Memory Map在Memory Map中填写需要允许读写的内存区域(范围不能太大),然后勾选Read,Writer,点击MapRange即可,如图:上面的边框可以对已选区域进行删除2、 阅读全文

posted @ 2013-03-16 16:47 suwen 阅读(143) 评论(0) 推荐(0) 编辑

导航