We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi!
I want to make a program which receives code from the PC and stores the code in the flash-memory. So, i have to copy the UpdaterCode from the flash in the RAM and then start updating the flash. But the linker crashes. There is no error message only a warning: UNRESOLVED EXTERNAL(s). There is a message box from Windows: An Error occured, do you want to send a problem report?
Here is a piece of TinyUpdater.h:
#pragma HLARGE #pragma RENAMECLASS (FCODE=FLASH_CODE) #define SROM_PS(n) \ extern unsigned char huge _PR_##n##_s_; /* section source start */ \ extern unsigned char huge _PR_##n##_l_; /* section len */ \ extern unsigned char huge _PR_##n##_t_; /* target address */ #define SROM_PS_TRG(n) ((void *) &_PR_##n##_t_) #define SROM_PS_SRC(n) ((void *) &_PR_##n##_s_) #define SROM_PS_LEN(n) ((unsigned int) &_PR_##n##_l_)
My main module:
SROM_PS(PFLASH) ... PSW_IEN = 0; // Global Interrupt disable _nop_(); _nop_(); hmemcpy (SROM_PS_TRG(PFLASH), SROM_PS_SRC(PFLASH), SROM_PS_LEN(PFLASH)); // Kopiert TinyUpdater in PSRAM TinyUpdater(); // Tiny Updater, Rücksprung in diese
Commands for linker, in the L166 Locate menu, User Sections:
?PR?PFLASH%FCODE (0xE00000)[]
Versions:
IDE-Version: µVision3 V3.05e Copyright (c) Keil Elektronik GmbH / Keil Software, Inc. 1995 - 2004 Tool Version Numbers: Toolchain Path: C:\Keil\C166\BIN\ EC++ Compiler: EC166.Exe V1.06 C Compiler: C166.Exe V5.05 Assembler: A166.Exe V5.04 Linker/Locator: L166.Exe V5.07 Librarian: LIB166.Exe V4.25 Hex Converter: OH166.Exe V4.7 CPU DLL: S166.DLL V2.44a Dialog DLL: D167.DLL V2.43a Target DLL: BIN\UL2OCDS.DLL V1.00 Dialog DLL: T167.DLL V2.43
Thanks Stefan Zimmermann
You are using an old version, are you out of support?
This may help: http://www.keil.com/download/docs/275.asp
Yes, im out out of support. Has this version of the linker a problem with the program?
I tried your link, an it works fine as example code. If i try to adapt it to my program, i get this problem.