⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_int00.c

📁 DSP系统启动源代码。实现系统的初始化
💻 C
字号:

/*****************************************************************************/
/* C_INT00() - C ENVIRONMENT ENTRY POINT                                     */
/*****************************************************************************/
extern void __interrupt c_int00()
{
   /*------------------------------------------------------------------------*/
   /* SET UP THE STACK POINTER IN B15.                                       */
   /* THE STACK POINTER POINTS 1 WORD PAST THE TOP OF THE STACK, SO SUBTRACT */
   /* 1 WORD FROM THE SIZE.                                                  */
   /*------------------------------------------------------------------------*/
   __asm("      mvkl __stack,SP");
   __asm("      mvkh __stack,SP");
   __asm("      mvkl __STACK_SIZE - 4,B0");
   __asm("      mvkh __STACK_SIZE - 4,B0");
   __asm("      add  B0,SP,SP");

   /*------------------------------------------------------------------------*/
   /* THE SP MUST BE ALIGNED ON AN 8-BYTE BOUNDARY.                          */
   /*------------------------------------------------------------------------*/
   __asm("      and  ~7,SP,SP");               

   /*------------------------------------------------------------------------*/
   /* SET UP THE GLOBAL PAGE POINTER IN B14.                                 */
   /*------------------------------------------------------------------------*/
   __asm("      .global $bss");
   __asm("      mvkl $bss,DP");
   __asm("      mvkh $bss,DP");

   /*------------------------------------------------------------------------*/
   /* SET UP FLOATING POINT REGISTERS FOR C70 ONLY                           */
   /*------------------------------------------------------------------------*/
#ifdef _TMS320C6700
   __asm("      mvk   0,B3");     /* round to nearest */
   __asm("      mvc   B3,FADCR");
   __asm("      mvc   B3,FMCR");
#endif

   /*------------------------------------------------------------------------*/
   /* GET THE POINTER TO THE AUTOINITIALIZATION TABLES INTO THE FIRST	     */
   /* ARGUMENT REGISTER (A4)						     */
   /*------------------------------------------------------------------------*/
   __asm("      .global cinit");
   __asm("      mvkl cinit,A4");
   __asm("      mvkh cinit,A4");

   /*------------------------------------------------------------------------*/
   /* PASS THE CURRENT DP TO THE AUTOINITIALIZATION ROUTINE.                 */
   /*------------------------------------------------------------------------*/
   __asm("      mv   DP,B4");

   /*------------------------------------------------------------------------*/
   /* CALL THE AUTOINITIALIZATION ROUTINE.                                   */
   /*------------------------------------------------------------------------*/
   __asm("      .global __auto_init");
   __asm("      mvkl $aiRL,B3");
   __asm("      mvkh $aiRL,B3");
   __asm("      mvkl __auto_init, B0");
   __asm("      mvkh __auto_init, B0");
   __asm("      b    B0"); /* far call */
   __asm("      NOP  5");
   __asm("$aiRL:");

   /*------------------------------------------------------------------------*/
   /* CALL THE USER'S PROGRAM.                                               */
   /*------------------------------------------------------------------------*/
   main();

   /*------------------------------------------------------------------------*/
   /* CALL EXIT.                                                             */
   /*------------------------------------------------------------------------*/
   exit(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -