几个主要的步骤
1.确定方向,需求
2.制定相应的策略来执行
3.添加代码,解决各种BUG
确定方向,需求
通常来说,移植主要是在下面两个方向会涉及
- 1.添加小模块(例如给设备添加驱动)
这种情况一般需要添加的代码并不多,应该以实际需要为导向,从给出的例子,或需要添加的主进程(线程)函数中提取出主要涉及的代码,逐步添加到新的工程中,需要什么找什么,如果涉及某个文件中的大量函数,就将该文件整体引用进来(!!!注意代码结构);如果涉及很多文件,则最好只将需要用到的函数提取出来,重新放在新的源文件中,同时做好注释; - 添加大模块(例如添加新的相关协议及全套辅助功能函数)
相对来说这种情况下需要添加的代码是较多的,因而需要从整体入手,先把文件夹整体拷贝到相应位置,再梳理引用逻辑,解决MAKEFILE等问题
- 添加大模块(例如添加新的相关协议及全套辅助功能函数)
2.18更新
移植一般会有相应指导教程,严格遵守即可
通常来说代码部分会分三步
- 1.底层函数配置
通常SDK中会有诸多用到底层函数的地方,会事先写好调用,并留下底层空函数等待添加,如果有硬件修改的话会更加复杂,要考虑到更多的逻辑问题,通常有延时函数sleep(),内存分配函数malloc(),内存释放函数free(),临界区相关函数critical(),具体名字可能会有所不同,但是实际功能是一样的,如果有其他接口要更新,则需要进行新的 处理函数,这个种类较多,不列举了; - 2.处理逻辑更新
主要是将新加入功能或更新的大段代码或整个文件拷贝到工程相关目录下,可能会有一些基础宏定义等的适配,该适配部分较为简单,但是实际移植文件会有诸多问题; - 3.配置文件修改
SDK可能会包含很多芯片/模组的匹配代码,需要对相应宏定义进行选择,而且针对不同硬件,可能GPIO,I2C等速度参数之类的也需要修改,这个位置应该比较好找,通常就是typedef.c之类的; - 4.解决BUG
主要是给第二步留下的问题处理,本步骤较为繁琐,主要看文档是否详细,如果已经考虑到了很多问题,则会比较方便就能完成;