三类接口
1、GPIO / 门电路
2、协议类接口:UART 、I2C、I2S、SPI
内存控制器
CPU --->addr --->内存控制器--->根据addr选不同模块--->data-->模块
CPU 将地址给内存控制器,内存控制器会对得到相应的地址,选择不同的模块进行收发数据
3、内存接口(Nor 、网卡、内存)
CPU -->data -->模块
CPU发出的数据直接给模块
也就是地址总线和数据总线直接连接到模块上面
SDRAM、网卡、Nor公用地址总线和数据总线他们是如何做到互不干扰的
引入了片选引脚,对于2440只有当某个模块的片选引脚输出低电平的时候,某个模块才被选中,CPU才会和这个模块进行通信
CPU是如何控制片选引脚的,也是通过内存控制器
总结:内存控制器根据不同的地址发出不同的片选信号,使得被选中片选引脚对于的模块进行通信,其他没有被选中的片选引脚对应的模块就像不存在一样。
CPU发出的地址和片选引脚的关系图
片选引脚(chip select)
百度百科片选概念
片选是一个单片机学科词汇,可以理解成选片。片选信号一般是在划分地址空间时,由逻辑电路产生的。在数字电路设计中,一般开路输入管脚呈现为高电平,因此片选信号绝大多数情况下是一个低电平。
每个片选信号选择的地址空间为128M = 2^ 7 * 2^20
= 2^27
至少需要A0、A1、、、A26共27条线
CPU统一编制和不是CPU统一编制
地址总线不是从CPU直接连接到模块上,不是CPU统一编制
ldr r0,=addr
str r1,[r0]
ldr r1,[r0]
上面命令让CPU 发出32位的addr 给内存控制器,让其发出片选信号,同时发出addr0,addr1,addr26发给外面的设备
总结:虽然CPU发出的是32位addr但是内存控制器能力有限只有用到了27位
关键字:JZ2440 内存接口
引用地址:
JZ2440内存接口
推荐阅读最新更新时间:2024-11-12 13:13
JZ2440开发笔记(3)——配置TFTP
第一步: 1.关闭ubuntu的防火墙 ufw disable 2.卸载了iptables apt-get remove iptables 1.用iptables -F这个命令来关闭防火墙,但是使用这个命令前,千万记得用iptables -L查看一下你的系统中所有链的默认target,iptables -F这个命令只是清除所有规则,只不会真正关闭iptables.想象一下,如果你的链默认target是DROP,本来你有规则来允许一些特定的端口, 但一旦应用iptables -L ,清除了所有规则以后,默认的target就会阻止任何访问,当然包括远程ssh管理服务器的你. 所以我建议的关闭防火墙命令是 i
[单片机]
JZ2440裸机实验-使用C语言点亮LED
实验环境: 1.JZ2440 V3开发板 2.在UBUNTU 9.1下编译链接 下载方式:采用UBOOT+DNW的下载方式,默认已经装好了UBOOT和DNW的相关驱动等 一、C语言与栈 C语言与栈的关系:C语言中的局部变量都是用栈来实现的。如果我们汇编部分没有给C部分预先设置合理合法的栈地址,那么C代码中定义的局部变量就会落空,整个程序就死掉了。 我们平时在编写单片机程序(譬如51单片机)或者编写应用程序时并没有去设置栈,但是C程序还是可以运行的。原因是:在单片机中由硬件初始化时提供了一个默认可用的栈,在应用程序中我们编写的C程序其实并不是全部,编译器(gcc)在链接的时候会帮我们自动添加一个头,这个头就是一段
[单片机]
JZ2440开发板几种烧写程序的方法
我学习嵌入式Linux用的是韦东山的JZ2440开发板,提供的uboot功能丰富 下载裸板程序: 没有uboot时 只能用openJTAG或者J-link下载裸机程序 使用openJTAG:烧写完自动复位开发板,不用重新上电 1.安装openJTAG驱动 2.将oflash和对应dll文件放置C:WindowsSysWOW64 以便任何路径都可以使用 3.cmd窗口进入待下载bin文件的目录 使用oflash xxx.bin指令 4.选择下载模式 0 openJTAG 5.选择对应开发板 1 JZ2440 6.选择nandFlash(裸机) 或者 norFlash 7.确认nandFlash(裸机) 或者
[单片机]
JZ2440串口打印字符作为调试
/* * 初始化UART0 * 57600,8N1,无流控 */ void uart0_init(void) { GPHCON |= 0xa0; // GPH2,GPH3用作TXD0,RXD0 GPHUP = 0x0c; // GPH2,GPH3内部上拉 ULCON0 = 0x03; // 8N1(8个数据位,无较验,1个停止位) UCON0 = 0x05; // 查询方式,UART时钟源为PCLK UFCON0 = 0x00; // 不使用FIFO UMCON0 = 0x00; // 不使用流控 UBRDIV0 = UART_BRD; // 波特率为115200 }
[单片机]
jz2440裸机开发与分析:内存控制器4之SDRAM设置
LDR R0,=0X30000000 ➡CPU发给内存控制器:①发出nGCS6;②根据(SDRAM)类型拆分地址:a,BANK地址,b,行地址, c,列地址 ;③读数据 LDR R1, 问题:如何拆分?行地址几条?列地址几条? 2440内存控制器设置 1、BWSCON寄存器配置=0x22000000 2、BANKCON6寄存器配置 3、REFRESH刷新寄存器配置 4、BANHSIZE配置 5、MRSRB6 SDRAM中有一个MR寄存器(含有CL),用来确定列地址到发出数据中间间隔的时间,而2440内的MRSRB6寄存器也有一个CL,2440根据内部CL设定的值,再通过发送数据去确定SDRAM中的C
[单片机]
JZ2440开发板裸板烧写方法
1、启动nor/nand flash上的uboot烧写裸板: 设置开发板为nor flash启动,上电按空格进入uboot,如下: ##### 100ask Bootloader for OpenJTAG ##### Download u-boot to Nand Flash Download u-boot to Nor Flash Download Linux kernel uImage Download root_jffs2 image Download root_yaffs image Download to SDRAM & Run Download zImage into RAM Boot linux fr
[单片机]
实验九--裸机LCD
一。环境 系统:ubuntu12.04 开发板:jz2440 编译器:gcc 二。说明 有空补上 三。代码 Makefile: 1 CC = arm-linux-gcc 2 LD = arm-linux-ld 3 AR = arm-linux-ar 4 OBJCOPY = arm-linux-objcopy 5 OBJDUMP = arm-linux-objdump 6 7 CFLAGS := -Wall -O2 8 9 10 export CC LD AR OBJCOPY OBJDUMP CFLAGS 11 12 objs := head
[单片机]
jz2440 ----移植自制的USB RTL8188EUS网卡驱动
1:google 下载rtl8188eus的网卡驱动源码 https://github.com/quickreflex/rtl8188eus 2.解压缩下载的文件,把驱动文件rtl8192_8188eus_linux_xxx.tar.gz(xxx是版本号)添加到要编译的内核树里面去 (1)假定你的内核位置为/root/linux-kernel,解压缩驱动文件,并且把解压缩后的驱动文件夹名改为rtl8192eus。 (2)把改好名字的驱动文件夹rtl8192eus复制到/root/linux-kernel/drivers/net/wireless/下。 (3)修改/root/linux-kernel/driver
[单片机]