天天看點

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

第一章 平台及硬體資訊簡介

本文檔基于ums312(T310),Android 11,sensorhub架構,sensor的硬體接口為i2c1(該平台目前不支援spi)

第二章 紫光展銳的移植文檔

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

第三章 sensor廠家提供的代碼

代碼在共享的資源中有《加速度&陀螺儀+光距感+地磁驅動.zip》。

3.1 地磁(AF6133E)的驅動–需要動态加載

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

3.2 光距感(STK33562)的驅動–需要動态加載

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

3.3 加速度&陀螺儀(icm40607)的驅動–不需要動态加載

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

第四章 動态驅動的編譯工具及配置

編譯工具:EmBitz_1.11.zip;在共享的資源中有。

使用EmBitz建立和編譯工程按文檔《33457_Android11.0EmBitz編譯Sensorhub動态加載驅動介紹V1.3.pdf》中的操作,下面是添加工程檔案:

1、導入編譯檔案(導入方法按文檔中的3.3中的方式操作)

需要導入的檔案是:使用Embitz編譯的檔案,包括地磁驅動overlay_types.h、patch_table_sensor.c、vtc_algo.a、vtc_algo.h、vtc_cali.ld及光距感patch_table_sensor.c,其中光距感patch_table_sensor.c暫時不要導入

2、添加連結腳本,即vtc_cali.ld

3、編譯工程生成elf檔案,如果沒有生成該檔案說明以上配置有問題(光距感patch_table_sensor.c先不要加工程)

4、生成elf格式檔案後,需要将elf檔案轉成bin檔案,操作如下:

4.1 桌面右鍵Embitz,打開檔案所在位置,找到如下圖所示檔案

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

4.2 打開Embitz軟體,點選project->Build Options ->選擇 Pre/post build steps 中的Post build steps,将 disable 置為 always

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

4.3 配置編譯工具

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

配置内容格式為:objcopy.exe所在位置 -O binary elf檔案所在位置 生成bin檔案的位置,如:

C:\Program Files (x86)\EmBitz\1.11\share\em_armgcc\arm-none-eabi\bin\objcopy.exe -O binary E:\ums312_sensorhub\7_5_sh_driver\7_5_sh_driver\bin\Release\7_5_sh_driver.elf E:\ums312_sensorhub\7_5_sh_driver\7_5_sh_driver\bin\Release\7_5_sh_driver.bin

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

4.4 再次點選編譯就可以發現重新生成elf檔案後會同時生成bin檔案

第五章 動态驅動編譯及二進制bin檔案

動态驅動的編譯就是為了生成bin檔案,但以上工程,編譯了地磁的驅動,現在需要将光距感的驅動加入

1、基本原理:光距感和地磁都有patch_table_sensor.c檔案,且作用都是實作了overlay_types.h中定義的結構體struct patch_table_sensor中的函數,隻要将patch_table_sensor.c檔案内容進行整合就行,實作完整的struct patch_table_sensor dynamic_driver_interface結構體

2、注意名稱的對應關系,否則無法使用

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

3、重新編譯,就可以生成具有包含了地磁和光距感功能的bin檔案

第六章 opcode驅動代碼

6.1 配置Sensor型号

路徑:device/sprd/(平台名)/(工程名)/module/sensor/md.mk

示例:

以UMS512平台為例,路徑為device/sprd/sharkl5Pro/ums512_1h10/module/sensor/md.mk

SENSOR_HUB_ACCELEROMETER := lsm6dsl_ums512

SENSOR_HUB_GYROSCOPE := lsm6dsl

SENSOR_HUB_LIGHT := ltr578als ltr553als

SENSOR_HUB_MAGNETIC := akm09918_ums512

SENSOR_HUB_PROXIMITY := ltr578als

SENSOR_HUB_PRESSURE := null

說明:

指派的名字需與opcode檔案名中的(Sensor型号)一緻。

指派null表示不支援此類型Sensor。

同類型Sensor,如需相容多個型号,型号以空格隔開,如上面LIGHT所示,同時相容ltr578als和ltr553als。

6.2 增加對應Sensor參數配置檔案(opcode)

路徑:vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/(Sensor類型)/

在路徑中增加(Sensor類型)_(Sensor型号).cpp檔案。

示例:

以ums512_1h10工程添加加速計lsm6dsl為例,增加檔案:

vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/accelerometer/accelerometer_lsm6dsl_ums512.cpp

說明:(Sensor型号)需與device路徑下的工程配置中的Sensor類型指派一緻。

6.3 注冊opcode接口

路徑:vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/

示例:

以加速度計lsm6dsl為例。

• 在SensorHubOpCodeExtrator.h中增加以下代碼:

extern void SensorHubOpcodeRegisterAccelerometer_lsm6dsl();

• 在SensorHubOpCodeExtrator.cpp中增加以下代碼:

#ifdef SENSORHUB_WITH_ACCELEROMETER_lsm6dsl

strcat(accelerometer_list, “accelerometer_lsm6dsl,”);

SensorHubOpcodeRegisterAccelerometer_lsm6dsl();

#endif

6.4 配置Native MMI工模菜單

如使用展銳提供的關機工模和工廠闆級自動化測試方案,需要對工模以及bbat需支援的測試項進行配置。如對UMS512平台

ums512_1h10工程進行配置,此工程支援加速計、陀螺儀、地磁、光感、距感。在下述檔案中,将支援的配置項置1,不支援的置0。 • device/sprd/sharkl5Pro/ums512_1h10/module/engpc/prodnv/PCBA.conf

• device/sprd/sharkl5Pro/ums512_1h10/module/engpc/prodnv/BBAT.conf

示例:

31 1 ACCSOR

表示支援加速計功能測試

32 1 MAGSOR

表示支援對地磁傳感器的功能測試

36 0 PRESSOR

表示不支援對氣壓計的測試

4.配置Native MMI工模菜單

說明:其他Sensor相關英文簡寫含義如下,請根據實際情況仿照上述示例進行配置。 • GYRSOR:陀螺儀功能測試

• LSENSOR:光感功能測試

• PXYSOR:距感功能測試

• CALI_ACCOSOR:加速計校準

• CALI_GYRSOR:陀螺儀校準

• CALI_MAGSOR:地磁校準(暫未使用) • CALI_PROSOR:距感校準

• CALI_LSOR:光感校準

6.5 拷貝動态加載bin

如果使用了動态加載驅動,需要在編譯階段将已經編譯好的動态加載驅動bin拷貝到$(TARGET_COPY_OUT_VENDOR)/firmware/目錄,

并改名為EXEC_CALIBRATE_MAG_IMAGE。

示例:

ums512_1h10工程配置中需要使用akm09918_cali_img_l5p.bin:

device/sprd/sharkl5Pro/ums512_1h10/module/sensor/md.mk

PRODUCT_COPY_FILES +=

vendor/sprd/modules/sensors/libsensorhub/ConfigSensor/calibration/mag_cali/akm09918_cali_img_l5p.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/EXEC_CALIBRATE_MAG_IMAGE

opcode移植請參考《33445_Android11.0SensorHub客制化指導手冊V1.2.pdf》

第七章 代碼送出記錄

vendor/sprd/modules/sensors路徑下:

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

device/sprd/sharkl5路徑下:

紫光展銳驅動之sensorhub調試第一章 平台及硬體資訊簡介第二章 紫光展銳的移植文檔第三章 sensor廠家提供的代碼第四章 動态驅動的編譯工具及配置第五章 動态驅動編譯及二進制bin檔案第六章 opcode驅動代碼第七章 代碼送出記錄

繼續閱讀