This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-AM62X:基于 AM62x -关于 Devmem2工具问题的咨询

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1355494/processor-sdk-am62x-based-on-am62x---consultation-on-devmem2-tool-issues

器件型号:PROCESSOR-SDK-AM62X

基于 Yocto 构建且具有内置 devmem2的文件系统可以正常读取奇数地址:

直接自编译的 Devmem2无法读取奇数地址:

Devmem2源代码:GitHub - radi/devmem2:devmem2 -用于从存储器中的任何位置读取/写入数据的简单程序。

提问:这个现象比较让人困惑、希望原厂工程师能够帮我们解答问题的成因。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    基于 Yocto 构建的文件系统(具有内置 devmem2)可以正常读取奇数地址:

    如果您看看 devmem2工具的 Yocto 方法、我们将在位于/meta-openembedded/meta-oe/recipes-support/devmem2/devmem2_2.0.bb...的 SDK 中使用它。

    SUMMARY = "Simple program to read/write from/to any location in memory"
    LICENSE = "GPL-2.0-or-later"
    LIC_FILES_CHKSUM = "file://devmem2.c;endline=38;md5=a9eb9f3890384519f435aedf986297cf"
    
    SRC_URI = "git://github.com/denix0/devmem2.git;protocol=https;branch=main"
    SRCREV = "5b395a946894eb4f4ef5d07c80a50a88573a541e"
    
    S = "${WORKDIR}/git"
    
    CFLAGS += "-DFORCE_STRICT_ALIGNMENT"
    
    do_compile() {
        ${CC} -o devmem2 devmem2.c ${CFLAGS} ${LDFLAGS}
    }
    
    do_install() {
        install -d ${D}${bindir}
        install devmem2 ${D}${bindir}
    }

    可以找到它所在的服务器和源版本 https://github.com/denix0/devmem2

    那么、如果你注意到 Yocto 方法是如何设置一个被称为  FORCE_STRICT_ALIGNMENT ,当您查看源代码时,将会解释您观察到的"更宽容"行为:

    来自 https://github.com/denix0/devmem2/blob/main/devmem2.c。。。 

    static inline void *fixup_addr(void *addr, size_t size)
    {
    #ifdef FORCE_STRICT_ALIGNMENT
    	unsigned long aligned_addr = (unsigned long)addr;
    	aligned_addr &= ~(size - 1);
    	addr = (void *)aligned_addr;
    #endif
    	return addr;
    }

    此致、Andreas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    有权访问