前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我在这块牛X的A40i Linux开发板上点了个流水灯

我在这块牛X的A40i Linux开发板上点了个流水灯

作者头像
用户8913398
发布2022-11-16 15:46:07
1K0
发布2022-11-16 15:46:07
举报

为啥要搞这个linux评估板?

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

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

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

TLA40i-EVM介绍

功能速览

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

评估板接口资源丰富, 引出双路网口、 双路 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 大容量存储接口。

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

开箱

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

包装盒

开箱上板

核心板

配件清单

清单1-学习资料光盘:

清单2-4G天线:

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

清单3-DC电源

清单4-读卡器

清单5-双头HDMI线

清单6-OTG转接线

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

软硬件参数

  • 硬件参数

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

  • 软件参数

开发板测试

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

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

系统启动测试

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

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

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

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

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

点亮板载LED灯

终于看到了一些能够看懂得了...

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

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

  • 关闭LED1
代码语言:javascript
复制
echo 0 > /sys/class/leds/user-led0/brightness
  • 打开LED1
代码语言:javascript
复制
echo 1 > /sys/class/leds/user-led0/brightness

编写LED控制代码

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

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

关键代码

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

代码语言:javascript
复制
/* 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 亮灭操作和时间间隔。

代码语言:javascript
复制
    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\n", 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\n", 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 编译器进行 案例编译。编译完成后,将在当前目录下生成可执行文件。

代码语言:javascript
复制
Host# CC=/home/你的系统名称/A40i/lichee/out/sun8iw11p1/linux/common/buildroot/host/usr
/bin/arm-linux-gnueabihf-gcc make

比如小飞哥的linux系统

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

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

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

可以看到,我们的两个LED灯已经闪烁起来了

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小飞哥玩嵌入式 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TLA40i-EVM介绍
    • 功能速览
    • 开箱
      • 软硬件参数
      • 开发板测试
        • 系统启动测试
          • 点亮板载LED灯
          • 编写LED控制代码
            • 关键代码
              • 代码编译
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档