arm:jlink调试和直接烧写运行的不同 [mdk s3c2440]
2014-12-29 17:53
423 查看
1、对全局变量的初始化。
2、还没发现的事例。
/*************************************************/
先上连接文件sct
1、对全局变量的初始化 。
本身MDK对已初始化的全局变量的初始化就不对。
没法用。
代码:
jlink运行时现象:没有将代码中已初始化的变量正确地赋值。
烧写运行时现象:代码中未初始化、已初始化的全局和静态变量都被设为 ~0 .
2、还没发现的事例。
/*************************************************/
先上连接文件sct
LR_ROM1 0x30000000 0x00010000 { ; load region size_region ER_ROM1 0x30000000 0x00010000 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) } RW_RAM1 0x30010000 0x02000000 { ; RW data .ANY (+RW +ZI) } RW_IRAM1 0x40000000 0x00001000 { .ANY (+RW +ZI) } }
1、对全局变量的初始化 。
本身MDK对已初始化的全局变量的初始化就不对。
没法用。
代码:
int gr_a = 1 ; int gr_b ; int const gr_c = 11; static int gr_s = 22; void variable_test() { Uart_Printf( "int gr_a = 1 ; gr_a = %d\n", gr_a); Uart_Printf( "int gr_b ; gr_b = %d\n", gr_a); Uart_Printf( "int const gr_c; gr_c = %d\n", gr_c); Uart_Printf( "static int gr_s; gr_s = %d\n", gr_s); Uart_Printf( "&gr_a = %08x\n", &gr_a); Uart_Printf( "&gr_b = %08x\n", &gr_b); Uart_Printf( "&gr_c = %08x\n", &gr_c); Uart_Printf( "&gr_s = %08x\n", &gr_s); }
jlink运行时现象:没有将代码中已初始化的变量正确地赋值。
int gr_a = 1 ; gr_a = 0 int gr_b ; gr_b = 0 int const gr_c; gr_c = 11 static int gr_s; gr_s = 0 &gr_a = 30010038 &gr_b = 30010064 &gr_c = 30009244 //.ro &gr_s = 3001003c
烧写运行时现象:代码中未初始化、已初始化的全局和静态变量都被设为 ~0 .
int gr_a = 1 ; gr_a = -1 int gr_b ; gr_b = -1 ;init.s的代码中有对bss段清零的操作,在汇编代码中用led调试发现,我的clear bss的代码是已经运行了的。 猜测全局变量完全被编译器玩坏了。
int const gr_c; gr_c = 11 static int gr_s; gr_s = -1 &gr_a = 30010038 &gr_b = 30010064 &gr_c = 30009244 &gr_s = 3001003c
相关文章推荐
- s3c2440裸机开发调试环境(MDK4.72,Jlink v8,mini2440)
- Keil 5使用JLink直接调试正在运行的CPU
- 使用arm-elf-gdb调试SkyEye上运行的程序
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
- Jlink + ADS调试 S3C2440
- mini2440烧写裸机程序(MDK+Jlink)
- 在Android手机或者平板上直接调试运行APK程序
- ARM开发软件mdk,iar,Jlink有用的下载连接
- 单步调试运行程序没问题,可ctr+F5直接运行就出错
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
- linux下不通过JLink直接烧写 | linux下的dnw (转)
- javascript/CSS代码直接运行调试页面
- (整理)在MDK下使用JLINK下载和调试LPC2478的问题(MDK)(JLINK)(LPC24)
- 移植u-boot-2011.03到S3C2440(utu2440)的方法与步骤###5.使用JLINK间接烧写u-boot至FLASH的方法与步骤
- 改波特率解决 jlink调试: cannot stop arm device问题
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法(暂未验证)
- 纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)
- 【VS2005】调试与直接运行的区别(待调查)
- 使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
- s3c2440裸机开发调试环境(MDK4.6,Jlink v8,mini2440)