在Eclipse / GCC下配置DA14585 IOT空气质量指数

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
7个帖子/ 0新
最后一篇文章
德斯特里
离线
最后一次见到:10 months 1 week ago
已加入:2016-09-28 16:05
在Eclipse / GCC下配置DA14585 IOT空气质量指数

我正在熟悉使用Eclipse/GCC的DA14585物联网多传感器开发工具包。我在AN-B064中运行了一些步骤,成功地编译并运行了调试器,没有任何问题。

我决定尝试和配置空气质量指数per instructions in UM-B-101 section 4.2.4. After defining IAQ_ENABLED I get the following errors:

C:/iot_msk/da14585_iotp/v6.160.4/projects/target_apps/common/lib/bsec/user_iaq.c:86:未定义引用`bsec_init'
C:/IoT\u MSK/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:99:未定义对“bsec\u set\u state”的引用
C:/IoT\u MSK/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:101:未定义对“bsec\u init”的引用
C:/IoT\u MSK/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:117:未定义对“bsec\u update\u subscription”的引用
./bsec_lib/user_iaq.o:在函数“update_iaq”中:
C:/IoT_MSK/DA14585_IOTP/v6.160.4/projects/target_apps/common/lib/bsec/user_iaq.c:145: undefined reference to `bsec_sensor_control'
C:/iot_msk/da14585_iotp/v6.160.4/projects/target_apps/common/lib/bsec/user_iaq.c:169:未定义引用“bsec_do_steps”
collect2.exe: error: ld returned 1 exit status

我猜该链接器不知道如何处理user_iaq.c。因为它中的Everthing仅在定义IAQ_ENABLED时才存在。

有想法该怎么解决这个吗?Eclipse / GCC我显然是新的。

谢谢

设备:
PM\U对话框
离线
最后一次见到:7小时41分钟前
工作人员
已加入:2018-02-08 11:03
嗨dsteury,

嗨dsteury,

谢谢你的问题在线。让我检查一下并尝试复制它,我会尽快回复您。

谢谢,下午好

PM\U对话框
离线
最后一次见到:7小时41分钟前
工作人员
已加入:2018-02-08 11:03
嗨dsteury,

嗨dsteury,

请阅读第4.2.4节“空气质量指数的配置”UM-B-101:DA14585 IOT多传感器开发套件开发人员指南文件。

用于计算空气质量指数(AQI)的Bosch BSEC库不包括在默认配置中(IAQ\ U ENABLED未定义)。如果用户希望编译包含此库的图像,则应删除其他功能以获得所需的内存空间。例如,可以通过以下步骤完成:

1.从da1458x_config_basic.h中删除VCNL4010接近传感器和unefine vcnl4010_opto_sensor_available.h。

2.通过在user_app_iot_config中定义alworm_advertise来禁用“运动唤醒”功能。这也消除了ICM426XX驱动器的低功耗配置部分。

3.禁用快速加速度计校准和undefine alwarm_fust_fast_acc_cal在user_app_iot_config中。

4.建造。

5.从da1458x\u config\u basic.h定义IAQ\u ENABLED

6.重新构建。生成的iot585.hex现在包含AQI功能。

谢谢,下午好

德斯特里
离线
最后一次见到:10 months 1 week ago
已加入:2016-09-28 16:05
我读了第4.2.4节

我确实阅读了UM-B-101的4.2.4节空气质量指数配置,我认为我正确地遵循了说明。也许我错过了什么;所以,我再看一遍。

I deleted my entire SDK directory and re-extracted from zip file into C:\DA14585_IOTP_v6.160.4. Then I opened SmartSnippets, went into IDE (remember I'm using Eclipse/GCC) and reimported project so I can start from scratch. I built project, ran debugger and everything is working fine.

1.从da1458x_config_basic.h中删除VCNL4010接近传感器和unefine vcnl4010_opto_sensor_available.h。

我不确定“删除VCNL4010”是什么意思。这是否意味着我应该在物理上从板上删除零件,或者我应该从项目中删除虚拟文件夹vcnl4010,或者这意味着别的东西吗?我不确定该怎么办;所以,我没有做任何事情。

我在da1458x_config_basic.h中更改第75行:

#define vcnl4010_opto_sensor_available.

对此:

#undef vcnl4010_opto_sensor_available.

保存文件。

2.通过在user_app_iot_config中定义alworm_advertise来禁用“运动唤醒”功能。这也消除了ICM426XX驱动器的低功耗配置部分。

我将user\u app\u iot\u config.h的第24行改为:

#undef ALWAYS\u advised//禁用运动唤醒功能

对此:

#define alway_advertise //禁用运动功能唤醒

保存文件。

3.禁用快速加速度计校准和undefine alwarm_fust_fast_acc_cal在user_app_iot_config中。

我搜索了user_app_iot_config.h for almain_ used_fast_acc_cal,它不在;但是,有一个use_fast_acc_cal(没有前面的“always_”),所以我认为这是一个拼写错误和改变行41:

#define use_fast_acc_cal.

对此:

#undef USE_FAST_ACC_CAL

保存文件。

4.建造。

我建造了,运行调试器,打开了IOT传感器,可以看到接近传感器不再有效;所以,我认为我已经完成了一切顺利。

5.从da1458x\u config\u basic.h定义IAQ\u ENABLED

我是da1458x_config_basic.h的change第88行:

#undef IAQ\ U ENABLED//包括IAQ库、机载工艺气体数据

对此:

#定义IAQ\启用//包括IAQ库、机载工艺气体数据

保存文件。

6.重新构建。生成的iot585.hex现在包含AQI功能。

我又来建造了,我得到了7个错误。当我打开控制台时,这就是我在窗口末尾看到的:

COLLECT \u GCC \u OPTIONS='-mcpu=cortex-m0''-mthumb'-Os'-fmessage length=0'-fsigned char'-ffunction sections'-fdata sections'-g3'-T'./ldscript \u common.lds'-L../../../../../../../../projects/target \u apps/iot/common \u iot files/lib'-L../../../../../../../../../SDK \u 585/SDK/common \u project \u files/misc''-L../../../../../../../SDK\u 585/SDK/platform/system\u library/output/GCC'-specs=nano.specs'-specs=nosys.specs'-v'-o''iot585.elf'
C:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin / lib / gcc / arm-none-eabi / 7.3.1 / collect2.exe -plugin c:/diasemi/smartsnippetsstudio2.0.10/GCC / 7-2018-Q2 / BIN / ... lib / gcc / arm-none-eabi / 7.3.1 / liblto_plugin-0.dll -plugin-opt = c:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2 / bin / bin / arm-none-eabi / 7.3.1 / lto-wrapper.exe -plugin-opt = -freesolution = c:\ david \ appdata \ local \ temp \ ccokcoya.res -plugin-opt = -pasp-tod = -lgcc -plugin-opt = -pass-tout = -lg_nano -plugin-opt = -pasp-tod = -lc_nano -plugin-opt = -pass-tout = -lgcc-plugin-opt = -pasp-opt = -lc_nano -plugin-opt = -pass-opt = -lnosys -plugin-opt = -lgcc-tod = -lgcc -plugin-opt = -pase-tout = -lc_nano -plugin-opt = -pass-tod = -lnosys - sysroot = c:\ diasemi \ smartsnippetsstudio2.0.10 \ gcc \ 7-2018-q2 \ bin \ ../ arm-none-eabi-x -o iot585.elf c:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o c:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o c:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o -L../../../../../../projects/target_apps/iot/common_iot_files/lib -L../../../../../../SDK_585/sdk/common_project_files/misc -L../../../../../../SDK_585/sdk/platform/system_library/output/GCC -Lc:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m -Lc:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m -Lc:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../arm-none-eabi/lib/thumb/v6-m -Lc:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1 -Lc:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc -Lc:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib -Lc:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../arm-none-eabi/lib --gc-sections -Map iot585.map --no-wchar-size-warning ./wkup_adapter/wkup_adapter.o ./vcnl4010/vcnl4010.o ./vcnl4010/vcnl4010_impl.o ./user_sfl/user_sfl_util.o ./user_sensors/user_sensor_config.o ./user_sensors/user_sensor_raw.o ./user_sensors/user_sensor_sfl.o ./user_sensors/user_sensors.o ./user_profiles/dws.o ./user_profiles/dws_task.o ./user_platform/i2c_gpio_extender.o ./user_platform/sensors_periph_interface.o ./user_platform/user_iot_dk_utils.o ./user_platform/user_periph_setup.o ./user_app/user_dws.o ./user_app/user_dws_reports.o ./user_app/user_dws_task.o ./user_app/user_iot.o ./sensors_interface/sensors_interface.o ./sensors_interface/sensors_interface_api.o ./sensor_calibration/basic_acc_cal.o ./sensor_calibration/basic_autocal.o ./sensor_calibration/basic_prox_cal.o ./sensor_calibration/sensor_calibration.o ./sensor_calibration/static_calibration.o ./sdk_profiles/attm_db_128.o ./sdk_profiles/bass.o ./sdk_profiles/bass_task.o ./sdk_profiles/custom_common.o ./sdk_profiles/diss.o ./sdk_profiles/diss_task.o ./sdk_profiles/prf.o ./sdk_profiles/prf_utils.o ./sdk_profiles/proxr.o ./sdk_profiles/proxr_task.o ./sdk_profiles/suotar.o ./sdk_profiles/suotar_task.o ./sdk_driver/adc.o ./sdk_driver/battery.o ./sdk_driver/gpio.o ./sdk_driver/hw_otpc.o ./sdk_driver/sky66111.o ./sdk_driver/spi.o ./sdk_driver/spi_flash.o ./sdk_driver/syscntl.o ./sdk_driver/systick.o ./sdk_driver/timer0.o ./sdk_driver/trng.o ./sdk_driver/uart2.o ./sdk_driver/wkupct_quadec.o ./sdk_boot/hardfault_handler.o ./sdk_boot/ivtable_DA14585_586.o ./sdk_boot/nmi_handler.o ./sdk_boot/startup_DA14585_586.o ./sdk_boot/system_DA14585_586.o ./sdk_ble/rf_585.o ./sdk_ble/rwble.o ./sdk_ble/rwip.o ./sdk_arch/arch_console.o ./sdk_arch/arch_main.o ./sdk_arch/arch_rom.o ./sdk_arch/arch_sleep.o ./sdk_arch/arch_system.o ./sdk_arch/jump_table.o ./sdk_arch/nvds.o ./sdk_app/app.o ./sdk_app/app_bass.o ./sdk_app/app_bass_task.o ./sdk_app/app_customs.o ./sdk_app/app_customs_common.o ./sdk_app/app_customs_task.o ./sdk_app/app_default_handlers.o ./sdk_app/app_diss.o ./sdk_app/app_diss_task.o ./sdk_app/app_easy_msg_utils.o ./sdk_app/app_easy_security.o ./sdk_app/app_easy_timer.o ./sdk_app/app_entry_point.o ./sdk_app/app_msg_utils.o ./sdk_app/app_proxr.o ./sdk_app/app_proxr_task.o ./sdk_app/app_security.o ./sdk_app/app_security_task.o ./sdk_app/app_suotar.o ./sdk_app/app_suotar_task.o ./sdk_app/app_task.o ./icm426xx/Icm426xxDriver.o ./icm426xx/Icm426xxDriver_HL.o ./icm426xx/Icm426xxTransport.o ./icm426xx/Icm426xx_impl.o ./driver_adaptation_layer/environmental_bme680.o ./driver_adaptation_layer/magneto_ak099.o ./driver_adaptation_layer/motion_bmi160.o ./driver_adaptation_layer/motion_icm4X6.o ./driver_adaptation_layer/optical_vcnl4010.o ./bsec_lib/user_iaq.o ./bmi160/bmi160.o ./bmi160/bmi160_impl.o ./bme680/bme680.o ./bme680/bme680_impl.o ./ak09915/ak09915.o ./ak09915/ak09915_impl.o -lsystem_library -lsensor_fusion -lsensor_calibration --start-group -lgcc -lg_nano -lc_nano --end-group --start-group -lgcc -lc_nano -lnosys --end-group --start-group -lgcc -lc_nano -lnosys --end-group c:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o c:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o -T ./ldscript_common.lds
./bsec_lib/user_iaq.o:在函数“init_iaq”中:
C:/DA14585\u IOTP\u v6.160.4/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:86:未定义对“bsec\u init”的引用
C:/DA14585\u IOTP\u v6.160.4/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:99:未定义对“bsec\u set\u state”的引用
C:/DA14585\u IOTP\u v6.160.4/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:101:未定义对“bsec\u init”的引用
C:/DA14585_IOTP_v6.160.4/DA14585_IOTP/v6.160.4/projects/target_apps/common/lib/bsec/user_iaq.c:117: undefined reference to `bsec_update_subscription'
./bsec_lib/user_iaq.o:在函数“update_iaq”中:
C:/DA14585\u IOTP\u v6.160.4/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:145:未定义对“bsec\u sensor\u control”的引用
C:/DA14585\u IOTP\u v6.160.4/DA14585\u IOTP/v6.160.4/projects/target\u apps/common/lib/bsec/user\u iaq.C:169:未定义对“bsec\u do\u steps”的引用
collect2.exe: error: ld returned 1 exit status
制作:*** [iot585.elf]错误1

10:41:19构建完成(耗时1米:49秒。426毫秒)

Please let me know if I'm doing something wrong.

谢谢

PM\U对话框
离线
最后一次见到:7小时41分钟前
工作人员
已加入:2018-02-08 11:03
嗨dsteury,

嗨dsteury,

我为延迟道歉。我从团队中得到了反馈意见。不幸的是,博世图书馆在GCC项目中有很大的记忆需求。结果,不可能在基于GCC的项目中实现空气质量配置。

谢谢,下午好

德斯特里
离线
最后一次见到:10 months 1 week ago
已加入:2016-09-28 16:05
谢谢for the reply.

谢谢for the reply.

这些步骤基本上降低了代码大小,使得空气质量指数代码在与KEIL编译时适合。我猜GCC在优化时与Keil一样高效(我不知道是因为我无法访问Keil),但这并没有真正回答为什么有一群未定义的问题引用BSEC_INIT,BSEC_SET_STATE,BSEC_UPDATE_SUBSCRIPTRICE,BEC_SENSOR_CONTROL和BSEC_DO_STEPS。

我做了更多的挖掘,看起来像这些函数存在于名为libalgobsec_full.lib的库中,它与user_iaq.c相同的目录。我经历了一些痛苦,试图让GCC使用这个图书馆。最后,我想出来了,但我得出了相同的结论,即这个代码不适合该部分。理论上,我认为更多的其他传感器的代码可以被剥掉出来使空气质量指数工作,但我并不真正确定。

我包括了让GCC使用这个库的步骤,这样其他人就不必像我一样费劲地弄明白了。

链接器已经在/projects/target\u apps/iot/common\u iot\u files/lib中查找一些库。通过执行以下步骤,我可以让链接器找到此库:

1.将/projects/target\u apps/common/lib/bsec中的libalgobsec\u full.lib复制到/projects/target\u apps/iot/common\u iot文件

2.将“.lib”扩展名重命名为“.a”,使文件名为“libalgobsec_full.a”(我注意到这个目录中的其他库有.a版本。在进行文件比较时,我注意到.lib和.a版本的内容是相同的。)

3.在Eclipse右键单击IOT585项目,属性,C / C ++常规,路径和符号,然后在“库”选项卡下添加“Algobsec_full”(请勿使用'libalgobsec',确保不包含'lib'前面)

4.确保从上面的步骤5中定义IAQ\ U已启用。

5.建造

链接器不应该抱怨对上述函数的未定义引用,但是现在出现了一大堆不同的错误,首先是:

c:/diasemi/smartsnippetsstudio2.0.10/gcc/7-2018-q2/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/bin/ld.exe: iot585.elf section `i.bsec_GasHumidityBaselineTracker_isBaselineAllowedAdapt' will not fit in region `LR_IROM3'

PM\U对话框
离线
最后一次见到:7小时41分钟前
工作人员
已加入:2018-02-08 11:03
嗨dsteury,

嗨dsteury,

非常感谢您的指示,很高兴您能够减少代码的大小。

谢谢,下午好