自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 2025_1203_d2000v_lse

摘要 在ARMv8.2-a架构下,原子操作会使用LSE指令,如果cpu不支持会导致崩溃。通过检查ID_AA64ISAR0_EL寄存器的bit[23:20]可确认原子指令支持情况。解决方案是在编译选项中显式添加nolse标记(--march=armv8.2-a+nosimd+nolse),强制系统使用ll_lc通用指令而非LSE指令执行原子操作。这种配置能确保在不支持LSE指令的环境下,原子函数仍能正常工作。

2025-12-05 16:27:25 184

原创 gdb-dashboard使用

【代码】gdb-dashboard使用。

2025-09-16 14:05:37 180

原创 JLINK 调试器单步调试单片机

【代码】JLINK 调试器单步调试单片机。

2025-09-08 18:50:49 342

原创 STM32F769I-DISCO 网口调试

本文记录了STM32F769I-DISCO开发板网口调试过程。作者通过对比官方例程,解决了ETH网络配置问题,重点指出F7系列必须配置内存保护单元(MPU)才能实现网络通信,而F4系列无需此配置。调试过程涉及LWIP协议栈初始化、网络参数设置和内存保护配置,最终通过Ping测试验证了网络功能正常。文中提供了关键代码片段和配置截图,但作者表示对MPU原理尚不完全理解,欢迎读者补充说明。

2025-07-17 15:04:29 280

原创 STM32F769I-DISCO 串口调试

本文介绍了STM32F769I-DISCO开发板的工程搭建和串口通信实现过程。主要内容包括:选择STM32F769NIH6型号,配置RCC时钟、SW仿真接口、LED和UART外设,设置串口波特率等参数。通过Keil编写代码测试LED闪烁和串口通信功能,实现了printf重定向到UART1输出。测试结果表明LED控制正常,串口能够成功发送数据。文章提供了详细的外设配置截图和关键代码片段,展示了从工程创建到功能验证的完整流程。

2025-07-14 18:13:44 258

原创 fastddsv2.14.1 传输层框架分析

初始化 Transport。

2025-06-25 10:57:10 202

原创 zynq7020 ubuntu_base 跟文件系统

zynq7020 ubuntu_base 跟文件系统。

2025-04-17 17:56:01 552

原创 zynq7020 u-boot 速通

快速构建u-boot

2025-04-13 22:45:53 642

原创 内存序问题排查

std::memory_order是C++11引入的一个枚举类型,用于和<atomic>原子操作一起使用,控制多线程环境下内存的可见性和执行顺序。它的主要作用是:告诉编译器和 CPU,在执行某个原子操作时,哪些内存读写可以重排,哪些必须按顺序来.

2025-04-07 19:55:57 502

原创 zynq7020 最小ps环境速通

最小的 zynq 的 ps 环境速通 = uart + ddr.

2025-03-25 23:14:18 421

原创 spi协议理解

SPI(Serial Peripheral Interface)

2025-03-19 10:03:02 481

原创 mini_shared_ptr

【代码】mini_shared_ptr。

2024-12-25 14:55:02 135

原创 misc设备驱动

简化创建设备号,cdev,class,device 的步骤。

2024-11-20 22:23:48 200

原创 平台下LED驱动流程总结

设备树驱动模块的初始化和退出平台设备驱动文件描述符操作其他

2024-11-18 15:01:03 204

原创 imx6ull-正点原子阿尔法-uboot-v2.4网络驱动修改

2 删除 74LV595 的驱动代码2.1 删除 74LV595 的复位引脚3.2 添加ENET1和ENET2的IO配置3.3 添加复位 IO 的代码

2024-10-14 15:45:34 448 2

原创 STM32F100xx 系统架构

哈弗体系结构:程序和数据分离,从各自的总线获取。

2024-09-06 14:08:34 378

原创 STM32 外部中断(EXTI)

实验:配置一个引脚的下降沿作为外部中断。江协科技。

2024-09-03 12:25:09 749

原创 WINDOWS 共享内存

【代码】WINDOWS 共享内存。

2024-08-27 11:27:18 586

原创 STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(2)

实验 2:在单片机搭建好 tcp 服务器后,编写传送文件的上位机。

2024-08-22 18:15:11 505

原创 STM32f407 网络接收 fpga 的 bin 文件并更新到 fpga series7(3)

实验 3:在搭建好 tcp 服务器,并拟定好协议的前提下,接收每一个 bin 文件的块,配置到 fpga。

2024-08-21 19:25:26 770

原创 HAL 库 STM32F4 裸机 LAN8720 实验

本次实验的 LAN8720 复位引脚直连了 MCU 的复位引脚,所以我没有手动添加引脚来复位,如果单独配置复位引脚,那么清参考别的教程配置。把 slipif.c 内容全部删除。

2024-08-15 11:21:37 1360

原创 实验28.文件删除 sys_unlink

实验 28. 文件删除 sys_unlink1 删除目录项,2 释放 inode 的数据块和 inode 结构体。

2024-08-12 18:31:35 373

原创 实验27.fwrite,fread,fseek

实验 27. fwrite,fread,fseek1.确保 inode 的数据块有那么多空间,如果没有就扩容。2.把数据写入文件的数据块。读出 inode 的所有数据块偏移,然后在数据块中读出数据。修改 file 结构体的 fd_pos 即可。

2024-08-12 16:39:54 510

原创 实验26.文件的打开和关闭

【代码】实验26.文件的打开和关闭。

2024-08-09 15:24:51 354

原创 实验25.创建文件

实验 25. 创建文件i_no 就是 inode 号i_sectors 是块地址数组,表示这个文件的内容是那些块构成的.如果是文件,那么块的内容是文件的内容如果是目录,那么这些块的内容是一个个目录项。

2024-08-09 00:08:38 583

原创 实验24.创建并挂载文件系统

实验 24. 创建并挂载文件系统创建件系统: 初始化每一个分区的结构,把扇区划分为超级块,扇区位图,inode 位图,inode 表,根目录,空闲扇区挂载分区: 创建一个分区结构体,在内存中存放要挂在的分区的超级块、扇区位图、inode 位图。

2024-08-06 21:17:24 519

原创 实验23.硬盘分区,并编写硬盘驱动程序

已完成实验已完成实验链接简介实验 22. 硬盘分区,并编写硬盘驱动程序总结创建硬盘并分区加载硬盘分区实现 printk使能硬盘中断 interrupt.cidel 线程,主线程阻塞后此线程保底 thread.csleep 函数 timer.c加载分区信息 ide.c创建硬盘fdisk /home/c/os/bochs/hd80M.img# 1.设置柱面和磁头mxmc162h16r# 创建主分区np1204833

2024-08-06 18:05:12 950

原创 实验22.堆内存管理

实验 22. 堆内存管理用户的内存块描述数组在 pcb 中定义了内存块描述数组,描述符的链表里放着申请了但是没有使用的内存块申请 size 大小的内存时,本质申请到的是 sizeof(arena) + size(假设叫 buffer) 的长度若 size>1024, 那么 arena 把 buffer 当成一个内存块,直接返回 buffer 的首地址若 size<1024,那么 arena 把 buffer 分成 n 份内存块,把每一个内存块记录在描述符的链表中。

2024-08-02 17:17:46 890

原创 实验21.实现 printf

实验 21. 实现 printf简化系统调用和中断,用 eax 代表调用号参数,ebx,ecx,edx 来代表参数(syscall.c kernel.s)添加 write 的系统调用接口(syscall.c, syscall-init.c, print.s)注意:要更改 print.s 中清屏的地址添加 printf 函数接口。

2024-08-01 18:13:26 609

原创 实验20.实现系统调用

实验 20. 实现系统调用进程结构体新增 pid 成员变量pid 采用静态全局变量,锁控制+1,确保唯一进程初始化是就分配好 pid添加 getpid,本质调用 syscall,参数入栈,再执行 int 0x80添加 0x80 中断,根据参数 0 调用系统调用函数表的函数初始化系统调用函数表,表项 0 就是获取 pid。

2024-08-01 11:42:06 480

原创 实验 19. 用户进程

实验 19. 用户进程main函数创造了1个主线程,两个内核线程,两个用户进程。共5个PCB,进程PCB->pgdir为进程自己的页表首虚拟地址,线程为null。因此本次实验是五个进/线程在来回切换。他们切换的方式无疑都是利用自己PCB->kstack保存切换前esp,然后不断pop完成cs:eip的跳转。

2024-07-31 22:26:09 436

原创 实验18.环形缓冲区

实验 18. 环形缓冲区1.生产者消费者问题。

2024-07-30 14:16:11 278

原创 实验17.实现键盘输入

实验 16. 实现键盘输入1.注册键盘中断,2.中断函数读取键盘端口,做按键判断,打印。

2024-07-30 11:42:28 489

原创 实验16.用锁实现终端输出

实验 15.用锁实现终端输出注意:gcc一定不能用11.4,换成书上环境,我是用的4.4.7能过正确。使用gcc11一直错误,怀疑人生了都。

2024-07-29 21:29:46 556

原创 饿汉、饱汉、内部静态变量三种单例模式

尽可能用内部静态变量单例。

2024-07-26 14:57:21 280

原创 实验15.多线程调度

实验.多线程调度。

2024-07-25 18:27:51 881

原创 实验14.实现内核线程

实验.实现内核线程。

2024-07-24 11:01:36 327

原创 实验13.内存管理系统

实验:内存管理系统。

2024-07-23 22:13:40 492

原创 实验12.实现断言

实验.assert 断言函数。

2024-07-23 11:34:33 195

原创 实验11.实现中断处理 2

实验.实现中断处理, 在kernel.s中的中断服务程序中调用在interrupt.c定义的中断函数,并调快时钟。

2024-07-23 00:35:44 400

这是一个基于 FatFS 的 FAT32 文件系统调试项目,通过文件方式模拟磁盘设备,方便在开发环境中测试和调试 FAT32 文件系统操作

这是一个基于 FatFS 的 FAT32 文件系统调试项目,通过文件方式模拟磁盘设备,方便在开发环境中测试和调试 FAT32 文件系统操作。

2025-12-10

spi协议理解笔记和vssio图

spi协议理解笔记和vssio图

2025-03-19

正点原子阿尔法keyinput驱动

正点原子阿尔法keyinput驱动

2024-11-20

misc设备驱动 正点原子阿尔法

misc设备驱动 正点原子阿尔法

2024-11-20

平台下LED驱动流程总结

平台下LED驱动流程总结

2024-11-18

shared-memory-test-demo

shared_memory_test_demo

2024-09-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除