目录
一、准备工作
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压缩包里。然后回到文章开头重新对它进行烧录即可。
四、作者自述
文章只是记录一下生活,文章有错的地方欢迎指出。