自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 嵌入式知识框架之五 - 编写驱动程序的框架

1.什么是驱动程序?驱动程序是对硬件的具体操作,比如让LED的亮灭,在LCD上显示一个像素等,设计到对GPIO或者硬件的设置。2.驱动程序如何加载进内核?linux设备驱动是以内核模块的形式出现,Linux系统整体架构庞大,组价非常多,但是需要什么功能就重新编译内核,费时费力。linux提供一种模块机制,1.模块本身可以不被编译进入内核,控制内核映像的大小;2.一旦模块加载,就和编译进内核是一样的。linux提供了模块程序结构module_init(使用insmod调用)modul

2021-07-29 15:23:22 768

原创 嵌入式知识框架之四-Linux内核的组成部分

了解内核组成及各个组成部分如何工作,对于提高程序的运行效率、理解运行过程、以及处理BUG有非常重要的作用,例如TASK_ZOBIE状态,是一种僵死状态,等待父进程回收资源,这样在我们看到进程运行列表中出现这样的进程状态,我们就知道在父进程中缺少回收资源这一步操作。进程还有可中断和不可中断状态,我们什么时候需要用到这种状态对于我们编程都有重要的意义。linux内核的组成部分与关系1.进程调度首先我们来理解“微观串行,宏观并行”,对于单核CPU来说,因为CPU运行速度是非常快的,对于大多数进程..

2021-07-28 16:06:03 435

原创 嵌入式知识框架之三-Linux系统必须要了解的目录

由于Linux驱动编程的本质属于Linux内核编程,因此我们有必要熟悉Linux内核及内核编程的基础知识。其中Linux系统目录中,了解必要的目录,对于我们内核移植,编写驱动程序有很重要的作用。1.arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、arm、arm64、powerpc、mips等。Linux内核目前已经支持30种左右的体系结构。在arch目录下,存放的是各个平台以及各个平台的芯片对Linux内核进程调度、内存管理、中断等的支持,以及每个具体的SoC和电路.

2021-07-28 11:48:13 376

原创 摄动法/扰动法

最近需要用到摄动法,开一个贴来记录一下。先来看一个扰动法的例子:(1)假设我们目前没有确切的解法来求出x的值,但是我们有一个近似的方程:(2)我们可以得到这样一个式子:(3)我们把式(1)作为式(2)的一个扰动方程(4)我们假设扰动方程的解接近没有扰动方程的解:然后我们将扰动解带入原方程式(1),得到:因为被假设为很小的值,那么,则为:那么方程的一个解为:同理,方程的另一个解为:最终方程的近似解为:原方程的...

2021-07-27 16:34:41 6272 4

原创 嵌入式知识框架之六-接口与总线(SPI\I2C\ USB\PCI\PCI-E\SD\SDIO\以太网接口)

接口是外设和主设备连接的方式/规则/协议的名称;XX总线是主设备连接某一类接口的名称1.串口串行数据接口标准(根据时间发展顺序介绍):RS-232;命名为EIA-232-E标准;通信距离短、速率低RS-232C;嵌入式系统中应用最广泛的串行接口RS-422;命名为TIA/EIA-422-A标准;单机发送、多机接收的单向、平衡传输规范RS-485;命名为TIA/EIA-485-A标准;增加了多点、双向通信能力RS-232CRS-232修改版RS-232C是嵌入式系统中应用最.

2021-07-27 02:14:58 3701

原创 嵌入式知识框架之二-常用存储器件

编写Linux设备驱动要求之一就是工程师有非常好的硬件基础,懂得SRAM Flash SDRAM 磁盘的读写方式。UART、I 2 C、USB等设备的接口以及轮询、中断、DMA的原理,PCI总线的工作方式以及CPU的内存管理单元(MMU)等。存储器分类储存器分为易失性和非易失性存储器。易失性存储器:断电无记忆,数据丢失,因为制造这种存储器使用的电子元器件是电容和晶体管,其在没有电的情况下,漏电导致电荷丢失,数据也就丢失了,使用时,要用一定的电流频率去刷新电容器;非易失性存储器:掉电..

2021-07-25 23:34:29 600 1

原创 Linux C语言基本知识框架-嵌入式知识体系架构之一

基本工具:编辑器:Vi编译器:GCC调试器:GDB(不用GDB可以自己在程序中设计断点打印变量的值,来调试)工程管理器:makeANSI C语言数据类型:基本类型 | 空类型 | 构造类型空类型:void构造类型:struct | union | 数组枚举型(基本类型):enum week{mon = 1, thu, wen, thur, fri, sat, sun};enum week a;默认从零开始,也可以自定义注意:1.枚举元素是常量,没有地址.

2021-07-23 02:04:35 257

原创 《UNIX环境高级编程》读书笔记之一

为什么读这本书?为什么选择读这本书?我所作的项目的内容是嵌入式软件开发,嵌入式系统为LINUX系统。不管是要做Linux系统底层驱动还是Linux的应用软件开发,都离不开linux系统,想知道linux系统的为我们开放了什么接口(系统调用接口和库函数可以参看《UNIX程序员手册》),以及想了解接口的基本原理和如何使用这些接口,另外这本书是非常权威和饱受好评的一本书,由W.Richard Steven ,Steven A . Rago著作;UNIX遵循同样的标准,Linux是仿UNIX的系统,知识具有.

2021-07-22 23:34:37 178

原创 面试官:为什么TCP三次握手?二次握手行不行?

美团提前批面试:为什么TCP三次握手?二次握手行不行?客服端要请求服务的链接,首先把SYN报文发给服务端,注意这个报文中生成了一个随机的序列号x,我是否得到回复是根据服务端的确认信号中是否有这个序列号x+1,如果有说明收到了信息;然后服务端给客户端回ACK序列号x+1的时候也会发送一个报文SYN序列号为Y,确认客户端能收到消息,客户端再给服务端回复一个信号内容ACK序列号为Y+1;所以二次握手的缺陷是,服务端不知道客户端的接收是否正常,所以不行。计算机用什么来确认收到信号?答:AC..

2021-07-21 15:09:52 223 1

转载 编译过程之——符号表

程序的连接之符号和符号表_我的博客-CSDN博客

2021-07-19 01:49:49 840

原创 Leetcode:颜色分类(0,1,2还顺序排序)

题目给定一个包含红色、白色和蓝色,一共n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、1 和 2 分别表示红色、白色和蓝色。来源:力扣(LeetCode)解法本题是经典的「荷兰国旗问题」,由计算机科学家Edsger W. Dijkstra首先提出。解法较多,本解法时间复杂度是O(N),空间复杂度为O(1)定义两个指针:p0,p1指针移动规则规则1:p0 <= p1;规则2:p...

2021-07-18 17:33:15 504

原创 写while循环时注意的两点

1.循环结束条件while(left < right)当循环结束时left == rightwhile(left <= right)当循环结束时,left > right2.循环结束要达到的效果 if(nums[i] + nums[lower] + nums[higher] > 0) { int next = higher - 1; ...

2021-07-18 14:21:26 716

原创 Line 106: Char 23: runtime error: load of address 0x632001cf4080 with insufficient space for an obje

我的源码 #define MAX_NUM 10000 int **RetArr = (int **)calloc(MAX_NUM, sizeof(int*)); for(int i = 0; i < MAX_NUM; i++) RetArr[i] = (int *)calloc(3,sizeof(int));出错信息:Line 106: Char 23: runtime error: load of address 0x632001cf4080 with insufficie..

2021-07-18 14:07:35 1574

原创 如何编写一个Makefile文件 - 2

接着上一篇https://blog.csdn.net/hubert937/article/details/118839665顶级目录Makefile.buildPHONY := __build__build:obj-y :=subdir-y :=include Makefile# obj-y := a.o b.o c/ d/# $(filter %/, $(obj-y)) : c/ d/# __subdir-y : c d# subdir-y : c.

2021-07-18 01:01:08 140

原创 C语言中,二维数组如何作为实参传递

在刷leetcode题经常想用到二维数组的传递,但经常出现问题,然后上网搜索各种传递二维数组的方法如下:定义二维数组的两种方法:一:定义一个二维数组传递 二:用malloc分配一个堆空间本质上,二维数组是按照行展开的方法在内存中存储的,按照一维数组操作的。使用malloc定义一个二维数组#define MAX_NUm 10000int ** Arr= malloc(sizeof(int*) * MAX_NUM)...

2021-07-17 22:24:37 2484

原创 如何编写一个项目的Makefile文件

Makefile结构如下:顶级目录: Makefile Makefile.bulid子目录: Makefile我的源码文件目录结构如下:./(根目录) main.c Makefile Makefile.build display/ disp_manager.c fb.c crt.c ...

2021-07-17 02:14:54 209

空空如也

空空如也

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

TA关注的人

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