如何调整Linux内核启动中的驱动初始化顺序

2025-04-10 09:15:48
推荐回答(1个)
回答1:

最简单想到的,是内核里面的
arch\arm\mach-as352x\core.c
中,去改devices设备列表中的顺序。
enc28j60_init对应的是ssp_device,因为网卡初始化用到的是SPI驱动去进行和通讯的。
as352x_afe_init对应的是afe_device。
原先是:
static struct platform_device *devices[] =
{
&uart_device,
&nand_device,
&afe_device,
&audio_device,
&usb_device,
&as352xkbd_device,
&ssp_device,
};
把afe改到最前面:
static struct platform_device *devices[] =
{
&afe_device,
&uart_device,
&nand_device,
&audio_device,
&usb_device,
&as352xkbd_device,
&ssp_device,
};
但是,实际结果是,没有任何影响,连systemp.map生成的,那么模块初始化顺序,都没有任何变化。
也就说明,想要实现驱动加载顺序的改变,改core.c里面的设备列表顺序是没有用的。