嵌入式软件工程师一天记录

1、上午9-12点:接上回,跑板子调试之后发现结果依然不足预期,继续打开日志排查:对比代码改动前后的日志发现问题所在,DSP的dmem内存后半段数据对应不上。

2、下午两点:针对上午发现的问题进行分析,仔细检查了数据处理的整个流程,还是没查出问题。果断向主管求助,主管帮我检查了两遍代码以后,最终发现一个极易忽视的错误,dmem的地址类型应该由uint32_t*类型强制转换为uint8_t*类型。

原因如下:根据手册,LENC加速器选择调制阶数小于10(<1024QAM调制阶数),且对齐时,此时LENC将每个调制符号对齐到一个单独的字节当中,因此,此处需要的一个单独的字节,而不是4个字节。至此,问题解决(对于以上错误,确实没考虑到LENC的输出格式,因为DSP核上的代码改动不涉及LENC部分,就没有看手册上的解释,导致迟迟排查不出,幸好有一位高级工程师,不然真得卡死了)。

3、总结:本次项目的业务背景是基于ARMv9的多核SoC,将从MAC层接收的pdsch有效载荷信息经过LENC编码后生成比特级信息保存在SMEM中,进一步通过idma将比特级信息搬运到MDAB(dsp)的DMEM中进行处理,处理过程包括调制(比特级数据调制为符号级数据)、层映射和预编码。但目前SMEM内存不足。针对上述问题,采用将LENC生成的比特级数据保存在DDR中,再通过dsp切片的形式将数据搬运到DMEM中进行处理,以减小SMEM内存占用,同时保持传输效率。
结果:减少了SMEM内存占用1434KB。

最后,给粉丝朋友答疑:上述分享的东西也是嵌入式,准确来说属于行业专精知识,而所谓的嵌入式只是基础,公司内部更喜欢称为平台,比如说SoC就是实现业务功能的平台。因此如果是刚接触嵌入式学习的同学,请务必先打好基础,再去学习行业专精知识,这才是每个行业的门槛或护城河;而单片机、rtos、c语言、linux等这些知识,只是基础,不是门槛。之前我在《嵌入式学习路线完整版》这一笔记里边也提到过类似的话,因此你要有时间,mcu+rtos和linux,你都要学习。并且不管你走哪个方向,基本的linux使用以及编译环境必须要会。如何学习基础知识麻烦看第一篇笔记。#嵌入式# #嵌入式软件工程师# #嵌入式工作#
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务