在 S5PV210 的 开发板上 点亮 一个 LED 灯
参考学习教程:周立功嵌入式Linux开发教程-(上册)
材料:首先 准备一个 安装好 Linux 的 开发板
使用 xshell 工具 连接 开发板 ,winscp 工具 连接 开发板 , 准备 一个 Ubuntu 32位 ,装上 交叉编译链。。
使用下面 代码 和 Makefile 文件 进行编译 ,生成的 执行 文件 利用 winscp 软件复制到 Linux开发板上 ,利用 xshell 运行 这个可执行文件。
下面 代码的 功能 是 新建 一个 TCP 客户端 连接服务器 (Windows上 的一个 网络 调试工具 NetAssist.exe ,简称网络调试助手 ,类似串口工具)
注意 其中: #define LED_PATH "/sys/devices/platform/x210-led" 是 开发板 中 led 的路径
#include <stdint.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#include <string.h> //socket 头文件 2017年6月28日09:40:47,所长
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <errno.h>
#include <stdbool.h> #define LED_PATH "/sys/devices/platform/x210-led" #define OPEN_LED "1"
#define OFF_LED "0" #define LED1 1
#define LED2 2
#define LED3 3
#define LED4 4 #define ledOperationTypeOPEN 1
#define ledOperationTypeOFF 0 #define SERVER_IP "192.168.10.11"
#define SERVER_PORT ((uint16_t)7007) int led(int ledNumber,int ledOperationType)
{ char path[],data[]; int fd, ret, flag; strcpy(path, LED_PATH); if ( ledNumber == )
strcat(path, "/led1");
else if( ledNumber == )
strcat(path, "/led2");
else if( ledNumber == )
strcat(path, "/led3");
else if( ledNumber == )
strcat(path, "/led4");
else
return -; printf("打开路径%s文件",path); fd = open(path, O_RDWR);//打开/sys/devices/platform/x210-led路径下的 led ledNumber 文件 if( fd < ) //判断是否打开失败
{
perror("open");
return -;
}
else
{
printf("led%d 文件打开成功.\r\n",ledNumber);
} if( ledOperationType == )
ret = write(fd, OPEN_LED, strlen(OPEN_LED) );//文件写入内容: OPEN_LED
else if( ledOperationType == )
ret = write(fd, OFF_LED, strlen(OFF_LED) ); //文件写入内容: OFF_LED
else
return -; if( ret < )
{
perror("write");
return -;
}
else
{
flag =;
printf("led%d 文件写入ledOperationType(1:打开LED 0:关闭LED): %d 数据成功.\r\n",ledNumber,ledOperationType);
} /* for(;;)
{ //闪烁 LED1 if( flag == 1 )
{//如果LED灯 是打开的状态 就关闭LED灯
flag = 0;
ret = write(fd, OFF_LED, strlen(OFF_LED) );//文件写入内容: OFF_LED
}
else
{//如果LED灯 是关闭的状态 就打开LED灯
flag = 1;
ret = write(fd, OPEN_LED, strlen(OPEN_LED) );//文件写入内容:OPEN_LED
} sleep(1); } */ printf("关闭文件,退出进程!\r\n"); close(fd);//文件写入完毕后 要进行关闭文件 return ; } int main(int argc, char *argv[])
{
int flag = ; int conn_sock; struct sockaddr_in server_addr; char tempBuffer[] ={}; server_addr.sin_addr.s_addr = inet_addr(SERVER_IP);
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(SERVER_PORT); conn_sock = socket(AF_INET, SOCK_STREAM, ); if (conn_sock < )
{
perror("socket(2) error");
goto create_err;
}
else
{
printf("socket 创建成功 .\r\n");
} if (connect(conn_sock,(struct sockaddr *)&server_addr,sizeof(server_addr)) < )
{
perror("connect(2) error"); printf("连接服务器IP:%s 端口号:%d 连接失败 .\r\n",SERVER_IP,SERVER_PORT); //goto err;
}
else
{
printf("连接服务器IP:%s 端口号:%d 连接成功 .\r\n",SERVER_IP,SERVER_PORT);
} for(;;)
{
if ( read( conn_sock, tempBuffer, sizeof(tempBuffer) ) < )
{
perror("receive data error"); printf("接收数据失败.\r\n"); //goto err;
} //printf("接收的数据是:%s\n", tempBuffer); led( tempBuffer[] - 0x30, tempBuffer[] - 0x30 ); sprintf(tempBuffer,"LED%c ledOperationType(1:OPEN 0:OFF):%c OK.\r\n",tempBuffer[], tempBuffer[]); if (write(conn_sock, tempBuffer, strlen(tempBuffer)) < )
{
perror("send data error");
//goto err;
}
} err:
close(conn_sock);
return -; create_err:
fprintf(stderr, "client error");
return -; /* for(;;)
{
//闪烁 LED1 if( flag == 1 )
{//如果LED灯 是打开的状态 就关闭LED灯
flag = 0;
led( LED1 ,ledOperationTypeOFF );
}
else
{//如果LED灯 是关闭的状态 就打开LED灯
flag = 1;
led( LED1 ,ledOperationTypeOPEN );
} sleep(1); } */ }
注意 下面 是 Makefile 文件 : 其中 arm-gcc-linux 在 安装交叉 编译器 的时候被我 重定义了 应该是 :arm-none-linux-gnueabi-gcc
CFLAGS += -Wall
obj := led
src := led.c
CC := arm-linux-gcc $(obj): $(src)
$(CC) $(CFLAGS) $^ -o $@ -g .PHONY: clean
clean:
-rm $(obj)
在 S5PV210 的 开发板上 点亮 一个 LED 灯的更多相关文章
- 第一个FPGA工程----点亮开发板上的3个LED灯
第一个FPGA工程----点亮开发板上的3个LED灯 1.新建FPGA工程 开启Quartus2的画面 File--New Project Wizard..指定工程的路径与工程名 指定所使用的FPGA ...
- 点亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- 进阶之路(基础篇) - 001 亮一个led灯
/********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...
- 在 S5PV210 的 开发板上 使用 串口 收发信息
参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用 xshell 工具 连接 开发板 ,winscp 工具 连接 开发板 , 准 ...
- 单片机基础——使用GPIO输出点亮一个LED灯
1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...
- 《STM32CubeMX配置STM32H743XI工程》第一讲《初始化UART,重定义printf函数,点亮一个LED灯》
1.打开STM32CubeMX软件->新建一个工程(软件自行到ST官网下载安装) 2.输入对应的芯片型号(本次基于野火STM32H743XI Pro 开发板)点击Start Project生成项 ...
- linux IMX6 汇编点亮一个LED灯
驱动Linux引脚与驱动STM32其实是一样的,都是在操作寄存器,在相应的寄存器上附上相应的值即可驱动. IMX6U手册上有各个管脚的命名,跟STM32不同,IOMUXC_SW_MUC_CTL_PAD ...
- 第一个程序点亮一个LED灯
#include <reg52.h> // 引用52包文件 可以理解为命名空间 sbit P1_0 = P1^0; // 定义P1管脚0 void main() ...
- 51单片机---点亮一个LED灯
1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; ...
随机推荐
- python安装后无法用cmd命令pip 装包
出现问题: 原因:没有添加环境变量. 解决方法:将python安装目录下的Script目录添加进环境变量,其中有pip.exe,在cmd中输入pip install命令时要运行pip.exe. win ...
- 用java访问Oracle数据库、取得记录并输出到界面
Class.forName(“oracle.jdbc.driver.OracleDriver”);Connection conn=DriverManager.getConnection( url , ...
- CSS Align bottom
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- MSSQL中的表变量
最近在看<Microsoft SQL Server2005技术内幕:T-SQL程序设计> 1.表变量的事务上下文中提到,表变量不受外部事务回滚影响. 举个例子: DECLARE @TA ...
- Struts22222
一,什么是框架? 所谓框架就是提供了一组统一的接口和编程方式的可以重用组件,同时我们可以在框架中扩充我们自己的特定逻辑. 二,MVC设计模式 将应用程序分为3个部分:模型 Model,视图View, ...
- HTML中的图片
在一开始时,Web仅有文本,那真的是很无趣.幸运的是,没过多久网页上就能嵌入图片和其他有趣的内容了.虽然还有许多其他类型的多媒体,但是从地位比较低的<img>元素开始是符合逻辑的,它常常被 ...
- js 判断 复选框全选、全不选、反选、必选一个
一个挺 使用的 js 代码片段, 判断 复选框全选.全不选.反选.必选一个 记录下, 搬来的 思路: 修改数据的 选中与否状态, 拿到所有的输入框,看是否有选中的状态 <html> & ...
- spring 与springmvc容器的关系
spring容器是springmvc的父容器,而父容器是不能访问子容器中的东西,但子容器可以访问父容器的东西
- jpa dialect设置
1.如果配置文件格式为application.properties,在配置文件中添加以下代码即可: spring.jpa.database-platform=org.hibernate.dialect ...
- maven(16)-灵活的环境构建
多个环境 一个项目,在家的时候可能会在本机上运行,在公司可能在内网测试环境运行,上线后会在生产环境运行,在不同的环境中会有一些配置是不一样的,至少数据库就不一样.如果每换一个环境就去改所有配置太 ...