我试图将自己的串行驱动程序添加到uboot。到目前为止我所取得的成就是这些信息:
U-Boot SPL 2017.09-gdc4fd1d6eb-dirty (Dec 30 2017 - 09:13:03)
DRAM: 2048 MiB
Trying to boot from FEL
但就是这样。我知道还应该有其他消息,但没有任何消息。
我怀疑我的串口驱动程序只在uboot SPL中工作,但之后就有了#u; uboot device model"驱动程序兼容需要运行。我是对的吗?
在" uboot设备型号"中注册我的驱动程序我介绍了两个调用:
U_BOOT_DEVICE(sun8i_serials) = {
.name = "serial_sun8i",
.platdata = &sun8i_serial_plat,
};
U_BOOT_DRIVER(serial_sun8i) = {
.name = "serial_sun8i",
.id = UCLASS_SERIAL,
.ops = &sun8i_serial_ops,
.probe = sun8i_serial_probe,
};
有了这两个结构,我期待我的程序" sun8i_serial_probe"将被执行,但它不是。在这个程序中,我只是打开一些LED,但是这个LED仍然关闭,所以我的结论是它没有被调用。
如何正确注册我的驱动程序并实现对sun8i_serial_probe程序的调用?
也许在SPL之后还有另一个步骤(第三个程序加载器?)并且它正在使用虚拟内存空间,这就是为什么我的程序无法打开LED?
有什么建议吗?
Edit1:我发现proc list_bind_drivers()发出"不匹配驱动程序serial_sun8i"。所以看起来U_BOOT_DEVICE工作正常而U_BOOT_DRIVER由于某些原因没有。
Edit2:好像我修复了这个bug。该错误发生在Makefile中。