gpt4 book ai didi

戈朗 : 32-bit access to mmap'd "/dev/mem" region

转载 作者:IT王子 更新时间:2023-10-29 00:44:19 26 4
gpt4 key购买 nike

由于 golang 是一种系统语言,因此它应该能够执行一些用户空间硬件驱动程序工作。

我想映射“/dev/mem”并对一些内存映射的 pci 寄存器进行一些读取或写入操作。由于 golang 的 syscall.Mmap 返回一个字节数组。我怎么可能对寄存器进行 32 位(例如)读取或写入?

逐字节访问是不合适的,因为一些寄存器只支持 32 位访问。

最佳答案

您可以通过使用 unsafe 并将 *uint32 指针指向正确偏移量的 block 来实现。这是一个常规字节数组的示例,但经过 mmap 处理的数组应该也能正常工作。

package main

import (
"fmt"
"unsafe"
)

func main() {
a := make([]byte, 30)
p := (*uint32)(unsafe.Pointer(&a[8]))
*p = 0xabcd0123
fmt.Println(a)
}

关于戈朗 : 32-bit access to mmap'd "/dev/mem" region,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656873/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com