【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
实际生产中,或者是交付前,对板子做冷启动测试还是非常有必要的。所谓的冷启动测试,其实就是对系统做一个反复上电的测试,它和热启动是对应的。热启动,则是反复对reset信号进行置位,这一点和压力测试不同。

1、冷启动就是反复上下电
反复上电可以帮忙暴露很多的问题,比如硬件的问题,比如软件启动的问题,还比如数据保存的问题。因为冷启动是突然断电、重新上电的过程,在这过程中,数据有没有好好保存,系统启动会不会出现异常,都容易在这个阶段出现。
2、利用继电器来处理
既然是反复上电,那么比较合适的方法,就是用继电器来处理。继电器的一侧是控制电压,这部分可以通过esp32,或者是其他mcu来解决。而继电器的另外一侧,通常就是开关通断。吸合的时候,通电,反之就是断电。
选择继电器的时候,看下是5v、12v还是24v。说到5v,其实3.3v也可以触发。
3、常开和常闭
两者其实是一回事。就是说,用户自己希望启动的时候,是normal open的状态,还是normal close的状态。实际生产中,一般是normal open为主,也就是no状态。
4、继电器接在适配器的正极
所谓的继电器控制,其实就是把继电器放在电源适配器的正极一侧。如果是no,那么默认是不通电的,反之就是上电操作。当然,这个继电器是dc接口,还是type c接口,这个就不重要了。实验的时候,我们一般不自己做适配器,外采第三方的电源适配器,割开来,接上继电器就可以了。这样原来的板子不需要做任何修改就可以测试。
5、测试mcu的选择
原则上,尽量选择简单的mcu,比如stm32之类。如果对成本不是那么care,可以直接选择esp32也行,这部分问题不大。选择完之后,就可以用ai直接编写代码,这部分和之前一篇文章内容类似,
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
// Modify the GPIO pin according to your hardware connection
#define BLINK_GPIO GPIO_NUM_27
void app_main(void)
{
// Configure the GPIO as output mode
gpio_reset_pin(BLINK_GPIO);
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
// Initial level
uint32_t level = 0;
while (1) {
gpio_set_level(BLINK_GPIO, level);
vTaskDelay(3000 / portTICK_PERIOD_MS); // Delay 3000ms
level = !level; // Toggle level
gpio_set_level(BLINK_GPIO, level);
vTaskDelay(30000 / portTICK_PERIOD_MS); // Delay 30000ms
level = !level;
}
}
6、后续上位机的改进
如果只是简单的电源开关,用esp32是可以的,问题不大。但是测试要想做的好,还有一部分,就是上位机的check要做好。比如说,esp32控制继电器之后,是不是soc真的起来了,linux真的跑起来了,里面的app也正常运行了。既然正常运行的话,上位机是不是可以读到soc的图像,发出来的图像是不是对的,这些检测最好有一个上位机跟踪检测一下,这就最好了。