找回密码
 立即注册
查看: 458|回复: 3

关于freertos 移植的问题,工程采用FreeRTOS-寄存器版本

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-01 08:48:10

2

主题

0

回帖

14

积分

新手上路

积分
14
发表于 2024-10-5 10:00:11 | 显示全部楼层 |阅读模式
Build target 'FreeRTOS_STC32G_Demo'
compiling port.c...
assembling .\Objects\port.src...
linking...
*** ERROR L138: CODE GENERATION: PROBLEM WHEN PROCESSING INSTRUCTIONS
    CAUSE:   JUMP TARGET OUT OF RANGE
    ADDRESS: 0FF347DH
    SEGMENT: ?PR?DISTEMP_HUMIDITY?_?DISPLAY
Program Size: data=11.4 edata+hdata=3314 xdata=0 const=290 code=16550
Target not created.
Build Time Elapsed:  00:00:01    用工程设置好的直接编译器出错(Xsmall:near,far const ,Ptr),改Large:xdata var,far const,ptr-4编译后

assembling .\Objects\port.src...
.\Objects\port.src(652): error A48: DATA-ADDRESS EXPECTED
.\Objects\port.src(728): error A48: DATA-ADDRESS EXPECTED
.\Objects\port.src(731): error A48: DATA-ADDRESS EXPECTED
.\Objects\port.src(805): error A48: DATA-ADDRESS EXPECTED
.\Objects\port.src(808): error A48: DATA-ADDRESS EXPECTED

报错的文件为:port.src里面

; line 131:     portRESTORE_SPX();
        MOV DR4,pxCurrentTCB
        MOV WR2,@WR6+0x2
        XRL WR0,WR0
        MOV DR60,DR0
; line 132:     portRESTORE_CONTEXT();
        POP PSW

//=====================
portasm.h 里面的位置


/* Saves the stack pointer for one task into its TCB.*/
#define portSAVE_SPX()                      \
{                                           \
    __asm   { MOV   DR0,DR60    }           \
    __asm   { MOV   DR4,pxCurrentTCB    }   \
    __asm   { MOV   @WR6+0x2,WR2        }   \
}


/* Restores the stack from the new TCB read to
run the task. */
#define portRESTORE_SPX()                   \
{                                           \
   __asm   { MOV   DR4,pxCurrentTCB    }   \
    __asm   { MOV   WR2,@WR6+0x2        }   \
    __asm   { XRL   WR0,WR0     }           \
    __asm   { MOV   DR60,DR0    }           \
}


//===========================





回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2025-04-30 07:46:22

33

主题

1079

回帖

2319

积分

荣誉版主

积分
2319
发表于 2024-10-5 13:22:48 | 显示全部楼层
本帖最后由 tzz1983 于 2024-10-5 13:25 编辑

1. 下载工程范例以后,不需要任何更改/设置就可以直接编译通过。
    如果首次编译即不能通过,请升级KEIL版本。(我们是可以编译通过的)
    第一次尝试编译成功后,再做任何其它更改,
    更改过程中,步伐不要迈得太宽,经常编译一下,哪个环节出错自然就知道了。
2. 目前官方FREERTOS例程,仅适应内存模式 (Memory Model :Xsmall)  暂不支持其它模式,比如 Large
3. Code Rom Size 支持  Large 和 Huge ,
    如果有必要更改模式,除了在 Target 选项卡上做出选择外,还需在 FreeRTOSConfig.h 中设置对应的宏,如下图:

截图202410051322019823.jpg


截图202410051320518968.jpg


截图202410051322436573.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-27 17:49:08
已绑定手机

5

主题

15

回帖

131

积分

注册会员

积分
131
发表于 2025-3-28 12:41:48 | 显示全部楼层
请问问题解决了吗?我之前碰到过同样的问题,不知怎么改的就又通过了。今天又出现了,不知道如何解决了。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-27 17:49:08
已绑定手机

5

主题

15

回帖

131

积分

注册会员

积分
131
发表于 2025-3-30 21:01:53 | 显示全部楼层
Robi*** 发表于 2025-3-28 12:41
请问问题解决了吗?我之前碰到过同样的问题,不知怎么改的就又通过了。今天又出现了,不知道如何解决了。 ...

在Option的Target中把Memory Modle 选择XSmall:near vars,far const,ptr-4后,问题解决了。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:18 , Processed in 0.205544 second(s), 72 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表