首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过mmap配置pad

通过mmap配置pad
EN

Stack Overflow用户
提问于 2013-02-12 00:49:15
回答 2查看 198关注 0票数 1

我有一个beagleboard-xm rev C板。处理器的TRM。我看到了一些如何在网上进行pad配置的例子。以下是其中一个示例:

代码语言:javascript
复制
 int fd = open("/dev/mem", O_RDWR | O_SYNC);
if (fd < 0) {
  printf("Could not open memory\n");
  exit(1);
}

// Pad configuration
volatile ulong *pinconf;
pinconf = (ulong*) mmap(NULL, 0x10000, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0x48000000);
if (pinconf == MAP_FAILED) {
  printf("Pinconf Mapping failed\n");
  close(fd);
  exit(1);
}
// configure expansion header
pinconf[0x2174/4] = 0x001A001A; //
close(fd);

我的问题是,将0x2174除以4的目的是什么?

我看到0x2174表示我要在http://www.ti.com/lit/ug/spruf98x/spruf98x.pdf page778上配置(CONTROL_PADCONF_UART2_CTS[15:0])的引脚。我看到它是一个32位寄存器。但是我不能通过该寄存器的低16位的4点来获得0x2174的功能?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-12 00:56:20

这是因为指针的类型是"ulong“,在这个平台上看起来是4个字节。假设pinconf的寄存器地址是0x12174,您必须将偏移量除以4,以获得ulong数组的正确索引(以及正确的字节地址)。

票数 3
EN

Stack Overflow用户

发布于 2013-02-12 00:55:21

C中的地址算法的工作方式是pinconf[n]的地址是pinconf的地址加上n乘以sizeof(ulong)。这就是为什么当sizeof(ulong)为4时,您将目标单词的原始偏移量除以4,以获得pinconf数组中的单词索引。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14816798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档