机顶盒系统一般使用的芯片bcm,mstar,ali。分别对应的系统linux,ecos,tds。
机顶盒开发常见到的问题:内存不足,内存碎片,系统响应慢,线程栈空间,多线程引发的概率性死机或者死锁问题。
一、内存不足:严格控制字段类型(int,short,char),对于字符存储判断一个字符最大占用空间,结构体内存对齐。
二、内存碎片:针对容易malloc的模块采用内存池方案:
图片资源内存池,epg信息内存池,ca内存池。内存池的实现方案可以在网上参考。
三、系统响应慢:针对该开机系统响应就慢的问题,可能由于盒子其他线程运行太快,一直占用cpu资源导致,可以适当增加线程的轮循时间。一般盒子运行中的线程会有10个左右,包括一些timer等循环。
如果运行一段时间变慢,可能是由于内存不足,内存碎片导致,需要优化内存的使用。
四、线程栈空间:1、有时运行死机gdb后发现死在了int a= 0;的地方很奇怪,这个时候很有可能是由于线程栈空间不足导致。2、可能有的大数组比较占用空间,推荐使用堆空间,各个线程和其进程共享堆空间的
五、多线程引发的概率性死机或者死锁问题:只能充分了解系统,了解各个线程工作,或者通过注释代码来验证。