【elfboard linux开发板】8. watchdog 和 mpu

news2024/11/27 1:30:38

1. 用文件IO的方式使用watchdog

a. ioctl 命令说明

需要的头文件#include <sys/ioctl.h>
格式:int ioctl(int fd, unsigned long request, …)
fd 必须被打开
第二个参数是一个依赖设备的请求代码
第三个参数是一个无类型的内存指针
返回值:成功为0,失败返回-1,并且设置errno

b. 如果要看头文件中的<linux/watchdog.h>,可以到linux板上cat /usr/include/linux/watchdog.h
也可以发送到虚拟机上看
scp /usr/include/linux/watchdog.h liu@192.168.0.112:/home/liu/Desktop/arm/

c. 相关的宏和函数
WDIOC_SETTIMEOUT _IOWR(WATCHDOG_IOCTL_BASE, 6, int)
WDIOC_KEEPALIVE _IOR(WATCHDOG_IOCTL_BASE, 5, int)
atoi: string to int

d. 需要输入的传参
watchdog文件位置,动作,时间

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <linux/watchdog.h>
#include <stdlib.h>
#include <sys/ioctl.h>

int main(int argc,char *argv[]){
        if(argc<2|strncmp("/dev/",argv[1],5))
                exit(1);
        int fd = open(argv[1],O_RDWR);
        int sec = atoi(argv[3]);

        if(fd<0){
                perror("open error");
                exit(1);
        }
        // 
        if(!strcmp(argv[2],"STO"))
        {
                if(ioctl(fd,WDIOC_SETTIMEOUT,&sec)<0)
                        perror("ioctl set timeout");
        }else if(!strcmp(argv[2],"KA")){
                if(ioctl(fd,WDIOC_KEEPALIVE)<0){
                        perror("ioctl keep alive");
                }
                sleep(2);
        }
        while(1);
        close(fd);
        return 0;
}

2. 用文件IO的方式使用MPU

a. 说明
此处不涉及相关驱动(后续待学习),用文件读写的方式读取文件中的陀螺仪、加速度计及温度值;
涉及到分辨率的问题,所以需要转换,假设16位的寄存器,量程位+_2000,其分辨率为: 2 15 / 2000 2^{15}/2000 215/2000
b. 代码

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>



int main(int argc, char *argv[])
{
        int fd = open(argv[1],O_RDWR);
        if(fd<0)
        {
                perror("open error");
                exit(1);
        }
        int ret;
        int buf[7];
        int x,y,z,ax,ay,az,temp;
        float fx,fy,fz,fax,fay,faz,ftemp;
        while (1){
                if((ret = read(fd,buf,sizeof(buf)))==0)
                {

                        lseek(fd,0,SEEK_SET);
                        x = buf[0];
                        y = buf[1];
                        z = buf[2];
                        ax = buf[3];
                        ay = buf[4];
                        az = buf[5];
                        temp = buf[6];

                        fx = (float)(x) / 16.4;
                        fy = (float)(y) / 16.4;
                        fz = (float)(z) / 16.4;
                        fax = (float)(ax) / 2048;
                        fay = (float)(ay) / 2048;
                        faz = (float)(az) / 2048;
                        ftemp = (float)(temp-25) / 326.8 + 25;

                        sleep(1);
                        printf("x = %5.2f,\ty = %5.2f,\tz = %5.2f\nax = %5.2f\tay = %5.2f\taz = %5.2f\ntemp = %5.2f\n",fx,fy,fz,fax,fay,faz,ftemp);
                }
        }
        return 0;
}

c. 结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1357355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 资源大全中文版

文末有链接 资源列表 环境管理 管理 Python 版本和环境的工具 p&#xff1a;非常简单的交互式 Python 版本管理工具。 pyenv&#xff1a;简单的 Python 版本管理工具。 Vex&#xff1a;可以在虚拟环境中执行命令。 virtualenv&#xff1a;创建独立 Python 环境的工具。 …

【React系列】react-router

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识react-router 1.2. 前端路由原理 前端路由是如何做到URL和内容进行映射呢&#xff1f;监听URL的改变。 UR…

Halcon粘连木材图像的目标分割计数

Halcon粘连木材图像的目标分割计数 文章目录 Halcon粘连木材图像的目标分割计数1. 提取面积较小区域2. 分割较大区域3. 区域合并与计数 本文以一个实际场景图片为例&#xff0c;介绍阈值处理与形态学计算的应用。案例图像如图所示,图&#xff08;a&#xff09;为输入的原始图像…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -小程序端TabBar搭建

锋哥原创的uniapp微信小程序投票系统实战&#xff1a; uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

突破技术边界:R与jsonlite库探秘www.snapchat.com的数据之旅

概述 Snapchat是一款流行的社交媒体应用&#xff0c;它允许用户发送和接收带有滤镜和贴纸的照片和视频&#xff0c;以及创建和观看故事和发现内容。Snapchat的数据是非常有价值的&#xff0c;因为它可以反映用户的行为、偏好和趋势。然而&#xff0c;Snapchat的数据并不容易获…

从0开始python学习-40.通过正则表达式/json进行接口关联

目录 1. 正则表达式&#xff1a;使用re库&#xff08;需安装-pip install re&#xff09;&#xff0c;只能提取字符串的数据。 1.1 re.seach&#xff1a;提取一个值&#xff0c;得到的是一个对象&#xff0c;通过下标group(1)取值&#xff0c;如果没有匹配到值则返回None 1.…

优化企业运营,深入探索SAP库存管理解决方案

SAP库存管理是SAP提供的一款领先的企业库存管理解决方案。它致力于帮助企业实现对库存的全面掌控&#xff0c;优化供应链管理&#xff0c;降低库存成本&#xff0c;提高客户满意度。这个功能强大的系统为企业提供了丰富的仓储管理功能&#xff0c;如库存盘点、物料追踪、供应商…

WPF DatePicker与Calendar的使用和样式修改

什么是DatePicker&#xff0c;Calendar Calendar&#xff1a;日历&#xff08;显示年月日视图控件&#xff09;DatePicker&#xff1a;日期选择器&#xff08;是一个更小的控件&#xff0c;点击控件时才会弹出一个日历&#xff09; Calendar使用 常用属性 DisplayMode&#…

MacOS - 苹果电脑程序还能正常启动,但图标消失不见了~

问题描述 网上有一些解决方案说是 killall Finder 命令&#xff0c;重置 Docker 等等&#xff0c;但是发现还是不行&#xff0c;于是必杀技…… 解决方案 方案一、删除该 App&#xff0c;重装即可方案二、如果懒得重装&#xff0c;可以在 Finder 中找到对应的应用程序&#xf…

FPGA高端项目:纯verilog的 10G-UDP 高速协议栈,提供7套工程源码和技术支持

目录 1、前言免责声明更新说明 2、相关方案推荐我这里已有的以太网方案本协议栈的千兆网UDP版本1G 千兆网 TCP-->服务器 方案1G 千兆网 TCP-->客户端 方案10G 万兆网 TCP-->服务器客户端 方案 3、该UDP协议栈性能4、详细设计方案设计架构框图网络调试助手GT资源使用GT…

1.3 金融数据可视化

跳转到根目录&#xff1a;知行合一&#xff1a;投资篇 已完成&#xff1a; 1.1 编程基础   1.1.1 投资-编程基础-numpy   1.1.2 投资-编程基础-pandas 1.2 金融数据处理 1.3 金融数据可视化 文章目录 1. 金融数据可视化1.1. matplotlib1.1.1. 沪深300走势图1.1.2. 日线均线…

06-微服务-SpringAMQP

SpringAMQP SpringAMQP是基于RabbitMQ封装的一套模板&#xff0c;并且还利用SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。 SpringAmqp的官方地址&#xff1a;https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能&#xff1a; 自动声明队列、交…

力扣刷题-二叉树-验证二叉搜索树

98.验证二叉搜索树 给定一个二叉树&#xff0c;判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征&#xff1a; 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 思路 中序遍历下&…

【中小型企业网络实战案例 八】配置映射内网服务器和公网多出口、业务测试和保存配置

相关学习文章&#xff1a; 【中小型企业网络实战案例 一】规划、需求和基本配置 【中小型企业网络实战案例 二】配置网络互连互通【中小型企业网络实战案例 三】配置DHCP动态分配地址 【中小型企业网络实战案例 四】配置OSPF动态路由协议【中小型企业网络实战案例 五】配置可…

Python重温笔记番外篇

1. 写在前面 今天这篇文章是python重温笔记的番外&#xff0c;整理一些面试中的问题以及遇到过的一些坑&#xff0c; 正好借着这个机会把前面的知识进行一个串联&#xff0c; 要不然这些知识很容易就会遗忘&#xff0c; 毕竟知识多而又不太容易常用到。 涉及到的知识包括列表推…

单片机快速入门

参考连接&#xff1a; 安装MinGW-64&#xff08;在win10上搭建C/C开发环境&#xff09;https://zhuanlan.zhihu.com/p/85429160MinGW-64; 链接&#xff1a;https://pan.baidu.com/s/1oE1FmjyK7aJPnDC8vASmCg?pwdy1mz 提取码&#xff1a;y1mz --来自百度网盘超级会员V7的分享C…

Python打印Python环境、PyTorch和CUDA版本、GPU数量名称等信息

代码&#xff1a; import torch import platformgpu_num torch.cuda.device_count() torch_version torch.__version__ python_version platform.python_version()print("Python Version: Python %s" % python_version) print("PyTorch Version: %s" %…

[Javaweb/LayUI/上机考试作业/开源]学生/图书/课程/仓库等管理系统六合一基础功能通用模板

展示 考试要求 给定用户表和六张图书/教师/顾客/仓库....的表&#xff08;随机给每人抽选&#xff09;&#xff0c;要求实现用户登录注册&#xff0c;异步更新&#xff0c;对物品增删改查&#xff0c;精确/模糊查询等。 环境 tomcat 9 mysql 8 java 17 项目结构 项目类图 写前…

分布式【zookeeper面试题23连问】

1. ZooKeeper是什么&#xff1f; ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;它是集群的管理者&#xff0c;监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终&#x…

Prometheus二进制安装包部署

Prometheus安装部署 一&#xff0c;下载安装包并解压 **下载地址&#xff1a;**https://github.com/prometheus/prometheus/releases 因为服务器上下载速度太慢&#xff0c;所以可以提前在物理机上下载上传到服务器&#xff0c;本次安装使用的版本为&#xff1a;prometheus-…