Chinaunix首页 | 论坛 | 博客
  • 博客访问: 297327
  • 博文数量: 60
  • 博客积分: 1836
  • 博客等级: 上尉
  • 技术积分: 540
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-15 18:00
文章分类

全部博文(60)

文章存档

2013年(1)

2012年(7)

2011年(18)

2010年(6)

2009年(6)

2008年(3)

2007年(19)

我的朋友

分类: LINUX

2011-12-22 16:08:49

在调试SD卡的时候,发现一插入SD卡便导致板子重启,经过检测,返现VDDIO会有一个browout,因为一插入SD卡,VDDIO负载变大,导致出现电压变化,但是为什么重启了呢?

在imx233的启动文件中,有电源初始化,在power_prep.c中,_start函数中经过跟踪发现 PowerPrep_EnableOutputRailProtection此函数导致重启,进入分析源码,对照芯片手册,发现针对 HW_POWER_CTRL寄存器,开启了三路电源vddio vdda vddd的browout的中断,但是在源码后续分析中也发现,对于VDDIO的browout的侦测有时候是存在虚假的,可以禁止掉此中断,在函数 PowerPrep_EnableOutputRailProtection中,

/* note that VDDIO brownout indicator has been found to falsely
* trigger due to a 5V connection.  Possibly also due to a pswitch
* press.
*/
#ifndef    DISABLE_VDDIO_BO_PROTECTION
HW_POWER_VDDIOCTRL.B.PWDN_BRNOUT = 1;
#endif

所以定义 #define DISABLE_VDDIO_BO_PROTECTION
即可,重启一切正常~~~~~~~~~~~

上述阶段只是针对,未启动内核之前,在启动内核之后,还要对电源重新进行一次初始化。通过对于源码的剖析,将主要流程在此叙述下,

针对采用IMX233config的内核来说,在drivers/power/mxs/linux.c中,有一个函数 init_protection,此函数是为了完成一定的保护工作而作的电源硬件配置,在其中,有函数 ddi_power_InitOutputBrownouts,便是完成的三路电源browout的中断配置,进入

void ddi_power_InitOutputBrownouts(void)
{
uint32_t temp;

__raw_writel(BM_POWER_CTRL_VDDD_BO_IRQ |
BM_POWER_CTRL_VDDA_BO_IRQ |
BM_POWER_CTRL_VDDIO_BO_IRQ,
REGS_POWER_BASE + HW_POWER_CTRL_CLR);

__raw_writel(BM_POWER_CTRL_ENIRQ_VDDD_BO |
BM_POWER_CTRL_ENIRQ_VDDA_BO |
BM_POWER_CTRL_ENIRQ_VDDIO_BO,
REGS_POWER_BASE + HW_POWER_CTRL_SET);

temp = __raw_readl(REGS_POWER_BASE + HW_POWER_VDDDCTRL);
temp &= ~BM_POWER_VDDDCTRL_PWDN_BRNOUT;
__raw_writel(temp, REGS_POWER_BASE + HW_POWER_VDDDCTRL);

temp = __raw_readl(REGS_POWER_BASE + HW_POWER_VDDACTRL);
temp &= ~BM_POWER_VDDACTRL_PWDN_BRNOUT;
__raw_writel(temp, REGS_POWER_BASE + HW_POWER_VDDACTRL);

temp = __raw_readl(REGS_POWER_BASE + HW_POWER_VDDIOCTRL);
temp &= ~BM_POWER_VDDIOCTRL_PWDN_BRNOUT;
__raw_writel(temp, REGS_POWER_BASE + HW_POWER_VDDIOCTRL);
}

可以看到temp &= ~BM_POWER_VDDIOCTRL_PWDN_BRNOUT;

这便是开启相应电源路的browout中断,注释掉就可以了,重新编译启动即可,针对stm37XXX的配置,其思路是一样的只是文件位置不同而已

阅读(1050) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~