- 博客(22)
- 收藏
- 关注
原创 Linux内核、线程、进程同步互斥方法及IPC方法的总结
前段实践在B站进行模拟面试时发现,自己对Linux中的同步互斥方法,以及IPC方法,没有很好的理解和总结过。因此,本笔记将总结这部分内容。
2024-11-02 14:40:55
1092
原创 关于嵌入式学习的一些短浅经验
模拟面试第四期-已经拿到大厂 OFFER 的研究生大佬-LINUX 卷到飞起_哔哩哔哩_bilibili然后,沈阳小神仙 up 也问了我,给一些刚入门的同学,关于嵌入式学习的建议。其实,我也就学了三四年,还是一个嵌入式小菜鸡,Linux 也是刚入门,只能做一些建议以及谈谈自身的学习经验。如果像我一样只是一个双非,就别搞 Linux 驱动开发了(岗位饱和,需要 bg),把 RTOS 和 MCU 学精了,比如,去现在风口的汽车电子企业就很好了;
2024-10-24 10:20:34
3002
2
原创 C++-类和对象-1
在C++中,结构体内不仅可以定义变量,也可以定义函数。而类Class就可以看出是c++中的改进结构体,有很多新特性。// 类体:由成员函数和成员变量组成// 不要忘记有分号类中的数据称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。推荐定义类的方法是:将类的声明放在.h头文件中,将类的定义放在.c文件中。例如:.hclass Datepublic:private:int _year;int _month;int _date;.c。
2024-07-04 21:53:41
626
原创 Linux的启动流程与级别,以ARM-RK3566开发板系统为例
当一台Linux电脑启动后,处理器会先在系统存储中查找BIOS,之后BIOS会检测系统资源然后找到第一个引导设备,通常为硬盘,然后会查找硬盘的主引导记录(MBR),然后加载到内存中并把控制权交给它,以后的启动过程就由MBR控制。主引导记录会初始化引导程序(Linux上有两个著名的引导程序,GRUB和LILO,80%的Linux系统在用GRUB引导程序),这个时候GRUB或LILO会加载内核模块。字段:与本服务有冲突的模块,如果列出的模块中有已经在运行的,本服务就不能启动,反之亦然。
2024-04-13 22:10:26
1455
原创 简单学习速记-STM32串口接收使用DMA+空闲中断
这是一篇简单的学习笔记,记录使用STM32串口接收不定长数据,之前都是使用接收中断+缓冲区的方式,这篇笔记使用DMA+空闲中断的方式。清除idle标志位,停止DMA传输。DMA当前帧实际接收的数据长度。DMA当前帧实际接收的数据长度。使用串口空闲中断的基本思路是。设置串口接收完成标志。使能串口和DMA中断。
2024-03-19 21:04:27
2624
1
原创 立创泰山派tspi-rk3566修改编译设备树,即编译内核(使用WSL、docker)
本文主要讲解使用WSL2与Docker修改设备树文件,编译内核并下载到立创泰山派rk3566开发板上。
2024-03-10 12:48:37
3846
4
原创 立创泰山派tspi-训练营笔记-WSL2使用Docker编译泰山派tspi的SDK(Win11)
本文是在使用WSL2编译立创泰山派SDK时的一些笔记,也整合了网上很多大佬解决WSL2安装Docker,以及repo等方法。本文的系统为专业版编译流程参考泰山派官方文档:https://lceda001.feishu.cn/wiki/Da5owUV4dipiqUkZycbcxckinvc。
2024-02-06 12:24:33
1801
2
原创 立创泰山派tspi-训练营笔记-WSL2安装使用Docker(Win11)
本文是在使用WSL2编译立创泰山派SDK时的一些笔记,也整合了网上很多大佬解决WSL2安装Docker,以及repo等方法。本文的系统为专业版
2024-02-06 12:21:10
1356
2
原创 立创泰山派tspi-Windows11安装与配置WSL2用于Linux开发
Windows 的 Windows Subsystem for Linux (WSL)AI解释:WSL 2允许用户在 Windows 系统上运行一个完整的 Linux 内核。与 WSL 1 相比,WSL 2 使用了更高度虚拟化的架构。WSL 1 主要是通过为 Windows 提供一个兼容层来运行 Linux 二进制文件,而 WSL 2 则是在 Windows 中运行一个真正的 Linux 内核,这也使得 WSL 2 具备更好的性能和更好的兼容性。
2024-02-02 15:05:21
1632
2
原创 Linux驱动学习-关中断与自旋锁
自旋锁可以保证临界区不受别的CPU和本CPU内的抢占进程打扰,但是得到锁的代码路径在执行临界区的时候,还可能受到中断和底半部(BH,稍后的章节会介绍)的影响。如果在获取锁期间发生中断,中断处理程序将不会执行,因为 IRQ 被禁用,这可能会导致一些问题。这对函数会在获取锁之前保存当前 CPU 的 IRQ 状态,并在释放锁后恢复保存的 IRQ 状态。DS18B20温度传感器Linux驱动,因为设备脉冲信号时间很短,很可能错失中断,且需要关中断。这两对函数的区别在于 IRQ(中断请求)的状态的保存和恢复方式。
2023-12-03 22:04:00
276
1
原创 用筛选法求100之内的素数(个人笔记和思路)
所谓筛选法是指“Eratosthenes筛法”,采用的方法就像拿一个“筛子”不断地筛掉一组数中非素数的数,那么剩下的就都是素数了,具体做法如下:从1开始,先将1筛掉。(1是特殊的非素数,直接去掉即可,具体的素数定义可以参考维基百科)然后从2开始,2是素数,2的整数倍都不是素数,都筛去。然后3也同理,而4则是2的两倍,已经被筛去就跳过,所以下一个是5。一直到99为止。(实际上只需要筛选到为止即可,因为<=n,已经可以筛选到n项了)下面我们看代码#include<stdio
2022-03-08 15:06:09
3964
原创 学习笔记,递归函数
1.递归和非递归分别实现求第n个斐波那契数。非递归:int main(){ int i = 1; int j = 1; int n = 7; for (int k =1;k<=(n/2);k++) { i = i + j; j = i + j; } printf("第%d个斐波那契数为",n); if (n % 2 == 1) printf("%d\n", i); else printf("%d\n", j); return 0;}递归:in..
2022-02-25 13:09:12
732
原创 注意数组是不用允许拷贝,只存在传址调用。所以代码对形参数组arr的修改会作用在实参上,和使用指针是一样的
创建一个数组,实现函数init()初始化数组、实现empty()清空数组、实现reverse()函数完成数组元素的逆置。要求:自己设计函数的参数,返回值。1、初始化数组代码,初始化为0~sz-1:void init(int* pa,int sz){ int i = 0; for (i = 0; i < sz; i++) { *(pa + i) = i; }}2、清空数组代码:void empty(int* pa, int sz){ int i = 0;
2022-02-19 21:12:27
162
原创 求某一个数的二进制位中1的个数的方法(c语言)
方法1:除二取余注意:函数参数要定义为unsigned int(无符号整型),这样确保复数进来也可以被统计,如-1的补码为11111111111111111111111111111111(32个1)就可以被统计。int count_bit(unsigned int n){ int count = 0; while(n) { if (n % 2 == 1) { count++; } n /= 2; } return count;}int main(){
2022-02-17 20:43:41
616
原创 记录下,由输入缓冲区导致的问题------编写一个程序,可以一直接收键盘字符,1、如果是小写字符就输出对应的大写字符,2、如果接收的是大写字符,就输出对应的小写字符,3、如果是数字不输出。
问题如下:编写一个程序,可以一直接收键盘字符,1、如果是小写字符就输出对应的大写字符,2、如果接收的是大写字符,就输出对应的小写字符,3、如果是数字不输出。#include<stdio.h>int main(){ char a = '0'; while (1) { printf("请输入:"); a = getchar();//会有个回车键在输入缓冲区,下一次访问会直接被读取。 if ('a' <= a && a <= 'z')
2022-02-15 16:11:14
288
原创 三个C语言题目
1. 将数组A中的内容和数组B中的内容进行交换。(数组一样大)2. 计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值。3. 编写程序数一下 1到 100 的所有整数中出现多少个数字9。代码如下:1. 将数组A中的内容和数组B中的内容进行交换。(数组一样大)int main(){ int a[5] = { 1,2,3,4,5 }; int b[5] = { 5,4,3,2,1 }; int sz = sizeof(a) / sizeof(a[1
2022-02-11 16:11:42
263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人