我需要向u-boot添加一些新功能,例如按指定的按钮以使用闪烁的LED作为设备响应来设置设备。问题是我不在u-boot开始执行C代码的地方。我应该修改哪个文件?
我使用STM32F429I-Discovery进行测试,并且已经安装了使用buildroot运行内核所需的一切。其中一个LED(GPIO_13)不断闪烁,因此,我尝试搜索提供此类功能的代码。看起来led.c和gpio_led.c必须执行此操作,但是更改它们却无济于事。
您应该在board.c文件中添加u-boot功能。可以在以下位置找到它:u-boot / board / stm / stm32f429-discovery / board.c
您可能需要更改其他设置,可以在头文件中完成。可以找到此文件:u-boot / include / configs / stm32f429-discovery.h
LED在设备树中定义(U-Boot文件arch / arm / dts / stm32f429-disco.dts,Linux内核文件arch / arm / boot / dts / stm32f429-disco.dts)
leds {
compatible = "gpio-leds";
red {
gpios = <&gpiog 14 0>;
};
green {
gpios = <&gpiog 13 0>;
linux,default-trigger = "heartbeat";
};
};
在Linux中,您可以通过写入适当的触发器文件来更改触发器。这应该是
/ sys / class / leds / green / trigger
用于GPIO的U-Boot驱动程序是drivers / gpio / stm32_gpio.c
您可以使用函数dm_gpio_set_value()将GPIO设置为输入,并使用dm_gpio_get_value()读取该值。
您可能要使用board / st / stm32mp1 / stm32mp1.c的FASTBOOT部分作为模板。