реклама на сайте
подробности

 
 
> ARM не работает после ресета, после ресета не вызывается функция main
123kill12
сообщение Sep 21 2010, 13:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 12-05-10
Пользователь №: 57 217



программа написана и работает на IAR. все красиво и здорово. когда код запускаю из иара он нормально работает, но когда отключаю питание в включаю то нечего нет.
начал смотреть через отладчик. жму ресет и его переносит на 0xBE00(и там цыклится) и выдает сообщение

the stack pointer for stack 'CSTACK'(carrently 0x1000BDE0) is outside the stack range (0x010002558 to 0x10002D58)

что нужно сделать чтоб он работал после сброса и отключение питания?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
123kill12
сообщение Sep 21 2010, 16:08
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 96
Регистрация: 12-05-10
Пользователь №: 57 217



npx1768 контроллер

можно по побробнее про где это в IAR сделать. я облазил все опции проекта не как не могу найти. помогите плз.


мой стартап
Код
        
MODULE  ?cstartup

       ;; Forward declaration of sections.
        SECTION CSTACK:DATA:NOROOT(3)

        SECTION .intvec:CODE:NOROOT(2)

        EXTERN  __iar_program_start
        PUBLIC  __vector_table
        PUBLIC  __vector_table_0x1c

        DATA
__vector_table
        DCD     sfe(CSTACK)                ; Top of Stack
        DCD     __iar_program_start        ; Reset Handler
        DCD     NMI_Handler                ; NMI Handler
        DCD     HardFault_Handler          ; Hard Fault Handler
        DCD     MemManage_Handler          ; MPU Fault Handler
        DCD     BusFault_Handler           ; Bus Fault Handler
        DCD     UsageFault_Handler         ; Usage Fault Handler
__vector_table_0x1c
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     0                          ; Reserved
        DCD     SVC_Handler                ; SVCall Handler
        DCD     DebugMon_Handler           ; Debug Monitor Handler
        DCD     0                          ; Reserved
        DCD     PendSV_Handler             ; PendSV Handler
        DCD     SysTick_Handler            ; SysTick Handler
        DCD     WDT_IRQHandler             ; Watchdog Handler
        DCD     TMR0_IRQHandler            ; TIMER0 Handler
        DCD     TMR1_IRQHandler            ; TIMER1 Handler
        DCD     TMR2_IRQHandler            ; TIMER2 Handler
        DCD     TMR3_IRQHandler            ; TIMER3 Handler
        DCD     UART0_IRQHandler           ; UART0 Handler
        DCD     UART1_IRQHandler           ; UART1 Handler
        DCD     UART2_IRQHandler           ; UART2 Handler
        DCD     UART3_IRQHandler           ; UART3 Handler
        DCD     PWM1_IRQHandler            ; PWM1 Handler
        DCD     I2C0_IRQHandler            ; I2C0 Handler
        DCD     I2C1_IRQHandler            ; I2C1 Handler
        DCD     I2C2_IRQHandler            ; I2C2 Handler
        DCD     SPI_IRQHandler             ; SPI Handler
        DCD     SSP0_IRQHandler            ; SSP0 Handler
        DCD     SSP1_IRQHandler            ; SSP1 Handler
        DCD     PLL0_IRQHandler            ; PLL0 Handler
        DCD     RTC_IRQHandler             ; RTC Handler
        DCD     EINT0_IRQHandler           ; EXT Interupt 0 Handler
        DCD     EINT1_IRQHandler           ; EXT Interupt 1 Handler
        DCD     EINT2_IRQHandler           ; EXT Interupt 2 Handler
        DCD     EINT3_IRQHandler           ; EXT Interupt 3 Handler
        DCD     ADC_IRQHandler             ; ADC Handler
        DCD     BOD_IRQHandler             ; BOD Handler
        DCD     USB_IRQHandler             ; USB Handler
        DCD     CAN_IRQHandler             ; CAN Handler
        DCD     GPDMA_IRQHandler           ; General Purpose DMA Handler
        DCD     I2S_IRQHandler             ; I2S Handler
        DCD     Ethernet_IRQHandler        ; Ethernet Handler
        DCD     RIT_IRQHandler             ; Repetitive Interrupt Timer Handler
        DCD     MotorControlPWM_IRQHandler ; Motor Control PWM Handler
        DCD     QE_IRQHandler              ; Quadrature Encoder Handler
        DCD     PLL1_IRQHandler            ; PLL1 Handler

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Default interrupt handlers.
;;

      PUBWEAK NMI_Handler      
      PUBWEAK HardFault_Handler
      PUBWEAK MemManage_Handler
      PUBWEAK BusFault_Handler  
      PUBWEAK UsageFault_Handler
      PUBWEAK SVC_Handler      
      PUBWEAK DebugMon_Handler  
      PUBWEAK PendSV_Handler    
      PUBWEAK SysTick_Handler  
      PUBWEAK WDT_IRQHandler    
      PUBWEAK TMR0_IRQHandler  
      PUBWEAK TMR1_IRQHandler  
      PUBWEAK TMR2_IRQHandler  
      PUBWEAK TMR3_IRQHandler  
      PUBWEAK UART0_IRQHandler  
      PUBWEAK UART1_IRQHandler  
      PUBWEAK UART2_IRQHandler  
      PUBWEAK UART3_IRQHandler  
      PUBWEAK PWM1_IRQHandler  
      PUBWEAK I2C0_IRQHandler  
      PUBWEAK I2C1_IRQHandler  
      PUBWEAK I2C2_IRQHandler  
      PUBWEAK SPI_IRQHandler    
      PUBWEAK SSP0_IRQHandler  
      PUBWEAK SSP1_IRQHandler  
      PUBWEAK PLL0_IRQHandler  
      PUBWEAK RTC_IRQHandler    
      PUBWEAK EINT0_IRQHandler  
      PUBWEAK EINT1_IRQHandler  
      PUBWEAK EINT2_IRQHandler  
      PUBWEAK EINT3_IRQHandler  
      PUBWEAK ADC_IRQHandler    
      PUBWEAK BOD_IRQHandler    
      PUBWEAK USB_IRQHandler    
      PUBWEAK CAN_IRQHandler    
      PUBWEAK GPDMA_IRQHandler  
      PUBWEAK I2S_IRQHandler    
      PUBWEAK Ethernet_IRQHandler        
      PUBWEAK RIT_IRQHandler              
      PUBWEAK MotorControlPWM_IRQHandler  
      PUBWEAK QE_IRQHandler              
      PUBWEAK PLL1_IRQHandler            

        SECTION .text:CODE:REORDER(1)
        THUMB
NMI_Handler      
HardFault_Handler
MemManage_Handler
BusFault_Handler  
UsageFault_Handler
SVC_Handler      
DebugMon_Handler  
PendSV_Handler    
SysTick_Handler  
WDT_IRQHandler    
TMR0_IRQHandler  
TMR1_IRQHandler  
TMR2_IRQHandler  
TMR3_IRQHandler  
UART0_IRQHandler  
UART1_IRQHandler  
UART2_IRQHandler  
UART3_IRQHandler  
PWM1_IRQHandler  
I2C0_IRQHandler  
I2C1_IRQHandler  
I2C2_IRQHandler  
SPI_IRQHandler    
SSP0_IRQHandler  
SSP1_IRQHandler  
PLL0_IRQHandler  
RTC_IRQHandler    
EINT0_IRQHandler  
EINT1_IRQHandler  
EINT2_IRQHandler  
EINT3_IRQHandler  
ADC_IRQHandler    
BOD_IRQHandler    
USB_IRQHandler    
CAN_IRQHandler    
GPDMA_IRQHandler  
I2S_IRQHandler    
Ethernet_IRQHandler        
RIT_IRQHandler              
MotorControlPWM_IRQHandler  
QE_IRQHandler              
PLL1_IRQHandler            
Default_Handler          
        B Default_Handler
        END



еще вопрос. если я запускаю программу через J-Link то программа может быть в озу JTAGа а не во влеше контроллера?
если это так то скажите как залить во флеш.
Go to the top of the page
 
+Quote Post
zuy
сообщение Sep 21 2010, 16:41
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 173
Регистрация: 30-11-05
Из: San Francisco
Пользователь №: 11 593



Цитата(123kill12 @ Sep 21 2010, 19:08) *
скажите как залить во флеш.

FlashMagic + RS232
Go to the top of the page
 
+Quote Post
sysel
сообщение Sep 21 2010, 17:03
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 3-07-07
Пользователь №: 28 852



1) убедиться, что программа попала во Flash в настройках линкера:
ROM start address = 0x00000100

2) убедиться, что в настройках линкера правильно указана область RAM
RAM start address = 0x10000000, End address = 0x10007FFF

3) Учтите, что у LPC17xx ОЗУ разбита на 2 блока с начальными адресами
0x10000000
и
0x20000000 (подключен к шине AHB, использовать для DMA)
см. стр 12 из юзерь мануала

4) Убедиться, что таблица векторов прерываний не перенесена в область ОЗУ. (Если работаете в IAR, посмотреть чтоб не было никаких макросов в на закладке Setup страницы Debugger).

5) Убедиться, что Вы вообще программируете флеш (В IAR должна стоять галочка Use flash loader(s) на закладке Download страницы Debugger).

Если не использовать Code Read Protection то все операции с МК можно делать без всяких FlashMagic-ов.
Go to the top of the page
 
+Quote Post
miv
сообщение Sep 22 2010, 14:22
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 29-08-05
Из: С-Петербург
Пользователь №: 8 055



Цитата(sysel @ Sep 21 2010, 21:03) *
1) убедиться, что программа попала во Flash в настройках линкера:
ROM start address = 0x00000100

2) убедиться, что в настройках линкера правильно указана область RAM
RAM start address = 0x10000000, End address = 0x10007FFF

3) Учтите, что у LPC17xx ОЗУ разбита на 2 блока с начальными адресами
0x10000000
и
0x20000000 (подключен к шине AHB, использовать для DMA)
см. стр 12 из юзерь мануала

4) Убедиться, что таблица векторов прерываний не перенесена в область ОЗУ. (Если работаете в IAR, посмотреть чтоб не было никаких макросов в на закладке Setup страницы Debugger).

5) Убедиться, что Вы вообще программируете флеш (В IAR должна стоять галочка Use flash loader(s) на закладке Download страницы Debugger).

Если не использовать Code Read Protection то все операции с МК можно делать без всяких FlashMagic-ов.



DMA у LPC17xx к любому RAM и кроме того ко всей FLASH не считая переферии. А вот Ether и USB по DMA могут юзать тольк верхнюю RAM c адреса 0x20000000 ( вроде так )
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 17:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016