
深耕Linux系统下的应用开发
文章平均质量分 92
Linux操作系统基础知识:了解Linux的基本概念、命令行操作、文件系统、用户和权限管理等掌握网络编程相关知识,如 TCP/IP 协议栈、套接字(Socket)编程等,可以实现网络通信功能。 常见的二次开发库详细说明介绍,如libcurl、OpenSSL、json-c、freetype等。
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
qq_904477151
欢迎学习交流+vx:Vir2025WBY。 嵌入式领域优质创作者、阿里云社区专家博主、古月居(机器人+嵌入式类的原创技术平台)签约作者,专注于嵌入式单片机,Linux应用和驱动开发。 帮助别人,成长自己!欢迎一起学习基础编程知识!C语言、C++、Python、Java、单片机、Linux、算法od等基础或者进阶知识点或项目实战,均可加我咨询,一起讨论学习进步!
展开
-
嵌入式开发系统学习——干货分享
嵌入式工程师在工作中需要不断学习和掌握新的技术、工具和知识,以应对各种开发挑战。以下是一些嵌入式工程师必须收藏的干货网站,以及开发问题的介绍:原创 2024-03-11 11:34:18 · 5527 阅读 · 22 评论 -
Linux系统移植——开发板烧写
eMMC(Embedded MultiMediaCard)是一种嵌入式存储解决方案,通常用于移动设备、平板电脑和一些嵌入式系统中。eMMC将存储控制器和闪存存储器集成在一起,提供一种高效且成本较低的存储方式。原创 2024-08-13 18:05:17 · 1316 阅读 · 0 评论 -
Linux系统移植——系统移植初步介绍
移植就是将bootloader的源代码,inux内核源代码,文件系统中用户态程序代码根据硬件做少量修改使其能够在目标硬件平台上运行起来的过程。原创 2024-08-13 14:18:52 · 1537 阅读 · 0 评论 -
一文告诉你perftest是什么?perftest怎么用来测试RDMA网络设备
perftest 是一个用于性能测试的工具集,专门针对 RDMA(Remote Direct Memory Access)和 InfiniBand 网络进行基准测试。它提供了多种测试程序,允许用户测量不同 RDMA 操作的性能,如延迟和带宽。这些测试通常用于评估 RDMA 设备和网络的性能,帮助用户优化配置或解决潜在问题。原创 2024-08-05 11:34:47 · 2885 阅读 · 0 评论 -
【RDMA项目】如何使用rdma-core进行调用开发一个实战项目
RDMA (Remote Direct Memory Access) 是一种网络协议,可以在计算节点之间实现高效的内存数据传输,而无需CPU的干预。rdma-core 是 RDMA 的一个用户空间库,提供了一些简单易用的接口来使用 RDMA 功能。原创 2024-07-31 18:03:20 · 947 阅读 · 2 评论 -
教你在虚拟机上把普通网卡配置成softroce设备来运行rdma-core中的示例程序
在虚拟机环境中,将普通网卡配置为 SoftRoCE 设备可以帮助你在没有实际硬件 RDMA 设备的情况下测试和体验 RDMA 功能。SoftRoCE 是 RoCE(RDMA over Converged Ethernet)协议的一个软件实现。原创 2024-07-30 18:17:07 · 1716 阅读 · 0 评论 -
如何使用rdma-core来实现RDMA操作
rdma-core 是一个开源项目,为远程直接内存访问(RDMA)提供用户空间的支持。它包括 RDMA 设备的驱动程序、库和工具,旨在简化 RDMA 应用的开发和部署。原创 2024-07-29 15:50:12 · 2833 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——SHA算法源码解析(六)
安全散列算法是一种加密散列函数,生成固定长度的散列值(或摘要),用于确保数据完整性和验证数据的真实性。原创 2024-07-24 15:44:53 · 1244 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——MD5算法源码解析(五)
通过计算文件的 MD5 哈希值来监控文件的完整性。它首先进行字符串的 MD5 哈希计算以测试功能,然后进入一个无限循环,定期检查指定文件的 MD5 哈希值。如果检测到文件发生了变化,程序会输出新的哈希值并更新记录的哈希值。原创 2024-07-18 18:00:12 · 1417 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——单向散列函数(四)
单项散列函数也称为哈希函数,是一种从输入数据(通常称为“消息”)生成固定大小输出(通常称为“哈希值”或“哈希码”)的算法。单向散列函数的关键特性之一是它们的单向性和抗碰撞性,这意味着从哈希值反推原始数据是非常困难的,并且找到两个不同的输入数据,使其产生相同的哈希值也非常困难。原创 2024-07-17 15:15:29 · 1168 阅读 · 0 评论 -
RDMA 高性能架构基本原理与设计方案
RDMA的主要优点包括低延迟、高吞吐量、减少CPU负担和支持零拷贝网络。它允许数据直接在网络接口卡(NIC)和内存之间传输,减少了数据传输过程中的中间环节,从而显著降低了延迟。RDMA技术能够实现高速的数据传输,适用于需要大量数据交换的应用场景。由于数据传输不需要CPU的参与,CPU可以更多地专注于计算任务,提高了系统的整体效率。RDMA的软件架构通常包括用户空间库、内核驱动和硬件设备三个主要部分。典型的应用场景包括高性能计算、数据中心网络和存储系统等。原创 2024-07-16 15:59:41 · 2220 阅读 · 2 评论 -
一文带你了解什么是RDMA
RDMA(Remote Direct Memory Access,远程直接内存访问)是一种起源于高性能计算领域的通信技术,如今已广泛应用于数据中心。该技术使得用户程序能够绕过操作系统内核及CPU,直接与网络接口卡(NIC)交互,实现网络通信。这种方式不仅大幅提升了通信带宽,还显著降低了网络延迟,优化了整体性能。原创 2024-07-16 10:39:51 · 4965 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——Base58比特币钱包地址——算法分析(三)
Base58编码是在Base64字符集基础上,为了避免混淆而进行的优化。它去除了在Base64中可能引起混淆的字符,包括数字0、大写字母O、小写字母l、大写字母I,以及“+”和“/”两个符号。这样的设计使得Base58在视觉上更为清晰,减少错误。原创 2024-07-15 16:44:09 · 999 阅读 · 2 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——Base的编解码(二进制转ascll)(二)
Base64是一种编码方式,用于将二进制数据转换为ASCII字符串,以便在只支持文本的媒体上进行存储和传输。它不是一种加密算法,而是一种数据编码技术。Base64编码是一种简单而有效的数据编码方式,它允许二进制数据在文本环境中安全地传输和存储。尽管它不提供安全性(数据在传输过程中可以被读取),但它确保了数据的完整性和可移植性。原创 2024-07-15 13:43:26 · 1410 阅读 · 0 评论 -
【常见开源库的二次开发】基于openssl的加密与解密——openssl认识与配置(一)
OpenSSL 是一个开源的软件库,它提供了一系列加密工具和协议,主要用于实现安全通信,如在网络上的数据传输。它支持多种加密算法,包括对称加密、非对称加密、散列函数、伪随机数生成器、数字签名、密钥交换以及证书管理等。原创 2024-07-10 14:54:35 · 3450 阅读 · 0 评论 -
【常见开源库的二次开发】一文学懂CJSON
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript的一个子集,但是JSON是独立于语言的,这意味着尽管JSON是由JavaScript语法衍生出来的,它可以被任何编程语言读取和生成。JSON的设计目的是使数据交换既简单又快速,相对于其他数据交换格式如XML,JSON更加轻巧,这使得它在网络上传输更加高效。对于人类和机器来说,JSON文本的格式都是易于理解的。原创 2024-07-09 23:35:07 · 922 阅读 · 1 评论 -
【常见开源库的二次开发】libcurl实战项目——车牌识别(四)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先对libcurl库运用到实战项目中进行一个简单的教程与学习原创 2024-06-03 18:06:14 · 867 阅读 · 1 评论 -
【常见开源库的二次开发】libcurl实战项目——人脸识别(三)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先对libcurl库运用到实战项目中进行一个简单的教程与学习原创 2024-06-03 11:50:24 · 4139 阅读 · 30 评论 -
【常见开源库的二次开发】HTTP之libcurl库——libcurl使用(二)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先对libcurl库进行一个详细的分析与学习。原创 2024-06-02 15:04:40 · 1453 阅读 · 3 评论 -
【常见开源库的二次开发】HTTP之libcurl库——基础知识扫盲(一)
libcurl是一个开源的、跨平台的网络传输库,它支持多种协议,包括HTTP、HTTPS、FTP、FTPS、TFTP、SCP、SFTP、SMB、SMBS、TELNET、DICT、LDAP、LDAPS、FILE、POP3、IMAP、SMTP、RTMP和RTMPS。libcurl库以其灵活性和易用性而闻名,它允许开发者轻松地在其应用程序中集成网络通信功能,本章我们先堆HTTP和HTTPS,密码学等基础知识进行一个学习和掌握。原创 2024-06-01 17:40:01 · 1096 阅读 · 1 评论 -
Linux基础项目开发1:量产工具——改进优化(八)
前面我们已经构造出来显示系统、输入系统、文字系统、UI系统、页面系统,业务系统,这个小项目该完成的功能我们已经都完成了,但是还是有很多地方可以优化改进的,现在让我们对这个系统不足的地方进行相应的和改进与优化吧。原创 2023-12-10 01:00:00 · 2901 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——业务系统(七)
前面我们已经构造出来显示系统、输入系统、文字系统、UI系统、页面系统,这个项目百分之八十需要实现的都已经构建出来了,最后让我们对这个项目进行最后一项系统的搭建,也就是业务系统,说到业务大家应该就知道我们要干什么了,那就是把所有的代码整合到一起实现一些我们想要实现的功能。原创 2023-12-03 19:05:03 · 3224 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——页面系统(六)
前面我们已经将显示系统、输入系统、文字系统、UI系统全部搭建好了,下面就到了开发板页面的布局,也就是实现按钮在开发板页面上的每个位置,下面让我们一起实现页面的搭建与布局设计吧。原创 2023-12-03 14:53:58 · 2607 阅读 · 5 评论 -
Linux基础项目开发1:量产工具——UI系统(五)
前面我们已经把显示系统、输入系统、文字系统搭建好了,现在我们就要给它实现按钮操作了,也就是搭建UI系统,下面让我们一起实现UI系统的搭建吧。原创 2023-12-02 19:04:32 · 4144 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——文字系统(四)
前面我们已经把显示系统,输入系统的框架搭建好了,那么有了输入和显示,显示的内容应该是什么呢?这节就要让我们一起对显示的内容,文字系统进行搭建。原创 2023-12-02 00:15:00 · 3085 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——输入系统(三)
前面我们已经实现了显示系统,现在我们来实现输入系统,与显示系统类似,下面让我们一起来对输入系统进行学习搭建吧原创 2023-11-29 20:17:43 · 3682 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——显示系统(二)
前面我们已经对这个项目的基本框架有了一个初步的了解与认识,要实现显示管理器与输入管理器,有输入有输出基本就实现这个项目的大部分功能了,首先我们先来做显示系统,对于上层系统为了让程序更好扩展,我们得添加一个显示管理器,在下面有各种设备,就比如有Framebufler和web输出。原创 2023-11-28 22:48:52 · 3422 阅读 · 0 评论 -
Linux基础项目开发1:量产工具——程序框架(一)
前面已经将Linux应用开发基础知识学习完了,现在让我们来做个小项目练练手,对之前的一些知识点进行一个更加具体详细的认识与了解,我们要进行的项目名称为:电子产品量产测试与烧写工具,这是一套软件,用在我们的实际生产中, 在具体开发中我们将显示系统,输入系统,文字系统,UI系统,页面系统,业务系统这五个板块进行学习。原创 2023-11-27 20:26:23 · 3548 阅读 · 1 评论 -
Linux应用开发基础知识——I2C应用编程(十三)
APP 访问硬件肯定是需要驱动程序的,对于 I2C 设备,内核提供了驱动程序 drivers/i2c/i2c-dev.c,通过它可以直接使用下面的 I2C 控制器驱动程序来 访问 I2C 设备。原创 2023-11-23 18:02:05 · 3644 阅读 · 0 评论 -
Linux应用开发基础知识——I2C应用编程(十二)
I2C(Inter-IntegratedCircuitBUS)是集成电路总线,是目前应用最广泛的总线之一,最初由PHILIPS(现为NXP)设计。它使用多主从架构,主要用于连接低速周边设备。I2C总线在硬件物理层包括两条线:一条数据线(SDA)和一条时钟线(SCL)。所有设备都连接在这两条线上。原创 2023-11-23 18:01:18 · 4031 阅读 · 0 评论 -
Linux应用开发基础知识——串口应用编程(十一)
在Linux系统中,串口设备以文件的形式存在,通常位于/dev目录下,如ttyS0、ttyUSB0等。这些设备文件可以用于读取和写入数据。要使用串口设备,需要打开相应的设备文件。在打开串口时,可以使用O_RDWR选项标志进行读写操作,同时使用O_NOCTTY选项标志告诉Linux“本程序不作为串口的‘控制终端’”,以避免一些输入字符影响进程运行。下面让我们对串口应用编程进行一个简单的入门学习吧。原创 2023-11-22 19:41:18 · 3327 阅读 · 0 评论 -
Linux应用开发基础知识——多线程编程(十)
在编写代码时,是否会遇到以下的场景会感觉到难以下手?要做 2 件事,一件需要阻塞等待,另一件需要实时进行。例如播放器:一边在屏幕上播放视频,一边在等待用户的按键操作。如果使用单线程的话,程序必须一会查询有无按键,一会播放视频。查询按键太久,就会导致视频播放卡顿;视频播放太久,就无法及时响应用户的操作。并且查询按键和播放视频的代码混 杂在一起,代码丑陋。如果使用多线程,线程1单独处理按键,线程 2 单独处理播放,可以完美解决上述问题。原创 2023-11-22 14:14:53 · 3098 阅读 · 0 评论 -
Linux应用开发基础知识——网络通信编程(九)
通过学习为后续Linux网络编程奠定基础。首先介绍网络编程的概念,即网络协议分层,旨在帮助读者对网络建立初步的、全面立体的认识,其次介绍包括协议、端口、地址等;最后介绍应用非常广泛的传输控制协议(Transmission Control Protocol,TCP)和用户数据报协议(User Datagram Protocol,UDP)的基本概念及其区别以及这两种协议的编程。原创 2023-11-21 18:05:00 · 3900 阅读 · 15 评论 -
Linux应用开发基础知识——输入系统应用编程(八)
触摸屏分为电阻屏、电容屏。电阻屏结构简单,在以前很流行;电容屏支持多点触摸,现在的手机基本都是使用电容屏。我们应当注意的是LCD、触摸屏不是一回事,LCD 是输出设备,触摸屏是输入设备。制作触摸屏时特意把它的尺寸做得跟 LCD 一模一样,并且把触摸屏覆盖在 LCD 上,让我们学习一下输入系统里面的电阻屏与电容屏。原创 2023-11-19 22:34:40 · 2555 阅读 · 0 评论 -
Linux应用开发基础知识——输入系统应用编程(七)
常见的输入设备有键盘、鼠标、遥控杆、书写板、触摸屏等等,用户通过这些 输入设备与 Linux 系统进行数据交换。输入设备种类繁多,能否统一它们的接口?既在驱动层面统一,也在应用程序层面统一?事实上是可以的。 Linux 系统为了统一管理这些输入设备,实现了一套能兼容所有输入设备的 框架:输入系统。驱动开发人员基于这套框架开发出程序,应用开发人员就可以使用统一的 API 去使用设备。原创 2023-11-17 15:59:24 · 2574 阅读 · 0 评论 -
Linux应用开发基础知识——LCD上的矢量字体Freetype(六)
关 键 点 (glyph) 存 在 字 体 文 件 中 , Windows 使 用 的 字 体 文 件 在 c:\Windows\Fonts 目录下,扩展名为 TTF 的都是矢量字库,我们的是新宋字体 simsun.ttc。给定一个字符,怎么在字体文件中找到它的关键点?首先要确定该字符的编码值:比如 ASCII 码、GB2312 码、UNICODE 码。如果字体文件支持某种编码格式(charset),就可以使用这类编码值去找到该字符的关键点(glyph)。原创 2023-11-12 16:36:03 · 2904 阅读 · 3 评论 -
Linux应用开发基础知识——字符文字编码(五)
TXT 文件中保存的是字符的核心:它的编码值。而 Notepad 上显示时, 这些字符对应什么样的形状态,这是由字符文件决定的。编码值,字体是两个不一样的东西,比如 A 的编码值是 0x41,但是在屏幕上显示出来时可以使用不同的形状。什么叫编码?就是一个字符用什么数字来表示。在计算机里一切都是用数字来表示,比如字符 A,用 0x01 还是 0x02 来表示它?我们使用 0x41 来表示它。当你去打开一个 TXT 文件时,发现里面含有数值 0x41,你就知道了:哦,这里有一个字符 A。原创 2023-11-12 11:09:20 · 2400 阅读 · 0 评论 -
Linux应用开发基础知识——Framebuffer 应用编程(四)
在 Linux 系统中通过 Framebuffer 驱动程序来控制 LCD。Frame 是帧的意 思,buffer 是缓冲的意思,这意味着 Framebuffer 就是一块内存,里面保存着 一帧图像。Framebuffer 中保存着一帧图像的每一个像素颜色值,假设 LCD 的 分辨率是 1024x768,每一个像素的颜色用 32 位来表示,那么 Framebuffer 的 大小就是:1024x768x32/8=3145728 字节。原创 2023-11-10 18:02:06 · 3592 阅读 · 2 评论 -
Linux应用开发基础知识——文件IO操作(三)
Linux 的文件既可以是真实保存到存储介质的文件也可以 是自身内核提供的虚拟文件,还可以是设备节点。原创 2023-11-10 15:23:05 · 2485 阅读 · 1 评论 -
Linux应用开发基础知识——Makefile 的使用(二)
在 Linux 中使用 make 命令来编译程序,特别是大程序;而 make 命令所执 行的动作依赖于 Makefile 文件。最简单的 Makefile 文件: hello: hello.c 、gcc -o hello hello.c 、clean:、 rm -f hello 将上述 4 行存为 Makefile 文件,放入 01_hello 目录下,然后直接执行 make 命令即可编译程序,执行 “make clean”即可清除编译出来的结果。原创 2023-11-07 12:34:18 · 2341 阅读 · 0 评论