参考学习教程:周立功嵌入式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. cf1090 I.Minimal Product(贪心)

    题意 题目链接 给出长度为\(n\)的序列\(a\),序列中的元素取值为\([-2e9, 2e9]\) 找到两个位置\((i, j) (i <j, a[i] < a[j])\),最小化\( ...

  2. HTML5之新增的元素和废除的元素 (声明:内容节选自《HTML 5从入门到精通》)

    新增结构元素: section元素 section元素定义文档或应用程序中的一个区段,比如章节.页眉.页脚或文档中的其他部分.它可以与h1,h2,h3,h4,h5,h6元素结合起来使用,标示文档结构. ...

  3. jQuery瀑布流+无限加载图片

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Spring的大框架

    初识Spring: Spring作者:Rod Johnson Spring框架由20个模块组成,这些模块分成六个部分,分别是Core Container,Data Access/Integration ...

  5. Sql Server 2012 Local DB发布到服务器端后无法访问

    背景 基于Windows认证的Web application, 通过Visual Studio 2013创建的LocalDB位于App_Data目录下 现象 本地调试没有任何问题.发布到服务器(Win ...

  6. DHCP服务搭建

    DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP ...

  7. Android设备网络压力测试

    网络测试的几个维度: 网络的性能 带宽:通过TCP测试来量度 时延:用ping命令量度 数据报丢失:用Iperf UDP测试来量度 Jitter(延时变化):用Iperf UDP测试来量度 信号强度( ...

  8. Windows server 2008系统各类版本的优缺点比较,Windows2008系统标准版 企业版 数据中心版 WEB版等

    大家都知道Windows Server 2008 发行了多种版本,以支持各种规模的企业对服务器不断变化的需求.Windows Server 2008 有 5 种不同版本,另外还有三个不支持 Windo ...

  9. C#:安装Windows服务,动态指定服务名及描述(转载)

    来源:http://www.cnblogs.com/Fooo/p/3476675.html Installer.cs public Installer() { InitializeComponent( ...

  10. iOS自动化-iOS录屏xrecord及解决iPhone设备不显示的问题

    github地址:https://github.com/WPO-Foundation/xrecord 安装方法: git clone https://github.com/WPO-Foundation ...