Hello everyone, the development board I use is MCIMX7SABRE. The kernel version is Linux 4.9.88. The problem I am having now is: at boot time, uboot detects that the CPU frequency is 396MHZ. When the kernel starts, it indicates that this frequency is not in the list. Then the kernel is not running. I added some print information to the kernel code. Found in the imx7-cpufreq.c file, the function imx7d_set_target function will call the clk_set_rate function. But after calling this function, you can't go back to the imx7d_set_target function. I added print information before and after the imx7d_set_target function called the clk_set_rate function. The print information before the call is normal, and the print information after the call is not printed. As shown below:
The 75 lines of information can be printed. However, the information on line 79 was not printed.
But I will not have this problem on the Linux 4.1.15 version. On version 4.1.15, the kernel will change the frequency to 792 MHz.
This is the information when uboot starts.
This is the print information when the Linux 4.9.88 kernel is stopped.
This is the information that Linux 4.1.15 can start normally.
Uboot uses the same. The hardware environment is also tested on the same board.