参考学习教程:周立功嵌入式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 灯的更多相关文章

  1. 第一个FPGA工程----点亮开发板上的3个LED灯

    第一个FPGA工程----点亮开发板上的3个LED灯 1.新建FPGA工程 开启Quartus2的画面 File--New Project Wizard..指定工程的路径与工程名 指定所使用的FPGA ...

  2. 点亮一个led灯

    /********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...

  3. 进阶之路(基础篇) - 001 亮一个led灯

    /********************************* 代码功能:点亮一个led灯 使用函数: pinMode(引脚号,模式); digitalWrite(引脚号,电平状态); //默认 ...

  4. 在 S5PV210 的 开发板上 使用 串口 收发信息

    参考学习教程:周立功嵌入式Linux开发教程-(上册) 材料:首先 准备一个 安装好 Linux 的 开发板 使用  xshell 工具 连接 开发板  ,winscp 工具 连接 开发板  ,  准 ...

  5. 单片机基础——使用GPIO输出点亮一个LED灯

    1. 准备工作 硬件准备 开发板首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接. 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码,可参考MDK安装教程 ...

  6. 《STM32CubeMX配置STM32H743XI工程》第一讲《初始化UART,重定义printf函数,点亮一个LED灯》

    1.打开STM32CubeMX软件->新建一个工程(软件自行到ST官网下载安装) 2.输入对应的芯片型号(本次基于野火STM32H743XI Pro 开发板)点击Start Project生成项 ...

  7. linux IMX6 汇编点亮一个LED灯

    驱动Linux引脚与驱动STM32其实是一样的,都是在操作寄存器,在相应的寄存器上附上相应的值即可驱动. IMX6U手册上有各个管脚的命名,跟STM32不同,IOMUXC_SW_MUC_CTL_PAD ...

  8. 第一个程序点亮一个LED灯

    #include <reg52.h> // 引用52包文件 可以理解为命名空间 sbit P1_0 = P1^0;   // 定义P1管脚0 void main()             ...

  9. 51单片机---点亮一个LED灯

    1 程序源码 #include <REGX52.H> `包含51单片机的头文件` sbit led = P0^0; int main(void) { while(1) { led = 1; ...

随机推荐

  1. SQLHappy微软数据库连接查询操作,对数据的处理和查询

    (软件已更新,部分介绍与新版软件有出处) 1.服务连接界面介绍 2.主界面介绍 3.表搜索介绍 4.命令菜单部分介绍 5.插件介绍 6.帮助菜单介绍 7.数据库列表右键菜单 8.数据库结构和数据操作( ...

  2. JavaScript高级编程———数据存储(cookie、WebStorage)

    JavaScript高级编程———数据存储(cookie.WebStorage) <script> /*Cookie 读写删 CookieUtil.get()方法根据cookie的名称获取 ...

  3. C# 后台解析json,简单方法 字符串序列化为对象,取值

    如果后台是一个JSON的字符串格式如下: string str = "{\"Success\":true,\"Msg\":\"成功!\&qu ...

  4. java中字节流与字符流以及字节流多余字节问题

    1.字节流 字节流byte为单位对文件的数据进行写入与读取操作.字节的方式在复制音频图片文件时比较适用,但在对于普通文件的读写上有两大缺陷: 第一,字节流在读取中文字符时,若设定的字节数组长度刚好末尾 ...

  5. security权限控制

    目录 前言 数据库和dimain 静态页面 配置文件 web.xml引入 service校验方法 用户名的获取 不同角色访问控制权限 jsp页面 后台 前言 spring自带角色权限控制框架 用户-角 ...

  6. D3 JS study notes

    如何使用d3来解析自定义格式的数据源? var psv = d3.dsvFormat("|"); // This parser can parse pipe-delimited t ...

  7. SpringMVC笔记——SSM框架搭建简单实例

    落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...

  8. CSMA/CD 3

    一.二进制指数类型退避算法 (truncated binary exponential type) 发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据. 目的:重传时再次发生碰撞的 ...

  9. Spring配置文件中的parent与abstract

    在看项目的Spring配置文件时,发现消息队列的配置采用了继承方式配置Bean,在这梳理总结一下. 其实在基于spring框架开发的项目中,如果有多个bean都是一个类的实例,如配置多个数据源时,大部 ...

  10. vue 项目搭建笔记1

    1.首先安装node.js(傻瓜式安装,安装路径默认C盘) 2.打开node.js command prompt 3.进入想放项目的文件夹.如D:  -->回车 4.进入具体文件夹,如cd wo ...