41# 呆板书生
那个程序能缩减那么多是有原因的。那个产品有10片MCU,一片主MCU负责和触摸屏通讯,与其他9片副MCU通讯及参数储存,副MCU负责信号的处理。由于画面复杂显示内容多,那高工用的通讯协议复杂,重复利用的部分少,所以负责显示的通讯部分程序极其庞大,反汇编程序中就有几千行,也占用了主MCU的很大部分时间。而我的通讯部分代码不到他的十分之一,且都是复制我原来的其他产品中的,占用单片机的资源和时间都少。其他9片副MCU他的程序也是太复杂,重复利用的程序也少,由于9路信号都需要高速处理,他的程序无法用一片MCU负责几路信号,我的主MCU负责通讯的同时还负责了4路信号的处理,副MCU除了通讯部分需要修改其他和主MCU一样,所以写程序的工作量就很少。
原来的工程师没有临界代码的概念,思路也有些混乱,产品总会偶尔出现莫名其妙的各种错误也是必然的,看反汇编一下子就看出来了。我最关键的是看懂核心的计算部分,看懂里面的大量浮点数运算花费了主要时间,其他就没什么参考的了,能写出那程序也有部分原因是站在别人的肩膀上吧:loveliness: |