用过哪些嵌入式操作系统?使⽤RTOS和裸机代码开发有什么区别(优缺点)?
 之前的⼀个项⽬是采⽤裸机代码开发的,写起来还⾏,通过状态机来管理业务逻辑和各种外设。  
 
 
 但是随着外设的增加,任务之间的同步和并⾏处理的逻辑增加,写起来就会越来越麻烦,这时就引⼊了操作系统。写代码就变得容易很多。  
   操作系统的作⽤,⽅便管理任务,管理延时,管理内存,管理任务间通讯。 
 
有移植过freertos吗?
 有,移植过2022lts版本, 步骤是,下载源码,裁剪源码,解决config.h的依赖缺失,解决  
 
 systemcoreclock的问题,解决xxx_Handler的回调错误, 完成systick的delay。 就差不多移植好了。  
 
 
FreeRTOS移植过程?
 (内核源码,头文件,内存,接口)  
  1.  下载源码  
  2.  拉取 FreeRTOSv9.0.0\FreeRTOS\Source 的所有 .c 文件 =>> 内核源码  
  3. 拉取 FreeRTOSv9.0.0\FreeRTOS\Source\portable{\MemMang,\RVDS\ARM_CM3}  
  4. 拉取 FreeRTOSv9.0.0\ FreeRTOS\Source\include == 》头文件  
  5. 工程中 C++ 配置目录 
   
  6. 修改 FreeRTOSConfig.h 文件,堆栈空间问题,时间节拍  
  7. 修改服务中断函数, stm32f10x_it.c , SysTick_Handler(void)  
  8. 注释掉 PendSV_Handler() 、 SVC_Handler() 函数  
   
  
  Q: 嵌⼊式操作系统的硬实时和软实时如何理解  
  嵌⼊式操作系统问题  
  初始化:  
  -  定义历史样本数组  history ,⻓度为  FILTER_LENGTH, 初始值是 0  
  滤波过程:  
  -  对于每个新的输⼊值  newValue :  
  -  将  newValue  添加到历史样本数组的开头  
  -  如果历史样本数组⻓度超过  FILTER_LENGTH ,移除最旧的样本值  
  -  计算历史样本数组中所有值的平均值,并将结果赋给  filteredValue  
  返回  filteredValue  作为滤波后的输出值  
  1  
  2  
  3  
  4  
  5  
  6  
  7  
  8  
  9  
  10  
  Plain Text 8  
  A: 硬实时就像是,必须按时响应,或完成任务,否则会有⼤问题。软实时有截⽌⽇期,但稍微晚⼀点完  
  成也不会有太⼤麻烦,只要不太拖延就⾏。硬实时对时间要求⾮常苛刻,⽽软实时对时间要求相对灵  
  活。嵌⼊式系统需要根据具体任务来选择使⽤哪种⽅式。硬实时可以是硬件中断来实现,软实时可以是  
  CPU时间⽚轮转来实现。  
  Q: 操作系统中信号量和互斥量有什么区别?  
  A :互斥量是⼆进制的,同时只有1个task可以访问资源, 信号量是计数的,多个task都可以使⽤信号  
  量,根据数值进⾏不同的业务逻辑。