slavox 0 15 декабря, 2014 Опубликовано 15 декабря, 2014 · Жалоба Здравствуйте, прошу помощи! Процессор sam7x512. Есть бутлоадер, стартует с адреса 0x100000, затем передает управление на адрес основной программы 0х140000. Запуск основной программы осуществляется в привелегированном режиме void __swi(8) StartApplication (void); void __SWI_8 (void) { AppEntry(); } В бутлоадере используется файл ;/*****************************************************************************/ ;/* SWI.S: SWI Handler */ ;/*****************************************************************************/ ;/* This file is part of the uVision/ARM development tools. */ ;/* Copyright © 2005-2006 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. */ ;/*****************************************************************************/ T_Bit EQU 0x20 PRESERVE8 ; 8-Byte aligned Stack AREA SWI_Area, CODE, READONLY ARM EXPORT SWI_Handler SWI_Handler STMFD SP!, {R12, LR} ; Store R12, LR MRS R12, SPSR ; Get SPSR STMFD SP!, {R8, R12} ; Store R8, SPSR TST R12, #T_Bit ; Check Thumb Bit LDRNEH R12, [LR,#-2] ; Thumb: Load Halfword BICNE R12, R12, #0xFF00 ; Extract SWI Number LDREQ R12, [LR,#-4] ; ARM: Load Word BICEQ R12, R12, #0xFF000000 ; Extract SWI Number LDR R8, SWI_Count CMP R12, R8 BHS SWI_Dead ; Overflow ADR R8, SWI_Table LDR R12, [R8,R12,LSL #2] ; Load SWI Function Address MOV LR, PC ; Return Address BX R12 ; Call SWI Function LDMFD SP!, {R8, R12} ; Load R8, SPSR MSR SPSR_cxsf, R12 ; Set SPSR LDMFD SP!, {R12, PC}^ ; Restore R12 and Return SWI_Dead B SWI_Dead ; None Existing SWI SWI_Cnt EQU (SWI_End-SWI_Table)/4 SWI_Count DCD SWI_Cnt ; Import user SWI functions here. ; IMPORT __SWI_0 ; IMPORT __SWI_1 ; IMPORT __SWI_2 ; ... IMPORT __SWI_8 SWI_Table ; Insert user SWI functions here DCD 0 DCD 0 DCD 0 DCD 0 DCD 0 DCD 0 DCD 0 DCD 0 DCD __SWI_8 ; SWI 8 Function Entry SWI_End END Система с бутлоадером работает прекрасно, если основная программа не использует Keil КTX, иначе вылетает после запуска RTOS на команде os_sys_init (...), отладчика нет. Если вместо бутлоадера прошить основную программу с RTX, сменив стартовый адрес флеш, то все работает отлично, RTX запускается. В чем проблема мб проблема ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavox 0 5 января, 2015 Опубликовано 5 января, 2015 · Жалоба Вопрос решен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться