访问内存映射的I / O

用户名

我对嵌入式系统编程非常陌生,我只需要学习如何通过c ++代码操纵给定的代码即可。

鉴于:

电机1映射到0x60000000

电机2映射到0x50000000

以下是当前32位寄存器的定义

REGISTER NAME            |     BYTE OFFSET        |     NOTES
----------------------------------------------------------------------
motor_interrupt               0x00                 service interrupts

motor_status                  0x01                 enable on demand access to status elements
motor_command                 0x02                 enable command of the motor



REGISTER NAME           |   NAME   |  BITS   | ACCESS TYPE   | DESC 
----------------------------------------------------------------------------------

motor_interrupt_register
                           CLOSED      0          R/W         high when motor transitions to CLOSED position
                           OPEN        1          R/W         high when motor transitions to OPEN position
                           RESERVED    2.31       N/A         reserved for future use

motor_status        

                           SPEED       0.2         R          speed in counts/seconds
                           STATE        3          R          current state of motor
                           POSITION    4.13        R          current position of the motor
                           RESERVED    14.31       n/a         reserved for future use

我发现很难使用给定​​的示例代码查看C ++代码,这时我知道我需要访问register_name并将其位设置为执行特定任务,或者读取寄存器名称以获取状态。

我想如果在C ++代码中使用它,我会更加理解。给定的是一个自动门系统(我没有写按钮的详细信息)。我需要在c ++中访问register_name或byte_offset吗?

您的帮助将不胜感激

保罗·R

读取中断/状态寄存器的C / C ++示例:

volatile uint32_t * const motor1 = (uint32_t *)0x60000000; // base addresses for motors 1 and 2
volatile uint32_t * const motor2 = (uint32_t *)0x50000000;

enum  // register offsets from base address
{
    motor_interrupt, // 0x00 - service interrupts
    motor_status,    // 0x01 - enable on demand access to status elements
    motor_command    // 0x02 - enable command of the motor
}

// read status/interrupt registers

uint32_t current_int_1 = motor1[motor_interrupt];
uint32_t current_int_2 = motor2[motor_interrupt];

uint32_t current_status_1 = motor1[motor_status];
uint32_t current_status_2 = motor2[motor_status];

类似于将32位值写入命令寄存器:

motor1[motor_command] = 0x8000 | (0x12 << 6) | 0x01;
motor2[motor_command] = 0x0;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问内存映射的I / O速度很慢

来自分类Dev

内存映射 I/O:I/O 空间与内存空间中的控制寄存器

来自分类Dev

与标准I / O系统调用相比,内存映射文件如何显着提高性能?

来自分类Dev

与标准I / O系统调用相比,内存映射文件如何显着提高性能?

来自分类Dev

C ++ 11原子:将它们与内存映射的I / O一起使用是否有意义?

来自分类Dev

监视页面缓存/内存映射文件的访问

来自分类Dev

硬盘-I / O访问类型如何影响访问时间?

来自分类Dev

可以无限期访问文件映射的内存

来自分类Dev

如何共享对内存映射文件的只读访问权限

来自分类Dev

为什么在访问RDWR时需要刷新内存映射文件?

来自分类Dev

访问映射的设备内存是否很慢(就延迟而言)?

来自分类Dev

Linux中共享库内存映射的访问权限

来自分类Dev

增强内存映射文件:读写访问

来自分类Dev

可以无限期访问文件映射的内存

来自分类Dev

PHP I / O内存流在文档开头创建空行

来自分类Dev

Linux下的DMA和I / O内存区域

来自分类Dev

内存上的海量磁盘I / O达到%70

来自分类Dev

澄清PCI内存寻址和I / O寻址之间的区别?

来自分类Dev

RAM如何以O(1)速度访问内存中的任何位置

来自分类Dev

如何通过内存映射从Linux内核空间访问PCI内存(内核3.14)

来自分类Dev

如何通过内存映射从Linux内核空间访问PCI内存(内核3.14)

来自分类Dev

Android文件IO:I和O访问不同的文件

来自分类Dev

用于I / O访问的c#动态锁

来自分类Dev

端口映射,内存映射

来自分类Dev

使用 MxNet 数据迭代器进行顺序访问和随机访问的 I/O 性能差异?

来自分类Dev

访问映射的固定主机(或对等设备)内存是否需要GPU复制引擎?

来自分类Dev

带有随机访问C ++和Python的不良Linux内存映射文件性能

来自分类Dev

模拟游戏机的内存映射,根据提供的地址访问不同的位置

来自分类Dev

Qt中的O(1)映射?

Related 相关文章

  1. 1

    访问内存映射的I / O速度很慢

  2. 2

    内存映射 I/O:I/O 空间与内存空间中的控制寄存器

  3. 3

    与标准I / O系统调用相比,内存映射文件如何显着提高性能?

  4. 4

    与标准I / O系统调用相比,内存映射文件如何显着提高性能?

  5. 5

    C ++ 11原子:将它们与内存映射的I / O一起使用是否有意义?

  6. 6

    监视页面缓存/内存映射文件的访问

  7. 7

    硬盘-I / O访问类型如何影响访问时间?

  8. 8

    可以无限期访问文件映射的内存

  9. 9

    如何共享对内存映射文件的只读访问权限

  10. 10

    为什么在访问RDWR时需要刷新内存映射文件?

  11. 11

    访问映射的设备内存是否很慢(就延迟而言)?

  12. 12

    Linux中共享库内存映射的访问权限

  13. 13

    增强内存映射文件:读写访问

  14. 14

    可以无限期访问文件映射的内存

  15. 15

    PHP I / O内存流在文档开头创建空行

  16. 16

    Linux下的DMA和I / O内存区域

  17. 17

    内存上的海量磁盘I / O达到%70

  18. 18

    澄清PCI内存寻址和I / O寻址之间的区别?

  19. 19

    RAM如何以O(1)速度访问内存中的任何位置

  20. 20

    如何通过内存映射从Linux内核空间访问PCI内存(内核3.14)

  21. 21

    如何通过内存映射从Linux内核空间访问PCI内存(内核3.14)

  22. 22

    Android文件IO:I和O访问不同的文件

  23. 23

    用于I / O访问的c#动态锁

  24. 24

    端口映射,内存映射

  25. 25

    使用 MxNet 数据迭代器进行顺序访问和随机访问的 I/O 性能差异?

  26. 26

    访问映射的固定主机(或对等设备)内存是否需要GPU复制引擎?

  27. 27

    带有随机访问C ++和Python的不良Linux内存映射文件性能

  28. 28

    模拟游戏机的内存映射,根据提供的地址访问不同的位置

  29. 29

    Qt中的O(1)映射?

热门标签

归档