嵌入式软硬件协作简单例子分析
来源:互联网 发布:网络推广专员薪资制度 编辑:程序博客网 时间:2024/06/03 20:12
一个典型的SOC架构有CPU、总线、存储器、外设。CPU负责指令的取指、译码、执行;总线给每个CPU外围设备指定一些地址,包括存储器和一些其他设备。CPU通过这些地址开始的一些寄存器来控制这些硬件。
以S3C2440为例,从0x0000_0000-0x4000_000对应存储器空间,它被分成8个bank,每个bank对应一类存储器或者和存储器接口类似的器件。0x4800_0000-0x4800_0030为存储器控制器地址空间。0x5600_0000-0x5600_00B0位I/O端口.....这些都可以从芯片手册上查到。如:0x5600_0050对应端口F的控制寄存器GPFCON,0x5000_0054对应端口F的数据寄存器。
#define GPFCON(*(volatile unsigned int *)0x56000050)
#define GPFDAT(*(volatile unsigned int *)0x56000054)
int main()
{
unsigned int read_gpfdata;
GPFCON = 0x0000_0010;
GPFDAT = 0x0000_0004;
GPFCON = 0x0000_0000;
read_gpfdata = GPFDAT;
return 0;
}
前两行宏定义是C语言指针的典型应用,它把0x56000050这个地址的内容和标号GPFCON对应起来。注意:这里的GPFCON只是一个名称而已,开发者可以随意命名,但是,变量的命名应该与功能相对应。根据芯片手册,0x56000050地址对应的寄存器实现F端口控制功能。GPFCON = 0x00001500表示向0x56000050地址寄存器写入0x00001500。代码存在存储器中,所以实际硬件的执行过程为:CPU通过总线从存储器中取出指令和数据,然后通过总线把0x00001500写入0x56000050地址对应的寄存器。GPFCON每2bit控制F端口一个引脚的功能,0b00:输入;0b01:输出;0b10:特殊复用功能;0b11:保留。可见这里把F端口引脚2配置为输出功能。0x56000054地址对应F端口数据寄存器,若引脚功能为输出,则每一bit的1、0对应引脚输出高、低电平。若为输入,则引脚的电平会映射到GPFDAT上,读GPFDAT即读F引脚对应的电平。所以上述代码分为两部分,一部分为F端口引脚2输出;一部分为读取F端口引脚电平状态。
- 嵌入式软硬件协作简单例子分析
- 诚邀嵌入式软硬件开发人员
- 嵌入式软硬件初步
- 嵌入式软硬件架构
- 嵌入式软硬件设计服务
- 嵌入式软硬件设计流程
- 嵌入式uClinux软硬件开发环境
- 嵌入式工程师软硬件道路三步曲
- 嵌入式软硬件调试问题记录
- linux 信号简单例子分析
- struts简单例子的分析
- struts简单例子的分析
- NS2典型例子简单分析
- struts简单例子的分析
- 主成分分析简单例子
- 自己动手打造嵌入式Linux软硬件开发环境
- 自己动手打造嵌入式Linux软硬件开发环境
- 自己动手打造嵌入式Linux软硬件开发环境
- Spring(07)——单例注入多例之lookup-method
- 单例模式的解读以及和全局变量的区别
- zookeeper启动失败,zkServer.sh status 出错
- CString一些简单操作方法
- React/React Native 的ES5 ES6写法对照表
- 嵌入式软硬件协作简单例子分析
- 最终,还是没能成为吹牛逼的资本!(三)
- 解决AndroidStudio导入项目在 Building gradle project info 一直卡住
- 2427: [HAOI2010]软件安装
- SSH免密登入
- mysql一张表中两字段相减不为空的值存入另一张表中
- day01 上午
- 【机器学习PAI实践十】深度学习Caffe框架实现图像分类的模型训练
- wangchaojingfan