led点灯程序
下面使用一段简单代码来演示如何控制LED,并且让大家了解应用编写时常用的文件I/O模型:
程序步骤如下:
(一)LED1_BRIGHTNESS、 LED2_BRIGHTNESS两个宏分别对应LED1、LED2两个灯的亮度属性;
(二)使用open分别打开两个亮度属性文件,如果错误返回报错;
(三)间隔0.5秒,打开和关闭两个LED灯;
(四)退出时使用close关闭属性文件;
编译源码
此时就有个问题,我们好不容易写好的第一个程序怎么放到开发板执行呢?直接把led.c拷贝到开发板上好像不行,因为led.c是C语言,而开发板只认识二进制程序。如果使用之前ubuntu中介绍过的gcc编译工具,用gcc编译完放到开发板上会发现无法执行,会提示格式错误。
这是因为虚拟机是在电脑上,属于x86架构,而开发板是arm架构,不同架构主机上分别编译运行的话就需要用到交叉编译链。
在虚拟机设置交叉编译链的环境变量,查看环境变量$CC:
这个$CC变量就是交叉编译器arm-poky-linux-gnueabi-gcc + 配置参数。
首先创建led.c文件,将上面代码添加到led.c文件,保存退出并编译:
ELF 1板卡验证
将生成的可执行程序led拷贝到开发板:
在开发板执行程序:
观察现象,可以看到红绿灯同时循环闪烁。