硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2107|回复: 4
收起左侧

[emWin] 考虑将二代示波器的所有全局变量分类进行结构体封装,全部采用F429的CCM RAM空间

[复制链接]

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
发表于 2018-1-4 01:05:18 | 显示全部楼层 |阅读模式
这些全局变量,任务栈,FFT,FIR等都是需要不断调用和速度的,所以打算全部进行封装,上电后通过动态内存管理分配空间:

例如下面这种,是一个通道的分配:
  1. /*
  2.         示波器相关的数据结构
  3. */
  4. typedef struct
  5. {
  6.         /* 存储平均值,峰峰值,频率,最小值和最大值的变量 */
  7.         float32_t   WaveMean;
  8.         float32_t   WavePkPk;
  9.         float32_t   WaveFreq;
  10.         float32_t   WaveMax;
  11.         float32_t   WaveMin;
  12.         float32_t   WaveRMS;
  13.        
  14.         uint16_t    usCurPos;
  15.         uint32_t    uiFreq;
  16.         uint32_t    ulSlowRefresh0;
  17.         uint32_t    ulSlowRefresh1;
  18.         uint16_t    usWaveBuf[600];
  19.         uint16_t    usWaveBufTemp[1024*2];
  20.        
  21.         uint16_t    usCurTriPos;
  22.         int16_t     sCurTriStep;
  23.        
  24.         uint16_t    usRefPos; /* 左侧的参考位置,默认开机后是中间位置 */
  25. }DSO_T;
复制代码


回复

使用道具 举报

57

主题

908

回帖

1079

积分

至尊会员

积分
1079
发表于 2018-4-20 21:15:46 | 显示全部楼层
为毛要动态分配? 危险不。按道理嵌入式最好全部静态分配,如果RAM足够的话
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
发表于 2018-6-25 08:46:30 | 显示全部楼层
硬汉哥:我有一个算法对时间要求比较高,
1.我将算法函数加__runfunc 放进RAM中运行,这种方式必须要函数的子函数也要用关键字声明到RAM,但是最深的一级是数学库函数,我没办法加__runfunc 声明,然后运行时间反而会更长
2.另外一种我看有人说把程序放进CCM中, 这个要如何操作,
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115765
QQ
 楼主| 发表于 2018-6-25 09:23:00 | 显示全部楼层
tianyukobe 发表于 2018-6-25 08:46
硬汉哥:我有一个算法对时间要求比较高,
1.我将算法函数加__runfunc 放进RAM中运行,这种方式必须要函数 ...

1、那个库函数。

2、MDK的有,就看这个帖子里面的方式就行,简单省事
http://www.armbbs.cn/forum.php?m ... &extra=page%3D1
回复

使用道具 举报

3

主题

13

回帖

22

积分

新手上路

积分
22
发表于 2018-6-25 09:41:20 | 显示全部楼层
eric2013 发表于 2018-6-25 09:23
1、那个库函数。

2、MDK的有,就看这个帖子里面的方式就行,简单省事

1.因为子函数需要用__ramfunc 声明,在最后一级函数比如
__ramfunc  void arm_fill_f32(
  float32_t value,
  float32_t * pDst,
  uint32_t blockSize); 没有报错,
用到sqrtf我就这样写的  __EFF_NS    __ATTRIBUTES __ramfunc float sqrtf(float);
在函数前我都加了  __ramfunc   我发现时间从1800多us 增加到2300多us,好像没起作用
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-5-17 07:38 , Processed in 0.316843 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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