正点原子IMX6ULL阿尔法开发板点亮LED

该文章详细介绍了如何准备Linux开发板,包括恢复出厂镜像和烧录系统。接着,作者提供了一个C语言程序来控制LED的开和关,并解释了如何通过交叉编译生成适用于ARM架构的可执行文件。最后,文章讨论了如何将程序部署到开发板上,包括使用NFS和TFTP进行网络下载以及通过固件烧录工具更新系统。
摘要由CSDN通过智能技术生成

目录

一、准备工作

二、编写程序,使得LED能让我们控制

三、开发板上运行可执行程序

四、作者自述


一、准备工作

1.开发板为出厂时的镜像时不需要进行修改

2.开发板不为出厂时的镜像时需要进行修改,改回原来的系统镜像。

(1)官网下载LINUX阿尔法A盘资料

(2)找到开发工具

(2) 进入到【正点原子】阿尔法Linux开发板(A盘)-基础资料(1)\05、开发工具\04、正点原子MFG_TOOL出厂固件烧录工具\mfgtool目录下双击运行Mfgtool2-eMMC-ddr512-eMMC.vbs烧写原来的系统镜像:如下所示

 tips:根据自己开发板是ddr大小和烧写的去向做选择,我这里使用的时emmc版本,ddr为512,所以我选择上述工具。

(3)数据线连接OTG接口,拨码开关拨到USB启动,出现如下所示方为正常,即可点击下载

tips:镜像烧录过程中会出现短暂识别不到USB,这为正常现象,静静等待烧录完成即可。

(4)镜像烧写完成标志,如下所示:

(5)将拨码开关重新拨到emmc启动,重启开发板即可,出现以下信息为进入系统成功。

二、编写程序,使得LED能让我们控制

1.程序代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>

//触发方式
#define LED_TRIGGER     "/sys/class/leds/sys-led/trigger"
//亮度等级
#define LED_BRIGHTNESS  "/sys/class/leds/sys-led/brightness"
#define USAGE()     fprintf(stderr,"usage:\n""   %s<on|off>\n""   %s<trigger><type>\n",\
                            argv[0],argv[0])

int main(int argc,char* argv[])
{
    int fd1,fd2,ret;

    //检验传参
    if(argc < 2)
    {
        USAGE();
        exit(-1);
    }

    //打开文件
    fd1 = open(LED_TRIGGER,O_RDWR);
    if(fd1 == -1)
    {
        perror("open error1");
        exit(-1);
    }

    fd2 = open(LED_BRIGHTNESS,O_RDWR);
    if(fd2 == -1)
    {
        perror("open error2");
        ret = -1;
        goto out1;
    }

    //根据传参控制LED
    if(strcmp(argv[1],"on") == 0) //使用字符串比较函数,相等返回0
    {
        //修改触发方式,无触发none
        write(fd1,"none",4);
        //修改亮度等级为1
        write(fd2,"1",1);
    }
    else if(strcmp(argv[1],"off") == 0)
    {
        //修改触发方式,无触发none
        write(fd1,"none",4);
        //修改亮度等级为0
        write(fd2,"0",1);
    }
    else if(strcmp(argv[1],"trigger") == 0)
    {
        //检验传参
        if(argc != 3)
        {
            USAGE();
            ret = -1;
            goto out2;
        }

        //修改触发方式
        if(write(fd1,argv[2],strlen(argv[2])) < 0)
        {
            perror("write error");
            ret = -1;
            goto out2;
        }
    }
    else
    {
        USAGE();
    }
    
    

out2:
    close(fd2);
out1:
    close(fd1);
    exit(-1);
}

2.编译可执行文件

        因为我是在X86架构CPU上写的LED程序,但是我们要在ARM架构上运行这个可执行文件,GCC编译出来的可执行文件为x86类型,所以我们得使用交叉编译工具在X86架构上编译程ARM架构的可执行文件。交叉编译工具可以参考《正点原子驱动开发指南》pdf的163页,详细的去讲述了如何去安装这个交叉编译工具。

3.生成可执行文件如下所示:

三、开发板上运行可执行程序

1.将可执行程序放到开发板上

(1)本实验这里使用的是nfs和tftp进行网络下载。将可执行程序拷贝到文件系统目录下即可。

(2)查看开发板上有无这个文件,如下所示:

 (3)点亮LED灯

 tips:亮红色的为可程序控制的LED灯

 2.其它方法

        将可执行文件放到【正点原子】阿尔法Linux开发板(A盘)-基础资料(1)\05、开发工具\04、正点原子MFG_TOOL出厂固件烧录工具\mfgtool\Profiles\Linux\OS Firmware\files\filesystem目录下的rootfs.tar.bz2压缩包里。然后回到文章开头重新对它进行烧录即可。

 

四、作者自述

        文章只是记录一下生活,文章有错的地方欢迎指出。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值