天嵌 ARM开发社区

 找回密码
 注册
查看: 2422|回复: 7

请教关于nor flash烧写的问题!

[复制链接]
gameboy22 发表于 2010-1-16 23:26:06 | 显示全部楼层 |阅读模式
在keil的环境下,做了个简单的led灯的测试程序,在jlink下jtag方式能跑起来,但是用keil生成bin文件,用h-jtag烧到nor flash里面就不能跑了,这是什么原因啊!程序应该没问题哈,还要设置什么东西吗?
程序如下:
#include <S3C2440.h>                   /* S3C2440 definitions               */
/*
#define LED1                (1<<5)                // rGPB[5] =1 ;
#define LED2                (1<<6)                // rGPB[5] =1 ;
#define LED3                (1<<7)                // rGPB[5] =1 ;
#define LED4                (1<<8)                // rGPB[5] =1 ;
*/

void delay(int NUM)
{
        int i,j,k;
        for(i=0;i<NUM;i++)
                for(j=0;j<10;j++)
                        for(k=0;k<10;k++) ;
}


int main (void) {
        GPBCON = 0x15400;
        while(1)
        {
                GPBDAT = 0x1e0;//全灭
                delay(5000);
                GPBDAT = 0x000;//全亮
                delay(5000);
               
                GPBDAT = 0x1c0;//LED1
                delay(5000);
               
                GPBDAT = 0x1a0;//LED2
                delay(5000);
               
                GPBDAT = 0x160;//LED3
                delay(5000);
               
                GPBDAT = 0x0e0;//LED4
                delay(5000);
        }
}
 楼主| gameboy22 发表于 2010-1-16 23:26:46 | 显示全部楼层
还是keil用什么需要设置的地方呢?恳请指教~
亚瑟王 发表于 2010-1-18 12:16:07 | 显示全部楼层
应该就是程序的问题。你没有编写汇编部分的代码?
 楼主| gameboy22 发表于 2010-1-18 20:45:32 | 显示全部楼层
是这样的,启动代码,我直接用的是keil自带的启动代码,sdram的初始化文件也用的是keil自带的,初始化sdram的代码如下:
/******************************************************************************/
/* Ext_RAM.INI: External RAM (SDRAM) Initialization File                      */
/******************************************************************************/
// <<< Use Configuration Wizard in Context Menu >>>                           //
/******************************************************************************/
/* This file is part of the uVision/ARM development tools.                    */
/* Copyright (c) 2005-2008 Keil Software. All rights reserved.                */
/* This software may only be used under the terms of a valid, current,        */
/* end user licence from KEIL for a compatible version of KEIL software       */
/* development tools. Nothing else gives you the right to use this software.  */
/******************************************************************************/


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
}


// 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 led.axf INCREMENTAL         // Download program
SetupForStart();                        // Setup for Running
g, main                                 // Goto Main

因为不熟悉ADS,所以你们提供的那个sdram的初始化代码,我没用,不知道这个行不行?我jtag是好用的!是不是就因为是sdram初始化的问题呢?
 楼主| gameboy22 发表于 2010-1-18 20:49:29 | 显示全部楼层
还有keil的rom设置是这样的,ROM1--0x30000000--0x1000000 Startup,RAM1--0x31000000--0x1000000,IRAM1--0x40000000--0x1000,和这个有关系吗?
 楼主| gameboy22 发表于 2010-1-18 21:42:38 | 显示全部楼层
初始化代码我是加到keil的debug菜单里面有个加入初始化代码的选项,我是加到那里的!再jtag的时候,我向0x30000000地址写数据,在keil的存储器窗口看是没问题的,那是不是就表面,SDRAM已经被初始化了呢!
我后来又参考ADS的SDRAM配置,把keil的改了一下,但是下载bin后,还是不能运行,不知道什么原因哈~
亚瑟王 发表于 2010-1-19 11:25:09 | 显示全部楼层
1、你使用Jtag把程序烧掉到SDRAM中运行,只能说明Jtag烧写时已经初始化了SDRAM,你的程序能够运行属于正常现象。
2、你自己写的程序里面是否正确初始化了SDRAM,没法证明,如果你直接将其烧写到Nand Flash,首先要保重该程序小于4KB(如果大于4KB,必须在前4K实现初始化SDRAM和Nnad,并且完成从Nand搬运该程序到SDRAM,并跳转到SDRAM中运行。),然后开机上电后,系统会自动将Nand前4K读到SRAM中并与运行0x0开始的内容。
 楼主| gameboy22 发表于 2010-1-19 13:11:14 | 显示全部楼层
这里我用的启动方式时nor flash啊,我晚上回去再调试一下,谢谢哈!有问题在请教~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 20:30 , Processed in 1.013711 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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