您尚未登录。

楼主 #1 2018-11-13 14:43:16

BugActiveDaughter
会员
注册时间: 2017-10-17
已发帖子: 118
积分: 117.5

f0 跑rtx加引导引起诡异事情,已解决,分享一下

f0启用rtx 只是用到简单的rtx的核心部分。不加引导,程序正常,加了引导,程序就一直报线程栈溢出,而且是空闲线程的溢出。确定引导是正常,问题肯定出在应用层的向量设置。查找了.s的启动文件,把里边设置栈等全部注释,如下:
IMPORT  __main
        IMPORT  SystemInit



       ; LDR     R0, =__initial_sp          ; set stack pointer
    ;    MSR     MSP, R0 

;;Check if boot space corresponds to test memory

       ; LDR R0,=0x00000004
       ; LDR R1, [R0]
       ; LSRS R1, R1, #24
       ; LDR R2,=0x1F
      ;  CMP R1, R2
       
       ; BNE ApplicationStart 
     
;; SYSCFG clock enable   
         
       ; LDR R0,=0x40021018
       ; LDR R1,=0x00000001
      ;  STR R1, [R0]
       
;; Set CFGR1 register with flash memory remap at address 0

      ;  LDR R0,=0x40010000
       ; LDR R1,=0x00000000
       ; STR R1, [R0]
ApplicationStart       
                 LDR     R0, =SystemInit
                 BLX     R0
                 LDR     R0, =__main


之后本以为大功告成,但还是不行,真是活见鬼,想不通。
最后想想,要不把下边向量设置函数放system_stm32f0xx文件里边的SystemInit (void)函数内,居然可以了。
void Flash_OffSet(void)
{
    uint8_t i;
    uint32_t Data, Address;
    //Set Flash offest

    for (i = 0; i < 48; i++)
    {
        Data = *(__IO u32 *)(FLASHOFFSET + i * 4);
       
        Address = 0x20000000 + (i * 4);
        *(__IO u32 *)Address = (u32)Data;
    }
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
    SYSCFG_MemoryRemapConfig(SYSCFG_MemoryRemap_SRAM);
}
理论上,这个函数放main初始也可以呀,不加rtx 的工程我都是放main里边开头设置。

离线

#2 2018-11-13 15:36:49

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: f0 跑rtx加引导引起诡异事情,已解决,分享一下

感谢美女工程师分享!





离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn