最近公司开了几个NXP芯片的项目,MCU组那边缺人就让我负责搞S32K144的驱动,玩这个芯片也有快两个月了,现在自己的活干的差不多,正好趁着有点时间,写点东西记录一下。把这段时间遇到的坑和感觉跟大家分享一下,以后会再写一些各个功能在FreeRTOS的使用说明。也会把代码上传,有什么不对的地方,可以指出来。大家共同进步,我的QQ是516912066。
S32K144是NXP推出一款车规级的MCU,内核是Cortex-M4F,带有FPU和DSP功能,可运行在112M(超频模式)、80M(正常模式),48M(也是正常模式,但这是官方开发工具里面配置的频率,如果想改成80M,要自己配置)。同时也提供STOP、VLPS、VLPR等低功耗运行模式。这是官方数据书册上写的,我也是简单的看看。下面写一些我自己的开发感受。
第一,是开发工具。官方开发工具名字是S32 Design Studio。基于eclipse写的。说实在的他这个官方开发工具说实在是够烂的,一点都不好用。总会报一些无脑的错误,各种卡飞。例如明明是在同一个目录下的.h文件,去引用这个头文件却找不到,需要自己去添加路径。有时候同一份工程代码,一台电脑编译通过,另一台电脑就不过。。。我也是醉了。不过也有他几点好处,功能界面非常丰富。配置相关的功能模块使用的界面也是图形化配置,毕竟现在都是流行像HAL库这种方式,底层的相关驱动代码都已经写好,开发人员只需要通过图像界面添加模块,配置好相关参数,代码都会自动生成。如果需要调用API,可以直接从API界面拖拽到代码界面,就能实现基本功能,方便后续开发。
第二,官方提供的库函数。因为官方提供了很多底层驱动的库函数,他需要考虑的因素很多,就导致了驱动代码非常冗余,对于本项目来说,无用的代码太多了。而且,使用是这个开发工具写代码会有一个很严重的问题,就是如果你使用的官方提供的库函数,正常来说,开发人员应该把C文件头文件包含进来,然后再调用。但是在这里,不好意思,你包含不进来,这个里面的套路是你不能包含,你只能链接C文件。这就意味着,如果你下面有很多个工程,而且都需要用到同一个文件里的函数,一旦你一个工程修改了这个函数,那别的工程里的这个函数也都被修改了。因为在裸机下面添加库函数时和在FreeRTOS下面添加库函数时就遇到了这个问题,我会之后详细写这里。
第三,官方的板子和demo。因为我用的是官方的开发板,所以一直就是先看官方给的demo(因为驱动demo都是在裸机下),然后再往FreeRTOS上移,最后在改驱动。所以在移的时候就发现很多问题,在裸机下可以实现的功能在FreeRTOS下面就有错误,最后发现是需要在demo上添加一些库函数,而且板子也需要重新焊接(例如在做低功耗时,要把供电改一下)。
以上是我近期开发时遇到的问题和感受,在这里写一下。后续的文章会写这个芯片在官方的开发环境下各个驱动在FreeRTOS下的移植,希望对各位网友有一些帮助,如果有什么写的不对的地方希望大家指出来,大家一起进步