重新映射内存映射的I / O.

时间:2016-01-06 23:06:59

标签: c assembly ti-nspire

我的TI-Nspire CX CAS硬件组件损坏,其ADC3读取值约为465个单位,正常功能应为~73。因此,我想通过重新映射输出位置(由计算器写入0xC4000170)并强制计算器读取应该是正确的值来尝试修复硬件,但我不知道如何修复硬件。 / p>

我应该可以访问C和Assembly(使用ndless)。如何重新映射计算器的虚拟内存,使其在该地址始终读取值为73?

2 个答案:

答案 0 :(得分:1)

重新映射硬编码地址空间实际上相对困难。在您可能正在读取物理硬件地址的情况下,如果没有大量的内核修改,几乎是不可能的。

作为解决方法,您可以更改实际装配。在这种情况下,尝试在某个已知地址处将变量设置为73,然后将可执行文件中的ptr更改为该已知地址。例如,将0xC4000170更改为先前设置为73的变量的位置。

答案 1 :(得分:1)

使用内置的ARM9 MMU,您可以取消映射内存中的ADC外设,然后使用数据中止处理程序来实现自定义行为,例如始终返回73.但是,这不是一项微不足道的任务。一个很好的起点是https://github.com/ndless-nspire/Ndless/blob/master/ndless/src/resources/lcd_compat.c,它可以与LCD控制器类似。