ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
923339 Топик полностью
evgeniy1294 (24.05.2019 16:38 - 16:43, просмотров: 189) ответил =AlexD= на По UARTу засылать код платы для записи на внешнюю флеш, но вообще я так понимаю - платы разные, можно просто проверять, какая внешняя периферия есть в наличии
Объясните мне наконец, чем вам внутренние flash и OTP не нравятся? Просто напишите скрипт на питоне, который заставляет openocd стереть flash, залить новый бинарь и прописать по заданным адресам константы, всего три команды. Какие-то уарты, какие-то перемычки, какая-то внутренняя периферия, зачем это всё? Чтобы проверить наличие периферии вам минимум нужен такой код: bool mcu::core::ValidatePointer(volatile uint8_t* pointer) { // Cortex-M3, Cortex-M4, Cortex-M4F, Cortex-M7 are supported bool is_valid = true; // Clear BFARVALID flag SCB->CFSR |= SCB_CFSR_BFARVALID_Msk; uint32_t mask = __get_FAULTMASK(); // Ignore BusFault by enabling BFHFNMIGN and disabling interrupts __disable_fault_irq(); SCB->CCR |= SCB_CCR_BFHFNMIGN_Msk; // probe pointer in question *pointer; // Check BFARVALID flag if ((SCB->CFSR & SCB_CFSR_BFARVALID_Msk) != 0) is_valid = false; // Bus Fault occured reading the address // Reenable BusFault by clearing BFHFNMIGN SCB->CCR &= ~SCB_CCR_BFHFNMIGN_Msk; __set_FAULTMASK(mask); return is_valid; } И так каждый указатель. На M0 нужен другой подход с модификацией архитектурных регистров, у половины камней с разными корпусами периферия одинакова на 100%. Оно вам надо?