임베디드 프로그래밍  

         
전체 기타 | WinCE | Delphi | VisualC | ARM | Media | SE | 마리오네트 | Java | wdm | JTAG | 영상처리 | 인증 | 질문/답변 | H/W | 알고리즘 | Platform | .net | VB | PPC | Network | android | QT | WWW | Linux |
DNW 시리얼을 사용하여 프로그램을 다운로드 및 실행하는 프로그램
하창호03-17 10:58 | HIT : 5,612

UPLOAD 1 ::App)Monitor.zip (145.7 KB) | DOWN : 179
// DNW 시리얼을 사용하여 프로그램을 다운로드 및 실행하는 프로그램
#include "S3C2410X.h"
#include "myLIB.h"

#define DownloadAddr        (0x30100000-4)

void Isr_Init(void);
void Uart_RxInt(void);
void (*restart)(void)=(void (*)(void))0x30010000;
void (*run)(void)=(void (*)(void))(DownloadAddr+4);

volatile char *downPt;

void Main(void)
{
   int i;
   unsigned int filesize;
   unsigned short int checksum=0, dnCS;    

   ChangeClockDivider(1,1);                                // 1:2:4
   ChangeMPllValue(0x7D,0x4,0x0);                          // FCLK=266MHz
  
   MMU_Init();
    
   Delay(100);                                        // 10ms
   Uart_Init();                                        // Baudrate @115200bps, N/8/1
   Uart_Printf("\r\nMonitor Program \r\n\r\n");
  
   Led_Display(1);
   downPt=(volatile char *)DownloadAddr;                
  
   Isr_Init();                                        // Interrupt Service Routine
  
   while(( (unsigned int)downPt-DownloadAddr)<4)
   {
      rGPBDAT^=(1<<5);
      Delay(1000);
   }      
    
   //filesize=*(volatile unsigned int *)(DownloadAddr);
   filesize=*((unsigned char *)(DownloadAddr+0))+
            (*((unsigned char *)(DownloadAddr+1))<<8)+
            (*((unsigned char *)(DownloadAddr+2))<<16)+
            (*((unsigned char *)(DownloadAddr+3))<<24);    

   Uart_Printf("\nNow, Downloading... [FILESIZE:%7d] \n",filesize);        
  
   while(((int)downPt-DownloadAddr)<filesize)
   {
      i=(int)downPt-DownloadAddr;
      if((i&0xFF)==0) rGPBDAT^=(1<<6);
   }    
  
   for(i=4;i<(filesize-2);i++)
      checksum+=*((unsigned char *)(i+DownloadAddr));

   dnCS=*((unsigned char *)(DownloadAddr+filesize-2))+
   (*( (unsigned char *)(DownloadAddr+filesize-1) )<<8);
  
   if(checksum!=dnCS)
   {
      Uart_Printf("Checksum Error!!! MEM:%x DN:%x\n", checksum, dnCS);
      restart();
   }    
   Uart_Printf("Download OK\n");
  
   run();
              
} // end of main(...)



void Isr_Init(void)
{
     rINTMOD     = 0x0;                                     // All=IRQ mode
     rINTMSK     = BIT_ALLMSK;                              // All interrupt is masked.
     rINTSUBMSK  = BIT_SUB_ALLMSK;                          // All sub-interrupt is masked.
                                                // <- April 01, 2002 SOP

     pISR_UART0  = (unsigned)Uart_RxInt;                 
     rINTMSK     = ~(BIT_UART0);                            
     rINTSUBMSK         = ~(BIT_SUB_RXD0);  
    
}


void Uart_RxInt(void)
{
     rINTSUBMSK|=BIT_SUB_RXD0;        
     rSRCPND=BIT_UART0;                                        // Clear pending bits  
     rINTPND=BIT_UART0;  
     rSUBSRCPND=BIT_SUB_RXD0;

     *downPt++=rURXH0;        
    
     rINTSUBMSK&=~BIT_SUB_RXD0;        
        
} // end of __irq Uart_RxInt(...)        


36  ARM :: 인터럽트 핸들링    하창호 2007·08·29 4461
35  ARM :: CC 와 Slick Editer & T32 를 연동 프로젝트...    하창호 2007·02·15 4255
34  ARM :: T32 매크로 팁 중 현재 디렉토리 가져오는 방법    하창호 2007·02·08 3795
33  ARM :: 플레쉬에 대해서    하창호 2006·04·12 3876
32  ARM :: 삼성 반도체 홈페이지 Flash S/W 및 PocketStore I...    하창호 2006·04·12 4271
31  ARM :: MMU (memory management unit)    하창호 2005·03·10 4205
30  ARM :: ARM 프로세스이해 교육완수 예제    하창호 2004·03·23 4452
29  ARM :: S3C2410 터치스키린 이용한 그림판 제작 예제    하창호 2004·03·22 5704
28  ARM :: 이종수 박사 ADS, SDT, GCC 를 이용한 예제    하창호 2004·03·22 4879
27  ARM :: S3C2410 LCD에 아날로그 시계 출력하기 (숙제 3)    하창호 2004·03·22 5971
26  ARM :: S3C2410 LCD에 이미지 출력하기 예제    하창호 2004·03·19 6480
25  ARM :: [ASM] 1부터 10 까지 더하기 GCC 사용    하창호 2004·03·19 4027
24  ARM :: [ASM] LOOP 를 이용한 메모리간 복사 GCC 사용  …3  하창호 2004·03·19 4240
23  ARM :: 이종수 박사 ARM 이론강의 요약    하창호 2004·03·18 6598
22  ARM :: ARM Down, GCC 를 받을 수 있는 곳    하창호 2004·03·18 3642
21  ARM :: SMDK2410(S3C2410) Board Reference    하창호 2004·03·18 3823
20  ARM :: S3C2410X USER'S MANUAL    하창호 2004·03·18 3494
19  ARM :: SDT 관련문서    하창호 2004·03·18 3336
18  ARM :: GCC 관련문서    하창호 2004·03·18 3462
17  ARM :: ARM명령어요약    하창호 2004·03·18 3655
16  ARM :: 이종수 박사 ARM 뛰어넘기 교재    하창호 2004·03·18 4999
15  ARM :: ARM Architecture Reference Manual  …1  하창호 2004·03·18 3523
14  ARM :: 에디터 (숙제 2)    하창호 2004·03·17 3548
13  ARM :: S3C2410 IIS를 이용한 사운드 출력 예제    하창호 2004·03·17 4381
12  ARM :: S3C2410 Keyboard와 LCD 제어하기 예제    하창호 2004·03·17 4375
11  ARM :: S3C2410 Keyboard 제어하기 예제    하창호 2004·03·17 4194
 ARM :: DNW 시리얼을 사용하여 프로그램을 다운로드 및 실행하...    하창호 2004·03·17 5612
9  ARM :: APM DownLoader 방식과 DNW DownLoader ...  …1  하창호 2004·03·17 3853
8  ARM :: S3C2410 간단한 알람 시계 예제 (숙제1)    하창호 2004·03·16 5004
7  ARM :: S3C2410 Watch Dog Timer 사용 예제    하창호 2004·03·16 4484
6  ARM :: S3C2410 타이머와 인터럽트로 LED 불켜기    하창호 2004·03·16 4336
5  ARM :: ARM 프로세스의 이해 강의 자료    하창호 2004·03·16 4944
4  ARM :: S3C2410 시리얼로 값 입력받는 계산기 만들기    하창호 2004·03·16 4212
3  ARM :: CPU 최대 주파수를 가지고 최소 타이머 주기 알아내기  …36  하창호 2004·03·16 2937
2  ARM :: S3C2410 버튼 입력받아 LED 불켜기 예제    하창호 2004·03·15 4586
1  ARM :: S3C2410 LED 불켜기 예제    하창호 2004·03·15 4479
1
   
Copyright 1999-2018 Zeroboard / skin by GGAMBO
....