博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在 S5PV210 的 开发板上 点亮 一个 LED 灯
阅读量:6527 次
发布时间:2019-06-24

本文共 3776 字,大约阅读时间需要 12 分钟。

 

参考学习教程:

 

材料:首先 准备一个 安装好 Linux 的 开发板  

 使用  xshell 工具 连接 开发板  ,winscp 工具 连接 开发板  ,  准备 一个 Ubuntu  32位 ,装上 交叉编译链。。

使用下面 代码 和 Makefile 文件 进行编译  ,生成的  执行 文件  利用 winscp 软件复制到 Linux开发板上 ,利用 xshell 运行 这个可执行文件。

 

下面    代码的  功能  是   新建 一个 TCP 客户端 连接服务器 (Windows上 的一个 网络 调试工具 NetAssist.exe ,简称网络调试助手 ,类似串口工具)

 

 注意 其中:  #define LED_PATH "/sys/devices/platform/x210-led"  是  开发板 中   led   的路径

 

 

#include 
#include
#include
#include
#include
#include
#include
#include
#include
//socket 头文件 2017年6月28日09:40:47,所长#include
#include
#include
#include
#include
#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[40],data[2]; int fd, ret, flag; strcpy(path, LED_PATH); if ( ledNumber == 1 ) strcat(path, "/led1"); else if( ledNumber == 2 ) strcat(path, "/led2"); else if( ledNumber == 3 ) strcat(path, "/led3"); else if( ledNumber == 4 ) strcat(path, "/led4"); else return -1; printf("打开路径%s文件",path); fd = open(path, O_RDWR);//打开/sys/devices/platform/x210-led路径下的 led ledNumber 文件 if( fd < 0 ) //判断是否打开失败 { perror("open"); return -2; } else { printf("led%d 文件打开成功.\r\n",ledNumber); } if( ledOperationType == 1) ret = write(fd, OPEN_LED, strlen(OPEN_LED) );//文件写入内容: OPEN_LED else if( ledOperationType == 0) ret = write(fd, OFF_LED, strlen(OFF_LED) ); //文件写入内容: OFF_LED else return -3; if( ret < 0 ) { perror("write"); return -4; } else { flag =1; 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 0; }int main(int argc, char *argv[]){ int flag =0 ; int conn_sock; struct sockaddr_in server_addr; char tempBuffer[64] ={ 0}; 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, 0); if (conn_sock < 0) { perror("socket(2) error"); goto create_err; } else { printf("socket 创建成功 .\r\n"); } if (connect(conn_sock,(struct sockaddr *)&server_addr,sizeof(server_addr)) < 0) { 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) ) < 0) { perror("receive data error"); printf("接收数据失败.\r\n"); //goto err; } //printf("接收的数据是:%s\n", tempBuffer); led( tempBuffer[0] - 0x30, tempBuffer[1] - 0x30 ); sprintf(tempBuffer,"LED%c ledOperationType(1:OPEN 0:OFF):%c OK.\r\n",tempBuffer[0], tempBuffer[1]); if (write(conn_sock, tempBuffer, strlen(tempBuffer)) < 0) { perror("send data error"); //goto err; } } err: close(conn_sock); return -1; create_err: fprintf(stderr, "client error"); return -1; /* 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 += -Wallobj := led src := led.cCC  := arm-linux-gcc $(obj): $(src)    $(CC) $(CFLAGS) $^ -o $@ -g.PHONY: cleanclean:    -rm $(obj)

 

 

转载于:https://www.cnblogs.com/suozhang/p/7093119.html

你可能感兴趣的文章
微软职位内部推荐-Senior SDE
查看>>
OData and Authentication of WCF
查看>>
树莓派 log 日志 打印到 TXT
查看>>
谈谈以前端角度出发做好SEO需要考虑什么?
查看>>
使用 Blender* 重新拓扑 VR 和游戏素材
查看>>
如何调优JVM - 优化Java虚拟机(大全+实例)
查看>>
初识bigdata时的一些技能小贴士
查看>>
NOIp 2006 作业调度方案 Label:坑 模拟(tyvj你不给我ac,我就把名字献给附中oj)...
查看>>
linux的性能优化
查看>>
truncate有外键约束的表,报ORA-02266处理。
查看>>
andriod中R文件丢失的处理办法
查看>>
Spring_通过Bean的Factory配置Bean
查看>>
sencha-touch2.0控件nestlist的简单用法
查看>>
[K/3Cloud] 创建一个业务单据表单插件
查看>>
P3366 (模板)最小生成树
查看>>
类的static,const,static const , const static成员的初始化
查看>>
流水线和PC指针
查看>>
Fiddler设置抓取https请求
查看>>
div布局小技巧
查看>>
OCP 12c最新考试原题及答案(071-4)
查看>>