[其他芯片] 米尔MYC-YT507开发板测评:开发环境篇之一:Linux C按键控制LED

qinyunti   2022-7-24 00:19 楼主

前言

对于核心板或者开发板的选型我们一样会考虑二次开发的便捷性,开发环境,手册等的易用性和完整性。下面我们就从开发者的角度体验,从linux c开发,Qt开发,python开发等常见开发入手进行体验。

现在开始第一部分linux c开发环境的简单体验。

我这里使用WIN11+WSL2+Ubuntu 20.04进行开发。Ubuntu单独安装在E盘,而不是直接从应用商店下载安装(具体安装方法可以网络搜索,这里不再赘述),因为开发环境需要的空间较大,直接应用商店安装默认位于C盘会导致C盘空间不够,所以独立安装在空间较大的盘。

准备

串口登录

丝印Debug对应的TYPE-C USB口为调试串口,接到电脑。

 

设置串口终端,我这里使用crt. 参数为115200-8-N-1.如果找不到COM则先网上搜索下载FTD21XX的驱动安装。登录到开发板。

 

image-20220724001914-1.png  

用户名为root无需密码

[root@myir:/]#

 

SSH登录

网口接到丝印ENET2的网口

 

串口终端中ifconfig查看IP

 

image-20220724001914-2.png  

开发板IP地址为169.254.127.228

我们将电脑的IP设置为同一网段169.254.127.227

 

image-20220724001914-3.png  

 

开发板中ping电脑

image-20220724001914-4.png  

 

电脑中ping开发板

image-20220724001914-5.png  

 

如果ping不通可以关闭电脑的防火墙

 

修改root用户密码

串口终端中输入passwd回车

输入123回车

继续输入123回车

将密码设置为了123

image-20220724001914-6.png  

 

使用CRT SSH登录

 

image-20220724001914-7.png  

image-20220724001914-8.png  

image-20220724001914-9.png  

密码为刚才设置的123

image-20220724001914-10.png  

 

安装必备包

进入WSL打开终端

sudo apt-get update

sudo apt-get install build-essential gcc libncurses5-dev bison flex texinfo

sudo apt-get install zlib1g-dev gettext libssl-dev autoconf

sudo apt-get install autoconf

sudo apt-get install automake

sudo apt-get install libtool

sudo apt-get install linux-libc-dev:i386

sudo apt-get install git

sudo apt-get install gnupg

sudo apt-get install flex

sudo apt-get install bison

sudo apt-get install gperf

sudo apt-get install build-essential

sudo apt-get install zip

sudo apt-get install curl

sudo apt-get install libc6-dev

sudo apt-get install libncurses5-dev:i386

sudo apt-get install x11proto-core-dev

sudo apt-get install libx11-dev:i386

sudo apt-get install libreadline6-dev:i386

sudo apt-get install libgl1-mesa-glx:i386

sudo apt-get install libgl1-mesa-dev

sudo apt-get install g++-multilib

sudo apt-get install mingw32

sudo apt-get install tofrodos

sudo apt-get install python-markdown

sudo apt-get install libxml2-utils

sudo apt-get install xsltproc

sudo apt-get install zlib1g-dev:i386

sudo apt-get install gawk

sudo apt-get install texinfo

sudo apt-get install gettext

 

sudo dpkg-reconfigure dash #选择 no

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

sudo apt-get install zlib1g-dev # 缺失 libz.so 时安装

sudo apt-get install uboot-mkimage # 缺失 mkimge 时安装或者安装 u-boot-tools

 

交叉编译环境安装

windows下从http://down.myir-tech.com/MYD-YT507H/下载资料,其中03_Tools.zip解压

我这里解压后为E:\BOARD\MYC-YT507\03_Tools

将文件夹Complie Toolchain名字改为Complie_Toolchain因为linux中命令行文件名不能有空格。

 

wsl中

cd ~

mkdir MYD-YT507H

cd MYD-YT507H/

 

直接将windows下的文件解压到WSL中

tar -xvf /mnt/e/BOARD/MYC-YT507/03_Tools/Complie_Toolchain/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar.xz -C .

 

export PATH=$PATH:~/MYD-YT507H/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu/bin

 

aarch64-linux-gnu-gcc -v

能看到打印信息说明安装成功。

测试

编写代码

以下代码实现按键控制LED的亮灭。

 

led.c

#include <linux/input.h> 

#include <sys/types.h> 

#include <sys/stat.h> 

#include <fcntl.h> 

#include <sys/ioctl.h> 

#include <stdio.h> 

#include <stdlib.h> 

#include <string.h> 

#include <unistd.h> 

/* ./key_led /dev/input/event0 noblock */ 

int main(int argc, char **argv)

{

    int fd,bg_fd; int err, len, i;

    unsigned char flag;

    unsigned int data[1];

    char *bg = "/sys/class/leds/blue/brightness";

    struct input_event event;

    if (argc < 2)

    {

        printf("Usage: %s <dev> [noblock]\n", argv[0]);

        return -1;

    }

    if (argc == 3 && !strcmp(argv[2], "noblock"))

    {

        fd = open(argv[1], O_RDWR | O_NONBLOCK);

    }

    else 

    {

        fd = open(argv[1], O_RDWR);

    }

    if (fd < 0)

    {

        printf("open %s err\n", argv[1]);

        return -1;

    }

    while (1)

    {

        len = read(fd, &event, sizeof(event));

        if (event.type == EV_KEY)

        {

            if (event.value == 1)//key down and up

            {

                printf("key test \n");

                bg_fd = open(bg, O_RDWR);

                if (bg_fd < 0)

                {

                    printf("open %d err\n", bg_fd);

                    return -1;

                }

                read(bg_fd,&flag,1);

                if(flag == '0')

                    system("echo 1 > /sys/class/leds/blue/brightness"); //l ed off - 62 -

                else system("echo 0 > /sys/class/leds/blue/brightness ");//led on

            }

        }

    }

    return 0;

}

 

编译

aarch64-linux-gnu-gcc led.c -o led

导入到开发板

将编译后的程序led拷贝到windows下,再拷贝到开发板中

cp led /mnt/e

 

 

SSH登陆后

输入rz回车

选择程序文件led

点击Add

点击确定

image-20220724001914-11.png  

 

 

 

 

运行

chmod +x led

./led /dev/input/event1 noblock

 

按下开发板上丝印ON/OFF的按键

则对应的蓝色的LED亮和灭。

 

 

总结

米尔的资料是比较友好和全面的,手册,开发环境等都比较详尽,能方便用户快速熟悉开发环境进行二次开发。

另外参考文档中《MYD-YT507H_Linux软件开发指南V1.1.pdf》中相关信息有误,比如

 /dev/input/event0应该为 /dev/input/event1

代码中/sys/class/leds/blue/brightness应该为

/sys/class/leds/heartbeat/brightness等,也没明确按键对应关系。

文档中也没有用户名密码等描述,所以需要手动修改root的密码等等,文档整体比较详细,但是一些细节还是需要尽可能描述清楚,并且保持更新。

参考

http://down.myir-tech.com/MYD-YT507H/

MYD-YT507H_Linux软件开发指南V1.1.pdf

回复评论 (1)

学习了,感米尔有好几款开发板,对应学习起来,还是需要很多时间。感谢分享!
点赞  2022-7-24 10:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复