如何判断外设使用的地址空间

本文详细介绍了S3C2410/S3C2440的存储控制器特性,包括各BANK的地址空间、可编程控制总线位宽、支持的外设类型及地址分配方式。通过具体实例帮助理解存储控制器的工作原理。

S3C2410/S3C2440的存储控制器有如下特性:

1.每个BANK的地址空间为128MB,总共1GB(8 BANKs);

2.可编程控制总线位宽(8/16/32-bit),不过BANK0只能选择两种位宽(16/32-bit);

3.总共8个BANK,BANK0~BANK5可以支持外接ROM、SRAM等,BANK6~BANK7除可以支持ROM、SRAM外,还支持SDRAM等。

4.BANK0~BANK6共7个BANK的起始地址是固定的。

5.BANK7的起始地址可编程选择。


S3C2410/S3C2440对外引出的27根地址线ADDR0~ADDR26的访问范围只有128MB,CPU还引出了8根片选信号nGCS0~nGCS7,对应于BANK0~BANK7,当访问BANKx的地址空间时,nGCSx引脚输出低电平用来选中外接设备。这样每个nGCSx对应128MB地址空间,8个nGCSx信号总共就对应了1GB的地址空间。地址如下:


开发板上与外设的连接关系如图:


从第一个图可以知道各个BANK的起始地址,再结合第二个图用到的地址线就可以确定相关的外设访问地址了。

比如:



判断的时候注意外设用到了哪些ADDR线。

再附上两个图:







### 配置和使用Vitis中的外设地址 在Vitis环境中配置和使用外设地址涉及多个方面的工作流程。当启动 Vitis 开发环境时,在菜单栏中选择 Tools > Launch Vitis 可以进入开发界面[^1]。 对于特定硬件平台如Zynq-7020,通常在外设地址配置过程中会涉及到设备树(Device Tree)文件的修改。这些更改允许操作系统识别并正确初始化连接到处理器的各种外围设备。为了访问或编辑设备树源文件(DTS),可以在存放工程的文件夹下通过命令 `code project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi` 打开相应的文件进行编辑[^2]。 针对具体的外设控制,比如GPIO的操作,则可能需要用到Xilinx提供的库函数来实现对外设寄存器的读写操作。例如,可以利用 `Xil_Out32` API 函数向指定内存映射I/O位置发送数据从而改变GPIO状态;为此需先将 `xil_io.h` 头文件包含进来以便调用此类API接口[^3]。 下面给出一段简单的C语言代码片段用于展示如何设置一个假设性的LED灯对应的GPIO端口: ```c #include "xil_io.h" #define LED_GPIO_BASEADDR 0x41200000 // 假定的GPIO基址 int main(){ volatile unsigned int *gpio_ptr; gpio_ptr = (unsigned int *)LED_GPIO_BASEADDR; while(1){ Xil_Out32((UINTPTR)gpio_ptr, 0x1); // 设置高电平点亮LED usleep(500*1000); Xil_Out32((UINTPTR)gpio_ptr, 0x0); // 清零低电平熄灭LED usleep(500*1000); } } ``` 这段程序展示了基本的GPIO输出控制逻辑,其中定义了一个宏常量代表GPIO模块的基础物理地址,并创建指向该地址空间的一个指针变量。接着在一个无限循环体内交替地给这个IO端口赋值高低电平信号以达到闪烁效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值