- /****************************************************************************
 
 -  * [url=home.php?mod=space&uid=288409]@file[/url]     main.c
 
 -  * [url=home.php?mod=space&uid=895143]@version[/url]  V1.0
 
 -  * $Date: 16/09/02 10:04a $
 
 -  * @brief
 
 -  *       Display how to insert OTP signature and Version number into SPI Flash.
 
 -  *                      
 
 -  * @note
 
 -  * Copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
 
 -  *
 
 -  ******************************************************************************/
 
 - #include <stdio.h>
 
 - #include <string.h>
 
 - #include "NUC505Series.h"
 
  
- /* If you want to encrypt binary firmware, you can enable
 
 -    the session code and assign signature and offset here */
 
 - #define OTP_SIG1    (0x20040929)
 
 - #define OTP_OFFSET  (0x130)
 
 - #define Version    (0xabcd0001)
 
 - #define V_OFFSET  (0x100)
 
 - //#define IAR
 
  
- #ifdef IAR    
 
 - /* IAR */
 
 - static const uint32_t gu32OtpAddr[1] [url=home.php?mod=space&uid=72445]@[/url] OTP_OFFSET = {OTP_SIG1};
 
 - static const uint32_t gu32VAddr[1] @ V_OFFSET = {Version};
 
 - #else
 
 - /* Keil */
 
 -  __attribute__((at(OTP_OFFSET))) static const unsigned int gu32OtpAddr[1] = {OTP_SIG1};  
 
 -  __attribute__((at(V_OFFSET))) static const unsigned int gu32VAddr[1] = {Version}; 
 
 - #endif
 
 - /*---------------------------------------------------------------------------------------------------------*/
 
 - /* Global variables                                                                                        */
 
 - /*---------------------------------------------------------------------------------------------------------*/
 
 - uint32_t g_au32BufS[1],g_au32BufV[1];;
 
  
- void SYS_Init(void)
 
 - {
 
 -     /*---------------------------------------------------------------------------------------------------------*/
 
 -     /* Init System Clock                                                                                       */
 
 -     /*---------------------------------------------------------------------------------------------------------*/
 
  
-     /* Enable  XTAL */
 
 -     CLK->PWRCTL |= CLK_PWRCTL_HXTEN_Msk;
 
  
-     CLK_SetCoreClock(96000000);
 
 -         
 
 -     /* Set PCLK divider */
 
 -     CLK_SetModuleClock(PCLK_MODULE, NULL, 1);
 
  
-     /* Update System Core Clock */
 
 -     SystemCoreClockUpdate();
 
  
-     /* Enable IP clock */
 
 -     CLK_EnableModuleClock(UART0_MODULE);
 
  
-     /* Select IP clock source */
 
 -     CLK_SetModuleClock(UART0_MODULE, CLK_UART0_SRC_EXT, 0);
 
  
-     /*---------------------------------------------------------------------------------------------------------*/
 
 -     /* Init I/O Multi-function                                                                                 */
 
 -     /*---------------------------------------------------------------------------------------------------------*/
 
 -     /* Configure multi-function pins for UART0 RXD and TXD */
 
 -     SYS->GPB_MFPL  = (SYS->GPB_MFPL & (~SYS_GPB_MFPL_PB0MFP_Msk) ) | SYS_GPB_MFPL_PB0MFP_UART0_TXD;
 
 -     SYS->GPB_MFPL  = (SYS->GPB_MFPL & (~SYS_GPB_MFPL_PB1MFP_Msk) ) | SYS_GPB_MFPL_PB1MFP_UART0_RXD;
 
  
- }
 
  
- void UART0_Init()
 
 - {
 
 -     /*---------------------------------------------------------------------------------------------------------*/
 
 -     /* Init UART                                                                                               */
 
 -     /*---------------------------------------------------------------------------------------------------------*/
 
 -     /* Reset UART module */
 
 -     SYS_ResetModule(UART0_RST);
 
  
-     /* Configure UART0 and set UART0 baud rate */
 
 -     UART_Open(UART0, 115200);
 
 - }
 
  
- /*---------------------------------------------------------------------------------------------------------*/
 
 - /* MAIN function                                                                                           */
 
 - /*---------------------------------------------------------------------------------------------------------*/
 
 - int32_t main(void)
 
 - {
 
 -         
 
 -     SYS_Init();
 
 -     UART0_Init();
 
 -     printf("+-------------------------------------+ \n");
 
 -     printf("| NUC505 Cipher Signature Sample Code | \n");
 
 -     printf("+-------------------------------------+ \n");
 
 -     /* Set OTP */
 
 - #ifdef IAR   
 
 -     if (0)
 
 -      {
 
 -        uint32_t s;
 
 -        s = gu32OtpAddr[0]+1;
 
 -      }
 
 -     if (0)
 
 -      {
 
 -        uint32_t s;
 
 -        s = gu32VAddr[0]+1;
 
 -      }
 
 - #endif
 
 -                 
 
 -                 printf("The signature is 0x20040929\n");
 
 -                 printf("The Version is 0xabcd0001\n");
 
 -                  
 
 -                 memset((char *)g_au32BufS, 0, 32);
 
 -                 memset((char *)g_au32BufV, 0, 32);
 
 -                  
 
 -                 /* Load signature from SPI Flash 0x130 */
 
 -                 memcpy(g_au32BufS,(void *)304 , sizeof(uint32_t)*1);
 
 -                 /* Load Version from SPI Flash 0x100 */
 
 -                 memcpy(g_au32BufV,(void *)256 , sizeof(uint32_t)*1);
 
 -                 
 
 -                  if((g_au32BufS[0]==OTP_SIG1)&&(g_au32BufV[0]==Version)){
 
 -                         printf("Verify the Data is correct\n");
 
 -                         printf("Demo complete\n");
 
 -                 }
 
 -                 else{
 
 -                         printf("Data validation error\n");
 
 -                 }
 
 -                 while(1);        
 
 - }
 
  
- /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/
 
  
 
  
  |