嵌入式的总结

1.电路板必须要有电源指示灯,当没电的时候能快速判断。

2.电路板必须要有心跳灯,芯片死机的时候,能够立刻发现。程序运行的不同状态也能通过心跳灯来表示。

3.变量命名,用前缀表示分类。比如,TEST_LED,表示测试类的led。LED_TEST,表示LED类的叫test的灯。分类不一样。同样TEST_KEY和KEY_TEST也是分类不同。

4.bootloader和IAP要分开来实现,bootloader只负责启动哪一个程序,IAP随应用一起实现。有自升级要求的应用要选用flash大一些的芯片,空间布局可以是boot loader + config +  A应用+ B应用,A和B可以轮动升级,保证升级失败也不死机,而且可以回退到上个版本。

5.canbus的采样点问题 (参考 https://community.nxp.com/thread/433929)

The sample point is the location, typically given as a percent value, inside each bit period where the CAN controller looks at the state of the bus and determines if it is a logic zero (dominant) or logic one (recessive). All CAN controllers allow this point to be configured and it is always specified as a percentage from the start of the bit period.
The location of the sample point is a trade-off. An early sample point decreases the sensitivity to oscillator tolerances and allows lower-quality oscillators. A late sample point allows for a longer signal propagation time and therefore a longer bus. A later sample point is useful for non-ideal bus topologies.
The CAN-in-Automation user’s group makes recommendations of where the sample point should be for various bit rates, with 87.5% the most common.

"FAQ contribution from Embedded Systems Academy, experts in CAN bus. For more information visit www.esacademy.com"

 

如上表述,采样点延后对长距离通讯更有利,87.5%是比较推荐的。

位时间特性逻辑通过采样来监视串行的CAN总线,并且通过与帧起始位的边沿进行同步,及通
过与后面的边沿进行重新同步,来调整其采样点
它的操作可以简单解释为,如下所述把名义上的每位时间分为3
同步段(SYNC_SEG)通常期望位的变化发生在该时间段内。其值固定为1个时间单元(1 x
tCAN)
时间段1(BS1)定义采样点的位置。它包含CAN标准里的PROP_SEGPHASE_SEG1
其值可以编程为116个时间单元,但也可以被自动延长,以补偿因为网络中不同节点的频
率差异所造成的相位的正向漂移
时间段2(BS2)定义发送点的位置。它代表CAN标准里的PHASE_SEG2。其值可以编程为
18个时间单元,但也可以被自动缩短以补偿相位的负向漂移
重新同步跳跃宽度(SJW)定义了,在每位中可以延长或缩短多少个时间单元的上限。其值可以编
程为14个时间单元
有效跳变被定义为,当bxCAN自己没有发送隐性位时,从显性位到隐性位的第1次转变。
如果在时间段1(BS1)而不是在同步段(SYNC_SEG)检测到有效跳变,那么BS1的时间就被延长
最多SJW那么长,从而采样点被延迟了。
相反如果在时间段2(BS2)而不是在SYNC_SEG检测到有效跳变,那么BS2的时间就被缩短最多
SJW那么长,从而采样点被提前

 

6.不能debug的问题,参考http://www.cnblogs.com/zhanghonglang/p/8882034.html

 

7.量产的问题

  a.在线烧录,自己做个烧录工具链和烧录工装,每次烧写后递增BIN文件的指定位置的自定义ID,适合批量生产。

  b.离线烧录,将烧录文件先写到烧录工具的指定的地址空间,设置自定义设备ID的地址后,每一次按开始烧录,自定义设备地址会递增1。

 

8.日常维护问题

  a.通过蓝牙升级维护dev_type,dev_id等自定义参数,需要固件支持。

 

 

 

 

 

posted @ 2018-04-18 16:00  zhanghonglang  阅读(271)  评论(1编辑  收藏  举报