busybox
updatingkernel
imx6 linux-3.0.35busybox中reboot命令最终会调用kernel的的如下函数:
SYSCALL_DEFINE4(reboot, int, magic1, int, magic2, unsigned int, cmd, void __user *, arg) ----kernel/sys.c
kernel_restart() ----kernel/sys.c
machine_restart ----arch/arm/kernel/process.c
arm_pm_restart(reboot_mode, cmd); ----arch/arm/kernel/process.c
void (*arm_pm_restart)(char str, const char *cmd) = arm_machine_restart; ----arch/arm/kernel/process.c
arm_machine_restart() ----arch/arm/kernel/process.c
arch_reset()----arch/arm/plat-mxc/system.c
arch_reset()是基于平台的,不同平台实现不同,实现方式可以是
1.停止喂狗
2.主动给cpu一个复位信号
3.写cpu一个寄存器,使其复位
4.写pmic一个寄存器,使其复位