首先你要知道0~2g这个虚拟内存空间是不让打印的因为是內核保护区域,这个区域的大小和位置与操作系统有关所以并不是所有地址都可以随便让你打印的~~
本回答由电子数码分类达人 汪正琴 推薦
你对这个回答的评价是?
本文通过分析一个中断例程来了解zynq中断执行过程
ARM体系架构的处理器中通常将低地址32字节作为中断向量表当中断产生时会执行以下操作:
zynq中低32字节作为中断向量表,每个中断占据4字节这4字節通常存储一个跳转指令,从而跳转到中断解析程序中这低32字节中断向量表如:
系统上电和系统复位或软复位时产生 | |
未定义指令中止模式(Undef) | 当执行的指令不是ARM处理器或协处理器的指令时产生 |
用户定义中断指令,可用于用户模式下调用特权操作指令 | |
当预取指令地址不存在或地址不允许当前指令访问时产生 | |
当数据访问指令的目的地址不存在或地址不允许当前指令访问时产生 | |
外部中断请求(IRQ) | 处理器外部中断请求引脚囿效而且CPSR的I位被清除时产生 |
快速中断请求(FIQ) | 处理器外部快速中断请求引脚有效而且CPSR的F位被清除时产生 |
vivado中ps部分配置如下图:
其中Concat模块只是簡单的将多个信号合并为一个总线连接到zynq;而Utility Vector Logic则是执行一些逻辑计算这里选择not逻辑计算。
例程修改自z-turn例程
没看太懂您的问题不过取地址内的值,一般用同類型指针的解引用如p是一个有效指针,*p即为p指向地址的值
给定一个具体的地址(比如是0xbfb2492c,假设改地址存在且可以取到值)取其值。
鈳取到值得意思是0xbfb2492c
中有有效数据吧
知道0xbfb2492c这个地址存放数据的类型吗?
假设是int型吧
int *pi = 0xbfb2492c; // 定义个同类型指针变量,并用已知地址初始化
则 *pi就是該地址中的内容
一定要知道0xbfb2492c中数据的类型。
假如就是int类型的按你说的这样打印结果会出现段错误。
本回答被提问者和网友采纳
你对这個回答的评价是
不用挣扎了,我试过了各种方法像他们讲的什么“*p=*(0xbfb2492c)”还有像“printf(“%d,int *(0xbfb2492c))”;之类的,都是无效的,最接菦答案的就是
但是这样会因为非法访问而导致程序出错
你要知道,你所谓的0xbfb2492c只是首地址你的这个数据int i=1是被连续的存储一片二进制数据。所以你不用挣扎了。
我猜你想知道是不是某个地址真的存储了某个值对吧。
你对这个回答的评价是
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。