The Chip don't Reset when pin PORz go LOW in Linux!
my PCB AM335x ZCZ PORz signal is driver by power supervisor chip TPS3707-33D,
when i push the MR_n pin of TPS3707-33D to GND, RESET_n pin of TPS3707-33D got an 200mS Low Pluse.
if this happen in U-boot running, the chip will reset,u-boot restart,this is ok;
but if this happen in Linux running, the chip just HALT,u-boot don't restart! what's wrong?
any guys can test this on BeagleBone or BBB,force PMIC_PGOOD signal low when running linux?
see what happen next.
PORz是AM335x的全局复位输入,如果此信号变低,CPU应该复位,但我的测试发现在U-boot下,这个有效(CPU重启,重新进入uboot),但在linux下却不行(死机,但示波器看到A10管脚WARMRST_n跟随PORz,一起变低,随后变高)
我在http://e2e.ti.com提问了相同的问题
http://e2e.ti.com/support/arm/sitara_arm/f/791/t/333946.aspx
Jian Zhou:
想先问一下,有没有测试过warmreset这个管脚,将其拉低能不能reset芯片?
Jian Zhou:
我是这么理解的,PORZ是配合AM335x上电时序的cold reset,如果所有电压都正常上电的情况下去单独控制这个信号给AM335x一个cold reset,这是不符合上电时序的,我认为会导致芯片不稳定。
我之前尝试过在starterware环境下去拉低这个信号,也能reset芯片,但是我怕导致不稳定,最终还是去reset PMU,如TPS65217,让AM335x系统整个重新上电,起到一个cold reset的作用。
YanChang Liang:
回复 Jian Zhou:
warmreset可以在linux下复位CPU
leo chen:
在linux下是提醒是否需要重启吧,不是立即进入重启,有个选择和等待的过程
YanChang Liang:
回复 leo chen:
与此无关,既然PORz是硬件复位,CPU是被硬件复位的,应该去执行其片内的ROM Code。
有谁能试试BeagleBone BBB,飞线PMIC_PGOOD,进入linux后,PMIC_PGOOD碰GND一下,看CPU是否重启,或者是CPU死机了。
Jian Zhou:
回复 YanChang Liang:
梁工,能提供详细的应用场景吗?
Jian Zhou:
回复 Jian Zhou:
我补充一点,在我之前做的测试,是在beaglebone上将PORZ拉低测试的,跑的starterware,测了10次左右,每次都是能够正常重启的
YanChang Liang:
回复 Jian Zhou:
我的场景:1.我的电源拓扑是:+5V —-> DC_DC_1 —> 1.8V | | | \–> LDO –> 1.1V \–> DC_DC_2 —> 3.3VDC_DC1 enable by +5V,DC_DC2 enable by 1.8V,LDO enable by 3.3V. there is an Supercapacitor on +5V一片TPS3707-33D工作在3.3V上,其RESET_n接到AM335x的PORz上,由TPS3707-33D的DATASHEET可知,其threshold voltage是2.93V,当VDD小于该值时,TPS3707-33D的RESET_n会输出200ms的有效信号。在上电过程中从5V加进来到所有电压都正常仅仅需要10mS时间,因此200mS作为PORz没有问题。(参照SPRS717F Figure 4-2. Alternate Power-Supply Sequencing with Dual-Voltage IOs Configured as 3.3 V)2.出现的问题:
由于+5V上有法拉电容,在+5V外部供电关断后,法拉电容会维持整个CPU系统工作约1秒的时间,如果我快速关断–闭合+5V外部供电,3.3V的会下跌而导致产生PORz有效信号(注意:这时3.3V的电压并不低,看图中a测量线处,3.3V是3.02V左右,而1.8V也正常,1.1V是从1.8V通过LDO来的,必然也没有下降),但这个复位信号并没有使得CPU复位,而是死机状态。唯有彻底掉电后,再上电才能正常。而由于法拉电容的存在彻底掉电需要10秒。也就是说在10秒内及时+5V再给电,系统也还是死机状。这个跟我的设计意图不一致,原来的意图是:PORz是全局复位信号,只要该信号有效,并且所有供电上电完毕,那么CPU会重新运行。
注意:在http://e2e.ti.com/support/arm/sitara_arm/f/791/t/333946.aspx的提问中,Biser Gatchev-XID说可能跟SYSBOOT引脚有关,我后来的测试觉得未必有关:
一开始提问时,我的U-boot没有打开LCD显示,但SYSBOOT对应引脚被设置成LCD_DATA[0:15],其后启动的Linux是会有显示的。
Biser Gatchev-XID认为可能跟CPU采样SYSBOOT管脚未正常有关,我后来把SYSBOOT5上拉,测试CLKOUT1作为辨别SYSBOOT采样是否正常的,发现PORz上升沿位置CLKOUT1有24MHZ输出。由此推测SYSBOOT采样是正常的。
但后来我把U-boot的显示功能打开,发现PORZ复位会导致死机。(此前是Uboot没显示,PORz复位,CPU重启)
3.我的提问改为:
AM335x在所有电源均正常时,PORz信号出现一个200mS低脉冲,AM335x的响应是什么?其内部逻辑如何响应?是否会可靠重启?
Jian Zhou:
回复 YanChang Liang:
我认为:
1. SYSBOOT那些引脚设置和U-boot有没有使能LCD没什么关系。您可以做个实验,看看在Linux环境下用warm_reset重启系统看看是否和掉电上电之后的正常启动是一样的。
2. PORZ的持续低电平,应该是一种状态未知的不可靠重启。
Gino E:
回复 YanChang Liang:
你好,
从示波器来看,你的3.3V的电压在一段时间内低到并维持3.02V,这个值低于VDDSHV6域实际要求范围(3.14V-3.47V),对于CPU端来讲,有可能它会认为这个属于POWER ON RESET的下降沿时间太长,所以导致整个RESET 失败。
你是否可以修改电路将这个3.3V电压提高到要求范围之内,然后再做测试,看看是否会有改善。
另外,你提到的复位内部逻辑,你可以参考TRM 8.1.7 reset management.
TI中文支持网
由于+5V上有法拉电容,在+5V外部供电关断后,法拉电容会维持整个CPU系统工作约1秒的时间,如果我快速关断–闭合+5V外部供电,3.3V的会下跌而导致产生PORz有效信号(注意:这时3.3V的电压并不低,看图中a测量线处,3.3V是3.02V左右,而1.8V也正常,1.1V是从1.8V通过LDO来的,必然也没有下降),但这个复位信号并没有使得CPU复位,而是死机状态。唯有彻底掉电后,再上电才能正常。而由于法拉电容的存在彻底掉电需要10秒。也就是说在10秒内及时+5V再给电,系统也还是死机状。这个跟我的设计意图不一致,原来的意图是:PORz是全局复位信号,只要该信号有效,并且所有供电上电完毕,那么CPU会重新运行。