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

基于A40i Linux开发板点亮板载LED灯,第1张

 

为啥要搞这个linux评估板

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

 

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

 

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

TLA40i-EVM介绍 功能速览

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

基于A40i Linux开发板点亮板载LED灯,8a604ec4-3731-11ed-ba43-dac502259ad0.png,第2张

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

基于A40i Linux开发板点亮板载LED灯,8ab42ef4-3731-11ed-ba43-dac502259ad0.png,第3张基于A40i Linux开发板点亮板载LED灯,8afde3b4-3731-11ed-ba43-dac502259ad0.png,第4张

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

基于A40i Linux开发板点亮板载LED灯,8b49f8a8-3731-11ed-ba43-dac502259ad0.png,第5张 开箱

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

包装盒

开箱上板

 

核心板

基于A40i Linux开发板点亮板载LED灯,8c148424-3731-11ed-ba43-dac502259ad0.png,第6张

配件清单

 

清单1-学习资料光盘:

 

清单2-4G天线:

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



清单3-DC电源

 

清单4-读卡器

 

清单5-双头HDMI线

 

清单6-OTG转接线

 

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

软硬件参数
  • 硬件参数
基于A40i Linux开发板点亮板载LED灯,8da911ba-3731-11ed-ba43-dac502259ad0.png,第7张基于A40i Linux开发板点亮板载LED灯,8dbf9c8c-3731-11ed-ba43-dac502259ad0.png,第8张基于A40i Linux开发板点亮板载LED灯,8ddd5114-3731-11ed-ba43-dac502259ad0.png,第9张基于A40i Linux开发板点亮板载LED灯,8df0d1c6-3731-11ed-ba43-dac502259ad0.png,第10张基于A40i Linux开发板点亮板载LED灯,8e186308-3731-11ed-ba43-dac502259ad0.png,第11张

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

  • 软件参数
基于A40i Linux开发板点亮板载LED灯,8e474ef2-3731-11ed-ba43-dac502259ad0.png,第12张基于A40i Linux开发板点亮板载LED灯,8e72732a-3731-11ed-ba43-dac502259ad0.png,第13张 开发板测试

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

基于A40i Linux开发板点亮板载LED灯,8e90569c-3731-11ed-ba43-dac502259ad0.png,第14张

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

基于A40i Linux开发板点亮板载LED灯,8eadfb66-3731-11ed-ba43-dac502259ad0.png,第15张 系统启动测试

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

基于A40i Linux开发板点亮板载LED灯,8ed01eda-3731-11ed-ba43-dac502259ad0.png,第16张

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

基于A40i Linux开发板点亮板载LED灯,8f0718ea-3731-11ed-ba43-dac502259ad0.jpg,第17张

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

基于A40i Linux开发板点亮板载LED灯,8f2b125e-3731-11ed-ba43-dac502259ad0.png,第18张

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

基于A40i Linux开发板点亮板载LED灯,8f59c086-3731-11ed-ba43-dac502259ad0.png,第19张

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

点亮板载LED

终于看到了一些能够看懂得了...基于A40i Linux开发板点亮板载LED灯,8f9f9cbe-3731-11ed-ba43-dac502259ad0.png,第20张

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

基于A40i Linux开发板点亮板载LED灯,8fc191a2-3731-11ed-ba43-dac502259ad0.png,第21张

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

基于A40i Linux开发板点亮板载LED灯,8febd9f8-3731-11ed-ba43-dac502259ad0.png,第22张
  • 关闭LED1
基于A40i Linux开发板点亮板载LED灯,9040de58-3731-11ed-ba43-dac502259ad0.png,第23张
echo 0 > /sys/class/leds/user-led0/brightness
基于A40i Linux开发板点亮板载LED灯,905452da-3731-11ed-ba43-dac502259ad0.png,第24张
  • 打开LED1
基于A40i Linux开发板点亮板载LED灯,90b210d2-3731-11ed-ba43-dac502259ad0.png,第25张
echo 1 > /sys/class/leds/user-led0/brightness
基于A40i Linux开发板点亮板载LED灯,90c30ce8-3731-11ed-ba43-dac502259ad0.png,第26张 编写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系统

基于A40i Linux开发板点亮板载LED灯,90f1e2a2-3731-11ed-ba43-dac502259ad0.png,第27张基于A40i Linux开发板点亮板载LED灯,9124f584-3731-11ed-ba43-dac502259ad0.png,第28张

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

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

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

基于A40i Linux开发板点亮板载LED灯,914660c0-3731-11ed-ba43-dac502259ad0.png,第29张

可以看到,我们的两个LED灯已经闪烁起来了
基于A40i Linux开发板点亮板载LED灯,9159773c-3731-11ed-ba43-dac502259ad0.png,第30张

基于A40i Linux开发板点亮板载LED灯,916d86b4-3731-11ed-ba43-dac502259ad0.gif,第31张

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

  审核编辑:汤梓红

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2997904.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-09-26
下一篇 2022-09-26

发表评论

登录后才能评论

评论列表(0条)

保存