引言

随着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),则:

  • 写操作时,发送的地址字节为0x4801001000,最后一位0);
  • 读操作时,发送的地址字节为0x4901001001,最后一位1)。

延时代码

在新平台,原有的hi_udelay延时函数都被osal_udelay函数代替。

代码规范性

海思WS63平台对于代码的规范性要求更高,许多在以前代码中可以忽略的警告信息,在新的平台中都被强制认为是错误。

未定义变量

新平台下,所有未定义变量都被视为错误,需要逐一修改。

参数匹配

hi3861平台中,对参数检查基本遵从C语言的基本要求,但是在WS63中要求严格匹配,这也是修改的重点之一。

结束语

将程序从 Hi3861 平台移植到 WS63 星闪平台需要开发者全面了解两个平台的差异,做好移植前的准备工作,按照正确的步骤进行代码适配、库文件更新、编译调试,并在移植后进行严格的测试和优化。通过这些工作,能够确保移植后的程序在 WS63 星闪平台上稳定、高效地运行,充分发挥星闪技术的优势,为物联网应用带来更卓越的性能和体验。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐