linux中S3C2440的物理地址映射到虚拟地址详解

发布者:delta14最新更新时间:2018-06-05 来源: eefocus关键字:linux  S3C2440  物理地址  虚拟地址 手机看文章 扫描二维码
随时随地手机看文章
  1. linux-2.6.30.4\arch\arm\plat-s3c\include\plat\ map-base.h  

  2.   

  3. #defineS3C_ADDR_BASE (0xF4000000)  

  4. #ifndef __ASSEMBLY__  

  5. #define S3C_ADDR(x)  ((void__iomem __force *)S3C_ADDR_BASE+ (x))  

  6. #else  

  7. #defineS3C_ADDR(x) (S3C_ADDR_BASE+ (x))  

  8. #endif  

  9. #define S3C_VA_IRQ    S3C_ADDR(0x00000000)     /* irq controller(s) */  

  10. #define S3C_VA_SYS   S3C_ADDR(0x00100000)     /* system control   Clock and Power management*/  

  11. #define S3C_VA_MEM S3C_ADDR(0x00200000)     /* system control  memoery*/  

  12. #define S3C_VA_TIMER      S3C_ADDR(0x00300000)     /* timer block --PWM Timer*/  

  13. #define S3C_VA_WATCHDOG     S3C_ADDR(0x00400000)     /* watchdog */  

  14. #define S3C_VA_UART      S3C_ADDR(0x01000000)    /*UART */  

  15. linux-2.6.30.4\arch\arm\plat-s3c24xx\include\plat\ map.h  

  16.   

  17. /* UARTs */  

  18. #defineS3C24XX_VA_UART        S3C_VA_UART  

  19. #define S3C2410_PA_UART    (0x50000000)  

  20. #define S3C24XX_SZ_UART          SZ_1M  

  21. #define S3C_UART_OFFSET         (0x4000)  

  22. UART映射后的虚拟地址是0xF4000000+0x01000000  

  23. linux-2.6.30.4\arch\arm\plat-s3c24xx\include\plat\ map.h  

  24.   

  25. /* GPIO ports */  

  26. #define S3C2410_PA_GPIO     (0x56000000)  

  27. #defineS3C24XX_VA_GPIO       ((S3C24XX_PA_GPIO- S3C24XX_PA_UART) + S3C24XX_VA_UART)//GPIO的虚拟地址  

  28. #define S3C24XX_SZ_GPIO          SZ_1M  

[html] view plain copy

  1. linux-2.6.30.4\arch\arm\plat-s3c\include\plat\ map-base.h  

  2.   

  3. #defineS3C_ADDR_BASE (0xF4000000)  

  4. #ifndef __ASSEMBLY__  

  5. #define S3C_ADDR(x)  ((void__iomem __force *)S3C_ADDR_BASE+ (x))  

  6. #else  

  7. #defineS3C_ADDR(x) (S3C_ADDR_BASE+ (x))  

  8. #endif  

  9. #define S3C_VA_IRQ    S3C_ADDR(0x00000000)     /* irq controller(s) */  

  10. #define S3C_VA_SYS   S3C_ADDR(0x00100000)     /* system control   Clock and Power management*/  

  11. #define S3C_VA_MEM S3C_ADDR(0x00200000)     /* system control  memoery*/  

  12. #define S3C_VA_TIMER      S3C_ADDR(0x00300000)     /* timer block --PWM Timer*/  

  13. #define S3C_VA_WATCHDOG     S3C_ADDR(0x00400000)     /* watchdog */  

  14. #define S3C_VA_UART      S3C_ADDR(0x01000000)    /*UART */  

  15. linux-2.6.30.4\arch\arm\plat-s3c24xx\include\plat\ map.h  

  16.   

  17. /* UARTs */  

  18. #defineS3C24XX_VA_UART        S3C_VA_UART  

  19. #define S3C2410_PA_UART    (0x50000000)  

  20. #define S3C24XX_SZ_UART          SZ_1M  

  21. #define S3C_UART_OFFSET         (0x4000)  

  22. UART映射后的虚拟地址是0xF4000000+0x01000000  

  23. linux-2.6.30.4\arch\arm\plat-s3c24xx\include\plat\ map.h  

  24.   

  25. /* GPIO ports */  

  26. #define S3C2410_PA_GPIO     (0x56000000)  

  27. #defineS3C24XX_VA_GPIO       ((S3C24XX_PA_GPIO- S3C24XX_PA_UART) + S3C24XX_VA_UART)//GPIO的虚拟地址  

  28. #define S3C24XX_SZ_GPIO          SZ_1M  

Linux内核中,只能访问虚拟地址空间,所以访问硬件寄存器,常常需要采用物理地址映射为虚拟地址的方式。

在定时器中寄存器访问,采用如下方式



  1. #define S3C_TIMERREG(x) (S3C_VA_TIMER + (x))  

  2. #define S3C_TIMERREG2(tmr,reg) S3C_TIMERREG((reg)+0x0c+((tmr)*0x0c))  

  3.   

  4. #define S3C2410_TCFG0         S3C_TIMERREG(0x00)  

  5. #define S3C2410_TCFG1         S3C_TIMERREG(0x04)  

  6. #define S3C2410_TCON          S3C_TIMERREG(0x08)  

  7.   

  8. #define S3C64XX_TINT_CSTAT    S3C_TIMERREG(0x44)  

  9.   

  10. #define S3C2410_TCFG_PRESCALER0_MASK (255<<0)  

  11. #define S3C2410_TCFG_PRESCALER1_MASK (255<<8)  

[html] view plain copy

  1. #define S3C_TIMERREG(x) (S3C_VA_TIMER + (x))  

  2. #define S3C_TIMERREG2(tmr,reg) S3C_TIMERREG((reg)+0x0c+((tmr)*0x0c))  

  3.   

  4. #define S3C2410_TCFG0         S3C_TIMERREG(0x00)  

  5. #define S3C2410_TCFG1         S3C_TIMERREG(0x04)  

  6. #define S3C2410_TCON          S3C_TIMERREG(0x08)  

  7.   

  8. #define S3C64XX_TINT_CSTAT    S3C_TIMERREG(0x44)  

  9.   

  10. #define S3C2410_TCFG_PRESCALER0_MASK (255<<0)  

  11. #define S3C2410_TCFG_PRESCALER1_MASK (255<<8) 


关键字:linux  S3C2440  物理地址  虚拟地址 引用地址:linux中S3C2440的物理地址映射到虚拟地址详解

上一篇:基于linux2.6.30.4的s3c2440寄存器的虚拟地址和物理地址的关系
下一篇:S3C2440的寻址空间、存储控制器

推荐阅读最新更新时间:2024-03-16 16:04

s3c2440裸机-内存控制器(三-1、norflash编程之NorFlash原理)
1.flash种类与特性: flash一般分为nand flash和nor flash,各自特性如下表: - Nor NAND XIP(片上执行) yes no 性能(擦除) 非常慢(5s,块太大) 快(3ms) 性能(写) 慢 快 性能(读) 快 快 可靠性 高 一般(容易出现位反转) 可擦除次数 10000 ~ 100000 100000 ~ 1000000 接口 与ram类似,可直接访问任意地址 I/O接口(无地址线,必须串行访问,命令、地址、数据共用8位IO) 易用性 容易 复杂 主要用途 常用于保存代码和关键数据 用于保存数据 价格 高 低 容量 小 大 常用文件系统类型 jffs yaff
[单片机]
<font color='red'>s3c2440</font>裸机-内存控制器(三-1、norflash编程之NorFlash原理)
S3C2440-IIS放音
S3C2440A的Inter-IC Sound(IIS)总线接口作为一个编解码接口连接外部8/16位立体声音频解码IC用于迷你碟机和可携式应用。IIS总线接口支持IIS总线数据格式和MSB-justified数据格式。该接口对FIFO的访问采用了DMA模式取代了中断。它可以在同一时间接受和发送数据。S3C2440一共有5个引脚用于IIS:IISDO,IISDI,IISSCLK,IISLRCK和CDCLK。前两个信号用于数字音频信号的输入输出,另外3个引脚都与音频信号的频率有关,可见要用好IIS,就要把信号频率设置正确。IISSCLK为串行时钟,每一个时钟信号传送一位音频信号,因此IISSCLK的频率=声道数*采样频率*采样位数,如采
[单片机]
基于arm11处理器S3C6410内核的linux下串口通信实现
/*例程目的:通过向内核加载独立按键模块,串口通信模块,编写应用程序,使得当按键按下时,arm可以通过串口对外发送数据。已达到arm与其他设备间的串口通信的目的*/ 一、基础知识 1.串口基本知识:串口:计算机上一种非常通用设备通信协议。串口通信:串口按位发送和接收字节。 2.设备驱动:linux下总共有三种设备方式:字符设备,块设备,网络设备。这里串口和键盘都是字符设备。这些设备都在/dev 目录下 。可通过ls -l 来查看设备类型。【crw-rw---- 1 root dialout 4, 64 7月 4 02:53 ttyS0】最前面的c表示他是(char)字符设备。 二、程序编写 1.编写驱动程序:
[单片机]
S3C2440驱动TFT屏(24bit显示模式)
/******************************************************************** * 文件名:TFT.h * 功能:定义TFT控制器参数,声明驱动TFT屏的相关函数 * 作者:jianqi * 版本:v1.0 ********************************************************************/ #ifndef __TFT_H__ #define __TFT_H__ #include def.h #define TFT35 1 #define TFT43 2 #define
[单片机]
Linux 系统下常用软件一览表
从WINDOWS 转入Linux,一开始肯定会不习惯.就连mp3的播放软件都得自己安装.不过习惯了就好了. 以下为转帖: 下面列出我常用的一些 Linux 程序。一个列表里可能有很多,那是为了方便你来选择,我列出了比较信得过的。 Shell: bash。它结合了 csh 和 ksh 的优点,并且有 readline 功能,你可以随意绑定自己的键盘。 编辑器: VIM, Emacs。 程序开发: GCC, make, ld, Scheme48, j2sdk, Perl, Python, Tcl/Tk ... 论文,幻灯工具:LaTeX, ConTeXt 绘图工具:MetaPost。这个语言太强了,以至于我只用它了。你不熟
[嵌入式]
s3c2440硬件篇之四:NandFlash(1)介绍
如上图所示:小页Nand容量=528B * 32页 * 4096块 = 528M bits.可用512M bits.即64M. 下图为英文原文pdf资料截图。 注:NandFlash的命令,数据,地址都通过8个I/O口输出。 (1)小页Nand。 ,一页大小为(512+16)528字节(byte).将一页分为3个区:A区为0~255字节,B区为256~511字节,C区为512~527字节。访问某页时,需要选定特定的区:命令00h让地址指针指向A区,01h指向B区,50h指向C区。 Nand Flash的写操作是以页为单位的,但是可以写一页中的一部分。发出命令80h后,紧接着发出4个地址序列,然后向Flash发送数据,然
[单片机]
<font color='red'>s3c2440</font>硬件篇之四:NandFlash(1)介绍
S3C2440的ADC接口
JZ2440的ADC部分源码, Test_Adc() Test_Tc(); 该函数设置了两个中断:(1) ad转换完成中断 (2)触摸屏幕中断(按下和抬起) 按下或抬起的中断是边沿触发中断,即按下时只触发一次中断,保持按下状态也不会再次触发中断, 抬起时候同样是如此.
[单片机]
Qt/Embedded在嵌入式Linux系统中的应用
摘要:分析和讨论Qt/Embedded的主流版本3.x系列的底层实现技术;结合2.x版本系列和3.x版本系列,在两种不同的硬件平台(Intel PXA255开发系统与笔者自行设计的Motorola MC9328 MX1开发系统)上的移植过程,讨论Qt/Embedded的底层设备接口与应用移植技术。 关键词:Qt/Embedded嵌入式Linux framebuffer 驱动接口 引言 随着嵌入式Linux应用的不断发展,嵌入式处理器运算能力的不断增强,越来越多的嵌入式设备开始采用较为复杂的GUI系统,手持设备中的GUI系统发展得非常迅速。传统的GUI系统,如Microwindows等,由于项目规模较小、功能较为薄弱,缺乏等
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved