- 博客(30)
- 收藏
- 关注
原创 正点原子MP157--问题详解--四(关于根文件系统驱动模块指令的注意事项)
作为新手,整个的系统配置比我想象中的难,自学更是一塌糊涂,光是Ubuntu版本遇到的问题都够吃一壶,学习的话尽量还是选用视频推荐的版本(中途因为版本问题找不到原因重新开始),而且最难的不是解决办法,而是找到什么哪里导致的问题,是哪里的原因,有人指点还是会好很多。1、跟着视频走,进入uboot后提示demod、modprobe等相关指令找不到.可以配完一遍后再配一遍,会发现再遇到那些问题解决很快,至少你会有问题的大致思路。(我是直接看第三章视频,老师随意一句带过depmod,不注意的话就很麻烦)
2026-03-29 19:13:27
43
原创 正点原子MP157--问题详解--二(NFS挂载根文件系统双网卡设置)
问题描述:我的NAT设置下,我的虚拟机可以连接外网,但无法和板子继续NFS挂载,只有在桥接模式下才能和板子联通,但是不能连接外网。
2026-03-25 00:29:34
314
原创 正点原子MP157--问题详解--二(NFS挂载根文件系统卡死退出至uboot)
不加参数 → 内核尝试用 NFSv4 挂载 → 我的Ubuntu支持v4,但内核缺少v4支持 → 挂载失败 → 内核尝试降级到v3 → 降级过程可能出错 → 卡死,返回U-Boot。学习过程的确应该使用官方要求的版本,不然容易在学习过程中吃亏,希望这个点能够帮助和我遇到一样问题的朋友们。我在运行时就是如此,我将原因归咎于使用的Ubuntu版本的问题上,我使用的时最新版的Ubuntu;不加的话,内核会先尝试 v4,失败后可能降级到 v3,但有时降级失败,就会卡住。:老版本,功能有限,最大文件 2GB。
2026-03-22 18:17:21
41
原创 正点原子MP157嵌入式学习驱动开发--问题详解(一--Ubuntu根分区扩容速解)
本文记录了使用正点原子STM32MP157开发板学习过程中遇到的Ubuntu根分区空间不足问题。由于教程版本较旧,作者在跟随视频学习时发现系统版本差异。针对根分区扩容难题,作者尝试了多种方法后,最终通过参考CSDN博客推荐的简便方案成功解决问题。该方法操作方便且效果显著,使用一天后暂未发现系统异常。作者将持续更新学习过程中遇到的问题及解决方案,供网友参考。
2026-03-19 13:30:21
74
原创 嵌入式学习找工作第十七天--第二个项目(命令行日记本)
/ ========== 全局变量(线程间共享)==========// 1MB的草稿缓冲区// 当前草稿大小// 互斥锁// 自动保存开关// 当前正在写的文件名。
2026-03-15 21:03:02
388
原创 Git入门教程及代码同步到Github(Linux嵌入式)
2021年起GitHub禁止用密码登录,用SSH可以一劳永逸,以后推送代码都不用输密码。:你的本地已经有代码了,如果远程仓库初始化了文件,会和本地产生冲突。现在我们要把写好的代码存起来,这样以后万一改坏了还能找回来。github常常能看见一个readme,我们也不能落下;:初始化,创建.git隐藏文件夹(你的存档库),你会看到一个新页面,上面显示着你的仓库地址。接下来,我们将代码同步到GitHub上。打开GitHub网站,点击右上角你的。Git就是代码世界的"存档系统"!(和你本地项目同名,方便记忆)
2026-03-10 12:45:05
378
2
原创 嵌入式学习第十六天(Linux操作系统--线程同步)
初始化读写锁:int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,const pthread_rwlockattr_t *restrict attr);加写锁: int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);销毁读写锁:int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);读写锁是读模式加锁时,如果线程以读模式对其加锁会成功;
2026-02-13 21:14:46
406
1
原创 嵌入式找工作第15天--(Linux系统编程--守护进程与线程)
在线程中禁止调用exit函数,否则会导致整个进程退出,取而代之的是调用pthread_exit函数,主线程调用pthread_exit函数也不会使整个进程退出,不影响其他线程的执行。创建会话的进程不能是组长进程(一般创建会话是,父进程先fork子进程,然后父进程退出,让子进程调用setsid,只要是创建了会话,这个创建就脱离了控制终端的影响):一个或多个进程的集合,每个进程属于一个进程组,引入进程组是为了简化对进程的管理,进程组id==第一个进程id(组长进程)其作用,对应进程中的waitpid()函数;
2026-02-09 16:59:10
537
原创 嵌入式学习找工作第十五天(Linux系统编程--信号详解)
SIG——UNBLOCK:当how设置为此值,set表示需要解除屏蔽的信号即mask = mask&set。在xxx信号处理函数执行期间,xxx信号是被阻塞的,如果该信号产生了多次,在xxx信号处理函数结束之后,该xxx信号只被处理一次;在xxx信号处理函数执行期间,如果阻塞了yyy信号,若yyy信号产生了多次,当xxx信号处理函数结束后,yyy信号只会被处理一次;记住,代码kill(getpid(),SIGKILL)是发送一个SIGKILL信号给指定进程,不是直接杀死,杀死进程是内核接收到信号做的。
2026-02-04 22:07:48
617
原创 嵌入式学习找工作第十四天(Linux系统编程--进程间通信)
MAP_SHARED:对映射区的修改会反映到文件中(可以对文件进行修改);第一步:父进程调用pipe函数创建管道,得到两个文件描述符fd[0]和fd[1],分别指出管道的读端和后端;进程之间想要交换数据,必须通过内核,在内核中开辟一个缓冲区,用来中转,称为进程间通信(IPC)。管道(简单)、信号(开销小)、共享映射区(无血缘)、本地套接字(最稳定);二、读fifo文件---read(fd,buf,sizeof(buf));函数参数:若函数调用成功,fd[0]代表函数读端,fd[1]代表函数写端;
2026-01-31 20:02:48
498
原创 嵌入式学习找工作第十三天(Linux系统编程--进程控制学习)
父进程调用fork创建一个子进程,子进程的用户区和父进程的用户区(代码段)完全一样,但是内核区不完全一样:如父进程PID和子进程不一样;无法用kill -9方式删除,因为僵尸进程是一个死掉的进程,对命令行不反应,但可以将其父进程杀掉,然后由init进程回收。进程:一个启动的程序,进程占用的是系统资源,如:物理内存,cpu,终端,是一个动态概念;为了保证每个进程都有一个父进程,孤儿进程会被init进程领养,由init进程完成对孤儿进程的回收。成功:父进程返回子进程的PID,这个值大于0,子进程返回0。
2026-01-28 22:26:50
495
原创 嵌入式学习找工作第十二天(Linux系统编程--IO文件函数详解)
O_EXCL:如果同时指定了O_CREAT,且文件已存在,则报错。函数原型:ssize_t write(int fd,const void *buf,size_t count);获取指针当前位置:int len = lseek(fd,0,SEEK_CUR);获取文件长度:int len = lseek(fd,0,SEEK_END);函数原型:ssize_t read(int fd,void *buf,size_t count);文件指针移动到当前位置:lseek(fd,0,SEEK_SET);
2026-01-27 21:07:04
755
原创 嵌入式学习找工作第十一天(Linux系统编程--makefile-gdb-文件IO基础)
自动化编译”,整个工程完全自动编译,极大提高了软件的开发效率,通过执行make命令,解析并执行makefile文件。makefile文件中定义了一系列规则指定,哪些文件先编译、哪些文件后编译,那些文件重新编译,用来管理项目工程文件。文件描述符作用:通过文件描述符找到inode,通过inode找到磁盘数据块;(PCB):存有文件描述符表,存放已经打开的文件描述符,涉及到文件IO操作都会用到这个文件。:是Int类型,通过文件描述找到文件的inode,通过inode可以找到对应的数据块。
2026-01-26 12:05:44
606
原创 嵌入式学习找工作第十天(Linux系统编程--gcc工作流程以及库的使用)
库是二进制文件,是源代码文件的另一种表达形式,是加密原代码,是功能相似的函数的集合体。第一步: 预编译gcc -E test.c -o test.i。第二步:编译 gcc -S test.i -o test.s。第三步:汇编gcc -c test.s -o test.o。2、使用ar命令将.o文件打包成.a文件。第四步:链接gcc test.o -o test。1、将.c文件转换成.o文件。-c 只编译,生成.o文件。-o 指定生成目标文件名字。-I 指定头文件所在路径。-L 指定库文件所在路径。
2026-01-25 20:38:09
331
3
原创 嵌入式找工作第九天--(Linux系统编程-vim详解)
set shiftwidth ----设置gg=G缩进四个空格,默认缩进8个空格。/etc/vim/vimrc,修改了系统级别的配置文件将影响系统下的所有用户。~/.vimrc,修改用户级别的配置文件只会影响当前用户,不会影响其他用户。从文本编辑模式转换成末行模式(在命令模式下输入:即可进入末行模式)set tabstop=4 ----设置4格缩进。掌握从命令模式切换到编辑模式的相关操作。掌握我vim末行模式下相关命令的使用。掌握vim命令模式下相关命令的使用。接下来从命令模式进入文本编辑模式。
2026-01-24 10:15:36
249
原创 嵌入式学习找工作第九天(Linux系统编程-常用基础命令-2)
可用于文件重定向:cat file1>file2,相当于cp file1 file2。·示例:find/home -name "*.c"使用方法:sudo chown 【所有者】:【所属组】 文件名。chmod 【对象】 【+|-|=】【文件名】·命令:find 路径 -name "文件名"使用方法:ln aa.log aa.log.hard。mv dir1 dir2(存在)移动到指定目录。1、mv命令(文件名更改、移动)mv 源文件 目标文件。mv file1 file2(不存在)
2026-01-23 12:23:47
716
原创 嵌入式学习找工作第八天(Linux系统编程-常用基础命令-1)
一共三个rwx,第一个rwx代表文件用户所拥有文件,第二个rwx代表文件所属组所拥有文件,第三个rwx是其他人对这个文件的权限;-a 列出当前目录下全部文件(包含隐藏文件(以 . 开头的文件)):经常用到的shell命令都在这个文件下(cd /bin ls 可查看目录下文件)cp -r dir1 dir2(将目录复制到指定目录)(-r是递归操作)which:显示命令所在目录,如which is ,which cp。torch命令:如果文件不存在,创建新文件,如果存在,更新修改时间。
2026-01-22 14:25:58
756
原创 嵌入式找工作第七天--汇编语言七(内联汇编、ROP略讲)
在执行完函数,将return main address改成return other address,再在执行完other address后再return main address。这两个点我理解的还不深,等以后系统学习Linux的时候可能会更深一步学习。这篇帖子讲的还算清楚,主要看之前的视频。什么是ROP:劫持程序执行的一种方式;C语言内嵌汇编语言;1、什么是内联汇编?
2026-01-21 19:01:51
161
原创 嵌入式找工作第七天--汇编语言六(三种默认调用约定,精讲__fastcall)
本文分析了函数调用约定的关键特性,包括参数传递、寄存器使用和平栈机制。通过反汇编示例展示了Windows和Linux平台下不同调用约定(__cdecl、__stdcall、__fastcall)的实现差异:参数传递顺序(从右到左)、寄存器使用(ecx/edx)以及栈平衡方式。特别指出64位系统使用6个寄存器传递参数,超出的参数通过栈传递。文章还探讨了调试过程中发现的参数读取顺序异常现象,强调实践验证的重要性。最后比较了Windows和Linux默认调用约定的区别,指出Linux采用__fastcall约定,
2026-01-21 17:23:16
505
转载 人工智能学习找工作第二天(PYQTUI界面设计--2)
实现多线程,我们要先继承QThread类并重新实现其中的run()函数,也就是说把耗时的操作放入run()函数中。有更多要求再看这位博主,控件什么的就省略了,反正我也记不住哈哈,等用到再说。只用理解事件的不同和使用就好,在真正用到根据要求再看就好。知道大致如何设计就好,用到具体功能再来查。后续我直接学图像处理和视觉实战。
2026-01-20 14:31:04
26
原创 嵌入式学习找工作第六天-汇编语言五(栈的汇编相关指令和堆栈图推理)
1、先移动栈指针(栈指针指向是已经有值的位置,所以要先移动)这里call的00c4002b(这种情况符合第二条规则:将call下面那条指令压入栈)push的值变为00C40025,变成了指令地址下面的地址,线程执行的是线程的例程(例程也是函数),在汇编中例程基于栈执行。2、将call下面那条指令压入栈。原则:执行流执行前后,上下文、栈都保持不变。
2026-01-20 12:52:41
854
原创 嵌入式学习第五天(汇编语言四--生成内核文件)
boot loader =>setup=>装载os内核=>实模式->保护模式。载入到哪个位置:7c00,看下面表。它们是理解传统机械硬盘(HDD)物理结构和数据组织方式的基础。MBR:0柱面、0磁道、1扇区的位置,每个扇区有512bit。谁来载入内核:bios例程。
2026-01-18 14:58:11
388
原创 嵌入式学习找工作第四天(汇编语言三--写一个汇编脚本)
当前指令位置 $$ 所在段起始位置。这段话表示把这段全部跟改为0,如果改成times 510 -($ - $$) db 1。times 510 -($ - $$) db 0//$表示当前位置,$$表示起始位置,0x55,0xaa是固定语句55 ,aa加510为512B等于一个扇区大小。2、调用:call print(d调用print)10,13,0代表anscii码的换行、回车、空字符。.loop:声明代码段,表示局部,属于print。1、输入:mov si,
2026-01-17 17:34:15
172
原创 嵌入式学习找工作第四天(一站式配置虚拟机Clion环境--汇编语言二)
可选] 通过 'Tools | Create Desktop Entry' 菜单操作(欢迎屏幕的“选项菜单”中也可用)跟到第二步就完成了,我找了很多资料才把环境配完,今天就到这里吧,我晚点要学别的内容,就不继续学习了,明天见!将您下载的 CLion 发行版压缩包解压到您希望安装程序的任意位置。我们将此位置称为您的 {安装主目录}。使用vs将C语言反汇编获得代码,以后就可以先生成C语言,在生成汇编,有助于我们学习。[可选] 将 "{安装主目录}/bin" 添加到您的 PATH 环境变量中,
2026-01-16 15:05:40
516
原创 人工智能找工作学习第一天(PyQTUI界面设计--1)
由于本人大三专业课为python,我自身平时也有敲相关代码,虽然没有项目经验,但是相关python先验知识不再多做补充,大家有不懂的可以去看看网上很多基础教程,基础就好,因为我也只会点基础哈哈。哈哈哈,我又来了,由于本人大一大二是整嵌入式方面的,但大三转入到人工智能专业,所以我打算两边同时学习,这边的话我的想法是学到视觉入门加一点深度学习的程度,这和我的未来发展方向有关就不多赘述了。这段代码展示一个信号可以连接多个槽,同样的,一个信号还可以连接另一个信号,多个槽连接一个信号,具体例子还是看。
2026-01-15 16:20:28
880
原创 嵌入式学习找工作第三天(汇编语言学习一)
原本今天应该学习嵌入式电子电路方面的知识的,但是发现硬件系统整理起来很杂乱和偏记忆,我在电赛队伍中主管硬件,也画过一些PCB主控和硬件知识,大二有上过相关专业课,所以我将其过掉,在后续项目阶段画板子的时候提及。CISC:复杂指令集(X86架构-32位,X64架构-64位)(Intel,AMD)到这里就已经学会CPU基础架构、寄存器基础操作和简单汇编语言的编写了,今天就到这里咯,明天加油!55(硬编码)---> push ebp。机器码->汇编(反汇编)汇编->机器码(编译)eax 32位。
2026-01-15 13:59:33
825
原创 嵌入式学习找工作第二天(数据结构与算法)
一个好的算法应具备有穷性(在有限时间内结束)、确定性(每一步都有明确的定义)、输入(有零个或多个输入)、输出(有一个或多个输出)以及可行性(每一步都能在有限时间内完成)等特性。帖子使用的java,可以先了解一下构造方法和面向对象这两个点(本人专业课学过所以跳过),不用了解更多,看懂是可以的,只要能理解代码就够了。第一轮结束之后,基准数左边的数字都是比基准数小的,基准数右边的数字都是比基准 数大的。理解什么是哈希,哈希表,哈希函数,碰撞,摘要,哈希算法。中的组织和存储方式。
2026-01-11 16:52:08
689
1
原创 嵌入式学习找工作第二天(C语言指针与结构体:学生信息管理系统)
基础有不懂的地方可以看后面我的备注,我把可能新手看不懂的地方进行了备注(其实就是我第一时间没懂的哈哈)看原代码的时候可以看看我后面的备注结合看。项目没有跑出来的代码,我将十个案例原理代码结果放这里助于你理解:(其实也是我自己在学哈哈)重点:数组名实际上是一个指向数组首元素的常量指针。(今天很晚了,罢工休息哈哈,我暂时学习还用不到后面的,所以留着以后在看吧)重点:函数指针是指向函数的指针变量。重点:字符串常量实际上是一个指向字符数组首元素的指针。代码流程如下:(本人跟着代码手敲的理解,部分更改)
2026-01-10 23:31:02
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅