【发布时间】:2019-04-18 08:18:17
【问题描述】:
我正在使用 GCC 工具链和 ARM Cortex-M0 uC。我想问是否可以在链接器中定义一个空间,以便读写操作会调用外部设备驱动程序函数来读写它的空间(例如SPI内存)。任何人都可以给出一些提示如何做到这一点? 问候,拉法尔
编辑: 感谢您的 cmets 和回复。我的设置是: 随机访问 SPI 内存通过 SPI 控制器连接,我使用“标准”驱动程序访问内存空间并从中存储/读取数据。
我想要做的是避免显式调用驱动程序的函数,而是将它们隐藏在某个固定的 RAM 地址后面,以便对该地址的任何读取都会调用 spi 读取内存驱动程序函数,而写入会调用 spi 写入内存函数(初始地址的偏移量将是外部存储器中数据的地址)。我怀疑在没有 MMU 的 uC 中是否有可能,但我认为询问其他可能有类似想法的人总是值得的。
【问题讨论】:
-
spi 很少以这种方式映射,您必须通过 spi 控制器进行通信。可能有极少数例外,但到目前为止我还没有在单片机中看到过这样的例外。
-
cortex-m 与 spi 无关,它是 arm 的核心。芯片公司增加了 spi 控制器(st、atmel、ti 等)。所以这不是皮质-m 问题,也不是手臂问题。
-
如果您想知道如何控制链接器,那么如果您展示您尝试过的内容,这是一个公平的问题。但如果这是一个 spi 问题,那么 gcc 和链接器等也不是相关标签。
标签: gcc memory linker arm cortex-m