如何从程序中开始复位

如何从程序中开始复位,第1张

程序控制的软件复位方法

微处理器复位方法:

用硬件引脚RESET的复位方法;

用看门狗的复位方法;

自己程序控制的复位方法(本文方法,叫软件复位)。

软件复位实现方法

首先声明一个函数指针,指向复位后要开始执行指令的位置:

void (*app_start)(void) = 0x0000

可以根据具体微处理器复咐脊岩位后的位置,修改后边的地址。

之后,在自己的程序中想复位的地方调用app_start()也就是跳到0x0000位置执行指令。

可以根据不同微处理器复位的地址,修改上边的地址(0x0000)。实现上你可以跳到任何位置执行,或调用函数执行。

实例测试

以下以Arduino为开发环境来测试。注意:在AVR微处理器中,为了使Arduino复位时不再进入引导区,使AVR设置BOOTRST设置为1。

使用函数指针复位方法如下,你能想象到下边的程序会使LED灯闪亮吗?

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

/衡御//0. 引脚定义

#define LED_PIN 13 //定义LED引脚为13号数据引脚(DIG13)

static void (*reset_this_CPU)(void) = 0x0000//野瞎 ***复位本CPU函数指针

///1. 初始化

void setup() {

pinMode(LED_PIN, OUTPUT)// 初始化DIG13为输出

digitalWrite(LED_PIN, HIGH)//DIG13输出高电平

delay(1000)//延时1秒

digitalWrite(LED_PIN, LOW) //DIG13输出低电平

delay(1000)//延时1秒

reset_this_CPU()//***跳到0x0000地址指针,也就是复位

}

///2. 循环

void loop() {

//此处什么也没有啊!

}

结论

用本方法,可以用软件方式进行复位,也可以用这个函数指针的方法调用任何函数。

软派冲猜件复位

软件复位就是用一系判散列指令来模仿硬件复位功能。软件复位是软件陷阱和软件看门狗后续必须做的工作。在软件复位时,首先要清除中断激活标志。在所有指令中,只有RETI能清除中断激活标志。总之,干扰无一定之规,解决的方法也是多种多样的,一般可按下述原则解决:硬件隔离,软件排除,必要时软硬兼施。[1]

首先解决电源干扰,系统安装时注意接地,采样通道规范化设计,输出通道遇强电加光电隔离,再辅之以软件抗干扰措施,一般即能消除干扰,使系统正常运行。现场调试时一旦遇到问题,要认真仔细地分析造成干扰的原因,采用相应对策,问题总是可以解决的。

纠错

参考资料

复位键

复位键是存在于电脑主机、笔记本电脑、智能手机、智能PDA或其它电子产品的键位,又叫重启键,即RESET。因其功能原因,位置一般比较隐蔽,不容易碰触。

台式电脑的复位键在机箱上一般在启动键附近,笔记本电脑的复位键在键盘顶。在电脑键盘上同时按下CTRL+ALT+DEL也可以复位,为软复位,又叫热启动。[1]

中文名尘型

复位键

外文名

RESET

别称

重启键

应用

电脑主机、笔记本、智能手机等

一、reboot now 立即重新启动

二、install from sdcard 从SD卡安装

1、choose zip from sdcard 选择从SD卡的zip

2、check md5sum of a file 检查文件的md5sum

3、apply/sdcard/updat.zip 应用/ SD卡/ update.zip

4、toggle signature verifcatiom 切换签名验证

5、toggle script asserts 切换脚本验证

三、toggle usb storage 切换USB存储

1、Disonnect 挂载/卸载

四、wipe | format 擦拭|格式化

1、wipe data/factory reset 擦拭数据/工厂复位

2、wipe cache 擦拭缓存

3、wipe dalvik+cache 擦拭的Dalvik+缓存

4、wipe dalvik cache 擦拭的Dalvik缓存

5、wipe battery stats 擦拭电池统计

6、format system 格式化系统

7、format data 格式化数据

8、format boot 格式化启动

9、format sdcard 格式化SD卡

10、format all partitions (exceptt sdcard) 格式化所有分区(SD卡除外)

五、backup |restore 备份|恢复

1、Backup 备份

2、Restore 还原

3、Advanced Restore 高级还原

①、Restore boot 恢复boot.img

②、Restore system 恢复系统

③、Restore adta 恢复数据

④、Restore cache 还原缓存

4、Advanced Backup 高级备份

①、Boot 引 导

②、System 系 统

③、Data 数 据

④、Cache 高速缓存

六、mounts | storage 挂载|存储

1、unmount /cache 卸丛脊敏载cache

2、mount /data 加载data

3、mount /sdcard 加载SD卡

4、mount /system 加载system

七、tools 工具野谨

1、Convert | chang a backup→EXT4 转换|更改备份→EXT4

2、wipe |format →EXT4 擦拭|格式→EXT4

3、convert | chang a backup→EXT3 转换|更改备份→EXT3

4、wipe | format →EXT3 擦拭|格式→EXT3

5、fix permissions | UID/GID mismatches file system check

6、file system check >检查文件系统

7、check partition alignment 检查分区校准

8、partition sd card ->SD卡分区

9、copy recovery.log to sdcard 复制recovery.log日志文件到SD卡

10、print partition info 打印分区信息渗枝

11、reload theme 重载主题

12、uninstall theme 卸载主题

13、enable 4EXT SmartFlash 启用4EXT智能刷写

八、info 分区信息

九、power menu 电源管理菜单

1、Reboot Recovery 重新启动恢复

2、Reboot into Bootloader 进入引导程序重新启动

3、Reboot 重新启动

4、Power Off 关闭电源


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12350816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存