LAOXU 发表于 2024-9-29 10:15:22

【讨论】即将推出的 Ai8052U, 片内 SRAM 程序的运行方案!!!

关于 程序在 SRAM中运行, 常用的有以下几种型式:
1. 开机将程序装载到 SRAM中, 然后跳转到 SRAM中运行, 有点像 PC的引导程序 BIOS一样.
用途a: 利用 RAM中运行的程序, 擦除整片 ROM(FLASH), 然后更新主程序.
用途b: 利用 RAM中运行的程序, 调整中断矢量入口, 达到快速动态管理 ISR的目的.
用途c: 片上快速仿真, 比 ROM(FLASH)仿真, 下载程序更快, 实时仿真响应速度提速, 使用更方便.
用途d: ......

2. 开机将外部专用程序装载到 SRAM中, 然后调用 SRAM中的程序运行, 有点像 游戏类程序一样.
用途a: 游戏类, 利用装载到 SRAM中的专用游戏程序, 运行游戏.
用途b: 加密/解密, 利用装载到 SRAM中的专用程序, 达到动态管理, 监控 硬件的运行.
用途c: ......

3. 高级应用, ROM(FLASH)中的程序, 可调用 SRAM中的程序运行, 同时可任意传递参数, 返回参数.
反之亦可, SRAM中的程序, 可调用 ROM(FLASH)中的程序运行, 并且可任意传递参数, 返回参数.
用途: ......

LAOXU 发表于 2024-9-29 10:16:20

我设想中的 主/从程序.

为方便两者之间的调用和返回, 凡相互之间调用的程序(函数), 有参数的, 规定所有参数都以指针方式参与,

主程序中, 需开辟一块数组(长度不小于其函数最大参数占用字节即可), 放置调用的具体参数和返回参数.

......


大家看看还有什么地方需补充?

神农鼎 发表于 2024-9-29 10:34:19






LAOXU 发表于 2024-10-6 09:46:32

考虑了几天, 初步设想:

一. 总方案:
1. 在 XRAM区域中, 开辟一小块数据存储区域(一般从0地址开始), 供"从程序"(装载的专用程序)使用.
装载的"从程序", 可从 SRAM 或仿 EEPROM(FLASH)中启动运行.

二. 参数传递
方案1:
利用 XRAM区域 的固定位置, 依次传递参数(全局变量).
类拟 PLC内 模块间 传递参数
方案2:
通过结构体指针,来传递参数.
类拟 一般库函数 的传递参数.
方案3:
通过变量和指针,来传递参数.
最通用常规的 C函数传递参数.

点评: 方案1 实施最简单, 方案2 实施中等, 方案3 实施最复杂.

三. 函数返回(变量或指针)
方案1:
利用 XRAM区域 的固定位置, 来返回.
类拟 PLC内 模块间 传递参数
方案2:
任何函数, 只充许返回变量或指针其中之一(2选1).
类拟 一般函数 的返回.
方案3:
充许返回变量和指针.
最通用常规的 C函数传递参数.

点评: 方案1 实施最简单, 方案2 实施中等, 方案3 实施最复杂.

LAOXU 发表于 2024-10-6 09:47:37

四. 函数调用(从调主)
1. 从程序调用主程序中多个子函数.
比如 "数据串行输入子函数","数据HMI显示输出子函数", "数值转换子函数", "参数计算子函数" ......

点评: 实施中等.

五. 函数调用(主调从)
1. 主程序仅调用"从程序" 中唯一函数.
2. 主程序调用"从程序" 中多个子函数.
3. 可依次装载多个"从程序", 并且每个"从程序" 中有多个子函数, 主程序都可随时调用.

点评: 方案1 实施最简单, 方案2 实施中等, 方案3 实施最复杂.


LAOXU 发表于 2024-10-6 09:58:15

六. 深度思考, "从程序" 中, 函数调用 位于"从程序" 中的子函数(子程序).
1. 仅装载一个"从程序", 每个"从程序"中多个子函数, 每个子函数再调用各自的子函数(子程序).
2. 依次装载多个"从程序", 并且每个"从程序" 中有多个子函数, 再每个子函数调用各自的子函数(子程序).

点评: 由于 251没有 偏移量调用指令, 只支持直接调用和间接调用指令,
因此, 方案1 实施尽管复杂些, 还容易实现,
      方案2 实施起来挺复杂的, 并且功能上有所限制.

cyxy 发表于 2024-10-6 17:20:02

Ai8052U 有 16KB edata ,考虑移植 FreeRTOS 吧。

LAOXU 发表于 2024-10-7 02:29:46

cyxy 发表于 2024-10-6 17:20
Ai8052U 有 16KB edata ,考虑移植 FreeRTOS 吧。

不用移植, 现有版本就能用.

wlhet 发表于 2024-11-4 08:50:12

谢谢分享

xhbwork 发表于 2024-11-4 16:08:29

看了芯片拓扑图,终于有了4K可以运行程序的SRAM用了,另外好像有64K*2的XRAM和16K的EDATA,资源适合大一些的项目应用了。
页: [1] 2
查看完整版本: 【讨论】即将推出的 Ai8052U, 片内 SRAM 程序的运行方案!!!