在封装控制器寄存器的时候,一般首先看寄存器的地址是否连续,以S3C2440的NANDFLASH控制器为例
从上表可以看到,寄存器的地址是连续的,都是相隔4位,一般都会直接封装成这样子
封装完毕。
在配置某一寄存器的时候,虽然寄存器的地址是连续的,但有的寄存器是16位,有的寄存器是8位,配置的时候,使用指针需要相当注意(陷阱在此),
当寄存器是8位的时候,需要强制转换指针,如
typedef volatile unsigned char VU8
VU8 *p=(VU8 *)&NandS3C2440->NFADDR;
强制转换后才能正确配置寄存器,不然代码虽然能通过编译,但实际没法实现功能 。
关键字:寄存器 S3C2440
引用地址:
DATASHEET寄存器封装陷阱--S3C2440为例
推荐阅读最新更新时间:2024-11-18 00:39
关于S3C2440开发板Nand flash程序烧写和运行的一些理解
这两天刚开始学习ARM9的裸机编程和Linux系统移植,在烧写Nand flash内存的时候对一些指定的地址产生了疑惑。 我看过很多教学视频,他们在烧写程序到Nand flash的时候一般会指定一个地址0X3000_0000,而S3C2440的官方手册上指明了0X3000_0000地址对应的片内外设是SDRAM。这不禁让我产生了疑问。明明是指定了SDRAM却烧写到了Nand flash,为什么? 为了解决我的疑惑,在网上看了很多人的解释,这不仅解开了我的疑惑,还引出了许多相关知识点。 要解答这个问题,首先要从Nand flash本身的结构说起。Nand flash的结构和RAM不一样,它的数据线是复用的,内与足够的地址线用来寻址,
[单片机]
S3C2440裸机------I2C_I2C协议与EEPROM
虽然工作中用了很多次的I2C协议了,对I2C协议也比较清楚了,但还是简单的把笔记写一下,
[单片机]
和弦芯片C520的结构与典型应用
1 和弦铃声概述 和弦原来是乐理上的一个概念,指的是按照三度关系叠置起来的三个或三个以上的音的结合;而在音频器材的工业设计领域中,和弦指的是多个音源同时发音,也叫复音、多音(polyphony)。和弦铃声在手机中得到了广泛的应用,它的音色饱满圆润,立体感强,已经全面取代了以往的单音铃声。目前和弦铃声文件格式有多种,如MIDI、MMF、AMR、MP3、IMY等,其中MIDI是目前支持度最高的铃音文件格式,它的文件占用空间小,表现力强,几乎已经成为目前和弦铃声手机的标准配置。 手机中的MIDI和弦音乐是通过内置高集成度的和弦芯片播放MIDI音乐文件来实现的。和弦芯片使用的声音合成和音色调用方式决定了铃声的播放效果。早期的FM
[手机便携]
存储器与寄存器(2)
一、存储器映射 1.1、存储器映射 存储器本身不具备地址信息,它的地址是由芯片厂商或用户分配。 给存储器分配地址的过程叫出存储器映射。如果在分配一个地址则叫重映射。 1.2、存储区域划分 开发版4G容量的ARM按功能划分表 Block0、Block1、Block2包含了STM32芯片内部Flash、RAM和片上外设。 Block0 主要用于设计片内的 FLASH,STM32F103 系列芯片内部 FLASH 最大是 512KB,STM32F103ZET6的FLASH也是512KB。 1.2.1、Block0内部区域功能划分 0x0000 0000-0x0007 FFFF:取决于 BOOT 引脚,为 FL
[单片机]
C51---7定时器
定时器相关寄存器 定时器控制寄存器TCON 定时器工作模式寄存器TCON 代码1 通过定时器闪烁流水灯,实现按键控制流水灯的模式 main函数 #include REGX52.H #include Timer0.h #include Key.h #include INTRINS.H unsigned char KeyNum,LEDMode; void main() { P2=0xFE; Timer0Init(); while(1) { KeyNum=Key(); //获取独立按键键码 if(KeyNum) //如果按键按下 { if(Key
[单片机]
S3C2440上LCD驱动(FrameBuffer)开发(一)
一、开发环境 主 机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二、背景知识 1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3C2410/2440等。通过LCD控制器就可以产生LCD驱动器所需要的控制信号来控制STN/TFT屏了。 2. S3C2440内部LC
[单片机]
S3C2440启动方式研究
不管S3C2440的启动设备是什么,它都是从0x0000 0000地址开始执行程序的,所不同的是地址的映射不一样。基于S3C2440的嵌入式系统上电之后,需要首选选择启动设备,2440的启动方式选择是通过模式引脚OM1和OM0来配置的,如图1 所示为2440的启动方式选择说明: 图1 S3C2440启动方式说明 由上图可知,S3C2440支持两种启动模式:NAND和非NAND(这里是Nor Flash),具体采用的方式取决于OM0、OM1两个引脚的状态。 OM =00时,处理器从NAND Flash启动 OM =01时,处理器从16位宽度的ROM启动 OM =10时,处理器从32位宽度的ROM启动。 OM =11时,
[单片机]
S3C2440的内存情况在NAND FLASH或者NOR FLASH启动的情况下
1,从NANDFLASH启动时,在ARM上电时,ARM会自动把NANDFLASH前4K的内容拷贝到S3C2440内部SRAM中,同时把SRAM的地址映射到0X00000000。ARM上电后会从SRAM处开始运行。 2,从NOR FLASH启动时,因为NORFLASH接在bank0。地址映射是0X00000000。所以ARM上电后直接运行NORFLASH里的程序。此时S3C2440内部SRAM地址为0X40000000。 3,ARM上电启动都是从0X00000000开始运行。但是对于复位程序入口,ResetEntry的值在ARM上电运行时是0X00000000,在JTAG仿真时是0X30000000。这个值很关键,在拷贝程序
[单片机]