从 Hi3861 平台到 WS63 星闪平台的程序移植全解析
本文介绍了从Hi3861平台向WS63星闪平台的移植要点。重点对比了两者在GPIO、I2C接口上的函数差异,指出WS63采用7位I2C地址(Hi3861为8位)等关键区别。同时强调新平台对代码规范更严格,如禁止未定义变量、要求参数严格匹配等。移植过程需注意硬件接口调整、函数替换和代码规范适配,通过系统性的修改和测试确保程序在新平台稳定运行。虽然整体移植难度不高,但需要开发者充分了解两个平台的差异细
引言
随着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 星闪平台上稳定、高效地运行,充分发挥星闪技术的优势,为物联网应用带来更卓越的性能和体验。
更多推荐




所有评论(0)