1-掌握了栈,堆和RAM的联系和区别:
RAM划分两个区域栈和堆,栈和堆都存放在RAM中。
堆(Heap)区域:malloc,calloc,realloc等手动申请RAM的空间
(栈位自动管理(自动申请,自动释放),不是手动申请,手动释放,栈和堆的区别之一)
栈(Stack)分为硬件栈和软件栈,
硬件栈的区域:普通的局部变量,函数参数,返回地址。
软件栈的区域:在FreeRTOS中,使用的是软件栈,它是全局变量存放在RAM中。
RAM(不包含栈和堆)区域:全局变量,静态变量,根据是否初始化存放在RAM的.bss和.date区域。特点:上电分配,程序结束释放。
Flash的区域:独立存储的位置,代码,const常量。
另外掌握复习了,volatile,禁止编译器优化,和const和volatile区别。
2-掌握了任务的静态,动态创建,任务的删除,以及任务的状态设置和vTaskDelay()
任务的创建:
xTaskCreate ()
xTaskStaticCreate () ,注:创建静态任务,需要调用 vApplicationGetIdleTaskMemory,忘记的话,也可根据错误警告进行配置,要配置这个函数的,TCB,栈,栈的深度
StackType_t用来创建变量,例如数组。
Stack对应栈 Type对应类型
StaticTask_t用来创建任务的TCB
TaskHandle_t用来创建句柄。
句柄和TCB的区别:句柄是TCB结构体的指针,相当于封装。
TCB全称任务Task,控制Control,块Block
即,TCB是一个巨大的结构体。
今天晚上只能回忆起来这么多了,还有一些细节没回忆起来,有错误的或者不充分,各位大佬也能指出来,虚心接受╰(*´︶`*)╯