- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 项目开发记录一
这篇文章记录了作者从Linux驱动开发转型为嵌入式软件工程师的经历,重点复盘了首个量产项目的实战过程。面对新环境的技术挑战,作者完成了开源项目复刻和3D动画播放功能开发,并总结了关键经验教训:项目启动前应充分评估硬件性能极限和可行性;开发中需结合调试经验和多领域知识;从模块开发到系统交付需要思维方式的转变。文章为嵌入式开发新手提供了宝贵的实战参考,强调了技术储备与前期评估的重要性。
2025-10-28 22:20:26
404
原创 树莓派环境搭建
每个 CB 需明确配置新的源缓冲区地址( SOURCE_AD/ SRC)、传输长度(TXFR_LEN / LEN ),并开启中断使能(TI寄存器INTEN=1`,可选,用于确认 CB 执行状态)。如果你也有数据连续写入而且要求实时性的比较高的场景也可以借鉴我的用法:1. 配置控制块(CB)链表,预留 “源缓冲区切换节点”根据自己的数据传输长度以及数据量,以及传输模式进行修改,我也只是一个使用者,具体的DMA传输原理这里就不讲。在驱动实现中断绑定。根据源缓冲区的更新模式(连续地址 / 离散地址),通过。
2025-09-29 10:33:32
545
原创 树莓派环境搭建
这个bootfs就是windows下可以访问的/boot目录。记录一下,毕竟也是一直在看大佬的博客,也是总结一下经验吧。由于windows下不支持linux的文件系统,所以只能访问/boot下的文件。如:虚拟机接入读卡器后可以访问到两个类似u盘的设备。首先,烧录Image的步骤我直接就贴我认为比较好的博主的帖子了。另外一个目录就是rootfs,这个目录就是树莓派系统的根目录了。你可以修改/etc/ssh/ssh_config下的配置。因此,可以借用虚拟机下的linux系统访问U盘。1、修改ssh的配置。
2025-09-22 10:52:06
332
原创 Linux上开发APP获取设备事件
开发目的,是想要通过2.4G 无线遥控控制播放设备选择播放文件。查看当前系统中的输入设备查看设备U: Uniq=B: PROP=20B: REL=3B: MSC=10U: Uniq=B: PROP=20B: REL=3B: MSC=10U: Uniq=B: PROP=0B: EV=21B: SW=40U: Uniq=B: PROP=0B: EV=17B: REL=903B: MSC=10。
2025-09-16 10:47:02
1078
原创 Linux文件与目录相关命令
手册页通常被分为多个节(section),每个节包含一类相关的手册页。例如,第一节(Section 1)包含与用户交互的命令,如 ls、cp、man、grep 等;在想删除test>>>>test1>>>>test11这条线的时候,只能删除test11,因为test1中还有test12,所以只删除到test11就停止下来了。当前目录结构是:tmp >>>>test>>>>test1>>>>test11。当前目录结构是:tmp >>>>test>>>>test1>>>>test11。最常用在目录的删除了!
2023-05-21 20:01:39
264
1
原创 Linux文件系统结构
例如:/etc/sysconfig/network-scripts/ifcfg-ens33。/sys:伪文件系统,跟硬件设备相关的属性映射文件,不能单独分区。/usr/sbin:类似/sbin;/usr:存放程序文件,库文件,共享文件,各种文档等。/proc:伪文件系统,内核映射文件,不能单独分区。/sbin:存放系统管理员用户使用的命令。/usr/tmp:被抛弃的临时文件目录。/mnt:临时挂载的文件系统的挂载点。/run:进程的运行数据存放的目录。/usr/local:程序安装目录。
2023-05-21 15:20:50
424
1
原创 数据结构之哈希表
首先哈希表是用于查找数据中比较常用的数据结构。那为什么用哈希表呢?数组和链表不也可以查找吗?先说数组,如果数组存储的数据与下标相对应,那么查找的速度确实很快,但假如是下面这样的例子呢?(画的不好,不要介意)可以看出,数组中每个元素与其下标都不是相对应的。那么再查找数据的时候就需要一个个元素进行比较,数据量小的时候还可以接受但是数据量大了之后效率就会相当的低下。链表也是一样。接下来我再介绍个例子。聪明的你可能已经发现规律了,就是将arr中每个元素与其中最大的元素也就是10,进行
2022-01-23 11:58:18
504
原创 C语言学习之函数指针
什么是函数指针呢我们在编写程序的时候,往往需要自定义某个函数实现某个功能,在编译时系统就会为这个函数代码分配一段存储空间,而这段存储空间的首地址就是这个函数的地址。而函数名就是代表着函数的地址。因此,存放函数地址的指针变量成为函数指针变量,简称函数指针。函数指针的定义方式为:函数返回值类型 (*指针变量名)(函数参数列表);举个例子:```cint(*p)(int, int);```这个代码表示,这里定义了一个指针变量p,该指针指向的是一个返回类型为int型的函数,并且该函数有两个in
2022-01-22 11:14:49
588
原创 数据结构之链表
数据结构之链表链表以线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。由于不必须按顺序存储,链表的插入和删除操作可以达到O(1)的复杂度。而链表有指向性可以分为单向链表和双向链表。单向链表(单链表)是链表的一种,它由节点组成,每个节点都包含下一个节点的指针,下图就是一个单链表。可以由图看出,链表中每个节点都指向下个节点。一般在设置链表时,头节点我一般会设成空节点。在编写单向链表时,我一般会这样设置链表节点的结构体。// 定义链表结构体typedef struct L
2022-01-21 23:01:38
628
转载 2021-08-06
消息队列,讲的很透彻。记录一下。https://www.zhihu.com/question/54152397?sort=created
2021-08-06 13:55:40
95
转载 epoll和selec、poll的不同
epoll和selec、poll的不同网络编程(1)select的时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,返回事件发生的个数,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能遍历所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll的时间复杂度O(n) poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, 但是它
2021-03-14 11:08:58
168
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅