野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6468|回复: 5

[求助] 有关全局变量初始值不为0,分配内存越界问题

[复制链接]

发表于 2021-10-9 14:14:00 | 显示全部楼层 |阅读模式
本帖最后由 ucmic 于 2021-10-11 07:55 编辑

1.学习过程中,无意把全局变量设为非0的值,导致死机,找了很久,发现变量初值不为0导致。
2.用裸机例程中的part6,什么东西都不动,只在main.c中,定议几个初始值不为0的变量,也会发现有这个问题。
如下图:请帮忙看看是什么问题。
求助!
  1. # include  "common.h"
  2. #include  "led.h"
  3. #include  "button.h"
  4. #include  "interrupt.h"

  5. uint8_t button_status=0;
  6. char g_charA = 'A'; //存储在 .data段
  7. char g_charB = 'A'; //存储在 .data段

  8. uint8_t test_1=1;
  9. uint8_t test_2=1;
  10. uint8_t test_3=1;
  11. uint8_t test_4=1;
  12. uint8_t test_5=1;
  13. uint8_t test_6=1;
  14. uint8_t test_7=1;
  15. uint8_t test_8=1;
  16. uint8_t test_9=1;
  17. uint8_t test_10=1;

  18. int main()
  19. {
  20.    /*GIC中断和中断向量表初始化*/
  21.     irq_init();
  22.      /*初始化led灯和按键*/
  23.     rgb_led_init();
  24.     /*按键中断初始化*/
  25.     button_init();

  26.     while (1){
  27.         if(button_status > 0){
  28.             /*红灯灭*/
  29.             red_led_off;
  30.         }
  31.         else {
  32.             /*红灯亮*/
  33.             red_led_on;
  34.         }
  35.     }
  36.     return 0;   
  37. }
复制代码


2.png
1.png
回复

使用道具 举报

 楼主| 发表于 2021-10-9 14:15:00 | 显示全部楼层
添加part 6 只在main.c中加了几个变量。

part_6.rar

270.7 KB, 下载次数: 7

回复 支持 反对

使用道具 举报

发表于 2021-10-10 10:16:42 | 显示全部楼层
第十行不要这样写一起
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-11 07:57:05 | 显示全部楼层
Memory# 发表于 2021-10-10 10:16
第十行不要这样写一起

每十行好像没有什么问题,是网页版的字体颜色设置。见下方的截图。
回复 支持 反对

使用道具 举报

发表于 2022-1-3 00:49:12 | 显示全部楼层
我觉得反编译里面已经写了啊,data段越界了。
感觉start.s的下面代码有点问题
copy_data:
        ldr r1, =data_load_addr  @ data段的加载地址
        ldr r2, =data_start  @data段重定位地址
        ldr r3, =data_end  @data段结束地址

        loop:
        ldrb r4, [r1] @从r1读到r4
        strb r4, [r2] @r4存放到r2
        add r1, r1, #1@复制下1个字节
        add r2, r2, #1
        cmp r2, r3 @ r2 、r3比较
        bne loop  @ 如果没拷贝完则重复拷贝

        mov pc, lr

data_load_addr  @ data段的加载地址
data_start  @data段重定位地址
data_end  @data段结束地址
这三个标识并没有设置
回复 支持 反对

使用道具 举报

发表于 2022-10-10 01:41:40 | 显示全部楼层
我也遇到类似的问题,请问原理是什么,怎么解?
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-3-29 20:24 , Processed in 0.029412 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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