打印

S3C2440,使用H-JTAG仿真,ROM和RAM都是用片外的SDRAM

[复制链接]
5154|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 左马介 于 2011-4-4 20:24 编辑

S3C2440,使用H-JTAG仿真,ROM和RAM都是用片外的SDRAM,ROM1的地址为0X3000,0000,大小为0X20,0000,RAM1的地址为0X3020,0000,编译器是MDK4.12,使用了MDK自带的启动代码,结果用JTAG仿真的时候,总是调试不对,贴上代码和截图大牛们看一下吧

PS:我到网上搜了一下,说片外的SDRAM要使用脚本文件初始化,这个脚本文件怎么写呢,一定用吗?

#include"s3c2440.h"
#define led0mask 0x08
#define led1mask 0x10
#define led2mask 0x20
#define led3mask 0x40
void delay(unsigned int i)
{
  unsigned int j,k;
  for(j=1;j<i;j++)
      {
         for(k=1;k>=100;k++){;}
      }
}
int main()
{
   
   GPFUP&=0xffffff87;
   GPFCON|=0x5540;
   GPFDAT|=0XFF;
   while(1)
   {   
   GPFDAT=led1mask|led2mask|led3mask; //light led0
   delay(1000);
   GPFDAT=led0mask|led2mask|led3mask;
   delay(1000);
   GPFDAT=led0mask|led1mask|led3mask;
   delay(1000);
   GPFDAT=led0mask|led1mask|led2mask;
   delay(1000);
}
return 0;
}

2011-04-04_200544.png (17.67 KB )

2011-04-04_200544.png

2011-04-04_200625.png (13.63 KB )

2011-04-04_200625.png

2011-04-04_200640.png (27.21 KB )

2011-04-04_200640.png

2011-04-04_200654.png (10.05 KB )

2011-04-04_200654.png

相关帖子

沙发
左马介|  楼主 | 2011-4-5 21:46 | 只看该作者
就没人看一下吗

使用特权

评论回复
板凳
hechaochao| | 2011-4-5 22:05 | 只看该作者
不会   帮顶

使用特权

评论回复
地板
左马介|  楼主 | 2011-4-5 22:27 | 只看该作者
我想这个PC的地址,在调试的时候,是不是要设置为0X3000,0000呢,这样是不是说在调试的时候,程序不是从0X0出开始执行的?

使用特权

评论回复
5
左马介|  楼主 | 2011-4-7 21:15 | 只看该作者
再顶一次

使用特权

评论回复
6
SevenEleven| | 2011-4-7 21:57 | 只看该作者
你这个可以下载到内部RAM,就可以不用初始化脚本了

如果用外部RAM,需要初始化脚本,晚上有很多的,主要是初始化外部SDRAM

我贴我的脚本,你保存为txt文件
Setmem  0x53000000 0x00000000  32
Setmem  0x4A000008 0xFFFFFFFF  32
Setmem  0x4A00001C 0x000007FF  32
Setmem  0x53000000 0x00000000  32
Setmem  0x56000050 0x000055AA  32
Setmem  0x4C000014 0x00000007  32
Setmem  0x4C000000 0x00FFFFFF  32
Setmem  0x4C000004 0x00076022  32
Setmem  0x4C000008 0x00040042  32
Setmem  0x48000000 0x22111120  32
Setmem  0x48000004 0x00002F50  32
Setmem  0x48000008 0x00000700  32
Setmem  0x4800000C 0x00000700  32
Setmem  0x48000010 0x00000700  32
Setmem  0x48000014 0x00000700  32
Setmem  0x48000018 0x0007FFFC  32
Setmem  0x4800001C 0x00018005  32
Setmem  0x48000020 0x00018005  32
Setmem  0x48000024 0x008E0459  32
Setmem  0x48000028 0x00000032  32
Setmem  0x4800002C 0x00000030  32
Setmem  0x48000030 0x00000030  32

使用特权

评论回复
7
左马介|  楼主 | 2011-4-7 22:10 | 只看该作者
本帖最后由 左马介 于 2011-4-7 22:14 编辑

SevenEleven 谢谢你,这个是H-JTAG的里面的脚本设置吧,但是用H-JTAG调试的时候,PC=0X0000,0000   这个怎么设置指向我的片外SDRAM呢 PC=0X0000,0000


这个是我的片外RAM初始化的文件
FUNC void SetupForStart (void) {
// <o> Program Entry Point
  PC = 0x30000000;
}
FUNC void Init (void) {
  _WDWORD(0x4A000008, 0xFFFFFFFF); // Disable All Interrupts
  _WDWORD(0x53000000, 0x00000000); // Disable Watchdog Timer
                                          // Clock Setup
                                        // FCLK = 300 MHz, HCLK = 100 MHz, PCLK = 50 MHz
  _WDWORD(0x4C000000, 0x0FFF0FFF); // LOCKTIME
  _WDWORD(0x4C000014, 0x0000000F); // CLKDIVN
  _WDWORD(0x4C000004, 0x00043011); // MPLLCON
  _WDWORD(0x4C000008, 0x00038021); // UPLLCON
  _WDWORD(0x4C00000C, 0x001FFFF0); // CLKCON
                                        // Memory Controller Setup for SDRAM
  _WDWORD(0x48000000, 0x22000000); // BWSCON
  _WDWORD(0x4800001C, 0x00018005); // BANKCON6
  _WDWORD(0x48000020, 0x00018005); // BANKCON7
  _WDWORD(0x48000024, 0x008404F3); // REFRESH
  _WDWORD(0x48000028, 0x00000032); // BANKSIZE
  _WDWORD(0x4800002C, 0x00000020); // MRSRB6
  _WDWORD(0x48000030, 0x00000020); // MRSRB7
  _WDWORD(0x56000000, 0x000003FF); // GPACON: Enable Address lines for SDRAM  S3C2440里面的地址线不是默认就是A0-A26吗 为何还要初始化呢
}

// Reset chip with watchdog, because nRST line is routed on hardware in a way
// that it can not be pulled low with ULINK
_WDWORD(0x40000000, 0xEAFFFFFE); // Load RAM addr 0 with branch to itself
CPSR = 0x000000D3; // Disable interrupts
PC = 0x30200000; // Position PC to start of RAM  这个地方是不是要指向0X3000,0000
_WDWORD(0x53000000, 0x00000021); // Enable Watchdog
g, 0 // Wait for Watchdog to reset chip
Init(); // Initialize memory
LOAD .\keil_led.axf INCREMENTAL // Download program
SetupForStart(); // Setup for Running
g, main

使用特权

评论回复
8
SevenEleven| | 2011-4-8 09:43 | 只看该作者
设置开始的运行地址PC,就是你的程序下载地址,你把程序下载到0x30000000处就可以了,就是R/O Base地址

使用特权

评论回复
9
左马介|  楼主 | 2011-4-8 23:02 | 只看该作者
本帖最后由 左马介 于 2011-4-8 23:05 编辑

8# SevenEleven
PC的运行地址 你是指在哪设置呢 我是在片外的RAM初始化文件设置PC=0X3000,0000的,这样不可以吗,我在调试的时候,程序跑不到0X3000,0000处,在观察窗口查看相关变量,也是没有变化的

使用特权

评论回复
10
理查德潘| | 2011-6-5 03:25 | 只看该作者
绑定

使用特权

评论回复
11
tracyjk| | 2011-6-12 20:01 | 只看该作者
mkd自带的关于2440的启动代码有问题

使用特权

评论回复
12
su730085915| | 2011-11-4 16:53 | 只看该作者
楼上乱说

使用特权

评论回复
13
randyhsd| | 2011-11-8 23:21 | 只看该作者


加入Ext_RAM.ini文件
C:\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky目录下
并且把"LOAD Obj\Blinky.axf INCREMENTAL"Blinky.axf改为 工程名.axf

使用特权

评论回复
14
randyhsd| | 2011-11-8 23:21 | 只看该作者


加入Ext_RAM.ini文件
C:\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky目录下
并且把"LOAD Obj\Blinky.axf INCREMENTAL"Blinky.axf改为 工程名.axf

使用特权

评论回复
15
randyhsd| | 2011-11-8 23:21 | 只看该作者


加入Ext_RAM.ini文件
C:\Keil\ARM\Boards\Samsung\S3C2440\RTX_Blinky目录下
并且把"LOAD Obj\Blinky.axf INCREMENTAL"Blinky.axf改为 工程名.axf

使用特权

评论回复
16
rangery| | 2011-11-11 16:01 | 只看该作者
只有调试模式才需要这个初始化吧

使用特权

评论回复
17
rangery| | 2011-11-11 16:01 | 只看该作者
ram调试模式的时候

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

25

帖子

0

粉丝