- 博客(48)
- 收藏
- 关注
原创 47、【OS】【Nuttx】【OSTest】内存监控:mallinfo
已经分析了内存监控前,包括堆内存成员,已经堆内存申请与初始化,下面回到内存监控这个主题,继续看内存监控是如何获取内存信息的。
2025-03-23 08:32:38
720
原创 46、【OS】【Nuttx】【OSTest】内存监控:释放延迟空闲块
接上篇 blog分析了内存申请,里面提到了首先要做的,就是释放延迟空闲块,下面就来详细分析下释放延迟空闲块的过程。
2025-03-21 07:45:16
759
原创 45、【OS】【Nuttx】【OSTest】内存监控:用户内存申请
接之前 blog空闲块的添加可以在堆内存初始化时进行,也可以在堆内存申请时进行,下面来分析下堆内存申请。
2025-03-21 07:44:10
1005
原创 43、【OS】【Nuttx】【OSTest】内存监控:添加空闲块
接之前 blog分析了堆空间申请和初始化,在堆空间初始化过程中,涉及到空闲块的添加,这里分析下。
2025-03-19 07:11:32
910
原创 41、【OS】【Nuttx】【OSTest】内存监控:堆空间申请
接之前 blog分析了用户堆的相关成员,以及用户堆的相关内存函数,接下来继续看用户内存的初始化。
2025-03-17 00:05:00
834
原创 39、【OS】【Nuttx】【OSTest】内存监控:用户堆成员
接上篇 blog分析了传参测试,继续看下一个关键功能:内存监控,该功能在 OSTest 中使用非常频繁,主要用来监控每个测试项结束之后,剩余内存使用情况如参数传递测试完成后,打印剩余内存情况,下面来逐一看下这几个成员的含义。
2025-02-10 08:37:04
845
原创 38、【OS】【Nuttx】【OSTest】参数传递
接之前 blog分析完环境变量测试,和任务创建的一些关键要素,OSTest 进入下一阶段,创建新任务继续测试函数参数定义如下,由二维字符数组组成,其中最后一个数组成员固定为 NULL,表示参数结束,因为从 task_create 可见,没有传递参数个数 argc,需要依靠 NULL 来判断成员结束(约定俗称的设计,其实直接多加一个参数 argc 来传递参数个数也不是不行)可以看见不管是 main,还是 user_main,入参其实都有 argc。
2025-02-09 00:03:19
957
原创 36、【OS】【Nuttx】【OSTest】环境变量测试
2025.1.29 蛇年快乐!接之前wiki已经分析完了第一个测试项,输入输出端口测试,接下来分析下环境变量测试,也比较简单。
2025-01-29 23:17:48
1524
原创 35、【OS】【Nuttx】【OSTest】stdio测试:端口初始化注册
在经历文件系统类型的分析,了解文件系统中一些基本类型概念,并知道IO端口在文件系统中的类型定位为,现在继续回到标准IO端口初始化分析中来。
2025-01-27 07:58:59
1031
原创 34、【OS】【Nuttx】【OSTest】stdio测试:inode节点
接之前wiki已经分析了文件实例类型 file 结构体,下面将对文件实例中的 inode 进行分析。
2025-01-26 06:55:58
804
原创 33、【OS】【Nuttx】【OSTest】stdio测试:f_tag_fdcheck分析
上篇 wiki 分析了 file 结构体类型,其中提到了 f_tag_fdcheck 成员,这里做个补充。
2025-01-25 11:18:53
1186
原创 32、【OS】【Nuttx】【OSTest】stdio测试:file成员
接上篇wiki继续stdio测试的分析,上篇讲到,单从测试内容来说其实很简单,没啥可分析的,但这几篇分析的 wiki 会另辟蹊径,从文件系统的角度进行分析标准IO端口的初始化过程,后续再分析文件系统的时候,相关知识点会直接引用这几篇wiki,重复内容不会再出现。
2025-01-24 23:54:55
1417
原创 31、【OS】【Nuttx】【OSTest】stdio测试
接上篇wiki最小系统分析完后,下一个能够更全面了解Nuttx的Demo,当然选择OSTest,里面有大量关于OS的测试用例,方便对Nuttx的整体功能有个把握。
2025-01-20 00:10:47
1744
原创 30、【OS】【Nuttx】构建脚本优化,引入待构建项目参数
如果之前用make构建过项目,需用makedistclean清理一遍工程,才可使用cmake进行构建,否则会失败,构建脚本采用cmake工具链,根据输入项目参数,决定构建哪个项目,当项目不存在时,提醒用户输入正确项目参数。变动点,主要在于增加了project参数,并将工具链替换成了cmake。1、没输入待构建项目时,提示需带project参数。2、输入错误的项目参数时,提示项目参数错误。3、输入正确的项目参数,全量构建ok。这里解释下-r和-p参数。4、换个项目,构建也ok。
2025-01-19 11:35:12
808
原创 28、【OS】【Nuttx】【最小系统】定时器启动
接上篇wiki分析了定时器初始化过程,以及初始化生成的定时器实例,并着重分析了实例对象里的 sim_current 方法,接下来对最小系统中,定时器的启动,以及执行的任务进行分析。
2025-01-16 23:27:53
1282
原创 27、【OS】【Nuttx】【最小系统】定时器初始化
已经分析了任务调度中,任务状态,Ready 队列的更新,接下来分析下定时器,定时器对于任务调度也很重要:常周期执行的任务,需要定时执行,同时也是释放 CPU 资源,给其他任务执行。
2025-01-13 00:44:16
1097
原创 24、【OS】【Nuttx】【最小系统】任务调度:就绪队列介绍
已经分析了任务创建时,如何分配空间;以及轮到任务执行时,如何跳转。这里主要分析如何轮到任务执行,即任务调度策略。
2025-01-09 08:51:52
1215
原创 23、【OS】【Nuttx】【最小系统】任务跳转
回顾上篇wiki,分析了最小系统上运行的四个任务各自作用,以及任务创建时,如何给任务分配空间。这里主要分析任务跳转过程。
2025-01-07 00:52:13
1056
原创 20、【OS】【Nuttx】建一个最小系统工程配置
接之前wiki已经开始用gdb开始调试了,但一直调试别人的demo工程也不是个事儿,哪有调试属于自己的工程舒服。这里问题来了,什么是自己的工程,自己的工程需要什么?想明白自己的工程需要什么,刚开始不容易,不过可以用一个最小系统为起点,搭建一个最小系统工程后,再去想自己需要什么,往上加功能就行了!
2025-01-01 00:01:53
1227
原创 19、【OS】【Nuttx】【Python】gdb调试优化,python实现构建脚本
接之前wiki,已经可以用gdb调试os程序了,不过有一点麻烦的是,每次点击调试按钮,都需要重新配置,构建一遍,甚是麻烦,
2024-12-31 00:15:49
808
原创 17、【ubuntu】【gitlab】【nuttx】自动识别远程仓库默认分支名
接之前wiki准备合并MR的时候,发现合并请求创建不了原因为该项目没有main分支,nuttx-apps的主分支名为master,而gitlab创建的项目中,主分支名为main,开源项目有不少主分支名为master,而非main。
2024-12-29 08:18:00
851
原创 16、【ubuntu】【gitlab】【补充】服务器断电后,重启服务器,gitlab无法访问
接之前wiki,最近把不小心把服务器重启,每次重启后,都会出现gitlab无法访问。
2024-12-28 22:46:15
941
原创 15、【OS】【Nuttx】OS裁剪,运行指定程序,周期打印当前任务
接之前wikiOS还是比较庞大,且上面搭载了Nsh(Nuttx Shell),需要接入串口才能正常工作,一般调试的时候用,非调试的时候,可以取消以节省空间。
2024-12-27 23:49:52
1100
原创 14、【OS】【Nuttx】Nsh中运行第一个程序
1、实时操作系统(RTOS),专为资源受限的嵌入式系统设计,适用于微控制器和其它没有MMU(内存管理单元)的小型系统2、注重POSIX API的实现,以便简化从Linux等系统的迁移,对熟悉Linux编程模型的开发者来说更加友好3、设计之初就考虑到资源受限的微控制器平台,因此资源占用通常比较小,适合内存和处理能力都非常有限的场景4、在无人机和其他高精度控制领域有着广泛应用5、license为Apache V2.0,开源协议宽松,允许自由修改和分发代码。
2024-12-25 23:30:50
1210
原创 13、【ubuntu】【gitlab】【gtest】流水线添加第一个测试任务
基于之前wiki将在build阶段添加构建任务,并在test阶段添加一个测试任务demo是一个C项目,这里选用googletest作为测试任务,googletest主要是为C++设计的,C和C++同属一脉,也可以用来测试C。
2024-12-22 12:57:31
1629
原创 12、【ubuntu】【gitlab】gitlab搭建第一个流水线
基于之前的wiki(1~11),我们已经搭建起来了gitlab,并用go封装了git,还做了一系列优化,下面开始搭建第一个流水线任务,流水线任务可以用来做构建,测试和部署,是持续集成,持续交付的核心,关键性不言而喻,下面将用C工程来搭建起第一个流水线。
2024-12-21 19:39:32
1530
原创 11、【ubuntu】【go】【git】优化go封装git,防止git原生参数丢失
接着之前的wiki发现git的一些原生参数用不了,如git -c等等,而且git -v出来的是自定义的git版本原因在于 urfave/cli 包中,以"-“或”–"开头的参数会被解释成Flag标志。而非命令,当检测不到对应的标志时,就会报错;标志和命令可以如下这样定义。
2024-12-20 23:56:30
561
原创 10、【ubuntu】【go】【git】优化merge request:使用分叉方法对项目进行隔离
接之前的wiki,当前使用的方法是将本地分支直接推送到原始项目上这样做有很多缺点:1、原始项目上会接收很多无用分支,其中有很多可能是为了修复BUG而临时新建的分支,造成原始项目上2、当多人对同一个原始项目进行开发时,如果分支名相同,很容易出现MR冲突3、有时为了图省事儿,懒得新建分支,想在源分支进行修改,但是源分支又不能直接推送到远程仓库,还得先新建个分支,再推送到仓库,麻烦4、很多项目进行到某个节点会停止更新,进入到维护分支状态,此时如果原始项目上多出很多本地推送的分支,会造成项目管理混乱。
2024-12-17 23:13:34
773
原创 9、【ubuntu】【go】【git】优化merge request:mr合并前,可以使用git mr多次提交
继提示当前已有另一个合并请求存在,无法再次提交。
2024-12-16 01:36:55
921
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人