ARM开发之嵌入式开发中的S3C2410初始化
- 格式:pptx
- 大小:97.96 KB
- 文档页数:15
文章记录了作者在S3C2440开发板上实现按键点亮LED驱动开发的详细过程,还记录了一些容易出现的错误,以及怎么解决这些错误。
一、驱动开发流程Linux驱动开发不同于应用程序的开发。
驱动开发是直接和硬件打交道的,通过对硬件的操作给应用程序提供一些接口函数,使得应用程序能够“间接”的控制硬件来工作。
对于按键点亮LED的驱动开发流程如下。
二、驱动开发具体步骤1、查看开发板TQ2440底板原理图,找到按键和LED模块,如下图:图-2 按键和LED电路图从上图我们可以清楚地看到K1~K4对应的管脚是ENT1~ENT4,LED1~LED4对应的管脚是nLED_1~nLED_4.2、查看TQ2440_核心板原理图,找到对应的CPU管脚,如下图:图-3 按键和LED对应CPU管脚电路图3、查看s3c2440芯片手册,查看CPU管脚的模式,如下图从上图我们可以看出按键对应的CPU管脚GPF0~GPF4都是占两位(如:GPF0[1:0])。
按键是一种中断,要想让按键工作在中断模式下,就要设置GPF0~GPF4(GPF3除外)管脚都设置在中断模式下,即为10。
对于LED对应的CPU管脚GPB5~GPB8也是占两位。
要想让LED工作,就要让LED工作在输出模式下,即对应管脚设置为01.4、编写按键点亮LED驱动程序/*调用内核头文件,和应用程序调用的头文件不一样*/#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <asm/irq.h>#include <linux/interrupt.h>#include <asm/uaccess.h>#include <asm/arch/regs-gpio.h>#include <asm/hardware.h>#include <linux/device.h>#include <linux/poll.h>#define DEVICE_NAME "tope-buttons" //自定义驱动称为“tope-buttons”。
第二十章I2C总线概述S3C2410处理器支持一个多主I2C串行总线接口。
一根专用串行数据线SDA和一根串行时钟线SCL在总线主机和连到I2C总线上的外设之间传输数据,SDA和SCL都是双向的。
在多主I2C总线模式下,处理器能与从设备接收或者发送串行数据。
S3C2410主机可以初始化和停止一次基于I2C总线的传输,此芯片上的I2C总线使用标准的总线仲裁策略。
为了控制多主I2C总线操作,如下寄存器必须被设置好:—多主I2C总线控制寄存器,IICCON—多主I2C总线控制/状态寄存器,IICSTAT—多主I2C总线Tx/Rx移位寄存器,IICDS—多主I2C总线地址寄存器,IICADD当I2C总线空闲时,SDA和SCL线都处于高电平状态,当SCL保持高电平时,一个SDA下降沿可以初始化一个起始条件;当SCL保持高电平时,SDA的一个上升沿可以初始化一个停止条件。
起始和停止条件总是由主设备发起的,起始条件停止后第一个字节是一个7位地址值——决定总线主选择哪个从设备。
第8位决定此次传输的方向(读还是写)。
发送到SDA上的每个数据必须是8位的,在整个总线传输操作期间字节可以被无限地发送和接收。
数据总是从MSB开始传输,所有字节后都必须跟1个ACK 应答位。
图20-1 I2C总线方框图注意:IIC数据保持数据(tSDAH)最小为0ns。
(IIC data hold time is minimum 0ns for standard/fast bus mode in IIC specification v2.1.)。
请检查你的I2C总线设备是否是0ns。
I2C控制器仅支持I2C总线设备(标准和快速总线模式),不支持C总线设备I2C总线接口S3C2410的I2C总线接口有如下4种操作模式:—主发生器模式—主接收器模式—从发送器模式—从接收器模式各种操作模式之间的联系如下起始和停止条件当I2C总线接口无动作时,它通常处于从模式。
Keil ARM RVMDK软件仿真及SDRAM中调试S3C2410程序摘自:/content/13/0110/17/11462699_259393778.shtml 弄了几天,终于吧ADS原来的一个LED小程序移植到KEIL ARM里面,并且搞掂可以在SDRAM中调试了。
首先说说硬件平台,ARM是三星的S3C2410,SDRAM是HY57V561620BT*2,64M容量,标准的SDRAM片选接在nGSC6,故地址空间在0x30000000~0x33ffffff。
软件平台是Keil ARM就是Realview MDK V3.40中国评估版,可以在上下载,现在破解不是很好,几乎每次调试后都要重新破解,以前用的V3.05虽然可以完全破解,但是3.05版的darmss9.dll文件,不支持2410,无法编译2410的程序,另外我也试过V3.20,但是不直接用wiggler JTAG来调试,所以就直接上3.40版本的RVMDK了,JTAG用H-JTAGV9.1,很快H-JTAG就可以支持NAND FLASH的烧写了,twentyone加油!下面详细介绍如何设置RVMDK。
安装RVMDK后,我这里用了本来ADS工程带的start.s启动代码,下次再试试用keil 向导带的S3C2410.s启动代码,把其它C程序文件添加到keil工程中,设置工程属性option for target,在target页中,Xtal设置的晶振频率只在软件仿真中有用,实际硬件调试,还是要设置MPLLCON寄存器实现,关键是设置Read/Only Memory Areas与Read/Write Memory Areas,如下图设置,这里是跟SDRAM的地址对应才行。
如果是软件仿真,就在下面on-chip 的IROM1与IRAM1前打钩,Startup钩上。
另外是Linker页的设置,把Use Memory Layout form Target Dialog的小钩去掉,在R/O base与R/W base设置,另外我这里使用了分散加载文件Scatter,在Scatter file中添加,其中:.\output\start.sct注意替换自己编写的scatter文件的目录路径。
S3C2410快速启动的实现2005年12月21日52RD社区评论:0条我来说两句嵌入式系统对功能、可靠性、成本、体积、功耗等均有严格要求,以ARM体系结构为基础的各种RISC微处理器具有灵活的特性和强大的性能,在嵌入式系统中得到了广泛的应用。
---S3C2410是三星公司基于ARM920T设计的一款处理器,在开发基于S3C2410的系统的过程中,如何让系统快速稳定地启动是一个重要问题。
嵌入式系统的资源有限,程序通常都是固化在ROM中运行。
但在实际应用中,为提高系统的实时性,加快代码的执行速度,系统启动后程序往往要被搬移到RAM中,因为RAM的存取速度要比ROM快得多,这样大大提升系统的性能。
启动程序要完成的任务包括:硬件初始化,系统存储系统的配置,复制二级中断向量表。
启动程序过程●系统硬件初始化---系统上电或复位后,程序从位于地址0x0的Reset Exception Vector处开始执行,因此需要在这里放置Bootloader的第一条指令:b ResetHandler,跳转到标号为ResetHandler处进行第一阶段的硬件初始化,主要内容为:关看门狗定时器,关中断,初始化PLL和时钟,初始化存储器系统。
执行完以上程序后,系统进行堆栈和存储器的初始化。
系统堆栈初始化取决于用户使用了哪些中断,以及系统需要处理哪些错误类型。
一般情况下,管理者堆栈必须设置,如果使用了IRQ中断,则IRQ堆栈也必须设置。
如果系统使用了外设,则需要设置相关的寄存器,以确定其刷新频率、总线宽度等信息。
●代码段复制到RAM中运行---因为嵌入式系统的代码通常都是固化在ROM或者Flash中,上电后开始运行。
由于ROM 和Flash的读取速度相对较慢,这样无疑会降低代码的执行速度和系统的运行效率。
为此,需要把系统的代码复制到RAM中运行。
使用SDT链接器ARMLink产生的定位信息,把RO的有效代码和数据段到RAM中。
s3c2410中文手册简介S3C2410 是一种嵌入式处理器,由韩国三星电子公司设计和制造。
它是一款高度集成的 ARM 架构芯片,广泛应用于各种移动设备中,如智能手机、平板电脑、PDA 等。
本手册将详细介绍 S3C2410 芯片的特性、功能和使用方法,帮助开发人员更好地理解和应用该芯片。
芯片特性S3C2410 芯片具有以下主要特性:1.ARM920T 内核: S3C2410 芯片采用了 ARM920T 内核,它是一种高性能、低功耗的 32 位 RISC 处理器。
ARM920T 内核支持 ARMv4T 指令集,并具有强大的计算和处理能力。
2.高度集成的外设: S3C2410 芯片内集成了许多常用的外围设备,包括 UART、SPI、I2C、PWM 等。
这些外设可满足各种应用需求,简化了系统设计和连接。
3.多种接口: S3C2410 芯片提供了丰富的接口,如LCD 控制器、触摸屏控制器、SDIO 控制器等。
这些接口允许连接各种外部设备,如显示屏、输入设备、存储卡等,实现更丰富的功能。
4.低功耗设计: S3C2410 芯片采用先进的低功耗设计技术,具有很低的静态功耗和动态功耗。
这使得它非常适合于移动设备,延长了电池寿命。
芯片功能GPIOS3C2410 芯片提供了多个 GPIO 管脚,用来实现输入和输出功能。
GPIO 管脚可以通过软件配置为输入模式或输出模式,并可以设置电平状态。
开发人员可以利用GPIO 实现各种功能,如控制 LED 灯、读取按键状态等。
UARTS3C2410 芯片内集成了多个 UART 模块,用于串口通信。
每个 UART 模块都提供了数据传输和接收的功能,并支持多种通信协议,如 RS232、RS485 等。
开发人员可以使用 UART 实现与外部设备的串口通信。
LCD 控制器S3C2410 芯片具有强大的 LCD 控制器,支持多种显示模式和分辨率。
LCD 控制器可以控制显示屏的像素点,实现图形显示和文字显示功能。