扩展u-boot功能

问题描述 投票:0回答:2

我需要向u-boot添加一些新功能,例如按指定的按钮以使用闪烁的LED作为设备响应来设置设备。问题是我不在u-boot开始执行C代码的地方。我应该修改哪个文件?

我使用STM32F429I-Discovery进行测试,并且已经安装了使用buildroot运行内核所需的一切。其中一个LED(GPIO_13)不断闪烁,因此,我尝试搜索提供此类功能的代码。看起来led.c和gpio_led.c必须执行此操作,但是更改它们却无济于事。

embedded embedded-linux boot gpio u-boot
2个回答
-1
投票

您应该在board.c文件中添加u-boot功能。可以在以下位置找到它:u-boot / board / stm / stm32f429-discovery / board.c

您可能需要更改其他设置,可以在头文件中完成。可以找到此文件:u-boot / include / configs / stm32f429-discovery.h


0
投票

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部分作为模板。

© www.soinside.com 2019 - 2024. All rights reserved.