s3c2440

S3C2440存储器SDRAM控制笔记

只谈情不闲聊 提交于 2020-03-01 01:23:51
最近一年多的时间一直在从事任意轮系机器人运动控制及惯性导航的研究实践,买的开发板闲置了一年多了,决定继续 延续一年多前的学习,继续做笔记。 SDRAM 读写操作流程 Cpu发出nGCS6信号,选中bank7,对应开发板nSCS引脚,引脚标号19 SDRAM芯片行地址使用13根地址线,列地址复用行地址9根地址线,同时还有两根地址线用于芯片内部逻辑块选择,每个芯片输出16bit数据,由两个芯片并联输出32位到cpu数据总线上,所以内存大小为2^(13+9+2)*4 = 64Mbyte 由于cpu始终以32位的宽度读取SDRAM,所以cpu读SDRAM地址低2位始终为0,所以原理图cpu的地址线addr0和addr1并未接到SDRAM上。 Cpu发出逻辑块选择信号,选择SDARM内存逻辑块,使用cpu地址线addr24和addr25 行地址选通,列地址选通,选定内存单元,内存和cpu通过数据总线交互数据 SDRAM 管理配置流程 数据掩码引脚配置、等待信号配置、数据位宽度配置 外接设备类型配置、行、列地址发送间隔时间配置、列地址宽度配置 刷新模式配置、刷新时钟配置 内存容量及传输方式配置 来源: CSDN 作者: 科教兴国 链接: https://blog.csdn.net/u010422438/article/details/104581974

uboot研读笔记 | 05 - 移植uboot 2012.04到JZ2440(支持Nand Flash读写)

别来无恙 提交于 2020-02-28 03:51:09
在支持Nand Flash操作之前,首先要对Nand Flash的读写方法有一定的了解,参考文章: S3C2440-裸机篇-10 | 使用S3C2440操作Nand Flash 1. 去除nand flash屏蔽 在之前初步移植uboot时,发现开启nand flash之后编译不通过,所以屏蔽了nand flash的使用,在单板配置文件 include/configs/smdk2440.h 中开启: 然后编译,改正编译错误。 2. 定位编译出错问题所在 首先来修复第一个问题: 查看s3c2410_nand.c文件的72行: 这个指针有问题的话,就是nand这个结构体变量的定义问题,找到nand变量的定义: struct s3c2410_nand * nand = s3c2410_get_base_nand ( ) ; 接下来问题就变为 struct s3c2410_nand 这个结构体定义有问题,继续寻找该定义,果然,在文件 arch/arm/include/asm/arch-s3c24x0/s3c24x0.h 中,我们定义的是CONFIG_S3C2440,所以有struct s3c2440_nand的定义,没有struct s3c2410_nand的定义: 3. 修复编译错误 — 添加s3c2440_nand.c文件 3.1. 添加文件到工程中 这里涉及到将所有定义全部改变

嵌入式linux学习笔记--20200224--JZ2440V3-S3C2440的Nor Flash启动流程分析以及参数修改测试

怎甘沉沦 提交于 2020-02-24 20:32:00
NOR Flash 是一种常见的存储设备。它可以向内存一样的读,但是不可以像内存一样写。 因为它的这一特性很多的嵌入式linux 设备都会有一块NOR flash 作为启动的芯片。在系统一上电之后就可以直接开始运行程序,执行初始化操作。但是由于价格的原因,NOR flash 一般都不会很大大多都是用作启动的芯片的(我觉得用来放boot loader 也是非常棒的 用来实现ISP 会简单很多) 我们先来分析开发板的主控芯片 S3C2440 ,很老很老的一款芯片了,也就比我小几岁。 这是S3C2440 不同的启动模式对应的内存图。 主要是两大类,一类是 NAND启动,一类是非NAND。 当进行nand启动的时候 CPU 会自动云心内部的程序把 NANDFlash 上面的前 4K的数据拷贝到片内仅有的 4K内存上 这时候这一段内存对应的地址就是0~ 4095 (程序上电是从 0地址开始运行的 ) 当启动模式是非 NAND 启动的时候(NOR启动) 程序是直接从0地址开始运行的 片内的4K ram 的地址变成 0x4000 0000以及之后的4K 空间 接下来我们分析一下时序部分 根据时序图 我们可以知道 读取的 时序的逻辑是 先发送地址线(A24:A0) 然后发送指定的片选线 nGCSx 和nOE(输出使能) 这是 JZ2440 开发板的 NOR flash 芯片我的 读取时序 NOR

S3C2440设置时钟

隐身守侯 提交于 2020-02-05 01:28:18
1、设置LOCKTIME寄存器(Lock Time的长度);一般使用默认值。 S3C2440默认值:0xFFFFFFFF 2、设置MPLLCON寄存器(用于设置FCLK与Fin的倍数)。 S3C2440: MPLLCON(0x4C000004) 位[19:12]=MDIV; 位[9:4]=PDIV; 位[1:0]=SDIV; 3、设置CLKDIVN寄存器(用于设置FCLK、HCLK、PCLK的比值)。 * S3C2440: CLKDIVN(0x4C000014) 注意: 如果HDIVN非0,CPU总线模式需要从fast bus mode变为asynchronous bus mode 来源: CSDN 作者: Coo1_ 链接: https://blog.csdn.net/Coo1_/article/details/104172108

S3C2440-裸机篇-05 | S3C2440时钟体系详解(FCLK、PCLK、HCLK)

我只是一个虾纸丫 提交于 2020-01-31 11:17:49
1.时钟架构 简化一下如图所示: 1.1.时钟源的选择 S3C2440的时钟源来源有两种: 外部晶振(OSC) 外部时钟信号(EXTCLK) 选择哪一路作为S3C2440的时钟源 由模式控制引脚OM3和OM2引脚(的电平)决定 ,如何选择见下图: 以JZ2440开发板为例,其使用的是 12Mhz外部晶振 , 硬件电路如下: 其OM3和OM2选择引脚设置如下,选择第一种方式: 1.2.MPLL改变主时钟FCLK的控制时序(上电复位时序) 2.实验 —— LED闪烁(为了后续对比) 2.1.实验目的 使用C语言控制LED闪烁。 2.2.实验代码 启动文件与之前相同; C程序添加延时函数 delay 修改后如下: void delay ( unsigned int xms ) { while ( xms -- ) ; } int main ( void ) { /* 设置GPFCON寄存器,配置GPF4引脚为输出模式 */ * ( unsigned int * ) 0x56000050 & = ~ ( 3 << ( 2 * 4 ) ) ; * ( unsigned int * ) 0x56000050 | = 1 << ( 2 * 4 ) ; /* 程序循环闪烁LED */ while ( 1 ) { /* 设置GPFDAT寄存器,GPF4输出低电平,点亮LED */ * (

S3C2440-裸机篇-06 | UART数据发送和接收实验(扫描模式)

烈酒焚心 提交于 2020-01-31 08:37:26
关于RS-232C串口总线通信标准请参见我的另一个系列专题文章: 【嵌入式系统通信协议②】EIA RS-232C串口总线标准 实验 —— UART数据收发实验 1. 看原理图确定UART硬件如何连接 由原理图可以看出,JZ2440开发板上将三个串口全部引出,其中 UART0设置了板载的USB转串口电路 ,只需连接板上的USB口就可以,所以接下来我们使用UART0进行数据收发实验。 2. 看芯片手册设置引脚复用功能(GPHCON)、开启片内上拉(GPHUP) 由原理图可以看出,UART0的引脚是: GPH2 :TXD0 GPH3 :RXD0 这两个引脚都是普通的GPIO口,所以需要设置引脚复用功能,作为串口UART0的引脚: 在【 【嵌入式系统通信协议②】EIA RS-232C串口总线标准 】一文中讲解通信协议的时候讲过,串口的两根信号线在空闲的时候需要保持高电平,所以要开启这两个引脚的片内上拉电阻: 3. 看芯片手册设置串口 3.1.设置串口数据帧格式(ULCONn) 3.2.设置串口(UCONn) 3.2.1.设置串口波特率产生器的时钟源([11:10]) 之前在【 【S3C2440⑤】S3C2440时钟体系 】中进行实验设置了时钟 PCLK=50Mhz ,所以在此基础上选择 PCLK 作为串口UART0的波特率发生器的时钟来源: 3.2.2.设置发送/接收数据模式([3:0])

S3C2440-裸机篇-07 | S3C2440内存控制器(Memory Controller)

╄→尐↘猪︶ㄣ 提交于 2020-01-30 07:48:12
1. 作用 S3C2440的内存控制器作用是: 负责向外部扩展的存储类设备提供控制信号 。 内存控制器支持的外部扩展存储类设备有: SRAM SDRAM Nor Flash 网卡DMA 9000(类存储设备) 内存控制器不支持nand flash,S3C2440提供了独立的nand flash控制器。 2. 内存控制器拓扑结构 CPU、内存控制器、外部扩展存储器三者的拓扑结构如下: 其中这四种信号的意义如下: 地址信号(总线):作为存储器,其中的每个存储空间肯定有地址,地址总线用来传输地址; 数据信号(总线):用来传输某个地址处的写入数据或者读出数据; 读/写选择信号(控制信号):用来控制向地址处写入数据还是从地址处读出数据; 片选信号(控制信号):所有存储器全部共用一个地址总线和数据总线,所以用片选信号控制选择哪个设备工作,哪个设备不工作; 片选信号每个设备用一根线就可以搞定,读写选择信号每个设备用1-2根线就可以搞定,那么, 数据总线和地址总线有多少条呢 ? 数据总线宽度 数据总线的 最大宽度由CPU字长决定 ,S3C2440 CPU的字长为32位,所以数据总线的最大宽度为32条。 具体使用多少条数据总线,由存储设备决定 。 地址总线宽度 地址总线的 最大总线宽度由内存控制器寻址能力决定 。 S3C2440内存控制器的地址映射图如下:一共有8个bank

S3C2440-裸机篇-08 | 使用S3C2440操作SDRAM(配置内存控制器)

删除回忆录丶 提交于 2020-01-30 03:09:13
1. 前言 提起SDRAM,大家都会觉得太难了,要编程写出SDRAM的控制时序更是难上加难,对的,没错!一年前我也是这样想的,学习这一节内容的时序觉得非常难,视频看了好几遍不太懂,对于SDRAM的控制原理更是没看懂,一年后回过头来再看视频,茅塞顿开,看不懂的原因是因为:我自己把它想的太难了,其实, 它很简单,总共也就5行代码,设置5个寄存器即可 。 简单的原因要归功于S3C2440内部的内存控制器,它的作用就是 负责向外部扩展的存储类设备提供控制信号 ,所以当CPU要去访问属于SDRAM时,只需要去访问属于SDRAM的映射地址即可,内存控制器会发出信号,控制时序去和SDRAM打交道,写入数据或者是读出数据。 尽管我们不用手写操作时序了,我们仍然要 编写程序去控制时序 。 因为S3C2440的内存控制器是普遍的,不可能只能接一种SDRAM芯片,而是所有的SDRAM芯片都可以接,但是 不同厂商的SDRAM芯片性能有差异 ,也就是说,虽然所有SDRAM芯片的控制时序都一样,但是A厂商生产的SDRAM芯片在发出控制信号之后70ns之后才有数据,B厂商生产的SDRAM芯片在发出控制信号后60ns就有有效数据,这就叫做不同的SDRAM芯片的性能不同。 所以内存控制器设置了一些寄存器, 允许用户根据实际接的SDRAM芯片性能去配置具体的时间参数即可 ,称之为SDRAM初始化或者内存控制器初始化

十一、S3C2440 裸机 — GPIO

跟風遠走 提交于 2020-01-24 05:37:22
11.1 GPIO 介绍 11.1.1 GPIO 管脚 GPIO 即是输入输出端口,S3C2440A 包含了 130 个多功能输入/输出口引脚并且它们为如下显示的八个端口: 端口 A(GPA):25 位输出端口 端口 B(GPB):11 位输入/输出端口 端口 C(GPC):16 位输入/输出端口 端口 D(GPD):16 位输入/输出端口 端口 E(GPE):16 位输入/输出端口 端口 F(GPF):8 位输入/输出端口 端口 G(GPG):16 位输入/输出端口 端口 H(GPH):9 位输入/输出端口 端口 J(GPJ):13 位输入/输出端口 GPIO 的功能即是用于 CPU 采集外设信号(INPUT),CPU 输出控制信号(OUTPUT),还有一种功能称为管脚复用功能,即是 GPIO 用于其他信号功能,比如地址,串口等共呢个,GPIO 属于 SOC 的内部外设。 GPIO 的使用需要寄存器配置。 11.1.2 GPIO 寄存器 端口配置寄存器:GPACON --- GPJCON,即配置输入或是输出,还是配置为第三功能 端口数据寄存器:GPADAT---GPJDAT,用于数据的写入或读取 端口上拉寄存器:GPBUP---GPJUP,端口上拉寄存器控制每个端口组的使能/禁止上拉电阻。 当相应位为 0 时使能引脚的上拉电阻。当为 1 时禁止上拉电阻。 如果使能了上拉电阻

S3C2440时钟体系

∥☆過路亽.° 提交于 2020-01-11 10:32:11
注:以下内容学习于韦东山老师arm裸机第一期视频教程 一. 2440时钟简介 1.1 2440是一个SOC(system on chip)系统,不仅有很多CPU,还有很多外设,在2440芯片手册有系统框架图如下: 2440框架图中,不仅有CPU,而且有很多外设,其中外设分为两部分,一部分是AHB总线,一部分是APB总线 1.2 AHB总线 1.2.1 LCD控制器 1.2.2 USB控制器 1.2.3 NAND控制器 1.2.4 内存控制器 1.2.5 摄像头接口 1.2.6 中断控制器 1.2.7 电源管理等等 1.3 APB总线 1.3.1 UART 1.3.2 USB device 1.3.3 I2C 1.3.4 GPIO 1.3.5 RTC 1.3.6 ADC 1.3.7 定时器等等 1.4 因此引入了三个时钟,FLCK,HCLK,PCLK cpu工作与FCLK,最大工作频率400MHZ AHB总线工作于HCLK,最大工作频率136MHZ APB总线工作与PCLK,最大工作频率68MHZ 二.时钟的获取 2.1 2440时钟体系框图如下 2.2 时钟源的选择 从图中看出,时钟源有两个分别是外部晶振和引脚,通过OM[3:2]来选择,模式选择如下图 在2440的原理图上,可以看到OM3,OM2都接到了GND上,因此会选择使用外部晶振作为输入 2.3 时钟体系流程