当前位置: 首页 > news >正文

嵌入式web项目框架解读

文章目录

  • 前言
  • 一、阅读Makefile可以迅速了解整个项目框架
  • 二、项目框架中的服务器:boa
  • 三、接口:cgi
  • 四、项目文件
  • 总结


前言

项目框架敬上!!!


一、阅读Makefile可以迅速了解整个项目框架

项目中的Makefile主要分为三个部分:编译、安装、卸载
(1)编译:make;
指定交叉编译工具链选用GCC或是ARM,包括驱动的编译,给出内核的编译路径
(2)安装:make install;
实质是根据需求对编译生成文件的合理分配(比如生成的.cgi文件需要放置在boa服务器的)
(3)卸载: make clean;
将安装的文件删除
目前能理解到的Makefile最大的用处就是在项目开发中进行项目的编译以及安装和卸载,真的非常方便;
2.以数据下行的路径,分文件和功能理解项目

二、项目框架中的服务器:boa

能够对网页进行管理,对boa进行配置能够实现浏览器和APP的数据交互,但是数据交互过来是以form表单的形式;boa服务器就是web服务器,只不过进行交互的实体逻辑.c文件是.cgi格式的,http报文解析都是通过boa自己实现的,用户只需要负责从from表单中提取数据即可,所以这个cgi文件实现的就是对html数据进行解析转化,进而进行下一步的逻辑操作;

三、接口:cgi

cgi的本质就是interface,将.c文件编译为boa服务器需要的.cgi文件,再将生成的文件拷贝到boa服务器的目录下,这里可以直接分析cgi接口下的Makefile,编译过程一目了然;

四、项目文件

(1)led.html,该文件中位于/boa/www/目录下,可以通过boa服务器下的boa.conf文件进行配置,包括登录默认网页(仅地址访问)的html文件也都可以进行配置;
可以进行led的亮灭控制(四个灯哪一个灯亮灯灭都可以),比如2号灯亮,则第一个文本框写2,第二个文本框写1即可,点击sure;紧接着数据会由网页通过http协议将数据下发给boa服务器,服务器中的cgi_led.cgi文件开始进行数据解析和业务逻辑处理;
(2)cgi_led.c c语言格式的APP业务逻辑处理文件;
cgi_led.cgi 能够应用于boa服务器的业务逻辑处理文件;

cgi_led.c 文件中逻辑处理大致如下:
接收并解析来自于网页的控制命令(哪一个灯亮或哪一个灯灭)
将命令存储于控制led结构体中并使用ioctl进行控制
(3)驱动文件中ioctl的命令实现大致如下:
根据ioctl的第二形参确定开灯或关灯
根据第三个参数确定开第几个灯或者关闭第几个灯(gpioremap)
到此为止从网页端到硬件控制的流程已经全部梳理完毕;


总结

本期主要分享的是使用网页控制硬件的流程,主要是梳理了整个项目的基本框架,项目内容相对来讲比较单一,后续会逐步添加功能;最后,各位小伙伴们如果喜欢我的分享可以点赞收藏哦,你们的认可是我创作的动力,一起加油!

相关文章:

嵌入式web项目框架解读

文章目录 前言一、阅读Makefile可以迅速了解整个项目框架二、项目框架中的服务器:boa三、接口:cgi四、项目文件总结 前言 项目框架敬上!!! 一、阅读Makefile可以迅速了解整个项目框架 项目中的Makefile主要分为三个部…...

MySQL什么情况下会死锁,发生了死锁怎么处理呢?

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师…...

数字孪生行业相关政策梳理--智慧水利领域相关政策(可下载)

自2021年国家“十四五”规划纲要提出“探索建设数字孪生城市”以来,国家发展和改革委员会、工业和信息化部、住房和城乡建设部、水利部、农业农村部等部门纷纷出台政策,大力推动数字孪生在千行百业的落地发展。这些政策不仅为数字孪生的应用提供了广阔的…...

SQL plus简单使用

查看Oracle数据库全部数据库 数据库名称 SELECT name FROM v$database;这将返回所有数据库的名称。 视图 通过SQL查询dba_registry视图: 另一个查看数据库的方法是查询dba_registry视图,该视图包含了数据库中安装的所有组件的信息。以下是示例SQL查询…...

pnpm入门教程

一、概述 1、更小 使用 npm 时,依赖每次被不同的项目使用,都会重复安装一次。 而在使用 pnpm 时,依赖会被存储在内容可寻址的存储中。 2、更快 依赖解析。 仓库中没有的依赖都被识别并获取到仓库。目录结构计算。 node_modules 目录结构是…...

JADE盲分离算法仿真

JADE算法原理 JADE 算法首先通过去均值预白化等预处理过程得到解相关的混合信号,预处理后的信号构建的协方差矩阵变为单位阵,为后续的联合对角化奠定基础;其次,通过建立四阶累积量矩阵,利用高阶累积量的统计独立性等性…...

CMake教程-第 1 步:基本起点

CMake教程-第 1 步:基本起点 1 CMake教程介绍2 学习步骤Step 1: A Basic Starting PointStep 2: Adding a LibraryStep 3: Adding Usage Requirements for a LibraryStep 4: Adding Generator ExpressionsStep 5: Installing and TestingStep 6: Adding Support for…...

Linux 或者 Docker 容器通过 date 设置系统时间

目录 1. Linux2. Docker 容器2.1 进入容器内部修改2.2 可能会遇到的问题 1. Linux 要在Linux系统中设置日期和时间,可以使用date命令。 使用以下命令格式来设置日期和时间: sudo date -s "YYYY-MM-DD HH:MM:SS"其中,YYYY表示年份…...

Docker 容器中运行 Kibana

Kibana 的 Docker 镜像可以从 Elastic 官网上的 Docker 镜像仓库获取。该镜像是随 X-Pack 一起打包的。 X-Pack 在这个 image 中是预装好的。安装了 X-Pack,Kibana 会去连接同样带有 X-Pack 的 Elasticsearch 集群。 获取镜像 向 Elastic Docker 仓库发送一条 do…...

【23种设计模式】建造者模式【⭐⭐⭐】

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…...

进阶指针(一)

✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 进阶指针(一) 0.回顾初阶指针1.字符指针1.1 相关面试题 2.数组指针3.指针数组3.1 数组指针的定义3.2 &数组名VS数组名3.3 数组指针的使用 4.数组传参和指针传参4.…...

Linux: code: name: void dev_deactivate(struct net_device *dev)

一开始看这个函数,还以为要做,网卡设备的down操作。 后来一看代码,原来这个函数是在net/sched/sch_generic.c 文件里,而且不是要做网络接口的down操作。操作的结果是:deactivate transmissions on several devices&…...

语义分割——灰度图像转伪彩色图像

目录 检验灰度图检验代码 灰度图转伪彩色图代码转换代码使用细则 示例转换结果总结 检验灰度图 制作语义分割数据集或用训练好模型测试图像时,得到的结果是灰度图像,如下: 检验代码 上面图像灰度值不是全是全为0,灰度范围在[0…...

观察级水下机器人使用系列之七机械手臂

本期是观察级水下机器人使用系列的最后一期,主要讲ROV所使用的机械臂。机械臂正式名称为5功能电动机械,型号为BE-500,由法国公司Ocean Innovation System设计的,可代替人工进行水下作业,完成海底样品采集、打捞、设备定…...

char s[]和char *s的区别,数组和指针的,堆和栈指针的一些思考

最近在学习的时候看到一个概念,数组不等价于指针,很合理但又很难理解。 例如char s[]和char *s有什么区别,前者是数组,后者是指针,个人学习成果如下: 1.char s[]和char *s的区别 char s[]: …...

Flutter快速入门学习(二)

目录 Dart介绍 一些Dart的重要概念 Dart语法学习 变量 内建类型 Number String Boolean List Set Map Symbol 函数 参数类型(可选参数,必选参数) 函数作为另一个函数的参数 匿名函数 运算符 关系运算符 类型判定运算符 赋…...

【Phoenix】phoenix实现每个Primarykey主键保留N版本数据,CDC数据记录为Changelog格式

一、背景: CDC数据中包含了,数据的变更过程。当CDC写入传统数据库最终每一个primary key下会保存一条数据。当然可以使用特殊手段保存多分记录但是显然造成了数据膨胀。 另外数据湖Hudi(0.13.1)是不支持保存所有Changelog其Compaction机制会清除所有旧版…...

阿里云服务器开放的一个新端口,重启防火墙,端口未启动

问题: 阿里云网页开放的一个新端口后,重启防火墙,端口未启动,之前配置的也都停止了。 解决: 原因可能是阿里的服务控制了,只能一个个端口开启了。把新配置新端口也单独启用。 开启80端口指令 firewall-cm…...

【PHPCUSTOM】打包PHP程序为EXE

目录 一、下载PHPCUSTOM 二、PHP网站打包 1、打开PHPCUSTOM 2、配置参数 3、生成exe文件 网上很多PHP程序打包成EXE的文章,但是都不能用,最后找到了PHPCUSTOM,使用PHPCUSTOM可以把PHP程序打包成exe。我们都知道PHP是服务端语言&#xff…...

药品咨询报告合集整理平台打包(一共36597份)【专题推荐】

<医药行业从业者必看>笔者今天分享高价值医药行业报告36500余份的获取/下载方法&#xff0c;报告涵盖了医药细分领域研究报告药品报告&#xff08;所有上市药品&#xff09;医药行业分析报告医药环境观察报告药品市场调研报告药品靶点研究报告医药白皮书&#xff1b;数据…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

Spring Boot面试题精选汇总

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)

上一章用到了V2 的概念&#xff0c;其实 Fiori当中还有 V4&#xff0c;咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务)&#xff0c;代理中间件&#xff08;ui5-middleware-simpleproxy&#xff09;-CSDN博客…...

重启Eureka集群中的节点,对已经注册的服务有什么影响

先看答案&#xff0c;如果正确地操作&#xff0c;重启Eureka集群中的节点&#xff0c;对已经注册的服务影响非常小&#xff0c;甚至可以做到无感知。 但如果操作不当&#xff0c;可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...