ucos2在AT91SAM7A3上的移植

芯片:AT91SAM7A3
环境:ADS1.2
boot:CStartup.s 官方版本
移植版本:AN-1014版通用Arm移植
ucos2:2.76

1. 首先要在boot里面分配各个模式的堆栈,因为要在片内32K RAM做调试,所以暂时把栈底改在0x208000

的地方,程序空间从0x200000开始。
2. 将boot中IRQ_Handler_Entry改为os_cpu_a.s中的OS_CPU_IRQ_ISR
3. 设置相应的定时器中断周期,并添加OSTimeTick()调用。
4. 修改IRQ_Handler_Entry,将原IRQ_Handler_Entry的内容加进去。

OS_CPU_IRQ_ISR_1
;//*********** add ************
            ldr         r14, =AT91C_BASE_AIC
         ldr         r0 , [r14, #AIC_IVR]
         str         r14, [r14, #AIC_IVR]
        
;//*********** add End ********
   MSR     CPSR_c, #(NO_INT | IRQ32_MODE) ; Change to IRQ mode (to use

the IRQ stack to handle interrupt)

;//*********** add ************
   stmfd       sp!, { r1-r8, r12, r14}
            mov         r14, pc
            bx          r0
            ldmia       sp!, { r1-r8, r12, r14}

 ;//*********** add End ************
                                    
        MSR     CPSR_c, #(NO_INT | SVC32_MODE) ; Change to SVC mode

;//************ add *************           
            ldr         r14, =AT91C_BASE_AIC
            str         r14, [r14, #AIC_EOICR]          
;//************ add End ************
                   
        LDR     R0, =OSIntExit                 ; OSIntExit();
        MOV     LR, PC
        BX      R0           

5. 响应修改FIRQ部分
6. 在主流程里加了两个Task测试,通过。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值