自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Linux驱动代码学习

include //模块的相关头文件#include //初始化的相关头文件#include //文件操作集合#include //copy_to_user的头文件#include //cdev结构体以及cdev_init等。

2024-03-10 14:31:02 846 1

原创 linux 字符设备驱动实践

*******************静态注册设备号***********************//*******************动态注册设备号***********************/#include <linux/cdev.h> //cdev结构体以及cdev-init。//device 设备结构体。#include <linux/uaccess.h>//copy_to_user的头文件。#include <linux/kdev_t.h> //MKDEV所需要的头文件。

2024-03-03 21:39:54 740 1

原创 Linux字符设备驱动

include <linux/miscdevice.h> //杂项设备驱动和相关头文件。#include <linux/init.h> //初始化的相关头文件。struct miscdevice hd_misc={ //杂项设备结构体。#include <linux/module.h> //模块的相关头文件。#include <linux/fs.h> //文件操作集合。//注销杂项设备驱动。

2024-03-03 21:38:15 721 1

原创 Linux面试题

在i节点表中最重要 的内容是磁盘地址表。Linux文件系统通过把i节点和文件名进行 连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i节点号,通过该i节点的磁盘地址表把分散存放的文件物 理块连接成文件的逻辑结构。(3)若没有查到,则将请求发给根域DNS服务器,并依序从根域查找顶级域,由顶级查找二级域,二级域查找三级,直至找到要解析的地址或名字,即向客户机所在网络的DNS服务器发出应答信息,DNS服务器收到应答后现在缓存中存储,然后,将解析结果发给客户机。

2024-02-24 00:01:34 824

原创 嵌入式Linux学习经验

显然,这个应用程序就要读取配置文件,根据配置文件去启动用户程序(监控、手册界面、平板界面等等)这个问题提示我们,文件系统的内容是有一些约定的,比如要有/sbin/init,要有配置文件。也许你说在嵌入式上要做些优化,是的,要优化,但是未经优化的程序和PC上的程序开发没什么差别。LDD3,即<Linux设备驱动>,老外写的那本,里面介绍了不少概念,值得一读。但是,它的作用也就限于介绍概念了。简单的自问自答到这里,要想深入了解,可以看一下busybox的init.c,就可以知道init进程做的事情了。

2024-02-23 23:59:40 772

原创 嵌入式软件开发工程师笔试面试题总结

TCP报头由10个必须字段(源端口号16位、目标端口号16位、序列号32位、确认号32位、报文长度4位、保留位与控制位各6位、窗口位16位、校验和16位、紧急指针16位)和一个可选字段,至少20个字节构成。内存泄漏是指向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。告诉编译器这段代码是用C语言编写的,因为C语言不支持函数重载,而C++支持函数重载,编译后的函数名不同。

2024-02-23 23:57:52 925

原创 C语言32个关键字

void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种 int:整型数据,通常为编译器指定的机器字长 float:单精度浮点型数据,属于浮点数据的一种 double:双精度浮点型数据,属于浮点数据的一种 short:修饰int,短整型数据,可省略被修饰的int。 long:修饰int,长整形数据,可省略被修饰的int。 signed:修饰整型数据,有符号数据类型 unsigned:修饰整型数据,无符号数据类型 struct:结构体

2023-12-06 20:05:35 348 1

原创 strcpy、strncpy和memcpy区别

即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。使用strcpy时,dest指向的空间要大于等于src指向的空间;if((memTo == NULL) || (memFrom == NULL)) //memTo和memFrom必须有效。char * strcpy(char * dest, const char * src) // 实现src到dest的复制。if ((src == NULL) || (dest == NULL)) //参数判空。

2023-12-04 22:05:13 1082

原创 C语言输出格式控制符

一定要掌握 %x(或 %X 或 %#x 或 %#X),因为调试的时候经常要将内存中的二进制代码全部输出,然后用十六进制显示出来。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。,输出的字母就是小写的;,输出的字母就是大写的;从输出结果可以看出:如果是小写的。,就以标准的十六进制形式输出。

2023-12-03 18:11:27 406 1

原创 ROM与RAM

1、RAM:是由英文Random Access Memory的首字母构成的,意为随机存储器(可读可写的存储器),即在正常工作状态下可以往存储器中随时读写数据。综上所述,ROM指的是计算机(包括手机)的文件内存,RAM指的是用了运行系统及应用程序的临时性存储器,比如手机的操作系统、一些应用程序如游戏等。的简称,是一种只能读出事先所存数据的固态半导体存储器。它可以随时读写,而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介。我们经常说的内存,比如计算机的内存,手机的内存,包括CPU里用的。

2023-12-03 17:53:15 420 1

转载 递归算法详解

本文剖析了递归的思想内涵,分析了递归与循环的联系与区别,给出了递归的应用场景和一些典型应用,并利用递归和非递归的方式解决了包括阶乘、斐波那契数列、汉诺塔、杨辉三角的存取、字符串回文判断、字符串全排列、二分查找、树的深度求解在内的八个经典问题。数学归纳法适用于将解决的原问题转化为解决它的子问题,而它的子问题又变成子问题的子问题,而且我们发现这些问题其实都是一个模型,也就是说存在相同的逻辑归纳处理项。然后,你开始原路返回,每走回一间屋子,你数一次,走到入口的时候,你可以回答出你到底用这你把钥匙打开了几扇门。

2023-10-12 21:05:01 167 1

原创 递归函数和回调函数

指将一个函数的指针(内存地址)< js中指的就是函数名(JavaScript没有像C那样的指针) > 作为参数传递给另一个函数,当在一定条件下调用这个参数时,就是调用这个参数指向的函数,即回调函数;通俗一点就是:作为参数传递给另外一个函数的函数,它在主体函数执行过程中的特定条件下执行;: 区分回调和递归,回调是一个函数把非当前函数当做参数传递到自身内部来调用;:函数直接或间接调用自己调用自己。自己调用自己就是递归函数了;② 函数内部调用其他函数:函数调用。④ 函数内部调用自己这个函数:递归。

2023-10-12 21:02:12 93 1

转载 C++ 单元测试之 gtest & gmock

说得更直白一些,就是自己实现一个假的依赖类,对这个类的方法你想要什么行为就可以有什么行为,你想让这个方法返回什么结果就可以返回怎么样的结果。至于单元的大小或范围,并没有一个明确的标准,单元可以是一个函数、方法、类、功能模块或者子系统。这是一个致命错误,如果断言失败,测试将立即终止。丰富的断言:Google Test提供了多种断言,包括基本的比较断言(如EXPECT_EQ、ASSERT_TRUE等)和容器断言(如EXPECT_CONTAINER_EQ、ASSERT_THAT等),可以满足各种测试需求。

2023-10-09 20:20:21 678 1

转载 git使用

git remote add origin https://gitee.com/ci-yun/***.git ##origin(远程仓库的别名)建立E:\Java\javademo中的本地仓库 和 远程仓库https://gitee.com/***/***.git的关联。选择项目/文件----右键----Git----Commit(记录到版本库的文件----黑色)选择项目/某个文件----右键----Git----Add(添加到暂存区的文件----绿色)

2023-09-19 21:09:45 34

转载 webrtc的GN构建系统

以下就重点介绍下,gn中场景的语法和使用,这些主要位于BUILD.gn文件。以上就是对gn的入门介绍。可以帮助大家快速了解gn,并完成一个gn的工程构建。如果需要深入了解gn,当然还是推荐大家多使用帮助或者看下官方文档。

2023-09-19 12:13:49 149

转载 C++学习

在目前的很多嵌入式板子上,针对内存的接口是必备的,往往也都是基于malloc修改;类型一直是C++中最重要的部分,相比于其他高级语言,C++的类型会复杂许多,往往一个类型匹配错误就会导致程序报错,本篇主要讲解一些常用类型的概念以及细节,如果对于C++有一定基础的,可以跳转到思考部分,从中了解自己的掌握程度;其实在硬件底层,存放内存的地址分为大端法和小端法,而C++可以很好的适应不同硬件的存储方式,这样有助于提升性能,相比来说,JAVA就不考虑这些,导致数据存放到内存还需要再做一些处理,会增加一定的时间;

2023-09-17 12:45:12 154

转载 [GN+Ninja学习 0x03] GN语法与操作学习

​​​​​​OpenHarmony使用gn+ninja来维护开源项目的构建。之前没有接触过gn+ninja,是时候系统性的来学习下了。边学边记录下学习过程,希望对同样需要学习gn+ninja的朋友有所帮助。这一篇,我们来学习GN的语法和操作行为等,建议也可以阅读原版文档​​。GN提供了扩展的内置帮助文档系统,提供每一个函数功能和内置变量的详细的参考引用。

2023-09-17 12:39:56 315

转载 build.gn文件

通过本文的介绍,相信读者们已经了解了 build.gn 文件的主要特点以及使用它进行自动化软件构建的方法。在软件工程中,自动化构建是非常重要的一部分,使用 build.gn 可以提高软件开发的效率和质量。希望本文能够帮助读者更好地掌握 build.gn 文件的使用,更加高效地完成软件开发任务。

2023-09-17 12:36:56 2878 1

原创 Linux总结

协议族决定了socket的地址类型,在通信中必须采用对应的地 址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的) 的组合、AF_UNIX决定了要用一个绝对路径名作为地址。常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、 SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等流式socket ( SOCK_STREAM)是一种面向连接的socket,针对于面向连接的TCP服务 应用。一般说来,条件变量被用来进行线程间的同步。

2023-08-24 19:30:54 456 1

Linux 驱动中断函数编写

Linux 驱动中断函数编写

2023-08-24

Linux 驱动内核定时器

Linux 驱动内核定时器

2023-08-24

Linux驱动设备树操纵GPIO

Linux驱动设备树操纵GPIO

2023-08-24

Linux 驱动PlatForm平台总线详解

Linux 驱动PlatForm平台总线详解

2023-08-24

Linux 中断函数编写详解

Linux 中断函数编写详解

2023-08-24

Linux WIFI驱动移植教程

Linux WIFI驱动移植教程

2023-08-24

Linux 内核编译流程

Linux 内核编译流程

2023-08-24

Linux常用教程总结

Linux常用教程总结

2023-08-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除