全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > LED照明 >

基于A40i Linux开发板点亮板载LED灯

时间:2022-09-19 11:20

人气:

作者:admin

标签: 开发板  LED  Linux 

导读:基于A40i Linux开发板点亮板载LED灯-创龙科技 TLA40i-EVM 是一款基于全志科技 A40i 处理器设计的 4 核 ARM Cortex-A7 高性能低功耗国产评估板, 每核主频高达 1.2GHz, 由核心板和评估底板组成。...

 

为啥要搞这个linux评估板?

小飞哥自毕业以来,工作5年了,一直从事的都是嵌入式MCU层面的开发工作,还从未涉足过linux开发相关的领域,最近的一次应该是翻过《鸟哥的linux私房菜》,学着敲过一些命令行,仅此而已...

 

这不最近想看看linux开发到底咋搞(好像又分应用层、多BSP驱动层等多个方向),对于习惯了MCU开发的底层攻城狮来说,必须得是个点灯大师...

 

最近有幸结识创龙科技的黄工,扒拉来了一块niubi的A40i工业评估板,就在这块板子上学习学习

TLA40i-EVM介绍

功能速览

创龙科技 TLA40i-EVM 是一款基于全志科技 A40i 处理器设计的 4 核 ARM Cortex-A7 高性能低功耗国产评估板, 每核主频高达 1.2GHz, 由核心板和评估底板组成。

8a604ec4-3731-11ed-ba43-dac502259ad0.png

评估板接口资源丰富, 引出双路网口、 双路 CAN、 双路 USB、 双路 RS485通信接口, 板载 Bluetooth、 WIFI、 4G(选配) 模块, 同时引出 MIPI LCD、 LVDS LCD、 TFT LCD、HDMI OUT、 CVBS OUT、 CAMERA、 LINE IN、 H/P OUT 等音视频多媒体接口, 支持双屏异显、Mali400 MP2 GPU, 1080P@45fps H.264 视频硬件编码、1080P@60fps H.264 视频硬件解码,并支持 SATA 大容量存储接口。

8ab42ef4-3731-11ed-ba43-dac502259ad0.png8afde3b4-3731-11ed-ba43-dac502259ad0.png

核心板采用 100%国产元器件方案,并经过专业的 PCB Layout 和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估底板大部分元器件均采用国产方案, 方便用户快速进行产品方案评估与技术预研。

8b49f8a8-3731-11ed-ba43-dac502259ad0.png

开箱

拍照环境+技术比较渣...大家勉强看哈,包装、板子是十分精美的

包装盒

开箱上板

 

核心板

8c148424-3731-11ed-ba43-dac502259ad0.png

配件清单

 

清单1-学习资料光盘:

 

清单2-4G天线

比较遗憾的是,不带4G模组...



清单3-DC电源

 

清单4-读卡器

 

清单5-双头HDMI线

 

清单6-OTG转接线

 

等等...配件齐全,基本调试够用了

软硬件参数

  • 硬件参数
8da911ba-3731-11ed-ba43-dac502259ad0.png8dbf9c8c-3731-11ed-ba43-dac502259ad0.png8ddd5114-3731-11ed-ba43-dac502259ad0.png8df0d1c6-3731-11ed-ba43-dac502259ad0.png8e186308-3731-11ed-ba43-dac502259ad0.png

从硬件配置上看,有485、CAN、WiFi、4G、蓝牙等,做一个工业网关、家居监控、仪表等是绰绰有余的

  • 软件参数
8e474ef2-3731-11ed-ba43-dac502259ad0.png8e72732a-3731-11ed-ba43-dac502259ad0.png

开发板测试

第一次接触linux的板子,还是有一些发蒙的,好在创龙的开发资料以及技术支持都非常给力,即使如此还是走了一些弯路,上来就编译linux内核去了...搞了两天报了一堆错,好在及时回头,先从基本的搞起吧~

8e90569c-3731-11ed-ba43-dac502259ad0.png

对刚接触板子的小伙伴来说,还是按照官方提供的教程文档,按照顺序慢慢来

8eadfb66-3731-11ed-ba43-dac502259ad0.png

系统启动测试

使用附赠的12v/2A电源适配器,连接开发板的DC电源口,并使用MicroUSB数据线连接开发板的串口到电脑,插入附赠的TF卡,并将拨码开关调到SD卡启动模式。

8ed01eda-3731-11ed-ba43-dac502259ad0.png

接入电源,并使用 Micro USB 线连接 PC 机和评估板的 USB TO UART0 调试串口

8f0718ea-3731-11ed-ba43-dac502259ad0.jpg

默认波特率率115200,使用终端调试助手mobaxterm打开所在串口号

8f2b125e-3731-11ed-ba43-dac502259ad0.png

相当于是板子的自检功能,有些设备没有插入,会报一些error,是不影响我们使用的

8f59c086-3731-11ed-ba43-dac502259ad0.png

至此,系统启动完成,为了以后可以不插SD卡也能启动,也可以将系统一键固化到板载的ROM中。

点亮板载LED

终于看到了一些能够看懂得了...8f9f9cbe-3731-11ed-ba43-dac502259ad0.png

接下来在命令串口输入命令行进行点灯测试,LED 设备节点为"/sys/class/leds/user-ledX/"目录下的 brightness。

8fc191a2-3731-11ed-ba43-dac502259ad0.png

LED 灯默认是亮的,接下来我们通过命令行控制亮灭

8febd9f8-3731-11ed-ba43-dac502259ad0.png
  • 关闭LED1
9040de58-3731-11ed-ba43-dac502259ad0.png
echo 0 > /sys/class/leds/user-led0/brightness
905452da-3731-11ed-ba43-dac502259ad0.png
  • 打开LED1
90b210d2-3731-11ed-ba43-dac502259ad0.png
echo 1 > /sys/class/leds/user-led0/brightness
90c30ce8-3731-11ed-ba43-dac502259ad0.png

编写LED控制代码

上面介绍了通过命令控制LED开启、关闭,我如果想要流水灯效果怎么办呢?

接下来写一段代码来实现流水灯的效果,主要还是看官方提供的demo吧

关键代码

(1) 预定义 LED 数组。程序由此数组获取 LED 信息,数组信息必须为系统已有 LED 信息,否则程序运行报错。

/* User-operable LEDs */
static char *g_leds[] = {
    "/sys/class/leds/user-led0",
    "/sys/class/leds/user-led1",
    "/sys/class/leds/user-led2",
    "/sys/class/leds/user-led3"
};

(2) LED 亮灭操作和时间间隔。

    while (!g_quit) {
        /* Turn on LEDs */
        for (i = 0; i < num; i++) {
            /* Set the LED brightness value to 1 to turn on the led */
            snprintf(cmd, 64"echo 1 > %s/brightness", g_leds[i]);
            if (system(cmd) != 0) {
                fprintf(stderr, "Error: Failed to turn on %s
", g_leds[i]);
                exit(EXIT_FAILURE);
            }
        }

        /* Keep the LEDs on for 500 ms */
        usleep(500 * 1000);

        /* Turn off LEDs */
        for (i = 0; i < num; i++) {
            /* Set the LED brightness value to 0 to turn off the LED */
            snprintf(cmd, 64"echo 0 > %s/brightness", g_leds[i]);
            if (system(cmd) != 0) {
                fprintf(stderr, "Error: Failed to turn off %s
", g_leds[i]);
                exit(EXIT_FAILURE);
            }
        }

        /* Keep the LEDs off for 500 ms */
        usleep(500 * 1000);
    }

那么如何让目标板执行这段代码呢?

代码编译

参照官方文档《2-2-linux应用开发手册》中开发案例说明,环境搭建等,按照教程文档来就可以啦

如需重新编译 Linux 常用开发案例,请将对应案例 src 目录拷贝至 Ubuntu 工作目录下。请先确保已参考 Linux 系统使用手册编译过 LinuxSDK,构建好 A40i 处理器对应的 GCC 编译器。然后进入 src 目录执行如下命令,使用 LinuxSDK 开发包目录下的 GCC 编译器进行案例编译。编译完成后,将在当前目录下生成可执行文件。

Host# CC=/home/你的系统名称/A40i/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr
/bin/arm-linux-gnueabihf-gcc make

比如小飞哥的linux系统

90f1e2a2-3731-11ed-ba43-dac502259ad0.png9124f584-3731-11ed-ba43-dac502259ad0.png

将本案例 bin 目录下的可执行程序 led_flash 拷贝至评估板文件系统,并在可执行程序所在目录执行如下命令运行程序,即可看到评估底板 LED 以 0.5s 的时间间隔进行闪烁。同时, 串口终端打印系统全部 LED 设备信息和程序当前控制的 LED 设备信息。

具体拷贝过程参照教程文档,本次也不做具体说明了

可以看到,可执行文件已经拷贝到我们的开发板系统中了,接下来运行看看效果

914660c0-3731-11ed-ba43-dac502259ad0.png

可以看到,我们的两个LED灯已经闪烁起来了
9159773c-3731-11ed-ba43-dac502259ad0.png

916d86b4-3731-11ed-ba43-dac502259ad0.gif

至此,算是搭建起来了基本的操作环境,中间废了不少功夫,但好在没有遇到解决不了的问题,还算比较顺利吧,后面再慢慢与大家分享一些学习过程吧。

  审核编辑:汤梓红  
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信