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

 
 
 
Reply to this topicStart new topic
> At91sam7s256 и чайник, помогите разобраться
D1ma
сообщение Aug 26 2009, 10:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



Помогите чайнику.

Здравствуйте.
Помогите запустить простенькую прогу на AT91sam7s256
Делаю первые шаги с АРМом, не судите сильно.
Пишу на ИАР 5.3,есть jetlink5
Код
#include <atmel\ioat91sam7s256.h>
//инициализация основных узлов системы
void CPUinit()
  {
  //нициализация EFC (Flash-памяти)
  AT91C_BASE_MC->MC_FMR = AT91C_MC_FWS_1FWS; // 2 цикла на чтение, 3 цикла на запись
  //настройка тактовых частот
  //включение и задание времени запуска основного генератора
  AT91C_BASE_PMC->PMC_MOR = (( AT91C_CKGR_OSCOUNT & (0x40 <<8) | AT91C_CKGR_MOSCEN ));
  // ожидание стабилизации частоты основного генератора
  while(!(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MOSCS));
  
  //задание  частоты PLL  96,109 МГц и такт частоты UDP 48,058 МГц
  AT91C_BASE_PMC->PMC_PLLR =    (AT91C_CKGR_MUL & (72 << 16)) |
                                (AT91C_CKGR_DIV & 14);;
  //ожидание стабилизации PLL
  while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_LOCK) );
    // ожидание стабилизации задающей частоты от PLL
  while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
  
  //задание задающей частоты и частоты процессора PLL/2=48 МГц
  //регистр PMC_MCKR не должен програмироваться одной операцией записи
  AT91C_BASE_PMC->PMC_MCKR = AT91C_PMC_PRES_CLK_2;
  // ожидание стабилизации задающей частоты
  while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
  //выбор основного источника тактового сигнала PLL
  AT91C_BASE_PMC->PMC_MCKR |= AT91C_PMC_CSS_PLL_CLK;
  // ожидание стабилизации задающей частоты
  while( !(AT91C_BASE_PMC->PMC_SR & AT91C_PMC_MCKRDY) );
  // отключение сторожевого таймера
  AT91C_BASE_WDTC->WDTC_WDMR = AT91C_WDTC_WDDIS;
  
  // разрешение тактирования PIO
  AT91C_BASE_PMC->PMC_PCER|=(1 << AT91C_ID_PIOA);
  
  }
int main()
{
  CPUinit();
  AT91C_BASE_PIOA->PIO_PER=0xFFFFFFFF;
  AT91C_BASE_PIOA->PIO_OER=0xFFFFFFFF;
  AT91C_BASE_PIOA->PIO_CODR=0xFFFF0000;
  AT91C_BASE_PIOA->PIO_CODR=0x0000FFFF;
  
  return 0;
}

Проблема в том, что я не могу поставить точку останова, допустим на первой строчке.
И прога не работает, не устанавлеваются уровни на линиях выводов.
Что нетак делаю?

Сообщение отредактировал D1ma - Aug 26 2009, 10:44
Go to the top of the page
 
+Quote Post
mempfis_
сообщение Aug 26 2009, 10:53
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Не знаю как в настройках но где у вас вечный цикл в main?
Попробуйте заменить return 0 на while(1).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 26 2009, 10:58
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(D1ma @ Aug 26 2009, 14:43) *
И прога не работает, не устанавлеваются уровни на линиях выводов.

Т.е. нули на всех выводах не устанавливаются?
Go to the top of the page
 
+Quote Post
D1ma
сообщение Aug 26 2009, 11:53
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



Цитата(aaarrr @ Aug 26 2009, 14:58) *
Т.е. нули на всех выводах не устанавливаются?

да неустанавливаются.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Aug 26 2009, 11:58
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А если вызов CPUinit исключить?
Go to the top of the page
 
+Quote Post
D1ma
сообщение Aug 26 2009, 12:32
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



while(1); - тоже пробывал
IAR при дебаге пишет:
Код
Wed Aug 26 14:51:09 2009: DLL version: V4.3o, compiled Feb 23 2009 18:04:20
Wed Aug 26 14:51:09 2009: Firmware: J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5
Wed Aug 26 14:51:09 2009: JTAG speed is initially set to: 32 kHz
Wed Aug 26 14:51:09 2009: Initial reset was performed
Wed Aug 26 14:51:09 2009: TotalIRLen = 4, IRPrint = 0x01
Wed Aug 26 14:51:09 2009: J-Link found 1 JTAG device(s). ARM core Id: 3F0F0F0F ARM7
Wed Aug 26 14:51:09 2009: Device at TAP0 selected
Wed Aug 26 14:51:09 2009: JLINK command: ProjectFile = D:\PRUBORU\ARM ZAHUST\settings\DefenceOfGenerator_Debug.jlink, return = 0
Wed Aug 26 14:51:09 2009: JLINK command: device = AT91SAM7S256, return = 0
Wed Aug 26 14:51:09 2009: TotalIRLen = 4, IRPrint = 0x01
Wed Aug 26 14:51:09 2009: RTCK is not connected
Wed Aug 26 14:51:09 2009: Auto JTAG speed: 8000 kHz
Wed Aug 26 14:51:09 2009: 748 bytes downloaded (1.37 Kbytes/sec)
Wed Aug 26 14:51:09 2009: Loaded debugee: D:\PRUBORU\ARM ZAHUST\Debug\Exe\DefenceOfGenerator.out
Wed Aug 26 14:51:09 2009: Target reset
Wed Aug 26 14:51:10 2009: Failed to set breakpoint at 0x00000174
Wed Aug 26 14:51:10 2009: Failed to set breakpoint at 0x00000174
Wed Aug 26 14:51:59 2009: Failed to set breakpoint at 0x00000174
Wed Aug 26 14:51:59 2009: Performance warning: Lack of breakpoints forces single-stepping.

и при загрузки кидает сообщения прикрепил файл

если делаеш break то иар пишет
Код
Wed Aug 26 15:06:40 2009: DLL version: V4.3o, compiled Feb 23 2009 18:04:20
Wed Aug 26 15:06:40 2009: Firmware: J-Link compiled Jul 30 2008 11:24:37 ARM Rev.5
Wed Aug 26 15:06:40 2009: JTAG speed is initially set to: 32 kHz
Wed Aug 26 15:06:40 2009: Initial reset was performed
Wed Aug 26 15:06:40 2009: TotalIRLen = 4, IRPrint = 0x01
Wed Aug 26 15:06:40 2009: J-Link found 1 JTAG device(s). ARM core Id: 3F0F0F0F ARM7
Wed Aug 26 15:06:40 2009: Device at TAP0 selected
Wed Aug 26 15:06:40 2009: JLINK command: ProjectFile = D:\PRUBORU\ARM ZAHUST\settings\DefenceOfGenerator_Debug.jlink, return = 0
Wed Aug 26 15:06:40 2009: JLINK command: device = AT91SAM7S256, return = 0
Wed Aug 26 15:06:40 2009: TotalIRLen = 4, IRPrint = 0x01
Wed Aug 26 15:06:40 2009: RTCK is not connected
Wed Aug 26 15:06:40 2009: Auto JTAG speed: 8000 kHz
Wed Aug 26 15:06:41 2009: 748 bytes downloaded (1.51 Kbytes/sec)
Wed Aug 26 15:06:41 2009: Loaded debugee: D:\PRUBORU\ARM ZAHUST\Debug\Exe\DefenceOfGenerator.out
Wed Aug 26 15:06:41 2009: Target reset
Wed Aug 26 15:06:46 2009: Failed to read one or more register values (busy).
Wed Aug 26 15:06:51 2009: The stack 'CSTACK' is filled to 100% (8192 bytes used out of 8192). The warning threshold is set to 90.%
Wed Aug 26 15:06:51 2009: The stack 'IRQ_STACK' is filled to 100% (256 bytes used out of 256). The warning threshold is set to 90.%
Wed Aug 26 15:06:51 2009: The stack 'FIQ_STACK' is filled to 100% (256 bytes used out of 256). The warning threshold is set to 90.%

и делаеш пошагого дебаг. код крутится в одной строчкке:
0010004C EAFFFFFE B 0x10004C
Код
  00100040  EAFFFFFE  B            0x100040
  00100044  EAFFFFFE  B            0x100044
  00100048  EAFFFFFE  B            0x100048
  [b]0010004C  EAFFFFFE  B            0x10004C[/b]
  00100050  EAFFFFFE  B            0x100050
  00100054  EAFFFFFE  B            0x100054
  00100058  E59F00C0  LDR          R0, [PC, #+192]        ; [0x100120] =RSTC_RCR (0xFFFFFD00)
  0010005C  E59F10C0  LDR          R1, [PC, #+192]        ; [0x100124] =0xA5000401
  00100060  E5801008  STR          R1, [R0, #+8]
  00100064  E3E000FF  MVN          R0, #0xFF
  00100068  E59F10B8  LDR          R1, [PC, #+184]        ; [0x100128] =0x320100
  0010006C  E5801060  STR          R1, [R0, #+96]
  00100070  E59F00B4  LDR          R0, [PC, #+180]        ; [0x10012C] =WDTC_WDCR (0xFFFFFD40)
  00100074  E3A01902  MOV          R1, #0x8000
  00100078  E5801004  STR          R1, [R0, #+4]
  0010007C  E59F00AC  LDR          R0, [PC, #+172]        ; [0x100130] =PMC_SCER (0xFFFFFC00)
  00100080  E59F10AC  LDR          R1, [PC, #+172]        ; [0x100134] =0x601
  00100084  E5801020  STR          R1, [R0, #+32]
  00100088  E5902068  LDR          R2, [R0, #+104]
  0010008C  E2122001  ANDS         R2, R2, #0x1


может дайте свой пример который все порты поставит в 0

Сообщение отредактировал D1ma - Aug 26 2009, 12:13
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
KAlex
сообщение Aug 26 2009, 12:33
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Стартап? Ремапинг?
Рекомендую загрузить какой нибудь пример и разобраться с ним.

А куда еще он прыгнет
0010004C EAFFFFFE B 0x10004C -> Label: goto Label
Go to the top of the page
 
+Quote Post
D1ma
сообщение Aug 26 2009, 12:43
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



Цитата(KAlex @ Aug 26 2009, 16:33) *
Стартап? Ремапинг?
Рекомендую загрузить какой нибудь пример и разобраться с ним.

А куда еще он прыгнет
0010004C EAFFFFFE B 0x10004C -> Label: goto Label

а конкретней про стартап и ремап можно?
Go to the top of the page
 
+Quote Post
D1ma
сообщение Aug 26 2009, 15:27
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



где взять стартап и как присоеденить его к моему проекту?
Go to the top of the page
 
+Quote Post
KAlex
сообщение Aug 27 2009, 08:36
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



При старте IAR
Прикрепленное изображение

нижний пункт.
Go to the top of the page
 
+Quote Post
D1ma
сообщение Aug 27 2009, 15:36
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



код Startup:
CODE
/* ----------------------------------------------------------------------------
* ATMEL Microcontroller Software Support
* ----------------------------------------------------------------------------
* Copyright © 2008, Atmel Corporation
*
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* - Redistributions of source code must retain the above copyright notice,
* this list of conditions and the disclaimer below.
*
* Atmel's name may not be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* ----------------------------------------------------------------------------
*/

/*
IAR startup file for AT91SAM7S microcontrollers.
*/

MODULE ?cstartup

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

//------------------------------------------------------------------------------
// Headers
//------------------------------------------------------------------------------

#define __ASSEMBLY__
#include "board.h"

//------------------------------------------------------------------------------
// Definitions
//------------------------------------------------------------------------------

#define ARM_MODE_ABT 0x17
#define ARM_MODE_FIQ 0x11
#define ARM_MODE_IRQ 0x12
#define ARM_MODE_SVC 0x13
#define ARM_MODE_SYS 0x1F

#define I_BIT 0x80
#define F_BIT 0x40

//------------------------------------------------------------------------------
// Startup routine
//------------------------------------------------------------------------------

/*
Exception vectors
*/
SECTION .vectors:CODE:NOROOT(2)

PUBLIC resetVector
PUBLIC irqHandler

EXTERN Undefined_Handler
EXTERN SWI_Handler
EXTERN Prefetch_Handler
EXTERN Abort_Handler
EXTERN FIQ_Handler

ARM

__iar_init$$done: ; The interrupt vector is not needed
; until after copy initialization is done

resetVector:
; All default exception handlers (except reset) are
; defined as weak symbol definitions.
; If a handler is defined by the application it will take precedence.
LDR pc, =resetHandler ; Reset
LDR pc, Undefined_Addr ; Undefined instructions
LDR pc, SWI_Addr ; Software interrupt (SWI/SYS)
LDR pc, Prefetch_Addr ; Prefetch abort
LDR pc, Abort_Addr ; Data abort
B . ; RESERVED
LDR pc, =irqHandler ; IRQ
LDR pc, FIQ_Addr ; FIQ

Undefined_Addr: DCD Undefined_Handler
SWI_Addr: DCD SWI_Handler
Prefetch_Addr: DCD Prefetch_Handler
Abort_Addr: DCD Abort_Handler
FIQ_Addr: DCD FIQ_Handler

/*
Handles incoming interrupt requests by branching to the corresponding
handler, as defined in the AIC. Supports interrupt nesting.
*/
irqHandler:
/* Save interrupt context on the stack to allow nesting */
SUB lr, lr, #4
STMFD sp!, {lr}
MRS lr, SPSR
STMFD sp!, {r0, lr}

/* Write in the IVR to support Protect Mode */
LDR lr, =AT91C_BASE_AIC
LDR r0, [r14, #AIC_IVR]
STR lr, [r14, #AIC_IVR]

/* Branch to interrupt handler in Supervisor mode */
MSR CPSR_c, #ARM_MODE_SYS
STMFD sp!, {r1-r3, r4, r12, lr}
MOV lr, pc
BX r0
LDMIA sp!, {r1-r3, r4, r12, lr}
MSR CPSR_c, #ARM_MODE_IRQ | I_BIT

/* Acknowledge interrupt */
LDR lr, =AT91C_BASE_AIC
STR lr, [r14, #AIC_EOICR]

/* Restore interrupt context and branch back to calling code */
LDMIA sp!, {r0, lr}
MSR SPSR_cxsf, lr
LDMIA sp!, {pc}^


/*
After a reset, execution starts here, the mode is ARM, supervisor
with interrupts disabled.
Initializes the chip and branches to the main() function.
*/
SECTION .cstartup:CODE:NOROOT(2)

PUBLIC resetHandler
EXTERN LowLevelInit
EXTERN ?main
REQUIRE resetVector
ARM

resetHandler:

/* Set pc to actual code location (i.e. not in remap zone) */
LDR pc, =label

/* Perform low-level initialization of the chip using LowLevelInit() */
label:
LDR r0, =LowLevelInit
LDR r4, =SFE(CSTACK)
MOV sp, r4
MOV lr, pc
BX r0

/* Set up the interrupt stack pointer. */
MSR cpsr_c, #ARM_MODE_IRQ | I_BIT | F_BIT ; Change the mode
LDR sp, =SFE(IRQ_STACK)

/* Set up the SYS stack pointer. */
MSR cpsr_c, #ARM_MODE_SYS | F_BIT ; Change the mode
LDR sp, =SFE(CSTACK)

/* Branch to main() */
LDR r0, =?main
MOV lr, pc
BX r0

/* Loop indefinitely when program is finished */
loop4:
B loop4

END

Опешите, пожалуйста, его.

Я его добавил. Но пишет неизвестно AIC_IVR, AIC_EOICR – где их объявления в рабочих проектах таки не нашел. Что, єто?



да вместо
Код
#include "board.h"

у меня
Код
[/code]
#include <atmel\ioat91sam7s256.h>
#include "at91sam7s256.h"


вроде сделал (проект запустился)
но кидает предупреждение
Код
Warning[Lp012]: no sections with name FIQ_STACK included - special symbol FIQ_STACK$$Limit (referenced from cstartup.o(rt4t_al.a)) will be zero
как исправить?
Причина редактирования: Нарушение п.3.4 Правил форума.
Go to the top of the page
 
+Quote Post
D1ma
сообщение Aug 28 2009, 07:39
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



вроде потключил стартап
но когда делаю MAKE кидает ошибку
Код
Error[Li005]: no definition for "LowLevelInit" [referenced from D:\PRUBORU\ARM ZAHUST\DefenceOfGeneratorIAR\Release\Obj\boart_cstartup_iar.o]
Error while running Linker

когда Compile все гуд

как исправить?
Go to the top of the page
 
+Quote Post
KAlex
сообщение Aug 28 2009, 07:51
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719



Цитата(D1ma @ Aug 28 2009, 11:39) *
но когда делаю MAKE кидает ошибку

Опции линкера ковырять.
Go to the top of the page
 
+Quote Post
D1ma
сообщение Aug 28 2009, 08:26
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 42
Регистрация: 8-11-07
Пользователь №: 32 165



Цитата(KAlex @ Aug 28 2009, 10:51) *
Опции линкера ковырять.

Опции линкера такиеже, как в проекте примере

Цитата(KAlex @ Aug 28 2009, 10:51) *
Опции линкера ковырять.

Опции линкера такиеже, как в проекте примере

нашол проблему:
если ставишь язык С, то меке ошибки не бросает, если С++ то бросает

Но мне нада С++ sad.gif

проблему решил путем выбора языка к отдельным файлам board_lowlevel.c и board_memories.c теперь все гудsmile.gif
Go to the top of the page
 
+Quote Post
WHALE
сообщение Oct 4 2013, 11:43
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 902
Регистрация: 2-01-06
Из: Краснодар
Пользователь №: 12 768



извиняюсь за некропостинг,но у меня такая-же проблема-Error[Li005]: no definition for "LowLevelInit".
IAR 6.50.5,контроллер AT91SAM7X256,язык С++.
Выбираю язык С-все компилируется.
Принудительно язык к файлам board_lowlevel.c и board_memories.c менял на С - не помогает. sad.gif


--------------------
"Hello, word!" - 17 errors 56 warnings
Go to the top of the page
 
+Quote Post

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

 


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


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