- 博客(239)
- 资源 (8)
- 收藏
- 关注
原创 Chrome多设备书签同步
架梯子,使用v2ray结合SwitchyOmega,其中SwitchyOmega设置自动切换,chrome://sync网站配置为使用代理; 重启chrome,关键,不然第3步没反应; 进入chrome://sync,点Trigger GetUpdates(不点也行,会自动更新)
2023-09-20 11:56:39
1213
转载 如何提高for循环的效率--兆易创新一面
=和>=实际上是先做<或>判断,然后把=条件再判断一次。<和>是简单的二元关系运算符,仅比较两个值的大小关系。循环条件使用<比<=快、>比>=快的原因主要在于。数组采用的是行优先访问原则,与元素存储顺序一致。后置自增运算符需要把原来变量的值复制到一个。所以前置自增运算符效率比后置自增要高。
2023-09-03 10:12:08
1184
原创 嵌入式软件中如何排查bug?
许多嵌入式芯片都有相应的仿真调试工具,可以在仿真环境下单步跟踪、查看变量值等。嵌入式系统日志可以帮助定位问题,看是否有报错、异常信息。在代码关键节点添加打印信息输出,跟踪变量值变化情况。如用示波器检查硬件信号,逻辑分析仪查看总线通信等。要准确描述Bug出现的场景、现象,能复现就最好。根据定位出的问题,进行修复,然后再次完整测试。根据现象推测背后的原理或机制,找到问题根源。
2023-08-30 10:13:28
1301
转载 【004 操作系统】线程有哪些资源是共享的,栈是自己独有的吗?
虽然对于局部变量来说,它在代码中是“放”在某一函数中的,但是其存放位置和全局变量一样,存于堆中开辟的.bss和.data段,是共享的。由于堆是在进程空间中开辟出来的,所以它是理所当然地被共享的;因此new出来的都是共享的(16位平台上分全局堆和局部堆,局部堆是独享的)这个是共享的,使用这些公共资源的线程必须同步。Win32 提供了几种同步资源的方式,包括信号、临界区、事件和互斥体。这个可能会误解,因为电脑的寄存器是物理的,每个线程去取值难道不一样吗?它是与具体某一函数无关的,所以也与特定线程无关;
2023-08-16 09:41:31
949
原创 西门子AI面试问答(STAR法则回答实例)
通过建立良好的沟通渠道、倡导透明和积极的沟通,并建立信任和共享目标的文化,我成功地改善了团队合作的氛围和效果。对于一些存在分歧和冲突的情况,我采用了积极的解决问题的态度,促进双方的沟通和理解,寻找共同的利益点和解决方案。我的成果得到了评委和观众的认可,并为我的学术发展和进一步的科学研究奠定了基础。首先,我主动与团队成员进行一对一的沟通,倾听他们的观点和意见,了解他们在合作中遇到的问题和需求。我还参加了学校组织的科学俱乐部和研究小组,与其他热衷科学的同学一起进行讨论和实验,加深我的理解和实践技能。
2023-08-12 10:20:22
5869
1
原创 memcpy、memmove、memcmp、memset函数的作用与区别
如果是字符类型数组的话,memset可以随便用,但是对于int类型的数组,一般只用来清0或者填充-1,如果是填充其他数据就会出错。内存赋值函数,用来给某一块内存空间进行赋值的;:该函数是按一个字节一个字节来给数组或者是结构体赋值。:将已开辟内存空间s的首n个字节的值设为值c。是数组名,或指向某一内在空间的指针;
2023-08-06 20:02:16
647
原创 【003 操作系统】进程间通信方式有哪些?有什么优缺点?
管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。
2023-07-30 23:20:45
2068
原创 【002 操作系统】进程的状态及状态转换图?
NULL -> 创建状态:一个新进程被创建时的第一个状态;创建状态 -> 就绪状态:当进程被创建完成并初始化后,一切就绪准备运行时,变为就绪状态,这个过程是很快的;就绪态 -> 运行状态:处于就绪状态的进程被操作系统的进程调度器选中后,就分配给 CPU 正式运行该进程;运行状态 -> 结束状态:当进程已经运行完成或出错时,会被操作系统作结束状态处理;运行状态 -> 就绪状态。
2023-07-30 14:41:15
6752
原创 【000 操作系统】实时操作系统和分时操作系统的区别
时钟信号能够准确的定时,各处的时钟能够达到一致。硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。软实时系统是一个柔性灵活的,它可以容忍偶然的超时错误。失败造成的后果并不严重,例如在网络中仅仅是轻微地降低了系统的吞吐量。硬实时和软实时之间硬实时系统可以提供严格的实时保证,而软实时系统只能提供统计意义上的实时性。例如,有的应用要求系统在95%的情况下都会确保在规定的时间内完成某个动作,而不一定要求100%。
2023-07-29 10:54:17
6078
原创 【001 操作系统】什么是线程、进程?线程进程的区别是什么?
进程是资源分配的基本单位,它是程序执行时的一个实例,在程序运行时创建。在Linux环境下,每个进程有自己各自独立的 4G 地址空间,大家互不干扰对方,如果两个进程之间通信的话,还需要借助第三方进程间通信工具 IPC 才能完成。不同的进程通过页表映射,映射到物理内存上各自独立的存储空间,在操作系统的调度下,分别轮流占用CPU去运行,互不干扰、互不影响,甚至相互都不知道对方。
2023-07-22 15:06:25
6964
原创 C++笔试常用函数整理
#include push_back:向量尾部增加一个元素pop_back:删除向量中最后一个元素empty:判断向量是否为空,若为空,则向量中无元素size : 输出队列中数据元素的个数#include push :在队列尾部插入元素pop : 移除最顶端的数据 size : 输出队列中数据元素的个数 empty : 判断队列是否为空 front :返回队列中第一个元素,但是并不删除 back :返回队列中最后一个元素,并且不删除#include pop_bac
2023-07-17 15:55:16
1450
转载 Qt知识点总结
QT提供了一些机制来保证线程安全,如互斥量(QMutex)、信号量(QSemaphore)和读写锁(QReadWriteLock)。这些机制可以在多线程环境下实现数据的同步访问和线程间的协调。
2023-06-24 23:20:58
3271
原创 STM32常见面试题
内核不同:F1是Cortex-M3内核,F4是Cortex-M4内核;主频不同:F1主频72MHz,F4主频168MHz;浮点运算:F1无浮点运算单位,F4有;功能性能:F4外设比F1丰富且功能更强大,比如GPIO翻转速率、上下拉电阻配置、ADC精度等;内存大小:F1内部SRAM最大64K,F4有192K(112+64+16)。
2023-06-24 16:34:42
20287
1
原创 Shell基本操作
shell就是一个用户跟操作系统之间交互的命令解释器。简单的说 Shell 就是敲命令。国内把 Linux 下通过命令行输入命令叫做“敲命令”,国外人玩的比较洋气,人家叫做“Shell”。因此以后看到 Shell 这个词语第一反应就是在终端中敲命令,将多个Shell 命令按照一定的格式放到一个文本中,那么这个文本就叫做 Shell 脚本。-- 正点原子。
2023-06-23 22:47:21
2714
原创 Makefile语法介绍
模式规则中,至少在规则的目标定定义中要包涵“%”,否则就是一般规则,目标中的“%”表示对文件名的匹配,“%”表示长度任意的非空字符串,比如“%.c”就是所有的以.c 结尾的文件,类似与通配符。所谓自动化变量就是这种变量会把模式中所定义的一系列的文件自动的挨个取出,直至所有的符合模式的文件都取完,自动化变量只应该出现在规则的命令中。一般的目标名都是要生成的文件,而伪目标不代表真正的目标名,在执行 make 命令的时候通过指定这个伪目标来执行其所在规则的定义的命令。,我们预先设想的清理工程的功能也就无法完成。
2023-06-23 11:51:41
964
原创 二分法(数组中无重复数字、包含重复数字两种情况)
在[3 5 7 9]数组中寻找9:nums[mid] > target 的时候,target在左半边,j = mid - 1;nums[mid] < target 的时候,target在右半边,i = mid + 1;nums[mid] = target 的时候,表明找到了target,直接return。就问自己一句,剩余一个元素是否需要进行循环?因为在最坏的情况下,i=j 的时候才找到target,最后返回的是 mid 的值,因此,需要当 i = j 的时候更新 mid。
2023-06-22 15:29:25
815
原创 【010 预处理】请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句
两个数相减的结果大于0,则加上结果的绝对值肯定大于零;两个数相减的结果小于0,则加上他们的绝对值肯定等于0。
2023-06-15 23:26:52
510
原创 【008 基础知识】什么是GPIO?
例如用一根引脚连到led的一极来控制它的亮灭,也可以用一根(一些)引脚连到一个传感器上以获得该传感器的状态,这给cpu提供了一个方便的控制周边设备的途经。
2023-06-15 22:13:28
202
原创 【003 中断】tasklet和workqueue的区别和底层实现的区别
(1)softirq和tasklet都属于软中断,tasklet是softirq的特殊实现;workqueue是普通的工作队列。(2)tasklet和workqueue,两者都是中断下半部的一种实现方法。区别在于workqueue基于线程的封装,
2023-06-15 21:37:02
749
原创 【004 中断】中断和轮询哪个效率高?怎样决定是采用中断方式还是采用轮询方式去实现驱动?
中断是CPU处于被动状态下来接受设备的信号,而轮询是CPU主动去查询该设备是否有请求。或者有大量数据请求的网络设备,那么轮询的效率比中断高。2.如果是一般设备,并且该设备。则用中断效率要高一些。
2023-06-15 13:14:48
1124
原创 【007 基础知识】驱动里面为什么要有并发、互斥的控制?如何实现?讲个例子?
指的是多个执行单元同时、并行被执行,而解决竞态问题的途径保证对共享资源的互斥访问。所谓就是指。
2023-06-14 13:31:44
1003
原创 【005 基础知识】Linux同步机制?
使用同步机制(如互斥锁、信号量等),可以如不采取必要的同步措施,将会对一些关键数据结构进行交错访问和修改,从而导致这些数据结构状态的不一致,进而导致系统崩溃。因此,为了确保系统高效稳定有序地运行,linux 必须要采用同步机制。
2023-06-14 10:52:05
1181
转载 【011 设备驱动】framebuffer机制?
Framebuffer设备是标准的字符设备,主设备号为29,对应于/dev/fbn设备文件。Framebuffer是linux系统为显示设备提供的一个接口,它将显示缓存区抽象,允许上层应用程序在图形模式下。
2023-06-13 16:06:44
164
原创 【004 基础知识】列举最少3种你所知道的嵌入式的体系结构,并请说明什么是ARM体系结构
复杂指令集(CISC)和精简指令集(RISC)。怎么说这两个的区别呢?CISC的设计思路更加注重性能的发展,是一种高性能高功耗的芯片,在高密度的计算上更具有优势;RISC的设计思路更注重低功耗小尺寸,多用于移动端设备,在重复性任务上占优。ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,其广泛地使用在许多嵌入式系统设计。
2023-06-13 15:54:35
424
转载 【003 基础知识】嵌入式系统中的死循环C语言写法
每循环一次都要判断常量1是不是等于零,在这里while比for多做了这点事不过从汇编的角度来说,都是一样的代码。空语句,编译器一般会优掉的,直接进入死循环。
2023-06-13 15:26:32
335
原创 【010 设备驱动】ioctl和unlock_ioctl有什么区别?
大部分驱动除了需要具备读写设备的能力外,还需要具备例如,要求设备报告错误信息,改变波特率,这些操作常常通过ioctl方法来实现。
2023-06-13 14:55:54
1200
原创 【007 Linux内核】内核函数mmap的实现作用
mmap 的全称是 memory map,中文意思是。其用途是:将文件映射到中,这样就可以效果等同于直接读写该文件。
2023-06-13 12:42:39
267
原创 【001 基础知识】自旋锁、信号量
五、在中断服务程序里面的互斥是使用自旋锁还是信号量?使用自旋锁的进程不能睡眠,使用信号量的进程可以睡眠。四、自旋锁和信号量在互斥使用时需要注意哪些?三、自旋锁和信号量的区别。
2023-06-13 09:16:04
1412
原创 【009 设备驱动】linux驱动中引入模块机制有什么好处?
可以独立升级和替换一个驱动模块。模块化可以实现动态加载功能,可以方便地添加新的驱动模块。
2023-06-13 09:13:30
236
原创 【002 基础知识】什么是原子操作?
不行。这种方法有几个问题:线程上下文切换。如果在一个线程正持有锁时,线程上下文发生切换,切换到另一个线程,那么这个另一个线程也可能通过if条件进入临界区,导致两个线程同时访问临界区。重入。如果一个线程需要重复访问临界区,需要加锁多次,这种方法实现不了。优雅抛出异常。如果在临界区发生异常,需要释放锁,这种方法没有提供释放锁的方式。扩展性差。如果后期需要支持多线程同时访问指定数量的资源,这种方法很难实现。所以,这种简单的自旋锁的实现并不可靠,不适用于生产环境。flag = 1;//3。
2023-06-12 09:30:21
421
原创 【008 设备驱动】设备驱动模型三个重要成员是?platform总线的匹配规则是?
3.第三种匹配方式的 id_table 不存在的话就。4.ACPI 匹配方式。
2023-06-09 21:54:29
939
转载 【007 设备驱动】copy_to_user()和copy_from_user()主要用于实现什么功能?一般用于file_operations结构的哪些函数里面?
由于内核空间和用户空间是不能互相访问的,如果需要访问就必须借助内核函数进行数据读写。当然,如果ioctl没有用到内存数据复制,那么就不会用到这两个函数。一般用于file_operations结构里的。copy_from_user():是完成。copy_to_user(): 完成。
2023-06-09 09:56:56
328
原创 【006 Linux内核】应用程序中open()在linux中执行过程中是如何从用户空间到内核空间?
当我们在用户空间想要实现对内核的操作,比如使用 open 函数打开/dev/led 这个驱动,由于用户空间不能直接对内核进行操作,因此必须使用一个叫做的方法来实现从用户空间“陷入”到内核空间,这样才能实现对底层驱动的操作。
2023-06-08 14:16:40
1274
原创 【005 Linux内核】什么是内核链表?为什么内核链表具有通用性?
内核链表一般就是就像一条绳子串起所有的结构体,这样做的好处,就是可以用内核链表来串起各个不同类型的结构体。内核中由于于是内核设计者就想到了使用通用链表来处理,
2023-06-08 08:59:26
211
原创 【004 Linux内核】用户空间与内核通信方式有哪些?
对于进程来说,它既有也有不管是内核空间还是用户空间,它们都处于虚拟地址空间。内核空间和用户空间交换数据的方式有很多。用户空间发起的有系统调用、proc、虚拟文件系统等。内核空间主动发起的有get_user/put_user、信号、netlink等。
2023-06-07 14:31:39
2585
原创 【003 Linux内核】什么是内核空间,用户空间?
对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel),它独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。具体的实现方式基本都是由操作系统将虚拟地址空间划分为两部分,一部分为内核空间,另一部分为用户空间。针对 Linux 操作系统而言,最高的 1G 字节(从虚拟地址 0xC0000000 到 0xFFFFFFFF)由内核使用,称为内核空间。
2023-06-06 13:30:37
3361
原创 【002 Linux内核】内核中申请内存有哪几个函数?有什么区别?
kmalloc() 申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因为存在较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。
2023-06-06 08:49:05
1317
原创 【001 Linux内核】内核镜像格式有几种?分别有什么区别?
但是 Image 是没有压缩过的, Image 保存在 arch/arm/boot 目录下,其大小大概在 12MB 左右。④、 uImage 是老版本 uboot 专用的镜像文件, uImag 是在 zImage 前面加了一个长度为 64字节的“头”,这个头信息描述了该镜像文件的类型、加载位置、生成时间、大小等信息。所以已经很少用到 uImage 了,除非你用的很古老的 uboot。,但是在实际中我们不会使用 vmlinux,而是使用 zImage 或 uImage 这样的 Linux 内核镜像文件。
2023-06-03 23:27:53
857
正点原子RGB屏幕gt9147驱动改为gt1151驱动教程文件
2023-01-13
元旦倒计时代码. 使用 OpenGL 在 3D 环境中绘制炫酷的数字,并使用一些特殊的着色器效果来使它们看起来更动起来 这是一个
2023-01-03
跨年烟花代码, 非常炫酷, OpenGL在 3D 环境中绘制烟花
2023-01-03
软件定时器与硬件定时器
2023-04-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人