-
自己的功能一定要做下班后的自动化测试,不能指望测试部给测出问题(自动化测试可以用python来控制,比如python通过继电器控制产品的上下电或者触控等操作,比如打开关闭摄像头,然后通过 adb 读取测试完毕后的状态,比如摄像头是否有图像输出)
-
电信类产品往往要求很高,所以常常有主备分区备份的功能,比如主备的boot flash,flash不能频繁擦写
-
单板软复位后需要能查复位前的dmesg log,类似zte的保留分区存log的做法,这些都是基础设施,最好能做成一个标准做法,后面可以沿用
-
flash分区要提前确定,否则后面无法在线升级,只能手动升级工作量太大;在线升级需要提前搞
-
添加 IO_CTRL 枚举值的时候要顺序定价,不要中间插,因为有可能新增的枚举值,在用户态的代码和内核态代码都有使用,如果用户态是旧代码,内核态是新代码(或者反之),会导致功能出问题。
-
uboot启动时已经把系统的寄存器配置完备了,后面linux直接使用,不需要初始化了
-
使用fpga注意FPGA可能会有几个bank,同一bank的电压和信号电压是一致的,不同bank的电压可能不一致
-
gpio的开机启动模式pin脚,开机之后还可以做个其他的用处,避免gpio不够用。
-
开发初期,睡眠默认关闭了,中后期再打开.关闭或者减少不必要的sleep/delay动作,后期测试过程中酌情增大.
-
板子上没有的器件,dts里一定去掉,否则即使没有出现功能问题,但是性能可能有问题,比如访问不存在的寄存器导致重试等等(mpq2022去掉后,dts没有去掉)
-
新项目很有可能使用旧的屏幕等等,所以不要急于替换屏幕等,是否有一个简单的方法来切换新旧屏幕呢
-
虚拟文件夹中设备树节点的变化需要及时通知到上层,否则上层无法打开设备节点,造成错误,比如这里i2c的地址式bus7的0x24,如果变化了就需要通知上层。
/sys/devices/platform/57247000.i2c/i2c-7/7-0024/ic_ver -
开机log中打印开机需要的时间,进入桌面的时间,避免代码修改慢慢积累造成性能变差的情况
-
大的修改一定要切分支,比如摄像头4合1改4路独立,涉及到上下游,风险很大,就要拉分支来单独修改
-
i2c等通信通道一定要提前做压力测试,检查是否能稳定可靠工作。写压力测试用例时,需要考虑一边(比如通过继电器)测试,一边检查文件系统的节点,看是否符合预期,这样不用每天搜索日志,看是否有fail。
-
外部上下拉电阻必须和软件的配置一致,否则在测试高低压脉冲时,芯片复位后读取的外部上拉电阻,导致功能异常。
-
产品本身及其内部模块都要有reset机制,当上层检测到状态不对的时候就需要reset。
-
每个硬件板子准备一个金机和使用最后的版本,方便回溯问题
-
问题要提前压力测试,不要像保隆的斯特威摄像头,到了装车时,才发现有小概率的出图问题
-
项目开发过程中需要定期检查系统的资源消耗和进程,后台,避免随着项目的进行,消耗的系统资源越来越大。
-
摄像头要用mmap方式取图,由bsp提供cma内存,避免使用系统内存
-
各公司的管理方法
华为:需求管理和下发,敏捷迭代 + 站会,相关技术问题在TMG上升,加班能攒调休,沟通问题通过共享桌面很方便
中兴通讯:敏捷迭代 ,需求用看板管理+ 站会+周报,白嫖式加班