- 博客(63)
- 收藏
- 关注
原创 编译随笔(一)makefile基础知识
左耳朵耗子《跟我一起写 Makefile》[野火]i.MX Linux开发实战指南make工具它可以帮助我们找出项目里面修改变更过的文件,并根据依赖关系,找出受修改影响的其他相关文件,然后对这些文件按照规则进行单独的编译,这样一来,就能避免重新编译项目的所有的文件。Makefile文件上面提到的规则、依赖关系主要是定义在这个Makefile文件中的,我们在其中合理地定义好文件的依赖关系之后,make工具就能精准地进行编译工作。
2024-03-08 14:56:57
694
原创 深入理解计算机系统(13)_存储器层次结构
在简单的计算机系统模型中,存储器系统是一个线性的字节数组,而CPU能够在一个常数时间内访问每个存储器位置。实际上,存储器系统(memorysystem)是一个具有不同容量、成本和访问时间的存储设备的层次结构。CPU寄存器保存着最常用的数据。靠近CPU的小的、快速的高速缓存存储器(cachememory)作为一部分存储在相对慢速的主存储器(mainmemory)中数据和指令的缓冲区域。主存缓存存储在容量较大的、慢速磁盘上的数据,
2023-07-23 00:02:29
702
原创 深入理解计算机系统(9)_优化程序性能
写程序最主要的目标:在所有可能的情况下都正确工作+让程序运行得快选择一组适当的算法和数据结构。编写出编译器能够有效优化以转换成高效可执行代码的源代码。针对处理运算量特别大的计算,将一个任务分成多个部分,这些部分可以在多核和多处理器的某种组合上并行地计算。在程序开发和优化的过程中,我们必须考虑代码使用的方式,以及影响它的关键因素。通常,程序员必须在实现和维护程序的简单性与它的运行速度之间做出权衡。对于在性能重要的环境中反复执行的代码,进行大量的优化会比较合适。
2023-07-22 21:10:01
470
原创 深入理解计算机系统(8)_处理器体系结构
一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构(Instruction-SetArchitecture,ISA)。ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些指令,以及它们是如何编码的;而处理器设计者必须建造出执行这些指令的处理器。与一个时刻只执行一条指令相比,通过同时处理多条指令的不同部分,处理器可以获得更高的性能。我们已经看到,指令集体系结构,即ISA,在处理器行为(就指令集合及其编码而言)和如何实现处理器之间提供了一层抽象。
2023-07-22 16:03:37
666
原创 深入理解计算机系统(2)_计算机基本组成
最近又开始新学一本书了,名字叫《深入理解计算机系统》,这本算是个计算机学科的奠基书籍吧,所以打算拜读下,顺便把闲置了半年的博客再抓起来搞搞,自己老是囫囵吞枣地看没啥收获。附上一个之前跟着课学习时整的思维导图。
2023-06-30 17:53:32
530
原创 零基础学Linux内核之设备驱动篇(10)_设备树1_添加设备节点
本节主要介绍设备树的基本概念与框架,以及节点基本格式与属性,最后进行了一个添加设备节点的实验。
2022-09-12 10:59:41
2369
原创 零基础学Linux内核之设备驱动篇(8)_设备模型
本节主要介绍总线是如何将设备与驱动之间联系起来的,同时介绍了BUS_ATTR / DEVICE_ATTR / DRIVER_ATTR_RO几个较为特殊的将属性文件从内核导出至用户空间的宏定义,以供用户层进行查询(cat show) / 修改(echo store)。
2022-09-02 16:56:23
1091
原创 零基础学Linux内核之设备驱动篇(6)_字符设备_实验篇1
本节主要介绍如何使用一个驱动进行支持多个设备,以及使用宏定义container_of,将结构体的某个成员的地址,转换为该结构体的地址。
2022-08-28 20:15:23
552
原创 零基础学Linux内核之设备驱动篇(4)_字符设备1_基本概念
本节介绍一下字符设备的前置知识,包括设备号 / 设备节点 / 设备文件,以及f_op / inode / file相关结构体,为后续字符设备抽象成文件做个铺垫。
2022-08-22 15:58:10
741
原创 零基础学Linux内核之设备驱动篇(2)_内核模块_理论篇
本节主要介绍一下内核设备的基本原理,会有涉及符号表的部分,目前还不太理解,所以就暂时先跳过。
2022-08-20 14:30:38
1263
原创 零基础学Linux内核之编译相关篇(3)_makefile入门基础
本节主要介绍一下makefile的一些基本语法,当然,了解完这些后并不能对实际工程里的make工程有所帮助,只能算是一个前置知识。
2022-06-28 18:08:54
237
原创 零基础学Linux内核之编译相关篇(2)_静态链接与动态链接
上节说到使一个.c文件变成一个可执行文件需要经历以下几个步骤:预处理(-E得到文本文件.i)、编译(-S得到文本文件.s)、汇编(-c得到二进制文件.o)、链接(gcc最终得到可执行文件)。这节来讲一下链接这个过程主要涉及到的两个知识点:静态链接与动态链接。......
2022-06-24 19:39:18
472
原创 白话数据结构之基本概念篇(5)_排序算法
在介绍完一些基本的数据结构后,接下来介绍一些常见的算法,例如排序、查找、递归等。本节先介绍一下数据结构里应该说是所有人(包括我这种半途而废的人)都会看的排序部分,我会按照不同的时间复杂度进行介绍,分为O(n^2^),O(nlogn),O(n)三种。............
2022-06-17 10:51:42
331
原创 零基础学Linux内核之进程间通信篇(5)_共享内存区
最后介绍一下共享内存区的通信方式,共享内存作为效率最高的一种IPC通信机制,但其也存在缺点,就是需要进程自行维护同步与互斥。
2022-06-09 16:42:55
632
原创 Linux学习笔记之进程间通信篇(4)_同步
在介绍完进程间消息传递后,本节介绍一下同步,主要分为互斥锁、信号量、条件变量等。相较于传递信息,同步更多的用在多个进程对于同一个临界资源的使用。
2022-06-08 18:56:43
1320
1
原创 白话数据结构之基本概念篇(4)_栈&堆
本节再介绍一下基于数组和链表引申出来的两种数据结构:栈、堆。这两种数据结构实际上就是多加了一种限制:先进先出与先进后出。当你需要使用一个只允许先进者后出以及只操作一端数据的场景时,这时候栈就派上了用场。............
2022-06-05 17:35:39
172
原创 白话数据结构之基本概念篇(2)_复杂度
数据结构本身就是为了解决性能问题,那么使用什么东西来衡量不同算法间的性能呢?本节介绍的就是复杂度的概念,主要分为时间复杂度与空间复杂度两个。
2022-06-04 23:51:54
386
原创 白话数据结构之基本概念篇(1)_入门概述
数据结构这门课也算是命途多舛,从最早的大学上课完全不听,到找工作时突击准备了下排序和数组链表,到去年十一月花钱买了个课,最后到现在看完了整本的大话数据结构。可算是暂告一段落了,说不上完完全全学会,但也算是勉强入门了吧。再加上工作两年来收集或总结的一些编程思想,搞个博客写写就当对着整段时间的一个总结和提炼吧。.........
2022-06-03 11:11:51
212
原创 Linux学习笔记之进程间通信篇(2)_信号
本节主要介绍下信号的相关概念和用法,其实这玩意不能算在进程间通信的范畴,但是后面会有涉及就把它也给拎进来介绍下。
2022-06-01 14:02:07
734
原创 Linux学习笔记之进程间通信篇(1)_IPC概述
在了解完进程线程概念后,现在正式进入进程间通信的篇章,也按照Unix卷2的方式进行编写吧,分为IPC概述、信号、管道、消息传递、同步、共享内存这几个篇章。
2022-05-30 17:40:54
704
原创 Linux学习笔记之前置知识篇(2)_线程
上一篇讲到进程的基本概念,这篇讲一下线程的基本概念和与进程间的关系。内容有点多,实则只要掌握下如何创建和回收线程即可。
2022-05-30 14:30:00
693
原创 Linux学习笔记之前置知识篇(1)_进程
好久没写博客了,上次的智能家居计划又搁置了。。最近把Unix卷2给看完了,搞个系列来分享一下,顺便学习下怎么总结和精炼知识。这个系列可能不太适合零基础的人系统性学习,内容都是我个人认为比较重要或是奇奇怪怪的知识点。.........
2022-05-26 17:08:08
752
原创 物联网智能家居DIY_TC32篇(1) 环境搭建与点灯
系列文章目录文章目录系列文章目录一、前言二、前置条件三、本文参考资料四、正文部分4.1 UB运行环境搭建4.2 TC32编译环境搭建4.3 安装SDK并编译一、前言 遥想当年,大学四年基本上都在跟单片机打交道,接触过的单片机也蛮多了,STM32 / ESP8266 / ESP32 / MSP430 / 51啥的,主要还是靠项目和电赛推动吧。最后一次接触单片机就是毕设的工业网关了,那时候搞了个什么多协议网关,LORA + WIFI + Zigbee啥的统统弄上去,网关选择STM32
2022-02-19 00:03:59
4699
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人