Software Reset Macro

Software reset macro  for ATMEL AT91SAM9R64/RL64

[cpp ]

#define soft_user_reset()
asm volatile (
/* disable IRQs */
“MRS R0, CPSR nt”
“ORR R0, R0, #0x80 nt”
“MSR CPSR_c, R0 nt”
/* change refresh rate to block all data accesses */
“LDR R0, =0xFFFFEA04 /* AT91C_SDRAMC_TR*/ nt”
“LDR R1, =1 nt”
“STR R1, [R0] nt”
/*prepare power down command*/
“LDR R0, =0xFFFFEA10 /* AT91C_SDRAMC_LPR */ nt”
“LDR R1, =2 nt”
/* prepare proc_reset and periph_reset*/
“LDR R2, =0xFFFFFD00 /* AT91C_RSTC_RCR */ nt”
“LDR R3, =0xa5000005 nt”
/* perform power down commnad */
“STR R1, [R0] nt”
/* perform proc_reset and periph_reset*/
“STR R3, [R2] nt”
)

[/cpp]

 

Ref. ATMEL AT91SAM ARM-Based Embedded MCU AT91SAM9R64/RL64  p.885

Linux4SAM

http://www.at91.com/linux4sam/bin/view/Linux4SAM 사이트를 참조하여 ATMEL AT91SAM9RL64 보드에 Linux를 올려 보았다.

참조 사이트의 EVB 보드들 중 at91sam9rlek EVB 보드를 기준으로  개발 보드에 맞게 수정 작업을 하였다.

관련 내용은 Linux4SAM  wiki 페이지에 정리 하였다.

ATMEL ARM9 FreeRTOS

 ATMEL  AT91SAM9RL64  를 사용한 개발 보드에 FreeRTOS를 올려 보았다.   FreeRTOS Demo 폴더에 ARM9_AT91SAM9XE_IAR 이 있어 이것을 기반으로 수정하여 FreeRTOS 테스트 프로그램의 동작을 확인 하였다.
IAR컴파일러가 30일 평가판이라서 30일내에 완료해야 했는데 예상외로 빨리 끝낼 수 있었다. 
먼저 AT91SAM9XE를 컴파일 하여 컴파일러가 에러없이 컴파일 된 것을 확인 한 후 폴더을 복사하여 RL에 맞게 디버깅 하였다.  수정 포인트는 다음과 같다.

폴더 복사 from  “Demo/ARM9_AT91SAM9XE_IAR” to” Demo/ARM9_AR91SAM9RL_IAR”

  • IAR IDE 설정 파일들 수정
  • serial.c 수정 USART_Configure에 AT91C_US_CHMODE_LOCAL mode  추가

“Demo/common/drivers/Atmel/at91lib/boards” 폴더에 at91sam9rl-ek 추가

  • 보드에 맞게 board.h, board_lowlevel.c, board_memories.c 수정
  • AT91SAM9RL64.h 파일 찾아 인터넷에서 찾아 추가
  • icf 파일에서 보드에 맞게 메모리 주소 수정