打印

MDK4写的程序用DNW怎么写如FL2440的APP区不能运行

[复制链接]
5358|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tcc8073|  楼主 | 2010-7-2 13:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zchong| | 2010-7-4 19:58 | 只看该作者
APP区?bootloader是将app拷贝到sdram中运行吗?那么运行域和加载域设置的对不对呢,另外如果用到中断的话,中断向量设置的是否正确。

使用特权

评论回复
板凳
tcc8073|  楼主 | 2010-7-5 08:52 | 只看该作者
FL2440自带的演示程序是可以从APP区启动的,那在BOOTLOADER的启动代码中就已经设置好了,但是如果把APP区换成我自己写的代码就不能运行了,程序不复杂,就是测试一个IO口,闪动一个LED而已

使用特权

评论回复
地板
zchong| | 2010-7-5 20:52 | 只看该作者
那就很有可能运行域和加载域设置的不对

使用特权

评论回复
5
tcc8073|  楼主 | 2010-7-8 11:25 | 只看该作者
我是使用的MDK4+JLINK V8调试FL2440,很简单的程序,我想法是把程序写到FL2440的MYAPP区,开始地址是OX00180000,SIZE是0X00380000;我也在MDK中使用了指令生成了BIN文件,但是通过DNW把BIN文件烧写到MYAPP区后通过设定MYAPP启动就不能启动,只看到LCD屏幕闪,响应的LED并没有显示,这种情况是APP区已经删除了,但是没有把程序写进去,或是下进去了跑飞了;当使用JLINK V8时候我设置:
ROM1 START: 0X30000000    SIZE:0X100000    RAM1  START:0X30100000   SIZE:0X100000
使用MDK FLASH选项的DOWNLOAD写程序时候出现下面的提示,是写FLASH算法出现问题,请问各位高手是怎么解决的:
Build target 'Target 1'
assembling S3C2440.s...
creating preprocessor file for led.c...
compiling led.c...
linking...
Program Size: Code=908 RO-data=16 RW-data=0 ZI-data=1256  
FromELF: creating hex file...
User command #1: c:\keil\ARM\BIN40\fromelf.exe --bin -o ./led.bin ./led.axf
"led.axf" - 0 Error(s), 0 Warning(s).
Load "D:\\program\\arm\\LED\\led.AXF"
VTarget = 0.000V
***JLink Warning: No matching core found. Selecting default core (ARM7).
***JLink Error: Supply voltage too low (1 Volt is required, Measured: 0.0 Volt).
Please check target power.
***JLink Warning: No matching core found. Selecting default core (ARM7).
***JLink Error: Supply voltage too low (1 Volt is required, Measured: 0.0 Volt).
Please check target power.
DLL version V4.11i, compiled Jan 28 2010 19:55:25
Firmware: J-Link ARM V8 compiled Dec  1 2009 11:42:48
Hardware: V8.00
***JLink Warning: No matching core found. Selecting default core (ARM7).
***JLink Error: Supply voltage too low (1 Volt is required, Measured: 0.0 Volt).
Please check target power.
JTAG speed: 1000 kHz
Include "D:\\program\\arm\\LED\\Ext_RAM.ini"
/******************************************************************************/
/* 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 Obj\led.axf INCREMENTAL           // Download program
_____^
*** error 56, line 58: cant open file
SetupForStart();                        // Setup for Running
g, main                                 // Goto Main
No Algorithm found for: 30000000H - 3000039BH
Erase skipped!

使用特权

评论回复
6
zchong| | 2010-7-8 12:58 | 只看该作者
首先要搞清楚app的代码到底是如何执行的,是直接在flash中执行的,还是拷贝到sdram中执行的。开了mmu还是没开mmu。
ROM1 START: 0X30000000    SIZE:0X100000    RAM1  START:0X30100000   SIZE:0X100000
明显是要拷贝到sdram中运行,你可以将bin下载到0x30000000位置看看嫩不能运行

使用特权

评论回复
7
tcc8073|  楼主 | 2010-7-8 14:26 | 只看该作者
本帖最后由 tcc8073 于 2010-7-8 14:44 编辑

APP是放在NAND FLASH的,我用JLINK V8是想把程序直接烧写到SDRAM中运行,但是用JLINK烧写不进去,显示是FLASH算法有问题,但是我对算法的问题还不是很清楚,可能把算法问题解决了应该就可以,我还没有找到MDK4+JLINK V8完整好用的教程,特别是在对BOOTLOADER的修改和编写,还有对FLASH脚本文件的修改等方面没有搞明白

使用特权

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

本版积分规则

个人签名:诚信,务实,专业,创新

179

主题

1359

帖子

7

粉丝