找回密码
 立即注册
查看: 3415|回复: 9

内存管理遇到的一些问题

[复制链接]

该用户从未签到

1

主题

4

回帖

17

积分

新手上路

积分
17
发表于 2022-12-23 19:17:24 | 显示全部楼层 |阅读模式
我目前使用的是STC8A8K64S4D4芯片

想用到自带的内存管理,用的库函数开发,
增加了内存初始化
  1. unsigned char xdata malloc_mempool [4096];
  2. void tst_init_mempool (void) {
  3.   xdata int i;
  4.   xdata void *p;
  5.   p = malloc (100);
  6.   for (i = 0; i < 100; i++)
  7.     ((char *) p)[i] = i;
  8.   free (p);
  9. }
复制代码
测试代码:
  1. void main()
  2. {
  3. init_mempool (&malloc_mempool, sizeof(malloc_mempool));
  4.         while(1){
  5.                 delay_ms(1000);
  6.                 tst_init_mempool();
  7. }
复制代码
但是通过ch340在线调试,完全不好使,要么卡在malloc函数,要么跑起来很怪。有谁用过这方面的吗?或者使用自己写的内存管理实验
回复 送花

使用道具 举报

  • TA的每日心情
    奋斗
    2023-12-13 11:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    3

    主题

    339

    回帖

    1665

    积分

    版主

    积分
    1665
    发表于 2022-12-26 09:39:29 | 显示全部楼层
    本帖最后由 国学芯用 于 2022-12-26 10:12 编辑

    1.png
    一箭双雕之USB转双串口:
    STC全新纯技术深度交流论坛 准备了1万套  免费+包邮 送大家,买也才包邮RMB9
    可以做老刘爱捣鼓示波器,科学计算器,也可以是 STC8/STC32G8K64的串口仿真器 + 双串口
    还可以用户自己开发成自己的产品,或新手的MCU从入门到精通的神器
    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=318&extra=page%3D1
    QQ:2269694595     微信:18106296594

    该用户从未签到

    552

    主题

    9520

    回帖

    1万

    积分

    管理员

    积分
    14094
    发表于 2022-12-26 10:06:01 | 显示全部楼层
    我目前使用的是STC8A8K64S4D4芯片====STC8A8K64D4 ?

    该用户从未签到

    552

    主题

    9520

    回帖

    1万

    积分

    管理员

    积分
    14094
    发表于 2022-12-26 10:07:26 | 显示全部楼层
    1.png

    1.png
    这个位也打开,不要关

    该用户从未签到

    1

    主题

    4

    回帖

    17

    积分

    新手上路

    积分
    17
     楼主| 发表于 2022-12-26 10:13:54 | 显示全部楼层
    神农鼎 发表于 2022-12-26 10:07
    这个位也打开,不要关

    嗯嗯  是 EXTRAM 还是 EAXFR呢

    该用户从未签到

    1

    主题

    4

    回帖

    17

    积分

    新手上路

    积分
    17
     楼主| 发表于 2022-12-26 10:15:18 | 显示全部楼层
    神农鼎 发表于 2022-12-26 10:06
    我目前使用的是STC8A8K64S4D4芯片====STC8A8K64D4 ?

    嗯嗯  芯片丝印是STC8A8K64D4呢  不太清楚是否等价

    该用户从未签到

    1

    主题

    4

    回帖

    17

    积分

    新手上路

    积分
    17
     楼主| 发表于 2022-12-26 10:32:03 | 显示全部楼层
    神农鼎 发表于 2022-12-26 10:07
    这个位也打开,不要关

    看来下手册
    EAXFR这个位是用于访问扩展RAM区域特殊功能寄存器的时候才需要打开
    我现在使用内存管理要用到这些特殊功能寄存器么

    该用户从未签到

    1

    主题

    4

    回帖

    17

    积分

    新手上路

    积分
    17
     楼主| 发表于 2022-12-26 10:52:11 | 显示全部楼层
    神农鼎 发表于 2022-12-26 10:07
    这个位也打开,不要关

    测试了下  还是不行,一调用p = malloc (100);  仿真好像立马重启了,从开头重新执行
  • TA的每日心情
    奋斗
    前天 08:59
  • 签到天数: 143 天

    [LV.7]常住居民III

    27

    主题

    1343

    回帖

    4187

    积分

    论坛元老

    积分
    4187
    发表于 2022-12-26 15:02:54 | 显示全部楼层
    用你的代码写了个测试程序,串口打印动态分配空间里面的内容,看起来没什么问题,不会产生复位:
    1.png

    1. unsigned char xdata malloc_mempool [4096];
    2. void tst_init_mempool (void) {
    3.     xdata int i;
    4.     xdata void *p;
    5.     p = malloc (128);
    6.     for (i = 0; i < 128; i++)
    7.     {
    8.         ((char *) p)[i] = i;
    9.         
    10.         printf("%02bX ", ((char *) p)[i]);
    11.         if((i & 0x0f) == 0x0f)
    12.             printf("\r\n");
    13.     }
    14.     printf("\r\n");
    15.     free (p);
    16. }
    复制代码
    1. void main(void)
    2. {
    3.         P0M1 = 0;   P0M0 = 0;        //设置为准双向口
    4.         P1M1 = 0;   P1M0 = 0;         //设置为准双向口
    5.         P2M1 = 0;   P2M0 = 0;         //设置为准双向口
    6.         P3M1 = 0;   P3M0 = 0;         //设置为准双向口
    7.         P4M1 = 0;   P4M0 = 0;         //设置为准双向口
    8.         P5M1 = 0;   P5M0 = 0;         //设置为准双向口
    9.         P6M1 = 0;   P6M0 = 0;         //设置为准双向口
    10.         P7M1 = 0;   P7M0 = 0;         //设置为准双向口
    11.         UartInit();
    12.    
    13.     printf("mempool test.\r\n");
    14.     init_mempool (&malloc_mempool, sizeof(malloc_mempool));
    15.         while(1)
    16.     {
    17.         delay_ms(200);
    18.         delay_ms(200);
    19.         delay_ms(200);
    20.         tst_init_mempool();
    21.     }
    22. }
    复制代码
    内存管理-串口打印.zip (9.59 KB, 下载次数: 84)

    该用户从未签到

    552

    主题

    9520

    回帖

    1万

    积分

    管理员

    积分
    14094
    发表于 2022-12-26 16:00:43 | 显示全部楼层
    阳康了,论坛又是春意盎然啊:)
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

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

    GMT+8, 2024-5-19 16:25 , Processed in 0.075699 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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