心跳灯

根据原理图,可以看到GPIO10为心跳灯的输入信号:

平台不支持DTB中配置heartbeat的方式配置心跳灯。参考kernel/drivers/sstar/gpio_key_sample/gpio_key_driver/gpio_key_driver.c来实现。

  • DTS配置

主要是将GPIO10的复用功能取消,使其默认为GPIO功能。

# vi infinity2m-ssc011a-s01a-padmux-display.dtsi

  • Kernel config的配置
# cd kernel
# ARCH=arm make menuconfig

每次修改需要保存一下配置

# cp .config ./arch/arm/configs/infinity2m_spinand_ssc011a_s01a_minigui_defconfig  -f
# cd ..

重新编译并更新kernel:

# ./Release_to_customer.sh -f nand -p ssd201
  • 驱动的编写
# cp kernel/drivers/sstar/gpio_key_sample/gpio_key_driver kernel/drivers/sstar/gpio_key_sample/gpio_led_heartbeat -rf
# cd kernel/drivers/sstar/gpio_key_sample/gpio_led_heartbeat
# mv gpio_key_driver.c gpio_led_heartbeat.c
# vi gpio_led_heartbeat.c

# vi Makefile

# make CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld ARCH=arm

可以看到,成功生成了gpio_led_heartbeat.ko,把它拷贝到images目录下:

# cp ./gpio_led_heartbeat.ko  ../../../../../images/
  • 验证

将生成的gpio_led_heartbeat.ko拷贝到板子上并insmod:

# tftp -g -l gpio_led_heartbeat.ko 192.168.1.166
# insmod gpio_led_heartbeat.ko

此时,可以看到,心跳灯LED3开始已心跳的形式闪烁。
接下来的工作是使每次开机自动加载该驱动:

# vi project/image/configs/i2m/rootfs.mk

+ cp ../../kernel/drivers/sstar/gpio_key_sample/gpio_led_heartbeat/gpio_led_heartbeat.ko $(miservice$(RESOUCE))/modules/$(KERNEL_VERSION)
+ echo "insmod /config/modules/4.9.84/gpio_led_heartbeat.ko" >> $(OUTPUTDIR)/customer/demo.sh

重新编译并更新固件:

# ./Release_to_customer.sh -f nand -p ssd201

当更新完成进入系统后,可以看到,心跳灯已经闪烁了。我修改的相关文件保存在IDO_SSD20X/开发板/IDO-SBC2D07/开发文档/heartbeat/下。
至此,心跳灯调试完成。

文档更新时间: 2021-08-17 14:45   作者:Aeeditor