在嵌入式开发中,全局变量被广泛使用,其原因有以下几点: 首先,资源限制。在嵌入式系统中,占资源是有限的,函数调用和局部变量都占用占空间过深的函数调用或变量过多,容易导致占溢出,造成数据运行时被更改,这种报不易复现和调试。 其次,访问速度也是一个问题,不同数据放置的位置访问时间不同,因此程序员需要手动安排数据的位置。通常采用全局变量结构体的形式。 再次,全局变量可以减少参数传递,避免不必要的数据拷贝。可靠性考虑,在嵌入式软件设计中,静态内存分配是一种常用的方式,程序员会设计好每段数据的长度和在内存里的绝对地址,这样可以避免内存碎片化。长时间运行后,数据在内存里的位置仍然是可控的,保证程序不会跑。所以内存不会耗尽,这在控制自动化等可靠性要求高的领域是必须的。 此外,使用全局变量可以避免内存回收机制,不好用的问题,程序员需要自己管理内存。刚好我总结了一些嵌入式资料放在视频结尾汇编时的历史问题。在单片机资源有限的时期,汇编是主要的开发语言,将数据结构提前在内存里分配好是汇编的常规操作。 虽然现在大家普遍使用C语言开发嵌入式系统,但是这些汇编设计留下的遗迹还是存在的。中断服务函数的交互中断是单片机程序的重要组成部分,中断服务函数是不能传参的,因此,使用全局结构体变量可以方便中断服务函数与主函数线程任务进行交互。 |