备份寄存器,在Allwinner中叫做General Purpose。它具有和RTC一样的特性,就是断电后寄存器中的内容不消失,可以依靠RTC电池来维持,只不过它没有自动累加的功能。
备份寄存器恐怕是所有功能中最最简单的一个了,简单到只有赋值、读取,没有其他的功能了,不过它可以当作一个全局变量,一个可以跨进程、断电不消失的全局变量。
Allwinner A20共有16个备份寄存器,每个可以记录32位的整型值。为了使用起来简单方便,它被封装成了单例,直接指定索引号即可写入和读取。
程序的编写方法这次改变一下,不再使用窗体,直接编译一个不带有任何交互界面的程序来测试它。创建方法首先在菜单中选择工程,然后点击创建,在选择“程序”。当然也可以选择“控制台程序”,差不多的
程序写好后设置断点并运行。断点可以在程序运行到该行代码时停下来,进行一些调试操作。当运行到给这个变量赋值备份寄存器值的代码后,将鼠标放在变量上就能显示当前的值了。第一次运行,备份寄存器的值默认是0,给备份寄存器写入一个0xFF后再读出,这个变量就是255
这个时候,可以关机断电,任意时候开机再来读取这个寄存器,它的值还是255,除非中途RTC电池被断掉。
注意,由于香蕉派的电源管理部分可能有一些小问题,造成断电后备份电池掉电很快,所以我目前并没有在香蕉派上断电后成功读取出备份寄存器的值,不过可以在其他板子上尝试此程序。