好吧,入坑了

我只是想看看实时系统的运行,线程锁什么的...

看下外设,连接简单,ok,入手野火RT1021 EVK...

到手,跑个灯吧!No,这是啥!!!!

差评,差评,还是差评!!!

平台坑:

现在keil都高,是啥都越来越高,能编译出bin吗?不能。

打开MIMXRT1021xxxxx_flexspi_nor,可以看见

#! armcc -E

这是第一个坑,为啥不是ARMCLANG,不升级吗?不能正确使用Compiler 5.0 的都可以直接睡了

(解决方法:搜索ARM_Compiler)

第二个坑,和上面是一起的问题,不过属于编译和启动问题,三兄弟能友好些吗?

fsl_flexspi_nor_boot.c , evkmimxrt1020_sdram_ini_dcd.c,fsl_flexspi_nor_boot.c

直接复制还不行,要加编译宏定义

XIP_BOOT_HEADER_ENABLE=1

XIP_BOOT_HEADER_DCD_ENABLE =1

不能写在文件中直接用吗?其他种设置,也是专家才用,才懂,直接复制编译多好

(解决办法:加入宏,复制粘贴)

第三个坑,万恶的下划线

复制startup_MIMXRT1021.S

上代码


#include "MIMXRT1021.h"


#define GPIO1_DR                        *(unsigned int*)(GPIO1_BASE+0x00)
#define GPIO1_GDIR                    *(unsigned int*)(GPIO1_BASE+0x04)


void delay(void)
{
    int j,i;
        j=i=0;
    for (i = 0; i < 30000; ++i)
    {
        for (j = 0; j < 7000; ++j)
    {
       
    }
    }
}
int yyy()
{
//    SCB->CPACR |= ((3UL << 10*2) | (3UL << 11*2));
    return 0;
}

int main(void)
{
//    SCB->CPACR |= ((3UL << 10*2) | (3UL << 11*2));

    GPIO1_GDIR |= (1U << 25);
    GPIO1_GDIR |= (1U << 24);
    
    while(1)
    {
        GPIO1_DR &= ~(1U << 25);
      delay();
      
      GPIO1_DR |= (1U << 25);
      delay();
        
        GPIO1_DR &= ~(1U << 24);
      delay();
        
        GPIO1_DR |= (1U << 24);
      delay();
    };
}

void SystemInit (void)
{
//    SCB->CPACR |= ((3UL << 10*2) | (3UL << 11*2));
}
 

what?不工作,又啥情况?

不废话,SystemInit中取消注释,成功亮灯。

协处理器跟点灯啥关系?

为啥不能在main中初始化?

startup_MIMXRT1021.S文件

再上代码

Reset_Handler   PROC
                EXPORT  Reset_Handler             [WEAK]
                IMPORT  SystemInit
                IMPORT  yyy
                IMPORT  __main

                CPSID   I               ; Mask interrupts
                LDR     R0, =0xE000ED08
                LDR     R1, =__Vectors
                STR     R1, [R0]
                LDR     R2, [R1]
                MSR     MSP, R2
                LDR     R0, =SystemInit
                BLX     R0
                CPSIE   i               ; Unmask interrupts
                LDR     R0, =yyy
                BLX     R0                
                LDR     R0, =__main            
                BX      R0
                ENDP

交叉测试,注释掉SystemInit 中代码,同时修改main 和文件中协处理器开关位置,发现在main中初始化都不工作?

为啥?为啥?不知道。

但是你把__main的下划线去掉,咦,可以在main中初始化协处理器了,意不意外?惊不惊喜?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值