迪文科技论坛

 找回密码
 立即注册
搜索
查看: 1390|回复: 11

【提问】关于代码加载到RAM运行的问题

[复制链接]

17

主题

75

回帖

619

积分

高级会员

Rank: 4

积分
619
发表于 2025-8-15 22:34:40 | 显示全部楼层 |阅读模式
文档 "迪文T5L ASIC 应用开发指南"   3.2.1 代码存储器(64KBytes)有如下文字:


OS 8051 代码保存在 1Mbytes 片内 Flash 的 0x01:0000-0x01:FFFF 位置,上电复位后由系统加载到 RAM 中运行。


我请教如下问题:
1.上电复位后由系统加载到RAM中运行,这里的RAM是指OS 8051内核的32Kbytes片内RAM吗?


2. 用KEIL C51编写代码,XDATA变量是保存到OS 8051内核的32Kbytes片内RAM的,如果OS 8051代码从1Mbytes片内Flash加载
  到RAM运行,这样变量和代码都占用RAM,是否会引起混乱?如果代码量很大占用RAM就多,那么留给XDATA变量使用的RAM就减少了,
  留给XDATA变量使用的RAM会减少吗?

回复

使用道具 举报

31

主题

238

回帖

2785

积分

金牌会员

Rank: 6Rank: 6

积分
2785
发表于 2025-8-16 10:32:18 | 显示全部楼层
应该是不公开的RAM吧,肯定不会是XDATA这块RAM,不然程序没有办法写了
回复

使用道具 举报

17

主题

75

回帖

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2025-8-16 11:13:53 | 显示全部楼层
本帖最后由 xz130587tec 于 2025-8-16 11:29 编辑
nearsea 发表于 2025-8-16 10:32
应该是不公开的RAM吧,肯定不会是XDATA这块RAM,不然程序没有办法写了

我感觉应该是XDATA RAM这一块,因为我看到一个帖子,帖子链接:
http://inforum.dwin.com.cn:20080 ... highlight=32K%2BRAM
,请您参考这个帖子,这个帖子没有给出肯定的解答,我想原因就是FLASH代码加载到32K ram运行,和XDATA共同占用32K RAM造成的
回复

使用道具 举报

17

主题

75

回帖

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2025-8-16 11:25:41 | 显示全部楼层
nearsea 发表于 2025-8-16 10:32
应该是不公开的RAM吧,肯定不会是XDATA这块RAM,不然程序没有办法写了

我猜想还有一种可能性:这32K的ram,比如前10K是供XDATA使用的,后22K是供加载FLASH代码使用的,当你的C51代码使用XDATA超过10K,程序运行就会出问题。
回复

使用道具 举报

17

主题

75

回帖

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2025-8-16 11:31:10 | 显示全部楼层
本帖最后由 xz130587tec 于 2025-8-16 11:44 编辑

这个问题期盼迪文方面能给出确定的解答,希望不要 "可能、大概、应该" 什么的,谢谢!
回复

使用道具 举报

31

主题

238

回帖

2785

积分

金牌会员

Rank: 6Rank: 6

积分
2785
发表于 2025-8-16 12:45:50 | 显示全部楼层
xz130587tec 发表于 2025-8-16 11:25
我猜想还有一种可能性:这32K的ram,比如前10K是供XDATA使用的,后22K是供加载FLASH代码使用的,当你的C5 ...

这个测试很简单的,我们把XDATA的32K空间用特定的字符去填满,然后验证正确性就可以了。

PS。迪文要是真的存在这个问题,我想应该有显式说明的。
回复

使用道具 举报

0

主题

583

回帖

3291

积分

论坛元老

Rank: 8Rank: 8

积分
3291
发表于 2025-8-16 13:45:40 | 显示全部楼层
上电加载运行代码的RAM是code区域,有64Kb。xdata的变量不会影响。
回复

使用道具 举报

17

主题

75

回帖

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2025-8-16 15:05:16 | 显示全部楼层
紫狐 发表于 2025-8-16 13:45
上电加载运行代码的RAM是code区域,有64Kb。xdata的变量不会影响。

感谢您回答,我认为不是这样,之所以代码从flash加载到RAM,是为了提高代码的运行速度。如果上电加载运行代码的RAM是code区域,那就没必要再加载了,加载失去了意义。
回复

使用道具 举报

17

主题

75

回帖

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2025-8-16 15:06:03 | 显示全部楼层
nearsea 发表于 2025-8-16 12:45
这个测试很简单的,我们把XDATA的32K空间用特定的字符去填满,然后验证正确性就可以了。

PS。迪文要是真 ...

好的谢谢!
回复

使用道具 举报

17

主题

75

回帖

619

积分

高级会员

Rank: 4

积分
619
 楼主| 发表于 2025-8-18 12:14:37 | 显示全部楼层
这个问题迪文方面或哪位大神朋友能给个确定的说明? 谢谢!
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2026-9-21 06:27 , Processed in 0.041300 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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