diff --git a/uappbase/base.hpp b/uappbase/base.hpp index 47cbb07..aef4fc9 100644 --- a/uappbase/base.hpp +++ b/uappbase/base.hpp @@ -3,7 +3,6 @@ #include "bean/bean.hpp" #include "appcfg/appcfg.hpp" // -#include "service/app_core.hpp" #include "service/app_event_bus.hpp" #include "service/gstate_mgr.hpp" // diff --git a/usrc/apphardware/apphardware.cpp b/usrc/apphardware/apphardware.cpp index 31ad22e..883f588 100644 --- a/usrc/apphardware/apphardware.cpp +++ b/usrc/apphardware/apphardware.cpp @@ -31,8 +31,6 @@ void AppHardware::initialize() { BLE_CONNECTED_STATE_IO_PE6.initAsInput(PE6, kxs_gpio_nopull, kxs_gpio_no_irq, false); - - osDelay(10); MOTO_POWER_EN.setState(false); @@ -41,10 +39,10 @@ void AppHardware::initialize() { TMC51X0Cfg tmc5130cfg3 = {&MOTOR_SPI_INS, MOTO3_CSN_IO, MOTO3_DRV_ENN_IO}; TMC51X0Cfg tmc5130cfg4 = {&MOTOR_SPI_INS, MOTO4_CSN_IO, MOTO4_DRV_ENN_IO}; - MOTO1.initialize(0,tmc5130cfg1); - MOTO2.initialize(1,tmc5130cfg2); - MOTO3.initialize(2,tmc5130cfg3); - MOTO4.initialize(3,tmc5130cfg4); + MOTO1.initialize(0, tmc5130cfg1); + MOTO2.initialize(1, tmc5130cfg2); + MOTO3.initialize(2, tmc5130cfg3); + MOTO4.initialize(3, tmc5130cfg4); ZLOGI(TAG, "motor1 initialize TMC51X0:%x", MOTO1.readICVersion()); ZLOGI(TAG, "motor2 initialize TMC51X0:%x", MOTO2.readICVersion()); @@ -74,6 +72,14 @@ void AppHardware::initialize() { IO_OUT1.setState(false); IO_OUT2.setState(false); -// ZCAN1::ins()->init(); - -} \ No newline at end of file + eeprom.initialize(&hi2c1); + if (!eeprom.isOnline()) { + ZLOGE(TAG, "eeprom is not online"); + return; + } + + hardwareInitedOK = true; + ZLOGI(TAG, "hardware initialize ok"); +} + +bool AppHardware::isHardInitOk() { return hardwareInitedOK; } diff --git a/usrc/apphardware/apphardware.hpp b/usrc/apphardware/apphardware.hpp index 2321a16..53b02cd 100644 --- a/usrc/apphardware/apphardware.hpp +++ b/usrc/apphardware/apphardware.hpp @@ -1,14 +1,16 @@ #pragma once #include "uappbase/base.hpp" +#include "ucomponents/eeprom/m24m02_i2c_eeprom.hpp" + namespace iflytop { class AppHardware { private: /* data */ public: - TMC51X0 MOTO1; - TMC51X0 MOTO2; - TMC51X0 MOTO3; - TMC51X0 MOTO4; + TMC51X0 MOTO1; + TMC51X0 MOTO2; + TMC51X0 MOTO3; + TMC51X0 MOTO4; ZGPIO MOTO_POWER_EN; ZGPIO MOTO1_CSN; @@ -32,6 +34,10 @@ class AppHardware { UART_HandleTypeDef* tjcUart; UART_HandleTypeDef* remoteContolerUart; + M24M02_I2C_EEPROM eeprom; + + bool hardwareInitedOK = false;; + static AppHardware* ins() { static AppHardware instance; return &instance; @@ -46,6 +52,8 @@ class AppHardware { ZASSERT(false); return nullptr; } + + bool isHardInitOk(); }; } // namespace iflytop diff --git a/usrc/config/config.hpp b/usrc/config/config.hpp index d653bcd..8e9ec1b 100644 --- a/usrc/config/config.hpp +++ b/usrc/config/config.hpp @@ -1,4 +1,5 @@ #pragma once #include "config_index.hpp" #include "config_service.hpp" +// #include "config_service_utils.hpp" diff --git a/usrc/config/config_service.cpp b/usrc/config/config_service.cpp index 02c74b0..c1e804a 100644 --- a/usrc/config/config_service.cpp +++ b/usrc/config/config_service.cpp @@ -55,12 +55,7 @@ static int32_t checksum(uint8_t *data, int32_t n) { bool ConfigService::initialize() { mutex.init(); - AppHal::MX_I2C1_Init(); - eeprom.initialize(&hi2c1); - if (!eeprom.isOnline()) { - return false; - } static_assert(kcfg_max == CFG_MAX_INDEX, ""); if (!checkcfg()) { @@ -74,7 +69,7 @@ bool ConfigService::initialize() { } cfgcache.checksum = CHECKSUM(); - eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); + AppHardware::ins()->eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); flashall(); } bool suc = checkcfg(); @@ -182,7 +177,7 @@ const char *ConfigService::_getcfg(config_index_t index, CfgItermCache *cache) { } bool ConfigService::checkcfg() { - eeprom.read(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); + AppHardware::ins()->eeprom.read(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); int32_t checksumval = CHECKSUM(); @@ -195,10 +190,10 @@ bool ConfigService::checkcfg() { bool ConfigService::flashIndex(int32_t index) { // for (int i = 0; i < sizeof(cfg_content_t); i += 4) { // uint32_t wdata = cfgcache.cfg[index].u32s[i / 4]; - // eeprom.write32(TO_EEPROM_ADD(index) + i, wdata); + // AppHardware::ins()->eeprom.write32(TO_EEPROM_ADD(index) + i, wdata); // } - eeprom.write(TO_EEPROM_ADD(index), (uint8_t *)&cfgcache.cfg[index], sizeof(cfg_content_t)); - eeprom.write32(CONFIG_EEPROM_ADD + 4 * 1, (uint32_t)cfgcache.checksum); + AppHardware::ins()->eeprom.write(TO_EEPROM_ADD(index), (uint8_t *)&cfgcache.cfg[index], sizeof(cfg_content_t)); + AppHardware::ins()->eeprom.write32(CONFIG_EEPROM_ADD + 4 * 1, (uint32_t)cfgcache.checksum); return true; } -bool ConfigService::flashall() { eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); } +bool ConfigService::flashall() { AppHardware::ins()->eeprom.write(CONFIG_EEPROM_ADD, (uint8_t *)&cfgcache, sizeof(cfgcache)); } diff --git a/usrc/config/config_service.hpp b/usrc/config/config_service.hpp index 3b05e9f..9bbe17c 100644 --- a/usrc/config/config_service.hpp +++ b/usrc/config/config_service.hpp @@ -1,8 +1,10 @@ #pragma once +// +#include "apphardware/apphardware.hpp" +// #include "uappbase/base.hpp" - +// #include "config_index.hpp" -#include "ucomponents/eeprom/m24m02_i2c_eeprom.hpp" namespace iflytop { using namespace std; @@ -18,8 +20,7 @@ struct CfgItermCache { class ConfigService { private: /* data */ - zmutex mutex = {"ConfigServiceMutex"}; - M24M02_I2C_EEPROM eeprom; + zmutex mutex = {"ConfigServiceMutex"}; public: static ConfigService* ins() { diff --git a/usrc/service/app_core.cpp b/usrc/service/app_core.cpp index d690695..486e1fc 100644 --- a/usrc/service/app_core.cpp +++ b/usrc/service/app_core.cpp @@ -55,11 +55,18 @@ void AppCore::appsetup() { /*********************************************************************************************************************** * INIT * ***********************************************************************************************************************/ + // 硬件无关组件初始化 GStateMgr::ins()->initialize(); AppEventBus::ins()->initialize(); - bool suc = ConfigService::ins()->initialize(); - if (!suc) { - AppHardware::ins()->initialize(); // 基础硬件初始化 + + // 硬件初始化 + ZCAN1::ins()->init(); + AppHardware::ins()->initialize(); // 基础硬件初始化 + + // 配置初始化 + ConfigService::ins()->initialize(); + + if (!AppHardware::ins()->isHardInitOk()) { FrontEndControler::ins()->initialize(); // 前端控制器,对屏幕的消息进行解析,发送消息给屏幕 FrontEndControler::ins()->startSchedule(); FrontEndControler::ins()->alertNoConfirm("设备异常:\r\n 存储异常,请尝试重新上电"); @@ -67,7 +74,6 @@ void AppCore::appsetup() { osDelay(1); } } - ZCAN1::ins()->init(); // hardInit AppHardware::ins()->initialize(); // 基础硬件初始化