我的 TI-Nspire CX CAS 有一个损坏的硬件组件,它的 ADC3 读取的值约为 465 个单位,而正常功能应该是 ~73。因此,我不想修复硬件,而是想通过重新映射输出位置(由计算器写入 0xC4000170)并强制计算器读取应该是正确的值来尝试一个肮脏的修复,但我不知道如何。
我应该可以访问 C 和汇编(通过使用 ndless)。我将如何重新映射计算器的虚拟内存,使其始终在该地址读取 73 的值?
重新映射硬编码地址空间实际上是相对困难的。在您可能读取物理硬件地址的情况下,如果不进行大量内核修改,几乎是不可能的。
作为一种变通方法,您可以更改实际的程序集。在您的情况下,尝试在某个已知地址将变量设置为 73,然后将可执行文件中的 ptr 更改为该已知地址。例如,将 0xC4000170 更改为您之前设置为 73 的变量的位置。
使用内置的 ARM9 MMU,您可以取消映射内存中的 ADC 外设,然后使用数据中止处理程序来实现自定义行为,例如始终返回 73。然而,这并非易事。一个好的起点是https://github.com/ndless-nspire/Ndless/blob/master/ndless/src/resources/lcd_compat.c,它与 LCD 控制器类似。