- 博客(48)
- 收藏
- 关注
原创 【linux-IMX6ULL-字符设备驱动简单框架实验】
目前的驱动开发一般是分为三类,第一类就是字符设备驱动、块设备驱动、和网络驱动三类,其中字符设备驱动是最多最杂的,现在对字符设备驱动进行一个简要的介绍:通过设备注册使设备能被系统识别;注销则相反;通常包含open,read,write,realse等;处理设备产生的中断,以响应特定事件;通过字符型设备驱动,可以使系统方便统一管理不同的设备,这样就可以给上层应用提供相应的接口函数,方便应用程序与设备之间进行数据交换和通信;
2024-05-24 15:40:39 434
原创 【linux-kernel内核移植记录-踩坑以及注意事项】
通过上述步骤,成功完成了I.MX6ULL开发板的内核移植与驱动修改,实现了系统的正常启动和基本功能的运行。主要修改内容包括CPU频率设置、EMMC驱动模式以及网络驱动配置。在实践中需要特别注意保持编译配置的持久性,避免清理工程导致配置丢失,这里主要是对自己进行linux内核移植过程的关键信息进行了一个介绍和总结,可作为复盘的记录;
2024-05-21 20:16:00 556
原创 【linux-IMX6ULL-uboot初次编译及烧录
使用IMX6ULL的板卡,对uboot源码进行初次编译和烧录,烧录采用uu工具实现一键烧录bin文件
2024-05-13 20:20:37 557
原创 【linux-IMX6ULL-RTC-IIC-SPI配置思路】
主要介绍了IMX6ULL的RTC,IIC,SPI外设,并对其进行了基础知识的概述,并对其配置流程进行了简介,最后给出了其配送实现代码,文章非教程类文章
2024-05-13 14:36:11 663
原创 【Linux-IMX6ULL-DDR3简介测试-RGBLCD控制原理】
主要介绍IMX6ULL的DDR3的初始化检测,其次简要的介绍了RGBLCD屏幕,并对其一些关节数据例如:分辨率、像素格式、LCD时钟计算等基本知识进行了介绍,对其行时序图和帧时序图进行了简要说明,最后给出了IMX6ULL的硬件控制接口RGBLCD的控制时序图以及配置总体思路时序图
2024-05-12 15:57:19 783
原创 【linux-IMX6ULL-定时器-GPT-串口配置流程-思路】
主要对IMX6ULL的三部分EPIT定时器、GPT定时器、及UART的这些外设的配置进行了简要的说明,并且对定时器+按键消抖和定时器高精度的延时进行了简要的分析,同时通过异或的结合律可以方便的检测串口通信的奇偶校验
2024-05-12 10:32:38 1026 1
原创 【linux-IMX6ULL中断配置流程】
主要对IMX6ULL的GIC中断控制器和Cortex-7的中断进行了简要说明、然后对中断配置进行底层配置和上层配置两大类,并对这两类配置进行了一个简要的概括,具体细节要针对源码细细揣摩;
2024-05-07 22:04:46 1083
原创 【linux-IMX6ULL配置GPIO通用流程-以及时钟配置】
对IMX6ULL的GPIO的通用配置流程进行了简介,例如:LED、KEY、BEEP都属于次范畴,其次对标准库的实现进行了必要的解释,最后对IMX6ULL的时钟树进行了一个简要的概括
2024-05-05 17:22:20 865
原创 【linux-1-Ubuntu常用命令-vim编辑器-Vscode链接ubuntu远程开发】
linux-1-Ubuntu常用命令-vi没编辑器-Vscode链接ubuntu远程开发】
2024-04-30 12:09:19 784 1
原创 【基础C-递归的易错思路】
现在要写一个小程序,实现输入整型:4268,输出字符:‘4’,‘2’,‘6’,‘8’,思路很简单,就是进行整数的除10,结果对10求模就行,但是得到的值是逆序排列,因此进行从后往前输出可以采用递归的思路,代码如下,但是其中有个问题:就是其中一行代码写多余了,多余的原因是在递归过程中,有一个不变思维,
2024-04-27 21:18:18 106
原创 【工具】-根源上解决VScode打印输出乱码的问题
你要想办法第一步把这里改成一致,UTF-8或者GBK都行,反正改成一致,(不改的话就要手动在命令窗口输入编译命令,异常繁琐),这个编译命令如何改,一般和你的配置文件有关,其中基本在这两个地方,在。中的就不起作用了,至少在编译阶段是不起作用的;中配置文件如下:这里在编译阶段不起作用。
2024-04-26 17:10:17 572
原创 【数据结构6--图】
图(Graph)是一种数学结构,用于表示对象之间的关系。在图中,通常包含以下元素:一些简单的概念术语就不讨论了,例如:提醒一点下图是一个图还是4个图?(一个图,千万别说成四个图)(x,y)指由x点到y点,且无方向;也就是(x,y)=(y,x);指由x到y,但是有方向;也就是!=;什么是顶点?什么是边?什么是图?什么是子图?—就是从一个图中拿走一部分,这部分就是子图,隶属关系什么是有向图?—只要有一根线带方向就是有向图什么是完全有向图?
2024-04-24 15:11:19 796
原创 【基础】gcc-动态库和静态库的创建和使用-命令
这样能编译通过,但是后面项目中如果这些文件使用频繁,那么每次这样输入就是显得很繁琐,尤其是当编译文件非常多的时候。这样编译后,就会将静态库中的代码链接到你的程序中。再建立一个测试文件:test.cpp。工具将目标文件打包成静态库。编译源文件,然后使用。
2024-04-19 12:07:53 1018 1
原创 【基础】在GCC中编译和链接不是一个命令
编译和链接是软件开发过程中的两个重要步骤,它们分别完成不同的任务。通过将编译和链接集成在一个命令中,GCC 提供了一种方便的方式来构建可执行文件。然而,你也可以分别进行编译和链接的步骤。GCC 会自动完成编译和链接的过程,并生成可执行文件。命令来完成,它只会生成目标文件,而不会进行链接。命令,并指定所有相关的目标文件和库文件。
2024-04-18 21:14:31 165
原创 【数据结构2-线性表】
线性表、栈、队列、串和数组都属于线性结构。 线性结构的基本特点是除第一个元素无直接前驱,最后一个元素无直接后继之外,其他每个数据元素都有一个前驱和后继。
2024-04-17 19:57:27 408
原创 【力扣】45. 跳跃游戏 II
核心思路,例如nums[i]=5,那么最远能跳五步;那么在这接下来1-5范围内,哪个能让我跳的最远,这个最远指的是超过5的范围最远:而不是1-5步内哪个数最大!!!! //例如: 5 4 1 1 3 1; //下标: 0 1 2 3 4 5 下一步是跳到nums[4]显然能下一步能跳的更远(注意这个更远的含义,指超出5的范围)而
2024-04-14 15:33:13 268
原创 【基础】C语言中的qsort()的用法
C语言中没有预置的sort函数。如果在C语言中,遇到有调用sort函数,就是自定义的一个函数,功能一般用于排序。
2024-04-11 21:38:58 175
原创 【力扣】43. 字符串相乘 - 力扣(LeetCode)
不是先得到三个结果,然后再相加,实际是对两个单独的数进行处理然后加上进位和这个位上原本的值,然后把结果进行存储
2024-04-06 21:41:12 190
原创 【力扣】38. 外观数列 - 力扣(LeetCode)
这个题首先想到的就是用递归,如然后就是对上一个的字符串进行遍历,遍历的同时进行判断,每次结束一个最小数量的组,就把这个小片段格式话成字符串,然后依次结束,把每个字符串拼接起来就是最终的结果,然后进入下一次的迭代;总体思路比较简单,但是代码效率非常低
2024-04-06 17:16:28 199
原创 【力扣】22. 括号生成 - 力扣(LeetCode)-C-回溯法
每次记录完毕都进行一个判断例如n=2时,当( 出现两次,那么剩下的一定都是 ),这个很好补全,还有一种就是( ))的情况,也就是R>L,这时候不符合情况,就不要记录了,舍弃这一层的结果返回上一层,依次遍历全部情况;这个本质上使用的还是递归,是一种暴力的求解,只不过处理代码放在了return的后面;理解回溯的前提一定要搞懂递归。这里记录的思路主要是根据代码的流程来进行一个解释,主要是还是使用回溯法,对于括号的判断,每次选择都有两次分支,不是。
2024-04-04 16:52:50 356
原创 【力扣】20. 有效的括号-纯C-栈的理解及运用
这个题要理解透彻采用栈的结构,遇到(,{,[,三种结构就进行入栈,每次出现相对的就与栈顶相比较,如果栈顶没有东西可比较的则也是错误情况返回false,如果不同就返回false;如果相同栈顶指针向下移动,对消完毕,舍弃前面栈顶的值,pt指向新的栈顶。还有一种情况就是最后没有对消完,也就是((((的情况,则要返回假。
2024-04-03 21:19:51 141
原创 【力扣】17. 电话号码的字母组合 - 力扣(LeetCode)
这个回溯法的关键是要理解递归,在递归的基础上再理解回溯法,尤其是当递归结束和循环结束后下一步应该运行到哪里?return可以返回到上一层递归,但是当最后循环结束时也能回到上一层递归,可以调试看看每一步运行过程。对于个题目而言,我使用的均是中心扩散法,但是细节处理有些不同,有两个版本,一个是字符串原地返回,另外一个是申请内存并进行保持符合要求的字符串,然后进行返回;
2024-04-02 12:05:26 471
原创 【力扣】5. 最长回文子串 - 力扣(LeetCode)
这个问题比较简单,对于字符串"ab"而言,循环中不会进行判断,也就是max的值不会更新,所以返回s时第二个值要截断成’\0’,所以要max预设成1;对于个题目而言,我使用的均是中心扩散法,但是细节处理有些不同,有两个版本,一个是字符串原地返回,另外一个是申请内存并进行保持符合要求的字符串,然后进行返回;如果只按照上面的思路进行写程序,会显得很麻烦,很多细节要考虑到,因此可以选择暴力一点,对每一个字符,我们都认为它既是奇数类又是偶数类,,这时很理所当然的,我当时也是这样认为的,但是结果是错误的!
2024-03-30 14:10:38 260
原创 【基础】单链表基础及实列分析-C
如下图所示,一个基本的单链表就是这样,其原理也是这样:每次使用 malloc()为新结构分配空间时,也为新指针分配空间。但是,还得需要另一个指针来跟踪新分配的指针,用于跟踪新指针的指针本身,也需要一个指针来跟踪,以此类推。
2024-03-27 21:27:13 370
原创 【力扣】36. 有效的数独 - 力扣(LeetCode)
9个小方块如何与循环联系起来,其中可以观察,首先是行数的变换肯定是在最外循环圈,因此每次加三就行,而对于列循环肯定是在内圈,而且行数变换一次,列数就要循环变换三次,因此列数每次加三是在内循环,而最里面的循环就是先进行拉直处理,然后进行判断数组元素是否相等,具体细节可以参考代码,由于使用的是暴力循环,思路比较简单,因此就不梳理整体流程图了。这个是比较好判断的;对于循环判断的难点就是最后一个如何进行判断,因为这不像一行或者一列的进行判断,如果是一行或者是一列就好判断了,因此我们可以思考把这。
2024-03-27 16:39:32 431
原创 【力扣】35. 搜索插入位置 - 力扣(LeetCode)
首先想到是要用二分法,所以做这个题要了解一下二分法的原理及代码实现。对于这个题而言,二分法最后结束的条件最好是。,循环结束后有两类,一种是找到了目标值也就是返回下标mid,另外一种就是没有找到,但是目标值的下标一定跟。,因此对于left对应的值是否等于目标值我们没有判断,所以left对应的值有三种可能,也就是。,这样利于后面的判断因此while循环的条件应当是。而前两种情况可以归为一类,例如:1,3,5,6;,因为我们循环结束的条件是。
2024-03-26 11:28:59 415
原创 【力扣】33. 搜索旋转排序数组 - 力扣(LeetCode)-思路分析及解答
【代码】【力扣】33. 搜索旋转排序数组 - 力扣(LeetCode)-思路分析及解答。
2024-03-25 13:42:58 173
原创 【基础】二进制补码、异或运算、位移运算、对齐
C 区别于许多高级语言的特性之一是访问整数中单独位的能力。该特性通常是与硬件设备和操作系统交互的关键。C有两种访问位的方法。一种方法是通过按位运算符,另一种方法是在结构中创建位字段。C11新增了检查内存对齐要求的功能,而且可以指定比基本对齐值更大的对齐值。通常(但不总是),使用这些特性的程序仅限于特定的硬件平台或操作系统,而且设计为不可移植的。
2024-03-24 22:00:48 937
空空如也
测速编码器测出来的速度乘以一个系数不就相当于变相提高精度了吗?为什么实际不可行??
2023-12-10
状态观测器仿真验证问题?如何验证有效性?
2023-12-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人