本文档适用于SDK1.5.0以及之后的版本。
.
现在的开发环境下,
用户工程所在路径:\AgRV_pio\platforms\AgRV\examples
SDK驱动所在路径:\AgRV_pio\packages\framework-agrv_sdk
board代码所在路径:\AgRV_pio\packages\AgRV\boards\agrv2k_xxx
这种分散结构的设计,目的是功能分离:把用户不会改动的SDK分离出去,不常改动的board分离出去,开发者只需要关注自己工程下代码即可。
但这种结构对习惯于iar/keil的开发者来说,会带来两种不便:
- 不方便在vscode下直接查看驱动和board代码;
- 代码管理时,不方便整个工程打包。
尤其是SDK出现大的版本升级(驱动有改动的情况下),只备份用户代码,后续在新SDK版本上运行时,需要重新测试。
为此,这里提供一种整合方式(不再使用上述的分散结构,而是让SDK跟着应用程序一起走),供开发者参考。
.
目标:把工程的SDK代码和board代码都整合到应用工程下。
步骤概述:
- 将sdk部分copy到工程下;
- 将board下的代码copy到工程下;
- 修改platformio.ini来使用新的代码进行编译。
.
步骤详述:
(以example工程为例)
1. 将sdk的部分copy到工程下:
在example工程下新建一个名为framworks的文件夹,然后将\AgRV_pio\packages\下的framework-agrv_sdk 目录copy过去。如下图:
2. 将board下的代码copy到工程下:
在example工程下新建一个名为boards的文件夹,然后将\AgRV_pio\platforms\AgRV\boards\下文件copy过去(如用407,就copy文件夹agrv2k_407和407.json)。
以上步骤一和步骤二执行后,在vscode中可以看到目录结构如下:
3. 修改platformio.ini来使用新的代码进行编译:
首先,添加 inline_framework_dir = ./frameworks 来告诉编译器,寻找framework时优 先从这里寻找。(这里的SDK相当于一个framework)
添加后如图:
然后,修改对board文件夹的编译配置:
到这里,整合完毕。
整合后,工程中的后续操作(编译、下载)跟原来分散结构都是一样的。
.
另外,其实这里的inline_framework_dir方式,不止可以整合SDK到工程里,其他的 framework(如lwip,freeRTOS等)也同样可以这样整合进来。
inline_framework_dir的意义,就是告诉编译器,编译这些关联的framework时,优先从这里指定的路径下去找。如果找不到,才再到安装的路径下去找。所以,只要挪到这个路径下的framework,都会被优先使用。也就达到了把framework整合到自己工程的目的。
标签:工程,AgRV,合并,framework,board,copy,SDK From: https://blog.csdn.net/xinxingzhe5127/article/details/144607834