6854|15

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于2440在norflash上跑裸机的问题 [复制链接]

我在mdk环境下用jlink调试2440裸机程序,在SDRAM中运行顺利。现准备把程序烧写到norflash中,Scatter File如下:
;Run in Flash
LR_ROM1 0x00000000         {    ; load region
  ER_ROM1 0x00000000 0x0200000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_RAM1 0x30000000 0x4000000  {  ; RW data
   .ANY (+RW +ZI)
  }
   RW_IRAM1 0x40000000 0x00001000  {
   .ANY (+RW +ZI)
  }
}

Initialization File如下:
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   bank6,7=32bit
  _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
}


// 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   = 0x40000000;                      // Position PC to start of RAM
_WDWORD(0x53000000, 0x00000021);        // Enable Watchdog
g, 0                                    // Wait for Watchdog to reset chip

Init();                                 // Initialize memory
LOAD my_led.axf INCREMENTAL         // Download program
PC = 0x00000000;                       // Setup for Running

g, main                                 // Goto Main

启动代码用的是mdk自带的S3C2440A.S
运行后不成功,个人感觉是自写的Initialization File有问题(只初始化了SDRAM),除去Initialization File也不成功。请问各位大侠,正确的Initialization File该如何编写?或者启动代码需要哪里改动?那位手头上恰好有2440mdk跑flash的例子,能否发我一份,先谢过:)
邮箱:ysy27@sina.com

最新回复

南韩那个sjf烧nand要15分钟(120K)。烧nor要45分钟。 现在用HJTAG烧nand不要1分钟!   详情 回复 发表于 2009-7-23 20:52
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
没有高手会吗?期待中……
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
NOR无需初始化就可以跑的,问题应该出在S3C2440A.S上,你的地址配置正确吗?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

4
 
引用 2 楼 jlctt 的回复:
NOR无需初始化就可以跑的,问题应该出在S3C2440A.S上,你的地址配置正确吗?

我用mdk自添加的S3C2440A.S,不知哪里需要修改?
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 
nor和nand我都用过,当时用nand是要写2个程序(一个是4K中的程序),写nor时就一个定位在0的程序,不要那个4K的boot。不需要写什么Scatter File的。只是运行时发现速度慢多了,后来打开了codecache就和SRAM中的差不多了。
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 schlafenhamster 的回复:
nor和nand我都用过,当时用nand是要写2个程序(一个是4K中的程序),写nor时就一个定位在0的程序,不要那个4K的boot。不需要写什么Scatter File的。只是运行时发现速度慢多了,后来打开了codecache就和SRAM中的差不多了。

你说的程序是写在应用程序一起编译吗?还是写初始化程序呢?能否提供一下?谢谢
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(中级)

7
 
应用程序是裸机程序没OS。整个程序就一个约120K。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 6 楼 schlafenhamster 的回复:
应用程序是裸机程序没OS。整个程序就一个约120K。

有定位在0的程序示例吗?
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
code定位在0,data定位在0x300000000就可以了。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

10
 
Scatter File中我已经定义了,怎么不行呢?
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

11
 
只有不连续的段才用Scatter File。我搞的程序没用过。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 8 楼 schlafenhamster 的回复:
code定位在0,data定位在0x300000000就可以了。

你这样分配不也是不连续的段吗?
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

13
 
即R0=0;Rw=0x300000000.这个是正常的不叫不连续,不连续是R0或Rw中又分段的。
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

14
 
你用的是jlink吗?jlink能否直接烧写程序?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

15
 
现在用HJTAG比南韩那个sjf快多了。
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

16
 
南韩那个sjf烧nand要15分钟(120K)。烧nor要45分钟。
现在用HJTAG烧nand不要1分钟!
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表