自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c生万物系列(封装)

以该文件为例,笔者将私有类放在源文件,然后在定义初始化的相关函数,比如initd(),这个函数隐藏了virtual_new函数,但是可以在头文件中声明,从而被调用,这就实现了接口。在头文件中使用typedef进行重定义,可以达到模拟private的效果,但是除了不能直接访问该数据结构,并不影响定义指针然后分配内存。至此,封装的要素class,public,private已经大致实现,下一节笔者讲一讲继承。但是开源后随着不断更新和修改,在现在的新版本中,笔者甚至觉得有点臃肿了,不是十分好用。

2024-07-24 15:04:51 174

原创 c生万物系列(面向对象:封装)

笔者决定用c语言模仿高级语言,例如模拟面向对象:封装,继承,多态。当然,源码只使用c语言和汇编。如果你偶然找到了这篇博客,但是发现不知所云,请不要过多投入时间,可能笔者本人那时候也看不懂了。先说面向对象的封装:在Java中,有public,private对成员进行封装,在c语言中我们又该怎么办呢?本系列博客主要介绍c语言的一些屠龙技,里面包含了笔者本人的一些奇思妙想。如果使用pri->id直接访问,会出现报错,必须使用对应的接口进行访问。让笔者先介绍第一种示例:结构体定义放在源文件,接口和声明放在头文件。

2024-07-23 18:04:46 150

原创 C程序优化与指针传址

首先,int token,代表token的大小是已知的,就是一个int,但是int *token,token只是代表一个指向int的一个指针,是需要我们初始化的,不然直接*token的后果就是野指针,你也不知道它到底指向了哪里。刚开始,笔者并没有初始化token指针,直到编译程序并执行后,程序出现segmentation fault,使用gdb调试时,意识到没有初始化内存,于是使用malloc函数分配,执行完程序后再使用free释放。开始程序使用全局变量,程序如下:程序的缺点是全局变量的泛滥。

2024-07-22 13:39:01 161

原创 操作系统内核源码杂谈篇:临界区

临界资源,是指同一时刻只能由一个线程(linux下为进程)访问的资源,而临界区就是为了确保临界资源访问是单一数据流。

2024-07-17 20:02:52 274

原创 详解linux驱动框架(开篇)

对input子系统的源码分析

2024-07-16 11:16:54 571

原创 微型操作系统内核源码详解系列五(六):Pendsv切换任务下篇

微型操作系统内核系列主线完结篇

2024-06-25 21:07:57 642

原创 微型操作系统内核源码详解系列五(五):cm3下Pendsv切换任务上篇

PendSV中断

2024-06-23 12:32:22 1003 1

原创 微型操作系统内核源码详解系列五(四):cm3下svc启动任务

经历了前面的文章的铺垫,一切都准备就绪,接下来我们将会在SVC中断服务函数中开启第一个任务。

2024-06-22 16:10:07 983 1

原创 微型操作系统内核源码详解系列五(3):cm3下调度的开启

运行在cm3上的FreeRTOS的任务调度器的开启

2024-06-21 22:31:12 718

原创 微型操作系统内核源码详解系列五(2):cm3下栈的初始化

这一篇让笔者介绍arm cortex m3架构下的堆栈初始化

2024-06-17 23:41:42 702

原创 微型操作系统内核源码详解系列五(1):arm cortex m3架构

通过前面的12篇博客,笔者对FreeRTOS的内核进行了抽象,讲述了FreeRTOS内核源码是如何构成一个调度器的,相信读者已经对rtos的执行过程有了清晰的概念,既然核心思想已经阐述完整,那么让我们顺着主干部分一步步构建FreeRTOS内核。

2024-06-15 17:20:48 944

原创 微型操作系统内核源码详解系列四(4):操作系统调度算法(FreeRTOS内核篇下)

它被宏定义为taskRECORD_READY_PRIORITY函数,这其实就是根据就绪任务的优先级,把变量uxTopReadyPriority相关的位置1,与上一篇的通用算法对任务的处理类似,每一个任务被添加到就绪列表时,它对应的位置1,进行延时等其他放弃cpu使用权的活动时,它被移除就绪列表,对应的位置0;这两种算法,一个是更新最高优先级的数字,另一个则是更新对应的位,其实这两个之间有一点细微的差别,就是在移除就绪列表的任务时通用算法不用更新,而指令算法要更新,至于原因,笔者已经在上一篇写了。

2024-06-13 16:12:17 750

原创 微型操作系统内核源码详解系列四(3):操作系统调度算法(FreeRTOS内核篇上)

-uxTopPriority,被设定为是代表最大优先级的数字,自减操作代表从就绪列表最后一个链表(优先级最高的链表)开始查找,直到找到任务链表不为空的优先级任务,那么这个任务肯定也是所有任务中优先级最大的任务,然后获取这个任务的TCB并更新pxCurrentTCB(切换的具体函数),最后更新uxTopReadyPriority的值。容笔者说一下个人看法,从c语言和数据结构算法的层面学习,只能说是舍本逐末,透过Freertos这个小型系统,窥见庞大的操作系统架构的一角,这才是我们学习的重点。

2024-06-12 23:05:18 914

原创 在centos7下利用configure从源码构建和安装LLVM3.4

llvm在3.5版本后就不支持从configure配置了,官方更推荐利用cmake配置。简单来说,就是,把llvm-3.4重命名为llvm,在llvm/tools下,把clang-3.4放进来,重命名为clang,在llvm/tools/clang/tools下,把clang-tools-extra-3.4.src.tar.gz放进来,重命名为extra。(--disable-optimized --prefix这几个选项的意思,读者可以在llvm目录下运行./configure --help查看)

2024-06-09 12:37:58 484 1

原创 微型操作系统内核源码详解系列四(2):操作系统调度算法(rt-thread内核)

总的来说,这种基于哈希思想的查表法应用十分广泛,采用空间换时间的策略,具有一定的学习价值,如果某些程序对查询的时间要求比较高,可以尝试用查表策略代替之前的遍历策略。

2024-06-07 18:45:57 908

原创 微型操作系统内核源码详解系列四(1):操作系统调度算法(linux0.11版本内核)

操作系统的调度器本质就是在进行选择和切换

2024-06-07 12:19:04 560

原创 微型操作系统内核源码详解系列三(5):进程与线程

操作系统的基础知识

2024-06-06 18:13:43 811

原创 微型操作系统内核源码详解系列三(4):arm架构篇

从arm架构的角度看,RTOS通过SVC中断开启了第一个任务,随后PendSV中断进行任务的保存与切换,这就是FreeRTOS中的任务调度。

2024-06-02 17:17:07 563

原创 微型操作系统内核源码详解系列三(3):任务及切换篇(任务函数定义)

本小节我们讨论prvAddNewTaskToReadyList函数

2024-05-29 21:14:18 352

原创 微型操作系统内核源码详解系列三(2):任务及切换篇(任务函数定义)

本节笔者将会重点讲解prvInitialiseNewTask函数

2024-05-29 11:19:33 837

原创 微型操作系统内核源码详解系列三(1):任务及切换篇(任务函数定义)

本篇笔者将会正式进入FreeRTOS这个微型操作系统最重要的一章:任务(线程)及切换。笔者会对每一个函数进行讲解,该篇预计有十个小节

2024-05-28 21:10:14 598

原创 微型操作系统内核源码详解系列三(0):空间存储及内存管理篇(前置篇)

本篇将会补充关于FreeRTOS存储架构及内存管理的知识,以便于笔者更好的认识堆,栈,内存分配这些术语。说实话,笔者认为理解一个os并非易事,希望读者在面对大量概念和术语时有一定的耐心,能够花一点时间去理解这些抽象的知识。

2024-05-24 11:53:58 736

原创 微型操作系统内核源码详解系列二:数据结构和对象篇(以freertos为例)

补充学习FreeRTOS内核源码所需要的基础知识和思想方法

2024-05-21 17:55:56 1065 1

原创 微型操作系统内核源码详解系列一:rtos内核源码概论篇(以freertos为例)

笔者在学习os的过程中,接触过linux这样的操作系统,也接触过minirtos,freertos,rt-thread这样的微型操作系统,操作系统的原理让人倍感好奇,在学习过一段时间的rtos后,笔者尝试实现了freertos的内核。因为有大量关于freertos内核的资料,笔者用了一个月的时间完成了内核的实现,所以更了这个系列的博客,希望大家能跟着我的博客,一起手敲一个freertos内核。

2024-05-19 12:44:47 711 2

原创 stm32f1移植FreeRTOS及问题解决

版本是2022.12版本,移植rtos过程中踩了很多坑,靠着笔者对rtos内核的理解反复调试,最后成功移植。

2024-05-11 23:36:57 713 2

原创 linux驱动篇:imx6ull通过I2C协议实现对0.96寸oled屏幕的驱动

屏幕大概长这样,使用的协议是i2c。

2024-05-04 12:30:38 339

原创 linux驱动篇:imx6ull通过SPI协议实现对2.8寸tftspi屏幕的驱动

编译以后,下载到开发板中,modprobe 时能看到屏幕刷新。

2024-04-27 11:47:33 233 2

原创 正点原子imx6ull wifi驱动模块问题

正点原子imx6ull的wifi驱动模块问题及解决

2024-04-04 18:37:31 340 1

空空如也

空空如也

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

TA关注的人

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