推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

固件回调函数的用法与安全

资料介绍

固件里的"回调函数":什么时候用,怎么用安全 一、回调函数是嵌入式里的常用机制 回调函数(Callback Function)是把"你的处理函数"作为参数传给底层(驱动、协议栈、外设),底层在特定事件发生时调用你的函数。比如:串口收到数据时回调、定时器到时回调、协议栈收到数据回调。 回调用得好,代码灵活(底层不关心上层怎么处理,只管调用回调);用得不好,有坑(回调时机、回调里的操作、回调的上下文)。 二、回调的常见用法 驱动回调:底层驱动在事件(收数据、完成传输)时回调上层 协议栈回调:协议栈收到数据、连接变化时回调应用层 定时器回调:定时器到时调用回调 中断驱动的回调:中断里调用回调 三、回调用不好的坑 3.1 回调在中断里执行 很多回调是在中断上下文被调用的。如果在回调里做耗时操作(处理数据、printf、复杂逻辑),就犯了"中断里做耗时操作"的错(前面聊过),阻塞系统。 解决:中断里调用的回调,只做"快"的(置标志、收数据进缓冲),耗时处理放主循环。 3.2 回调里做不可重入/有副作用的事 如果回调里调用了不可重入的函数(printf、某些库函数),而回调又在中断里,可能有重入问题。 3.3 回调没初始化 回调函数指针没初始化(为NULL)就被调用,崩溃。回调要初始化(赋有效函数或NULL),调用前检查NULL。 3.4 回调里的数据竞态 回调里访问的共享变量,如果和主循环/其他上下文有竞态(前面聊过全局变量),要注意保护。

部分文件列表

文件名 大小
固件回调函数的用法与安全.docx 37K

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载