|
我提供的具体内容如下 这是main函数 ``` int main(void) { // csvir cancel // #ifdef DEBUG // volatile uint32_t debug = 1; // while(debug); // #endif if(IS_DEVELOPER_BOOT_MODE()) { SystemClock_Config(); } else { SystemCoreClockUpdate(); } // __HAL_RCC_DBGMCU_CLK_ENABLE(); // 使能调试时钟 // DBGMCU->CR |= DBGMCU_CR_DBG_SLEEP | DBGMCU_CR_DBG_STOP | DBGMCU_CR_DBG_STANDBY; // or // HAL_DBGMCU_EnableDBGSleepMode(); // HAL_DBGMCU_EnableDBGStopMode(); // HAL_DBGMCU_EnableDBGStandbyMode(); bool hal_init_ret = 0; hal_init_ret = HAL_Init(); SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk; // 禁止深睡眠,仅允许浅睡眠 #if(0) for (volatile int i = 0; i < 1000000; i++); // 1. 释放调试复位 (DBGRST = 0),并启用调试时钟 RCC->DBGCFGR &= ~RCC_DBGCFGR_DBGRST; // 清除复位位 RCC->DBGCFGR |= RCC_DBGCFGR_DBGEN; // 使能调试时钟 // 如果需要跟踪接口(SWO),可一并使能 TRACEEN // RCC->DBGCFGR |= RCC_DBGCFGR_TRACEEN; // 2. 允许低功耗模式下调试连接(使用非安全地址) DBGMCU_NS->CR |= DBGMCU_CR_DBG_SLEEP | DBGMCU_CR_DBG_STOP | DBGMCU_CR_DBG_STANDBY; // 3. 添加长延时,便于手动连接 J-Link for (volatile int i = 0; i < 1000000; i++); #endif // uint32_t dbgcfgr_val = RCC->DBGCFGR; /* Initialize led */ // BSP_LED_Init(LED3); // csvir cancel /* Initialize Display destination */ if(ResMgr_Request(RESMGR_RESOURCE_RIFSC, RESMGR_RIFSC_UART5_ID) == RESMGR_STATUS_ACCESS_OK) { COM_Init.BaudRate = 115200; COM_Init.WordLength = UART_WORDLENGTH_8B; COM_Init.StopBits = UART_STOPBITS_1; COM_Init.Parity = UART_PARITY_NONE; COM_Init.HwFlowCtl = UART_HWCONTROL_NONE; /* Initialize and select COM1 which is the COM port associated with current Core */ BSP_COM_Init(COM_VCP_CM33, &COM_Init); BSP_COM_SelectLogPort(COM_VCP_CM33); } /* Add your non-secure example code here */ disable_dcache(); disable_icache(); printf("hal_init_ret=%x<\r\n", hal_init_ret); printf("csvir [NS] [INF] Non-Secure system starting...\r\n"); printf("\033[1;34m[NS] [INF] STM32Cube FW version: v%ld.%ld.%ld-rc%ld \033[0m\r\n", ((HAL_GetHalVersion() >> 24) & 0x000000FF), // Main version ((HAL_GetHalVersion() >> 16) & 0x000000FF), // Sub1 version ((HAL_GetHalVersion() >> 8) & 0x000000FF), // Sub2 version (HAL_GetHalVersion() & 0x000000FF)); // RC version // SEGGER_RTT_Init(); // 这里写不写,影响作用不大 uintptr_t rtt_addr = (uintptr_t)(&_SEGGER_RTT); char rtt_buf[64] = {0}; (void)snprintf(rtt_buf, sizeof(rtt_buf), "connect rtt viewer, need addr: 0x%x\r\n", (uint32_t)rtt_addr); printf(rtt_buf); SEGGER_RTT_printf(0, rtt_buf); /* 这个地址也可以通过查看.map文件来找到,搜索 _SEGGER_RTT /home/csvir/OpenSTLinux_distribution/build-openstlinuxweston-stm32mp2-m33td/workspace/sources/m33tdprojects-starter-stm32mp2/Projects/STM32MP257F-EV1/Demonstrations/StarterApp_M33TD/build-m33td_emmc-stm32mp257f-ev1-cm33tdcid-ostl/StarterApp_M33TD_CM33_NonSecure.map */ if (SCB->CCR & SCB_CCR_DC_Msk) { SEGGER_RTT_printf(0, "D-Cache is ENABLED\r\n"); } else { SEGGER_RTT_printf(0, "D-Cache is DISABLED\r\n"); } if (SCB->CCR & SCB_CCR_IC_Msk) { SEGGER_RTT_printf(0, "I-Cache is ENABLED\r\n"); } else { SEGGER_RTT_printf(0, "I-Cache is DISABLED\r\n"); } // 这会引起非法访问 iac exceptions: [191:160]=0x020000 Discarded IAC ID: 177 // uint32_t denr_val = BSEC->DENR; // SEGGER_RTT_printf(0, "BSEC->DENR=%x<", denr_val); // 无法读取,安全限制 // uint32_t val_DBGMCU_IDC = *((uint32_t *)0x5a010000); // uint32_t val_DBGMCU_CR = *((uint32_t *)0x5a010004); // uint32_t val_RCC_DBGCFGR = *((uint32_t *)0x54200520); // SEGGER_RTT_printf(0, "DBGMCU_IDC=%x<", val_DBGMCU_IDC); // SEGGER_RTT_printf(0, "DBGMCU_CR=%x<", val_DBGMCU_CR); // SEGGER_RTT_printf(0, "RCC_DBGCFGR=%x<", val_RCC_DBGCFGR); // printf("dbgcfgr_val=0x%x<", dbgcfgr_val); // 这里没有什么内容,应该也不需要改 osKernelInitialize(); /* Call init function for freertos objects (in freertos.c) */ MX_FREERTOS_Init(); osKernelStart(); // 这里没有什么内容,应该也不需要改 /* We should never get here as control is now taken by the scheduler */ /* Infinite loop */ while (1) { } } ``` 这是os启动后的用户app |
STM32MP2x Cortex-M33核间通讯Mailbox例程
STM32MP257中CM33内核能否访问以太网口Ethernet?
CubeIDE生成MP257的M33工程出现RCC配置问题(Bug?)
重新配置SCB->VTOR = 0x08010000后,再次复位,程序异常,发现不进tick中断,IIC读数卡死在准备查询循环中。
keil调试阶段无法进行仿真,能进到仿真界面,但是无法执行程序,这个怎么解决?
nucleo板子自带的stlinkv3坏了咋整
stedgeai无法转换stm32mp2模型
JLink如何取消记住选项的功能?
CUBEmonitor write panel 变量无法在dashboard上显示
有关Cubeide IAP 问题
微信公众号
手机版