自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 FAT 文件系统 创建

FAT 文件系统 在嵌入式系统中常用.这里提供使用FAT文件系统的说明.

2023-05-12 15:12:54 1469

原创 FreeRTOS 定时器

定时器的使用与定时器任务(Tmr Svc)服务的理解.freertos的定时器功能是用task实现的,但是其命令却是用队列queue实现的.一旦别的task中发送xMessage,可以导致prvTimerTask立刻从pxDelayedTaskList(等待列表)中加入pxReadyTasksLists(就绪列表).由于Daemon优先级最高,因此可以立刻执行到prvTimerTask,通过接收xMessage的函数,根据xMessage.xMessageID,具体来处理命令。

2023-04-24 18:09:44 1438

原创 Linux0.11源码学习-bootsect.s

BIOS—> bootsect.s —> setup.s —> System模块(head.s—>main.c)

2023-04-13 10:39:52 321

原创 Linux0.11源码学习--操作系统启动流程

需要重点记住:cpu按照pc寄存器的值取值执行,取值后pc的值会加一。

2023-04-13 09:47:05 217

原创 FreeRTOS SysTick中断

SysTick—系统定时器是属于 Cortex-M 内核中的一个外设,内嵌在 NVIC 中。系统定时器是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系统时钟 SYSCLK 等于 AHB 时钟,在 RT1052 中,AHB 时钟等于 528MHZ。当重装载数值寄存器的值递减到 0 的时候,会置位相关的标志位或者产生中断(前提是中断已经使能),以此循环往复。

2023-04-10 11:44:20 847

原创 ARM Cortex-M MPU的保护设置

MPU 可以将内存划分为不同的区域,并且可以设置每个区域的访问属性。提高系统的稳定性。典型应用如下: 划分特权用户访问区域和普通用户访问区域,在 OS 系统中提高系统稳定性。 设置只读区域,防止关键数据被意外修改。 检测堆、栈是否溢出。

2023-04-07 15:27:14 612

原创 内存管理--位图BITMAP

/初始化位图的内存区域. void bitmap_init(struct bitmap * btmap) {/*** 检测指定位是否为1,如果是,返回1.//保存状态 void bitmap_set(struct bitmap * btmap , uint32_t index , int8_t value) {} else {} }/*** 在位图中申请连续的cnt个位.

2023-04-06 15:06:46 1205

原创 内存管理--字符串操作

【代码】内存管理--字符串操作。

2023-04-06 14:39:21 68

原创 FreeRTOS: vTaskSuspendAll xTaskResumeAll详解

1,如果关闭调度的时候,有等候的线程(pending )需要把线程转移到就绪列表中prvAddTaskToReadyList.2,如果关闭调度的时候,经过的多个Tick,需要执行对应的次数的xTaskIncrementTick.2,是否有线程需要做调度工作.如果有返回TRUE.3,如果以上都没有发生,继续执行原有的线程.1,累加Tick数.

2023-04-03 17:11:25 2070

原创 FreeRTOS 启动第一个线程的步骤

从main函数开始,初始化完成之后,通过SVC指令的中断函数来,初始化成需要的寄存器值,才能正常运行线程.调用prvStartFirstTask前的,寄存器值如下。

2023-03-31 17:32:41 642

原创 内存地址:线性地址,虚拟地址,物理地址

*

2023-03-31 14:24:34 364

原创 Arm ContxM FreeRTOS MSP之间PSP相互切换

FreeRTOS 创建线程的时候,事先往堆栈中保存EXC_TURN值,然后做线程切换的时候,先把保存的EXC_TURN值反映到CPU寄存器,这样执行线程的时候就变成了PSP.也就是说线程的时候使用PSP是人为设置的.相反MSP是硬件自己完成的,比如当发生中断后,执行中断函数的时候硬件吧SP改成MSP.代码从main()函数开始执行的时候,栈默认是MSP开始.当创建线程后从main函数切换到线程的时候,栈从MSP->PSP. 这个过程如下.4.执行线程的代码,除非线程结束,不然不会再继续main()函数。

2023-03-31 14:18:40 948

原创 FreeRTos 执行空函数指针,重启的现象是为什么

上面的图中可以看书,调用空指针函数p_cxt_fun的汇编代码.跳转到 内存的0地址.(内存中0地址保存的时候,一些常用数据区,并非代码区域)准备继续执行.调用空函数后,PC指向了 0,然后根据地址0的数据,当成了指令集执行. 所有可能出现各种现象,重启只是其中一个可能而已.可能是空函数与RESET函数刚好地址一致,因此调用空函数的时候,无意中执行了重启函数REST,所以才出现重启现象.最后出现什么现象,就跟地址0的数据区的数据的不同可能出现不一样的现象.RESET函数根本不是0,因此上面猜测是错误的.

2023-03-31 12:00:44 463

空空如也

空空如也

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

TA关注的人

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