从 Hi3861 平台到 WS63 星闪平台的程序移植全解析
引言
随着WS63星闪平台的推出,海思逐步在放弃hi3861平台的支持,为此我们的课程也要从hi3861平台转到WS63平台。相比较而言,WS63平台的硬件能力更强,移植工作总体并不困难,但是也有一些需要注意的细节。
硬件接口代码
检查原程序中对 Hi3861 硬件接口的操作代码,根据 WS63 平台硬件接口的差异进行修改。比如,Hi3861 的某个 GPIO 引脚用于控制外部设备,在 WS63 上该引脚功能或编号可能不同,需相应调整代码中的引脚定义及操作函数。有关内容可以参考:星闪WS63开发板IO管脚查找指南-CSDN博客。
GPIO
GPIO的初始化函数IoTGpioInit不在需要,原有GPIO函数和新平台的对应关系:
hi3861 | WS63 |
hi_io_set_func | uapi_pin_set_mode |
IoTGpioSetDir | uapi_gpio_set_dir |
hi_io_set_pull | uapi_pin_set_pull |
IoTGpioSetOutputVal | uapi_gpio_set_val |
I2C
原有I2C函数和新平台的对应关系:
hi3861 | WS63 |
IoTI2cWrite | uapi_i2c_master_write |
IoTI2cRead | uapi_i2c_master_read |
IoTI2cInit | uapi_i2c_master_init |
I2C相关的函数有一个重要修改就是关于读写函数里面提供的地址问题。I2C协议中,设备地址是用于识别总线上不同从设备的关键标识,主设备通过设备地址与特定从设备进行通信。在hi3861中其提供的地址为8位地址,而WS63为7位地址。8位地址就是在7位地址的基础上增加了读写位(0
表示写操作,1
表示读操作)。
例如:若设备地址为0x48
(二进制01001000
),则:
- 写操作时,发送的地址字节为
0x48
(01001000
,最后一位0
); - 读操作时,发送的地址字节为
0x49
(01001001
,最后一位1
)。
延时代码
在新平台,原有的hi_udelay延时函数都被osal_udelay函数代替。
代码规范性
海思WS63平台对于代码的规范性要求更高,许多在以前代码中可以忽略的警告信息,在新的平台中都被强制认为是错误。
未定义变量
新平台下,所有未定义变量都被视为错误,需要逐一修改。
参数匹配
hi3861平台中,对参数检查基本遵从C语言的基本要求,但是在WS63中要求严格匹配,这也是修改的重点之一。
结束语
将程序从 Hi3861 平台移植到 WS63 星闪平台需要开发者全面了解两个平台的差异,做好移植前的准备工作,按照正确的步骤进行代码适配、库文件更新、编译调试,并在移植后进行严格的测试和优化。通过这些工作,能够确保移植后的程序在 WS63 星闪平台上稳定、高效地运行,充分发挥星闪技术的优势,为物联网应用带来更卓越的性能和体验。