嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读

技术阅读

  • 基于总线设备驱动模型的LED分析

    2024-07-22

    前言 大家好,我是LinuxZn​。本篇文章我们继续来点灯~本本基于总线设备驱动模型来点灯。从LED程序中我们可以榨取很多知识:基本的驱动框架、驱动的简单分层、驱动的分层+分离思想、总线设备驱动模型、设备树等。这大多都是结合韦老师的教程学的,这篇笔记结合第5个demo来学习、分析:框图 LED程序的几个层次结构图:本篇笔记基于第④个图来分析。程序分析 关于总线设备驱动模型的理论知识我们在上一篇笔记中也有简单地学习过了。这篇笔记我们来分析、学习程序。下面分析主要基于上面的框图4:应用程序ledtest.c:int main(int argc, char **arg...

  • 设备树实例分析,进一步理解设备树!

    2024-07-22

    前言 大家好,我是LinuxZn。我们可以从LED程序中榨取很多知识:基本的驱动框架、驱动的简单分层、驱动的分层+分离思想、总线设备驱动模型、设备树等。这大多都是结合韦老师的教程学的。这篇笔记结合第6个demo(基于设备树)来学习、分析:框图 下面是LED程序的几个层次结构图:注意:层与层之间的箭头指向是相对的,从哪指向哪看你怎么理解。比如有两个函数:函数A和函数B,我们可以说函数A调用函数B,也可以说函数B被函数A调用。本篇笔记基于第⑤个图来分析。体验设备树 我们先来体验一下使用设备树描述引脚信息的方式来点灯。以百问网开发板为例,...

  • Linux 基础 - IO 全面介绍

    2024-07-22

    Linux - 基础 IO Linux - 基础 IO文件 IO 相关操作stdin & stdout & stderr系统文件 I/O文件的宏观理解:狭义理解:1.文件在磁盘里2.磁盘是永久性存储介质,因此文件在磁盘上的存储是永久性的3.磁盘是外设(即是输出设备也是输入设备)4.磁盘上的文件 本质是对文件的所有操作,都是对外设的输入和输出 简称 IO广义理解:1.Linux 下一切皆文件(键盘、显示器、网卡、磁盘…… 这些都是抽象化的过程)文件操作的归类认知:1.对于 0KB 的空文件是占用磁盘空间的2.文件是文件属性(元数据)和文件内容的集合(文件 = 属性(元数据)+ 内容)3.所有的文件...

  • 如何实现程序开机自启动?

    2024-07-22

    星标「Linux大陆」,一起进步!大家好,我是LinuxZn。在这篇文章中我们给开发板配置了网络,但是板子重启之后,又得手动输入命令去配置连接WiFi。在、及这两篇文章中我们每次都是先登录开发板,再启动我们的boa服务器。显然,这很不方便。这篇笔记我们就一起来解决这个痛点。设置板子重启之后自动连接WiFi、boa服务器开机自动启动,以及设置我们的应用程序开机自启动。嵌入式Linux初始化程序1、init进程init进程是内核加载的第一个用户空间的进程,PID为1,负责加载用户空间的服务和程序。如:2、init的种类在嵌入式Linux中,不同的文件系统有不同的...

  • 整理了一份Linux设备树基础知识!

    2024-07-22

    笔记整理自百问网+正点原子前言 大家好,我是LinuxZn。之前分享的笔记:中在platform_device部分有简单说明描述设备有两种方法:一种是使用platform_device结构体来指定;另一种是使用设备树来描述。本篇笔记我们就来简单地学习一下设备树的一些知识。什么是设备树 设备树简单理解就是描述设备信息(资源)的一棵树。设备树(Device Tree)用代码体现如下:这些代码被保存在.dts/dtsi后缀文件中,也即设备树源文件 DTS(DeviceTree Source)。这些源文件同我们的C代码一样,并不能直接使用的,而是得经过一个编译过程生成机器可运行的二进制文件,如:...

  • TCP server如何与多个client通信?(附代码)

    2024-07-22

    大家好,我是LinuxZn。上一篇文章我们分享了,其demo中我们只是简单地实现一对一的收发。但是实际开发中,tcp server是要支持与多个client同时进行通信的,本篇分享一对多的收发,也即tcp server并发处理。tcp server实现并发的方式有:多进程、多线程。多进程开销比较大,不常用。本篇笔记我们分享多线程的方法。简单的demo tcp_server.c:左右滑动查看全部代码>>>#include <pthread.h>#include "tcp_socket.h"static pthread_t cli_data_proce_thread_tid;static void *process_client_data(void *arg){    int client_fd = *(int*)...

  • 什么是总线设备驱动模型?

    2024-07-22

    大家好,我是ZhengNL。本篇文章分享Linux中的总线设备驱动模型:Linux内核中存在着更多的分离、分层思想的代码,platform平台设备驱动就是用了这样的思想。本篇笔记我们一起来学习一下platform驱动框架。Linux引入platform的原因 对于 Linux 这样一个成熟、庞大、 复杂的操作系统,代码的重用性非常重要,否则的话就会在 Linux 内核中存在大量无意义的重复代码。为了能提高驱动代码的重用性,因此引入了 platform。下面以一个例子来说明传统的设动转变至Linux 总线、驱动和设备模式 (截图来源:《正点原子Linux驱动开发指南》):最后一张图就是Lin...

  • 如何搭建一个简单的嵌入式web服务器?

    2024-07-22

    星标「Linux大陆」,一起进步!大家好,我是LinuxZn。对不起,我骗了大家,不止十分钟之前分享的文章:中分享了几种可以在嵌入式中使用的web服务器。嵌入式 web 服务器就是把 web 服务器移植到嵌入式系统的服务器。它仍然是基于http文本协议进行通信的,具有标准的接口形式,对客户端来说,访问嵌入式 web服务器就和访问普通的web 服务一样。我们在实际工作中也有在板子上搭建web服务器,给我们调试带来了一些便利,可以通过网页与板子进行交互,板子在没有显示屏的情况下,也可以作为一种方案来进行功能展示。web服务器——boa本文演示如何把boa移...

  • 通过一个小实例来认识总线错误,避免采坑!

    2024-07-22

    大家好,我是LinuxZn。最近踩了一个总线错误的坑,简单总结、复盘分享给大家:什么是总线错误? 平时开发过程中,我们常遇到的、引起进程崩溃的错误,大多都是段错误吧。段错误(segmentation fault)就是指访问的内存超出了系统所给这个程序的内存空间,比如操作空指针、数组越界等。与段错误比较相似,总线错误(Bus Error)就是因为对非对齐地址的访问导致CPU读取数据违反了一定的总线规则。CPU处于性能方面的考虑,要求对数据进行访问时都必须是地址对齐的。如果发现进行的不是地址对齐的访问,就会发送SIGBUS信号给进程,使进程产生 core dump...

  • 从LED驱动开始学习Linux驱动

    2024-07-22

    大家好,我是ZhengNL。本篇文章继续分享驱动基础:与硬件无关的LED驱动 回顾hello驱动程序,我们的根据实际需求对其进行写字符串与读字符串操作。这里我们当然也要根据实际来思考我们的LED驱动程序。在STM32点灯的时候,一般输出低电平点灯,输出高电平灭灯。在嵌入Linux操作系统的情况下,我们自然也要想到有个写1/0的思想。类比我们上一篇的hello程序:我们的LED程序自然要写入的数据为0/1来点亮、熄灭LED。这里我们做的实验室与硬件无关的LED实验:我们的驱动程序在收到应用程序发送过来的0时打印led on、收到1时打印led off。模仿上一篇的hello...

  • mysql的varchar字段最大长度真的是65535吗?

    2024-07-22

    在mysql建表sql里,我们经常会有定义字符串类型的需求。CREATE TABLE `user` (  `name` varchar(100) NOT NULL DEFAULT '' COMMENT '名字') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;比方说user表里的名字,就是个字符串。mysql里有两个类型比较适合这个场景。char和varchar。声明它们都需要在字段边上加个数组,比如char(100)和varchar(100),这个100是指当前字段能放的最大字符数。char和varchar的区别在于,varchar虽然声明了最大能放100个字符,但一开始不需要分配100个字符的空间,可以根据需要慢慢增加空间。而char一开始声明...

  • linux中叹号(!)的10个技巧

    2024-07-22

    '!'Linux 中的符号或运算符可用作逻辑否定运算符,也可通过调整从历史记录中获取命令,或通过修改运行先前运行的命令。以下所有命令均已在 bash Shell 中明确检查。虽然我没有检查过,但其中大部分不会在其他 shell 中运行。按命令编号运行历史记录中的命令。您可能不知道您可以从历史命令(已经 / 较早执行的命令)运行命令这一事实。要开始,首先通过运行 “history” 命令找到命令编号。$ history现在,在history的输出中,仅按照它出现的编号运行来自history的命令。假设运行出现在'history' 命令输出中编号为1551的命令。$ !1551并且,它运行...

  • Linux下文本编辑神器:Vim 最全图解

    2024-07-22

    作者:架构思考 1本文围绕Vim键位进行图解,最经典的版本如下所示。经典版英文版简体中文版对于上文提到的经典版不论是英文版还是简体中文版,根据你的英语水平进行选择。经典版其实都是一系列的入门教程键位图的组合结果,下面是不同编辑模式下的键位图。一口吃不成胖子,因此我们可以分步骤从易到难进行学习。入门版基本操作的入门版。进阶版增强版下图是一个更新时间较新的现代版,含有的信息也更丰富。文字版为了照顾喜欢纯文字的老铁,整理了常用的命令:按字符、单词和标记移动按字符、单词和标记移动光标移动一个字符的基本键是:h–向左移...

  • Linux终端操作高效率快捷键

    2024-07-22

    链接:https://my.oschina.net/u/4526289/blog/4651990今天给大家分享一下Linux下终端中命令操作常用的快捷键。作为一名Linux下的开发人员,和Linux系统打交道是每天必做的事情,通过Linux终端下命令行与Linux进行交互。熟练掌握Linux终端下命令行的操作可以让我们的工作达到事半功倍的效果,熟悉常用的终端命令快捷键可以很大程度上提高我们的工作效率。下面是平时常用的终端快捷键,希望小伙伴们熟练掌握,并灵活运用。记得收藏、分享呦!!!1、终端及标签页快捷键 快捷键功能Shift+Ctrl+T新建标签页Shift+Ctrl+W关闭标签页Ctrl+PageUp前一标签页...

  • 35个python实战项目,完整源代码!

    2024-07-22

    收集整理最新36个python实战项目源代码,系统实用,不是普通的小脚本!多看多练是提升代码能力的最佳途径,一起操练起来!视频转字符动画12306B站弹幕B站滑块验证码破解GUI签名python爬取并简单分析51jobpython破解滑块验证码pothon实现代码雨效果python制作简易时钟tkinter计算器web安全WIFI测试百度搜索引擎电影小助手动态更新地球壁纸抖音表白小程序多肉数据查询系统二维码生成器翻译飞机大战记录键盘简单计时器截图工具快递查询美肤妹子你生日那天的宇宙爬明日小说爬斗鱼颜值主播爬简书让电脑蜂鸣器唱歌人工智能生成新年祝福贺卡视频下载私人邮...

  • 这款轻量级可视化路由追踪的神器,太强了!

    2024-07-22

    在 Linux 环境下,用于网络管理的命令有很多。比如:ifconfig、ifup / ifdown、route、arp、netstat、ping、telnet、wget、nslookup 等等。除此之外,还有 traceroute 用来追踪数据包到目标主机间传输时的全部路径,tracepath 用来追踪显示报文到达目的主机所经过的路由信息。那么,基于 traceroute 和 tracepath 命令,今天跟大家推荐一款基于 Go 语言、轻量级且开源的可视化路由追踪命令行工具 —— NextTrace。它基于 nexttrace 命令通过命令行显示类似于 traceroute 清晰的路由信息。当执行完一条追踪的路由信息时,会自动生成 MapTrace URL 也...

  • 当年那个手搓CPU的老哥回来了!

    2024-07-22

    量子位 | 公众号 QbitAI原标题 | 「B站焊武帝」再出圈!孤身爆肝造CPU,软硬件全自研,可玩游戏,基础器件成本不到1000元我还记得前年的时候,分享过一个 B 站的 UP 主:奶味的,当时这位被粉丝称为「焊武帝」的牛人,硬是利用「二极管+三极管+电阻」这些原材料,手搓了一个 CPU。但 UP 主在这个初次手搓 CPU 的视频发出后,大佬一度失联,本以为大佬燃尽了激情,没想到是憋了 2 年的大招。嗯,焊武帝卷土重来。两年时间,一个 90 后体制内小哥下班之后只干三件私务,那就是:手搓 CPU!手搓 CPU!还是***手搓 CPU!纯手工制作、全自主研发,于是一...

  • 这几种文件共享的方式,很丝滑!

    2024-07-22

    STARThello,小伙伴们,大家好!今天给大家分享一下Linux下不同主机之间如何通过网络进行文件共享,达到文件在不同主机之间进行拷贝的目的。在平时的工作中,我们需要经常在主机与开发板、同一网络下的不同主机、主机与公网中的主机、主机与云服务器等等之间拷贝文件。那么在这样的环境下如何实现文件拷贝呢,我们来说说下面的几种方式,看看你是否常用1. 文件共享概述平常工作中你的电脑通常不是网络上唯一的计算机,如果你在工作环境中,情况尤其如此。当我们想要将数据从一台机器传输到另一台机器时,有时连接一个U盘并手动复制它们可能更容易。...

  • blendOS 的目标:取代所有的 Linux 发行版

    2024-07-22

    听起来太牵强了?好吧,blendOS 把自己定位为发行版的终极杂拌。blendOS 是 Rudra Saraswat 的一个新项目,他以基于 Ubuntu 的合成版而闻名,特别是 Ubuntu Unity(现在是官方的 Ubuntu 风味版???? itsfoss.com)。我想说的是,这个项目有一个非常准确的名字来表达它想要实现的目标。但是,blendOS 的目标是如何成为所有人的替代品?它到底是什么?blendOS 不只是又一个 Linux 发行版blendOSblendOS 是一个基于 Arch 的发行版,它支持每种类型的应用程序包。如果你了解过 carbonOS???? news.itsfoss.com 和 Vanilla OS???? news.itsfoss.com,你...

  • Linux终端操作高效率快捷键

    2024-07-22

    链接:https://blog.csdn.net/qq_39221436/article/det1、终端及标签页快捷键 快捷键功能Shift+Ctrl+T新建标签页Shift+Ctrl+W关闭标签页Ctrl+PageUp前一标签页Ctrl+PageDown后一标签页Shift+Ctrl+PageUp标签页左移Shift+Ctrl+PageDown标签页右移Alt+1切换到标签页1Alt+2切换到标签页2Alt+3切换到标签页3Shift+Ctrl+N新建窗口Shift+Ctrl+Q关闭终端F11全屏Ctrl+Shift+加号放大Ctrl+减号缩小2、剪切/复制/粘贴/删除等快捷键 快捷键功能Shift+Ctrl+C复制Shift+Ctrl+V粘贴Ctrl+Insert复制命令行内容Shift+Insert粘贴命令行内容Ctrl+k剪切(删除)光标处到...

  • 1984 年的电脑也能跑 Chat-GPT ?!

    2024-07-22

    出品 | OSC开源社区(ID:oschina2013)新加坡的逆向计算爱好者 Yeo Kheng Meng 发布了一个 “doschgpt” ChatGPT 客户端,这个客户端适用于上世纪八十年代的 MS-DOS 系统。目前这个 DOS 系统的 ChatGPT 客户端已成功在 1984 年的 IBM 5155 便携式 PC 上运行,这台机子配备 4.77Mhz 主频的 Intel 8088 CPU 和 MS-DOS 6.22 系统,带 640KB 内存、以及 CGA ISA 图形。Yeo 老哥是个不折不扣的 “复古守旧派”,早在 2019 年他就为 Windows 3.1 开发了一个 Slack 客户端,这次更是把 1981 年的 MS-DOS 纯文本操作系统和最新的 ChatGPT 两个跨了 40 多年...

  • 40 个简单又有效的 Linux Shell 脚本示例

    2024-07-22

    转自:入门小站 作者:执着的花猫 Jp历史上,shell 一直是类 Unix 系统的本地命令行解释器。它已被证明是 Unix 的主要功能之一,并发展成为一个全新的主题。Linux 提供了各种功能强大的 shell,包括 Bash、Zsh、Tcsh 和 Ksh。这些外壳最令人惊讶的特性之一是其可编程性。创建简单而有效的 Linux shell 脚本来处理日常工作非常容易。1.Hello World程序员经常通过学习 hello world 程序来学习新语言。这是一个简单的程序,将字符串 “HelloWorld” 打印到标准输出中。然后,使用 vim 或 nano 等编辑器创建 hello-world.sh 文件,并将以下行复制到其中。...

  • 开源世界的两巨头:Linux和k8s结合|招聘岗位平均月薪3万+?

    2024-07-22

    作为开源世界的巨头,Linux在工作中应用广泛,想必大家都有所耳闻。近年来,开源世界出现了一个“新秀”,在迅速发展,那就是k8s。这两年, Kubernetes 击败了 Swarm 和 Mesos,几乎成为容器编排的实施标准。阿里、腾讯、百度、头条等大厂的技术重心也基本都在 K8s 项目上。如果你想要成为高级技术人才,那k8s是必备技术,Linux开发、运维人员掌握k8s也有能助力获得更高薪资。而且K8s在人工智能、大数据、5G、区块链、智能家居、航空航天、金融、政务、无人驾驶、制造业、Linux嵌入式等领域都占据着重要的地位,已经有数万用户和企业选择使用K8s。...

  • Linux 程序编译过程详解

    2024-07-22

    链接:https://blog.csdn.net/qq_39221436/article/details/125638972大家肯定都知道计算机程序设计语言通常分为机器语言、汇编语言和高级语言三类。高级语言需要通过翻译成机器语言才能执行,而翻译的方式分为两种,一种是编译型,另一种是解释型,因此我们基本上将高级语言分为两大类,一种是编译型语言,例如C,C++,Java,另一种是解释型语言,例如Python、Ruby、MATLAB 、JavaScript。本文将介绍如何将高层的C/C++语言编写的程序转换成为处理器能够执行的二进制代码的过程,包括四个步骤:预处理(Preprocessing)编译(Compilation)汇编(Ass...

  • 适合个人用户使用的 6 款最佳虚拟化软件!

    2024-07-21

    原文:https://www.cnblogs.com/connect/p/server-port-proxy.html什么是虚拟化?虚拟化是计算机科学中的一个基本概念。通常,它涉及提供位于物理硬件和操作系统之间或操作系统和应用程序之间的抽象层。通过对硬件、软件、存储和网络组件等物理IT资源进行抽象,目的是提供虚拟级别的资源,并根据需要灵活地分配给客户。虚拟化分类:全虚拟化,硬件虚拟化的一种特殊情况:每个运行的实例(虚拟机)都被分配了自己的虚拟化硬件。操作系统级虚拟化,软件虚拟化的一种特殊情况:每个正在运行的实例(容器)都可以访问资源有限的虚拟化操作系统。虚拟机软...

  • 500 条最平凡但最强 Linux 命令总结

    2024-07-21

    各大论坛和社区里也看见不少小伙伴想要寻找一份合适的Linux资料抓紧时间备战,为此咱这里也统一做一次大整理和大归类,这也算是划重点了。俗话说得好,他山之石,可以攻玉,多看多借鉴还是有帮助的,肝完,38K妥了!此合集内容极其丰富,涉及方面颇多,从入门到进阶,不仅适合初学者入门参考,更适合小伙伴们面试前的知识储备突击!全网首发!相信你看完一定会有帮助(莫做收藏党)说明考虑到本套笔记手册内容偏多(1890页),干货满满 不带任何水分!为了不影响大家的观看效果仅拿出一部分作为展示(需要可扫码领取)全网首发-涵盖运维面试题Linux...

  • 这款文件传输工具的替代品,牛逼了!

    2024-07-21

    原文:杰哥的IT之旅某种场景下,考虑到 LapTop -> Host 1 -> Host 2 -> Docker -> TMUX,使用scp或sftp命令不方便。使用rz和sz命令就会方便很多,但是却又与 TMUX 不兼容。那么,今天推荐给大家的这款神器,绝对香。trzsz(trz / tsz)是一个基于 Python 编程语言开发且兼容 TMUX 的文件传输工具,类似于 lrzsz(rz / sz),并且 trzsz 有进度条、支持目录传输和文件拖动上传、支持 iTerm2、Tabby、Electerm、TTYD 终端。trzsz-go 是基于 Go 语言实现的的 trzsz,它不需要依赖终端的支持,即可上传和下载文件。trzsz-js 支持 Windows 本地的 cmd、Po...

  • linux运维拿来即用序列~

    2024-07-21

    来源:blog.csdn.net/xcswswswws/article/details/122558274一、实现磁盘分区的只支持分配主分区和标准的linux文件系统(ext4/xfs)的分区#! /bin/bash# Function:对硬盘进行分区,得到一个标准的linux文件系统(ext4/xfs)的主分区cat /proc/partitions > oldread -p "请输入你要分区的硬盘(写绝对路径,如:/dev/sda):" Aif [ -e $A ];then  echo "true"else  echo "该设备不存在!!"  exitfiread -p "请输入你要创建的磁盘分区类型(这里只能是主分区,默认按回车即可):" Bread -p "请输入分区数字,范围1-4,默认从1开始,...

  • Linux 或 Windows 上实现端口映射

    2024-07-21

    原文:https://www.cnblogs.com/connect/p/server-port-proxy.html通常服务器会有许多块网卡,因此也可能会连接到不同的网络,在隔离的网络中,某些服务可能会需要进行通信,此时服务器经过配置就可以承担起了转发数据包的功能。一、Windows 下实现端口映射1. 查询端口映射情况netsh interface portproxy show v4tov42. 查询某一个 IP 的所有端口映射情况netsh interface portproxy show v4tov4 | find "[IP]"例:netsh interface portproxy show v4tov4 | find "192.168.1.1"3. 增加一个端口映射netsh interface portproxy ad...

  • Linux下如何做到一个文件即可读写,又只读?

    2024-07-21

    转自:运维研习社在Linux运维过程中,经常会遇到某个应用的存储目录跑满,提前又没有做任何规划,目录或磁盘无法扩容,这个时候,我们常用的解决方法是做软链接,通过ln,将原先存储的目录软链接到另外大的磁盘中的目录下,以此达到目的。软链的弊端就是,多层软链之后,会被绕晕,很容易造成误操作,今天再介绍一种方法mount --bindmount命令运维小伙伴应该很熟悉,不做过多介绍先来看下man里面的介绍通过mount --bind可以将文件目录结构重新挂载,连接两个目录,它是将前一个目录挂载到后一个目录上,所有对后一个目录的访问其实都是对前一个目录...