leds "show" 0xaa when finished flashing process
[pyfrprog.git] / pkernel / main.c
index 9f1cd287ed359a434bd12efe2bb9c6cd7b58f667..7963c2a13242684f4db7f0f86665dc35b29172f8 100644 (file)
-/* THIS SAMPLE CODE IS PROVIDED AS IS AND IS SUBJECT TO ALTERATIONS. FUJITSU */
-/* MICROELECTRONICS ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR */
-/* ELIGIBILITY FOR ANY PURPOSES.                                             */
-/*                 (C) Fujitsu Microelectronics Europe GmbH                  */
-/*------------------------------------------------------------------------
-  MAIN.C
-  - description
-  - See README.TXT for project description and disclaimer.
-
-  06.10.06  1.01   UMa    changed includes
--------------------------------------------------------------------------*/
-
-/*************************@INCLUDE_START************************/
 #include "mb91465k.h"
-#include "vectors.h"
-#include "rlt.h"
 #include "flash.h"
-/**************************@INCLUDE_END*************************/
-
-/*********************@GLOBAL_VARIABLES_START*******************/
-/**********************@GLOBAL_VARIABLES_END********************/
 
+#pragma section CODE=IRAM,attr=CODE
 
-/*******************@FUNCTION_DECLARATION_START*****************/
-
-/*********************@FUNCTION_HEADER_START*********************
-*@FUNCTION NAME:    main()                                      *
-*                                                               *
-*@DESCRIPTION:      The main function controls the program flow *
-*                                                               *
-*@PARAMETER:        none                                        *
-*                                                               *
-*@RETURN:           none                                        *
-*                                                               *
-***********************@FUNCTION_HEADER_END*********************/
-
+void increaseled(void)
+{
+       PDR14 = ~(((~PDR14)+1)%256);
+       HWWD_CL = 0;
+}
 
 void main(void)
 {
-       unsigned char error = 0;
-       unsigned char global_error = 0; 
-       unsigned int i;
+       unsigned int i, baseaddr;
+       unsigned int toflash[] = {0x9b00, 0x0d4e, 0xcff1, 0x1601, 0x9b05, 0x04c7, 0xc106, 0x1656, 0xe0fb}; //len = 9
        
-       /*      Enable Clock Monitor    */
-       CSCFG_MONCKI = 1;
-       CMCFG = 0x0D;
-               
-       __EI();                    /* enable interrupts */
-       __set_il(31);              /* allow all levels */
-       InitIrqLevels();           /* init interrupts */
-
-       PORTEN = 0x3;           /* enable I/O Ports */
-                               /* This feature is not supported by MB91V460A */
-                               /* For all other devices the I/O Ports must be enabled*/
+       PORTEN = 0x3; /* enable I/O Ports */
 
-       /*      Enable LEDs     */
+       /*Enable LEDs*/
        DDR14 = 0xFF;
-       PDR14 = 0xff;
-
-       /*      Initialize Reload Timer Channel 0       */
-       RLT_InitializeTimer(0, RLT_RUMMODE_RELOAD, RLT_CLOCKMODE_DIV32, RLT_TRIGGER_SOFTWARE, RLT_OUTOUTMODE_HIGHLEVEL);
-       RLT_SetReloadValue(0,0xfffe);
-       RLT_TriggerTimer(0);
-       RLT_EnableInterrupt(0, 1);
+       PDR14 = 0x00;
+       increaseled();
 
-       /*      Initialize UART4        */
+       /*Initialize UART4*/
        InitUart4();
 
-       /*      Output Welcome Message  */
-       Puts4(" \n\n");
-       Puts4("\n\n********** Welcome to FUJITSU FLASH Programming Demo **********\n");
-
-       /*      Do BlankCheck on Sector at 0xA0000      */
-       Puts4("Blank Check of FLASH Sector at 0xA0000 ... ");
-       error = FLASH_SectorBlankCheck(0xA0000, 0x4000);
-       if( error == 1 )
-       {
-               Puts4("done.\n");
-       }
-       else
-       {
-               Puts4("failed.\n");
-       }
-               
-       /*      Show Current Content of 0xA0000 ... 0xA001F     */
-       i=0;
-       Puts4("\nCurrent Content of FLASH at 0xA0000 ... 0xA001F:\n");
-       while(i < 0x20)
-       {
-               Puts4("0x"); Puthex4( *(unsigned char *)(0xA0000 + i), 2); Puts4("  ");
-               i++;
-               if( (i % 0x10) == 0 ) Puts4("\n");
-       }
-       Puts4("\n");
-       
-       /*      SectorErase of FLASH Memory     0xA0000*/
-       Puts4("Sector Erase of 0xA0000 ... ");
-       error = FLASH_SectorErase(0xA0000);
-       error = FLASH_SectorErase(0xA0004);
-       if( error == 1 )
-       {
-               Puts4("done.\n");
-       }
-       else
-       {
-               global_error = 1;
-               Puts4("failed.\n");
+#if 1
+       i = 0;
+       baseaddr = 0xf4000;
+       for (; i <0x30; i+=4) {
+               (void) FLASH_SectorErase(baseaddr + i);
+               increaseled();
        }
+#endif
 
-       /*      Do BlankCheck on Sectors at 0xA0000 */
-       Puts4("Blank Check of FLASH Sector at 0xA0000 ... ");
-       error = FLASH_SectorBlankCheck(0xA0000, 0x4000);
-       if( error == 1 )
-       {
-               Puts4("done.\n");
-       }
-       else
-       {
-               global_error = 1;
-               Puts4("failed.\n");
-       }
-               
-       /*      Show Current Content of 0xA0000 ... 0xA001F     */
-       i=0;
-       Puts4("\nCurrent Content of FLASH at 0xA0000 ... 0xA001F:\n");
-       while(i < 0x20)
-       {
-               Puts4("0x"); Puthex4( *(unsigned char *)(0xA0000 + i), 2); Puts4("  ");
-               i++;
-               if( (i % 0x10) == 0 ) Puts4("\n");
-       }
-       Puts4("\n");
-       
-       /*      Write 0x55AA to 0xA0002 */
-       Puts4("Write 0x55AA to 0xA0002 ... ");
-       error = FLASH_WriteHalfWord(0xA0002,0x55AA);
-       if( error == 1 )
-       {
-               Puts4("done.\n");
-       }
-       else
-       {
-               global_error = 1;
-               Puts4("failed.\n");
+       i = 0;
+       baseaddr = 0xf4000;
+       for(; i<9; i++) {
+               increaseled();
+               (void) FLASH_WriteHalfWord(baseaddr + (2*i), toflash[i]);
        }
 
-       /*      Write 0x33CC to 0xA0004 */
-       Puts4("Write 0x33CC to 0xA0004 ... ");
-       error = FLASH_WriteHalfWord(0xA0004,0x33CC);
-       if( error == 1 )
-       {
-               Puts4("done.\n");
-       }
-       else
-       {
-               global_error = 1;
-               Puts4("failed.\n");
-       }
-               
-       /*      Show Current Content of 0xA0000 ... 0xA001F     */
-       i=0;
-       Puts4("\nCurrent Content of FLASH at 0xA0000 ... 0xA001F:\n");
-       while(i < 0x20)
-       {
-               Puts4("0x"); Puthex4( *(unsigned char *)(0xA0000 + i), 2); Puts4("  ");
-               i++;
-               if( (i % 0x10) == 0 ) Puts4("\n");
-       }
-       Puts4("\n");
+       PDR14 = 0x55; //signal that we finished now!
 
-                               
-       /*      Output Ready Meassage   */
-       if( global_error != 0 )
-       {
-               Puts4("\n********* FLASH Programming Demo failed **********\n");
+       while(1) {
+               HWWD_CL = 0;
        }
-       else
-       {
-               Puts4("\n********* FLASH Programming Demo done **********\n");
-       }
-
-       RLT_EnableInterrupt(0, 0);
-                                       
-    while(1)                   /* endless loop */
-    {    
-         
-       HWWD_CL = 0;   
-       
-       /* feed hardware watchdog */
-       /* (Only for devices with hardware (R/C based) watchdog) */
-       /* The hardware (R/C based) watchdog is started */
-       /* automatically after power-up and can not be stopped */
-       /* If the hardware watchdog is not cleared frequently */
-       /* a reset is generated. */           
-    }   
 }
 
-
-/********************@FUNCTION_DECLARATION_END******************/