Subversion Repositories svnkaklik

Rev

Rev 410 | Blame | Compare with Previous | Last modification | View Log | Download

GAS LISTING /tmp/cczUgJ5X.s                     page 1


   1                            .file   "CamConfig.c"
   2                    __SREG__ = 0x3f
   3                    __SP_H__ = 0x3e
   4                    __SP_L__ = 0x3d
   5                    __tmp_reg__ = 0
   6                    __zero_reg__ = 1
   7                            .global __do_copy_data
   8                            .global __do_clear_bss
   9                            .stabs  "/home/kaklik/projects/programy/C/avr/AVRcam/",100,0,2,.Ltext0
  10                            .stabs  "CamConfig.c",100,0,2,.Ltext0
  11                            .text
  12                    .Ltext0:
  13                            .stabs  "gcc2_compiled.",60,0,0,0
  14                            .stabs  "int:t(0,1)=r(0,1);-32768;32767;",128,0,0,0
  15                            .stabs  "char:t(0,2)=@s8;r(0,2);0;255;",128,0,0,0
  16                            .stabs  "long int:t(0,3)=@s32;r(0,3);020000000000;017777777777;",128,0,0,0
  17                            .stabs  "unsigned int:t(0,4)=r(0,4);0;0177777;",128,0,0,0
  18                            .stabs  "long unsigned int:t(0,5)=@s32;r(0,5);0;037777777777;",128,0,0,0
  19                            .stabs  "long long int:t(0,6)=@s64;r(0,6);01000000000000000000000;0777777777777777777777;",128,0,0,
  20                            .stabs  "long long unsigned int:t(0,7)=@s64;r(0,7);0;01777777777777777777777;",128,0,0,0
  21                            .stabs  "short int:t(0,8)=r(0,8);-32768;32767;",128,0,0,0
  22                            .stabs  "short unsigned int:t(0,9)=r(0,9);0;0177777;",128,0,0,0
  23                            .stabs  "signed char:t(0,10)=@s8;r(0,10);-128;127;",128,0,0,0
  24                            .stabs  "unsigned char:t(0,11)=@s8;r(0,11);0;255;",128,0,0,0
  25                            .stabs  "float:t(0,12)=r(0,1);4;0;",128,0,0,0
  26                            .stabs  "double:t(0,13)=r(0,1);4;0;",128,0,0,0
  27                            .stabs  "long double:t(0,14)=r(0,1);4;0;",128,0,0,0
  28                            .stabs  "void:t(0,15)=(0,15)",128,0,0,0
  29                            .stabs  "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/io.h",130,0,0,0
  30                            .stabs  "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/avr/sfr_defs.h",130,0,0,0
  31                            .stabs  "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/inttypes.h",130,0,0,0
  32                            .stabs  "/usr/lib/gcc/avr/4.2.1/../../../../avr/include/stdint.h",130,0,0,0
  33                            .stabs  "int8_t:t(4,1)=(0,10)",128,0,116,0
  34                            .stabs  "uint8_t:t(4,2)=(0,11)",128,0,117,0
  35                            .stabs  "int16_t:t(4,3)=(0,1)",128,0,118,0
  36                            .stabs  "uint16_t:t(4,4)=(0,4)",128,0,119,0
  37                            .stabs  "int32_t:t(4,5)=(0,3)",128,0,120,0
  38                            .stabs  "uint32_t:t(4,6)=(0,5)",128,0,121,0
  39                            .stabs  "int64_t:t(4,7)=(0,6)",128,0,122,0
  40                            .stabs  "uint64_t:t(4,8)=(0,7)",128,0,123,0
  41                            .stabs  "intptr_t:t(4,9)=(4,3)",128,0,135,0
  42                            .stabs  "uintptr_t:t(4,10)=(4,4)",128,0,140,0
  43                            .stabs  "int_least8_t:t(4,11)=(4,1)",128,0,152,0
  44                            .stabs  "uint_least8_t:t(4,12)=(4,2)",128,0,157,0
  45                            .stabs  "int_least16_t:t(4,13)=(4,3)",128,0,162,0
  46                            .stabs  "uint_least16_t:t(4,14)=(4,4)",128,0,167,0
  47                            .stabs  "int_least32_t:t(4,15)=(4,5)",128,0,172,0
  48                            .stabs  "uint_least32_t:t(4,16)=(4,6)",128,0,177,0
  49                            .stabs  "int_least64_t:t(4,17)=(4,7)",128,0,182,0
  50                            .stabs  "uint_least64_t:t(4,18)=(4,8)",128,0,187,0
  51                            .stabs  "int_fast8_t:t(4,19)=(4,1)",128,0,200,0
  52                            .stabs  "uint_fast8_t:t(4,20)=(4,2)",128,0,205,0
  53                            .stabs  "int_fast16_t:t(4,21)=(4,3)",128,0,210,0
  54                            .stabs  "uint_fast16_t:t(4,22)=(4,4)",128,0,215,0
  55                            .stabs  "int_fast32_t:t(4,23)=(4,5)",128,0,220,0
  56                            .stabs  "uint_fast32_t:t(4,24)=(4,6)",128,0,225,0
  57                            .stabs  "int_fast64_t:t(4,25)=(4,7)",128,0,230,0
GAS LISTING /tmp/cczUgJ5X.s                    page 2


  58                            .stabs  "uint_fast64_t:t(4,26)=(4,8)",128,0,235,0
  59                            .stabs  "intmax_t:t(4,27)=(4,7)",128,0,249,0
  60                            .stabs  "uintmax_t:t(4,28)=(4,8)",128,0,254,0
  61                            .stabn  162,0,0,0
  62                            .stabs  "int_farptr_t:t(3,1)=(4,5)",128,0,76,0
  63                            .stabs  "uint_farptr_t:t(3,2)=(4,6)",128,0,80,0
  64                            .stabn  162,0,0,0
  65                            .stabn  162,0,0,0
  66                            .stabn  162,0,0,0
  67                            .stabs  "CamConfig.h",130,0,0,0
  68                            .stabs  "I2CInterface.h",130,0,0,0
  69                            .stabs  "CommonDefs.h",130,0,0,0
  70                            .stabs  "bool_t:t(7,1)=(0,11)",128,0,56,0
  71                            .stabn  162,0,0,0
  72                            .stabs  "i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
  73                            .stabn  162,0,0,0
  74                            .stabn  162,0,0,0
  75                            .stabs  "CamConfig_writeTxFifo:F(7,1)",36,0,155,CamConfig_writeTxFifo
  76                            .stabs  "cmd:P(6,1)",64,0,154,24
  77                    .global CamConfig_writeTxFifo
  78                            .type   CamConfig_writeTxFifo, @function
  79                    CamConfig_writeTxFifo:
  80                            .stabd  46,0,0
   1:CamConfig.c   **** /*
   2:CamConfig.c   ****     Copyright (C) 2004    John Orlando
   3:CamConfig.c   ****     
   4:CamConfig.c   ****    AVRcam: a small real-time image processing engine.
   5:CamConfig.c   **** 
   6:CamConfig.c   ****     This program is free software; you can redistribute it and/or
   7:CamConfig.c   ****     modify it under the terms of the GNU General Public
   8:CamConfig.c   ****     License as published by the Free Software Foundation; either
   9:CamConfig.c   ****     version 2 of the License, or (at your option) any later version.
  10:CamConfig.c   **** 
  11:CamConfig.c   ****     This program is distributed in the hope that it will be useful,
  12:CamConfig.c   ****     but WITHOUT ANY WARRANTY; without even the implied warranty of
  13:CamConfig.c   ****     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14:CamConfig.c   ****     General Public License for more details.
  15:CamConfig.c   **** 
  16:CamConfig.c   ****     You should have received a copy of the GNU General Public
  17:CamConfig.c   ****     License along with this program; if not, write to the Free Software
  18:CamConfig.c   ****     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19:CamConfig.c   **** 
  20:CamConfig.c   ****    For more information on the AVRcam, please contact:
  21:CamConfig.c   **** 
  22:CamConfig.c   ****    john@jrobot.net
  23:CamConfig.c   **** 
  24:CamConfig.c   ****    or go to www.jrobot.net for more details regarding the system.
  25:CamConfig.c   **** */
  26:CamConfig.c   **** /**********************************************************
  27:CamConfig.c   ****         Module Name: CamConfig.c
  28:CamConfig.c   ****         Module Date: 04/10/2004
  29:CamConfig.c   ****     Module Auth: John Orlando 
  30:CamConfig.c   ****         
  31:CamConfig.c   ****         Description: This module is responsible for the 
  32:CamConfig.c   ****         high-level configuration activities of the OV6620
  33:CamConfig.c   ****         camera module.  This module interfaces with the
  34:CamConfig.c   ****         I2CInterface module to perform this configuration.
GAS LISTING /tmp/cczUgJ5X.s                    page 3


  35:CamConfig.c   ****     
  36:CamConfig.c   ****     Revision History:
  37:CamConfig.c   ****     Date        Rel Ver.    Notes
  38:CamConfig.c   ****     4/10/2004      0.1     Module created
  39:CamConfig.c   ****     6/30/2004      1.0     Initial release for Circuit Cellar
  40:CamConfig.c   ****                            contest.
  41:CamConfig.c   ****     11/15/2004     1.2     Added code to un-tri-state the
  42:CamConfig.c   ****                            OV6620's pixel data busses at
  43:CamConfig.c   ****                            startup after four seconds.  
  44:CamConfig.c   ****                            This was added in to 
  45:CamConfig.c   ****                            allow the user to re-program the
  46:CamConfig.c   ****                            mega8 at startup if needed.
  47:CamConfig.c   **** ***********************************************************/
  48:CamConfig.c   **** 
  49:CamConfig.c   **** /*  Includes */
  50:CamConfig.c   **** #include <avr/io.h>
  51:CamConfig.c   **** #include "CamConfig.h"
  52:CamConfig.c   **** #include "I2CInterface.h"
  53:CamConfig.c   **** #include "CommonDefs.h"
  54:CamConfig.c   **** #include "Utility.h"
  55:CamConfig.c   **** 
  56:CamConfig.c   **** /**********************************************************/
  57:CamConfig.c   **** /*  Definitions */
  58:CamConfig.c   **** /* The length of an I2C command is made up of a register address
  59:CamConfig.c   **** plus the actual value of the register */
  60:CamConfig.c   **** #define SIZE_OF_I2C_CMD 2
  61:CamConfig.c   **** #define MAX_NUM_CONFIG_CMDS 8
  62:CamConfig.c   **** #define CAM_CONFIG_TX_FIFO_SIZE MAX_NUM_CONFIG_CMDS 
  63:CamConfig.c   **** #define CAM_CONFIG_TX_FIFO_MASK CAM_CONFIG_TX_FIFO_SIZE-1
  64:CamConfig.c   **** 
  65:CamConfig.c   **** /*  Local Variables */
  66:CamConfig.c   **** 
  67:CamConfig.c   **** /*  Local Structures and Typedefs */
  68:CamConfig.c   **** 
  69:CamConfig.c   **** /*  Local Function Prototypes */
  70:CamConfig.c   **** static i2cCmd_t CamConfig_readTxFifo(void);
  71:CamConfig.c   **** 
  72:CamConfig.c   **** /*  Extern Variables */
  73:CamConfig.c   **** i2cCmd_t                CamConfig_txFifo[CAM_CONFIG_TX_FIFO_SIZE];
  74:CamConfig.c   **** unsigned char CamConfig_txFifoHead=0;
  75:CamConfig.c   **** unsigned char CamConfig_txFifoTail=0;
  76:CamConfig.c   **** 
  77:CamConfig.c   **** /***********************************************************
  78:CamConfig.c   ****         Function Name: CamConfig_init
  79:CamConfig.c   ****         Function Description: This function is responsible for
  80:CamConfig.c   ****         performing the initial configuration of the camera.
  81:CamConfig.c   ****         Inputs:  none
  82:CamConfig.c   ****         Outputs: none
  83:CamConfig.c   **** ***********************************************************/    
  84:CamConfig.c   **** void CamConfig_init(void)
  85:CamConfig.c   **** {
  86:CamConfig.c   ****         CamConfig_setCamReg(0x14,0x20);  /* reduce frame size */
  87:CamConfig.c   ****         CamConfig_setCamReg(0x39,0x40);  /* gate PCLK with HREF */
  88:CamConfig.c   ****         CamConfig_setCamReg(0x12,0x28);  /* set RGB mode, with no AWB */
  89:CamConfig.c   ****         CamConfig_setCamReg(0x28,0x05);  /* set color sequencer */
  90:CamConfig.c   ****     CamConfig_setCamReg(0x13,0x01);  /* un-tri-state the Y/UV lines */
  91:CamConfig.c   ****         
GAS LISTING /tmp/cczUgJ5X.s                    page 4


  92:CamConfig.c   ****         /* send the first four cmds in the I2C fifo */
  93:CamConfig.c   ****         CamConfig_sendFifoCmds();       
  94:CamConfig.c   **** }
  95:CamConfig.c   **** 
  96:CamConfig.c   **** 
  97:CamConfig.c   **** /***********************************************************
  98:CamConfig.c   ****         Function Name: CamConfig_setCamReg
  99:CamConfig.c   ****         Function Description: This function is responsible for
 100:CamConfig.c   ****         creating an I2C cmd structure and placing it into the
 101:CamConfig.c   ****         cmd fifo.
 102:CamConfig.c   ****         Inputs:  reg - the register to modify
 103:CamConfig.c   ****                  val - the new value of the register
 104:CamConfig.c   ****         Outputs: none
 105:CamConfig.c   **** ***********************************************************/    
 106:CamConfig.c   **** void CamConfig_setCamReg(unsigned char reg, unsigned char val)
 107:CamConfig.c   **** {
 108:CamConfig.c   ****         i2cCmd_t cmd;
 109:CamConfig.c   ****         
 110:CamConfig.c   ****         cmd.configReg = reg;
 111:CamConfig.c   ****         cmd.data = val;
 112:CamConfig.c   **** #ifndef SIMULATION      
 113:CamConfig.c   ****         CamConfig_writeTxFifo(cmd);
 114:CamConfig.c   **** #endif  
 115:CamConfig.c   **** }
 116:CamConfig.c   **** /***********************************************************
 117:CamConfig.c   ****         Function Name: CamConfig_sendFifoCmds
 118:CamConfig.c   ****         Function Description: This function is responsible for
 119:CamConfig.c   ****         sending the entire contents of the config fifo.  This
 120:CamConfig.c   ****         function won't return until the configuration process
 121:CamConfig.c   ****         is complete (or an error is encountered).
 122:CamConfig.c   ****         Inputs:  none
 123:CamConfig.c   ****         Outputs: none
 124:CamConfig.c   ****         Note: Since this function is written to use the TWI
 125:CamConfig.c   ****         interrupt in the I2CInterface module, there will be 
 126:CamConfig.c   ****         some busy-waiting here...no big deal, since we end up
 127:CamConfig.c   ****         having to trash the frame that we are executing this
 128:CamConfig.c   ****         slave write in anyway (since we can't meet the strict
 129:CamConfig.c   ****         timing requirements and write i2c at the same time).
 130:CamConfig.c   **** ***********************************************************/    
 131:CamConfig.c   **** void CamConfig_sendFifoCmds(void)
 132:CamConfig.c   **** {
 133:CamConfig.c   ****         i2cCmd_t cmd;
 134:CamConfig.c   ****         
 135:CamConfig.c   ****         while (CamConfig_txFifoHead != CamConfig_txFifoTail)
 136:CamConfig.c   ****         {
 137:CamConfig.c   ****                 cmd = CamConfig_readTxFifo();
 138:CamConfig.c   ****                 I2CInt_writeData(CAM_ADDRESS,&cmd.configReg,SIZE_OF_I2C_CMD);
 139:CamConfig.c   ****                 Utility_delay(100);             
 140:CamConfig.c   ****                 /* wait for the I2C transaction to complete */
 141:CamConfig.c   ****                 while(I2CInt_isI2cBusy() == TRUE);
 142:CamConfig.c   ****         } 
 143:CamConfig.c   **** }
 144:CamConfig.c   **** 
 145:CamConfig.c   **** /***********************************************************
 146:CamConfig.c   ****         Function Name: CamConfig_writeTxFifo
 147:CamConfig.c   ****         Function Description: This function is responsible for
 148:CamConfig.c   ****         adding a new command to the tx fifo.  It adjusts all
GAS LISTING /tmp/cczUgJ5X.s                    page 5


 149:CamConfig.c   ****         needed pointers.
 150:CamConfig.c   ****         Inputs:  cmd - the i2cCmd_t to add to the fifo
 151:CamConfig.c   ****         Outputs: bool_t - indicating if writing to the fifo
 152:CamConfig.c   ****                  causes it to wrap
 153:CamConfig.c   **** ***********************************************************/    
 154:CamConfig.c   **** bool_t CamConfig_writeTxFifo(i2cCmd_t cmd)
 155:CamConfig.c   **** {
  81                            .stabn  68,0,155,.LM0-.LFBB1
  82                    .LM0:
  83                    .LFBB1:
  84                    /* prologue: frame size=0 */
  85                    /* prologue end (size=0) */
 156:CamConfig.c   ****         unsigned char tmpHead;
 157:CamConfig.c   ****         bool_t retVal = TRUE;
 158:CamConfig.c   ****         
 159:CamConfig.c   ****         CamConfig_txFifo[CamConfig_txFifoHead] = cmd;
  86                            .stabn  68,0,159,.LM1-.LFBB1
  87                    .LM1:
  88 0000 2091 0000             lds r18,CamConfig_txFifoHead
  89 0004 E22F                  mov r30,r18
  90 0006 FF27                  clr r31
  91 0008 EE0F                  lsl r30
  92 000a FF1F                  rol r31
  93 000c E050                  subi r30,lo8(-(CamConfig_txFifo))
  94 000e F040                  sbci r31,hi8(-(CamConfig_txFifo))
  95 0010 9183                  std Z+1,r25
  96 0012 8083                  st Z,r24
 160:CamConfig.c   ****                 
 161:CamConfig.c   ****         /* see if we need to wrap */
 162:CamConfig.c   ****         tmpHead = (CamConfig_txFifoHead+1) & (CAM_CONFIG_TX_FIFO_MASK);
  97                            .stabn  68,0,162,.LM2-.LFBB1
  98                    .LM2:
  99 0014 2F5F                  subi r18,lo8(-(1))
 100 0016 2770                  andi r18,lo8(7)
 163:CamConfig.c   ****         CamConfig_txFifoHead = tmpHead;
 101                            .stabn  68,0,163,.LM3-.LFBB1
 102                    .LM3:
 103 0018 2093 0000             sts CamConfig_txFifoHead,r18
 104 001c 90E0                  ldi r25,lo8(0)
 105 001e 8091 0000             lds r24,CamConfig_txFifoTail
 106 0022 2817                  cp r18,r24
 107 0024 01F4                  brne .L2
 108                            .stabn  68,0,163,.LM4-.LFBB1
 109                    .LM4:
 110 0026 91E0                  ldi r25,lo8(1)
 111                    .L2:
 112 0028 81E0                  ldi r24,lo8(1)
 113 002a 8927                  eor r24,r25
 164:CamConfig.c   ****         
 165:CamConfig.c   ****         /* check to see if we have filled up the queue */
 166:CamConfig.c   ****         if (CamConfig_txFifoHead == CamConfig_txFifoTail)
 167:CamConfig.c   ****         {
 168:CamConfig.c   ****                 /* we wrapped the fifo...return false */
 169:CamConfig.c   ****                 retVal = FALSE;
 170:CamConfig.c   ****         }
 171:CamConfig.c   ****         return(retVal);
 172:CamConfig.c   **** }
GAS LISTING /tmp/cczUgJ5X.s                    page 6


 114                            .stabn  68,0,172,.LM5-.LFBB1
 115                    .LM5:
 116 002c 9927                  clr r25
 117                    /* epilogue: frame size=0 */
 118 002e 0895                  ret
 119                    /* epilogue end (size=1) */
 120                    /* function CamConfig_writeTxFifo size 24 (23) */
 121                            .size   CamConfig_writeTxFifo, .-CamConfig_writeTxFifo
 122                            .stabs  "tmpHead:r(0,11)",64,0,156,18
 123                            .stabn  192,0,0,.LFBB1-.LFBB1
 124                            .stabn  224,0,0,.Lscope1-.LFBB1
 125                    .Lscope1:
 126                            .stabs  "",36,0,0,.Lscope1-.LFBB1
 127                            .stabd  78,0,0
 128                            .stabs  "CamConfig_setCamReg:F(0,15)",36,0,107,CamConfig_setCamReg
 129                            .stabs  "reg:P(0,11)",64,0,106,24
 130                            .stabs  "val:P(0,11)",64,0,106,22
 131                    .global CamConfig_setCamReg
 132                            .type   CamConfig_setCamReg, @function
 133                    CamConfig_setCamReg:
 134                            .stabd  46,0,0
 135                            .stabn  68,0,107,.LM6-.LFBB2
 136                    .LM6:
 137                    .LFBB2:
 138                    /* prologue: frame size=0 */
 139                    /* prologue end (size=0) */
 140                            .stabn  68,0,110,.LM7-.LFBB2
 141                    .LM7:
 142 0030 282F                  mov r18,r24
 143                            .stabn  68,0,111,.LM8-.LFBB2
 144                    .LM8:
 145 0032 362F                  mov r19,r22
 146                            .stabn  68,0,113,.LM9-.LFBB2
 147                    .LM9:
 148 0034 C901                  movw r24,r18
 149 0036 00D0                  rcall CamConfig_writeTxFifo
 150                    /* epilogue: frame size=0 */
 151 0038 0895                  ret
 152                    /* epilogue end (size=1) */
 153                    /* function CamConfig_setCamReg size 5 (4) */
 154                            .size   CamConfig_setCamReg, .-CamConfig_setCamReg
 155                            .stabs  "cmd:r(6,1)",64,0,108,18
 156                            .stabn  192,0,0,.LFBB2-.LFBB2
 157                            .stabn  224,0,0,.Lscope2-.LFBB2
 158                    .Lscope2:
 159                            .stabs  "",36,0,0,.Lscope2-.LFBB2
 160                            .stabd  78,0,0
 161                            .stabs  "CamConfig_sendFifoCmds:F(0,15)",36,0,132,CamConfig_sendFifoCmds
 162                    .global CamConfig_sendFifoCmds
 163                            .type   CamConfig_sendFifoCmds, @function
 164                    CamConfig_sendFifoCmds:
 165                            .stabd  46,0,0
 166                            .stabn  68,0,132,.LM10-.LFBB3
 167                    .LM10:
 168                    .LFBB3:
 169                    /* prologue: frame size=2 */
 170 003a EF92                  push r14
GAS LISTING /tmp/cczUgJ5X.s                    page 7


 171 003c FF92                  push r15
 172 003e 0F93                  push r16
 173 0040 1F93                  push r17
 174 0042 CF93                  push r28
 175 0044 DF93                  push r29
 176 0046 CDB7                  in r28,__SP_L__
 177 0048 DEB7                  in r29,__SP_H__
 178 004a 2297                  sbiw r28,2
 179 004c 0FB6                  in __tmp_reg__,__SREG__
 180 004e F894                  cli
 181 0050 DEBF                  out __SP_H__,r29
 182 0052 0FBE                  out __SREG__,__tmp_reg__
 183 0054 CDBF                  out __SP_L__,r28
 184                    /* prologue end (size=14) */
 185                    .LBB4:
 186                    .LBB5:
 173:CamConfig.c   **** 
 174:CamConfig.c   **** /***********************************************************
 175:CamConfig.c   ****         Function Name: CamConfig_readTxFifo
 176:CamConfig.c   ****         Function Description: This function is responsible for
 177:CamConfig.c   ****         reading a cmd out of the tx fifo.
 178:CamConfig.c   ****         Inputs:  none
 179:CamConfig.c   ****         Outputs: i2cCmd_t - the cmd read from the fifo
 180:CamConfig.c   **** ***********************************************************/    
 181:CamConfig.c   **** static i2cCmd_t CamConfig_readTxFifo(void)
 182:CamConfig.c   **** {
 183:CamConfig.c   ****         i2cCmd_t cmd;
 184:CamConfig.c   ****         unsigned char tmpTail;
 185:CamConfig.c   ****         
 186:CamConfig.c   ****         /* just return the current tail from the rx fifo */
 187:CamConfig.c   ****         cmd = CamConfig_txFifo[CamConfig_txFifoTail];   
 187                            .stabn  68,0,187,.LM11-.LFBB3
 188                    .LM11:
 189 0056 0F2E                  mov __tmp_reg__,r31
 190 0058 F0E0                  ldi r31,lo8(CamConfig_txFifo)
 191 005a EF2E                  mov r14,r31
 192 005c F0E0                  ldi r31,hi8(CamConfig_txFifo)
 193 005e FF2E                  mov r15,r31
 194 0060 F02D                  mov r31,__tmp_reg__
 195                    .LBE5:
 196                    .LBE4:
 197                            .stabn  68,0,138,.LM12-.LFBB3
 198                    .LM12:
 199 0062 8E01                  movw r16,r28
 200 0064 0F5F                  subi r16,lo8(-(1))
 201 0066 1F4F                  sbci r17,hi8(-(1))
 202 0068 00C0                  rjmp .L7
 203                    .L8:
 204                    .LBB7:
 205                    .LBB6:
 206                            .stabn  68,0,187,.LM13-.LFBB3
 207                    .LM13:
 208 006a E32F                  mov r30,r19
 209 006c FF27                  clr r31
 210 006e EE0F                  lsl r30
 211 0070 FF1F                  rol r31
 212 0072 EE0D                  add r30,r14
GAS LISTING /tmp/cczUgJ5X.s                    page 8


 213 0074 FF1D                  adc r31,r15
 214 0076 9181                  ldd r25,Z+1
 215 0078 2081                  ld r18,Z
 188:CamConfig.c   ****         tmpTail = (CamConfig_txFifoTail+1) & (CAM_CONFIG_TX_FIFO_MASK);
 189:CamConfig.c   ****         CamConfig_txFifoTail = tmpTail;
 216                            .stabn  68,0,189,.LM14-.LFBB3
 217                    .LM14:
 218 007a 832F                  mov r24,r19
 219 007c 8F5F                  subi r24,lo8(-(1))
 220 007e 8770                  andi r24,lo8(7)
 221 0080 8093 0000             sts CamConfig_txFifoTail,r24
 222                            .stabn  68,0,137,.LM15-.LFBB3
 223                    .LM15:
 224 0084 9A83                  std Y+2,r25
 225 0086 2983                  std Y+1,r18
 226                    .LBE6:
 227                    .LBE7:
 228                            .stabn  68,0,138,.LM16-.LFBB3
 229                    .LM16:
 230 0088 42E0                  ldi r20,lo8(2)
 231 008a B801                  movw r22,r16
 232 008c 80E6                  ldi r24,lo8(96)
 233 008e 00D0                  rcall I2CInt_writeData
 234                            .stabn  68,0,139,.LM17-.LFBB3
 235                    .LM17:
 236 0090 84E6                  ldi r24,lo8(100)
 237 0092 90E0                  ldi r25,hi8(100)
 238 0094 00D0                  rcall Utility_delay
 239                    .L9:
 240                            .stabn  68,0,141,.LM18-.LFBB3
 241                    .LM18:
 242 0096 00D0                  rcall I2CInt_isI2cBusy
 243 0098 8130                  cpi r24,lo8(1)
 244 009a 01F0                  breq .L9
 245                    .L7:
 246                            .stabn  68,0,135,.LM19-.LFBB3
 247                    .LM19:
 248 009c 3091 0000             lds r19,CamConfig_txFifoTail
 249 00a0 8091 0000             lds r24,CamConfig_txFifoHead
 250 00a4 8317                  cp r24,r19
 251 00a6 01F4                  brne .L8
 252                    /* epilogue: frame size=2 */
 253 00a8 2296                  adiw r28,2
 254 00aa 0FB6                  in __tmp_reg__,__SREG__
 255 00ac F894                  cli
 256 00ae DEBF                  out __SP_H__,r29
 257 00b0 0FBE                  out __SREG__,__tmp_reg__
 258 00b2 CDBF                  out __SP_L__,r28
 259 00b4 DF91                  pop r29
 260 00b6 CF91                  pop r28
 261 00b8 1F91                  pop r17
 262 00ba 0F91                  pop r16
 263 00bc FF90                  pop r15
 264 00be EF90                  pop r14
 265 00c0 0895                  ret
 266                    /* epilogue end (size=13) */
 267                    /* function CamConfig_sendFifoCmds size 68 (41) */
GAS LISTING /tmp/cczUgJ5X.s                    page 9


 268                            .size   CamConfig_sendFifoCmds, .-CamConfig_sendFifoCmds
 269                            .stabs  "cmd:(6,1)",128,0,133,1
 270                            .stabn  192,0,0,.LFBB3-.LFBB3
 271                            .stabn  224,0,0,.Lscope3-.LFBB3
 272                    .Lscope3:
 273                            .stabs  "",36,0,0,.Lscope3-.LFBB3
 274                            .stabd  78,0,0
 275                            .stabs  "CamConfig_init:F(0,15)",36,0,85,CamConfig_init
 276                    .global CamConfig_init
 277                            .type   CamConfig_init, @function
 278                    CamConfig_init:
 279                            .stabd  46,0,0
 280                            .stabn  68,0,85,.LM20-.LFBB4
 281                    .LM20:
 282                    .LFBB4:
 283                    /* prologue: frame size=0 */
 284                    /* prologue end (size=0) */
 285                            .stabn  68,0,86,.LM21-.LFBB4
 286                    .LM21:
 287 00c2 60E2                  ldi r22,lo8(32)
 288 00c4 84E1                  ldi r24,lo8(20)
 289 00c6 00D0                  rcall CamConfig_setCamReg
 290                            .stabn  68,0,87,.LM22-.LFBB4
 291                    .LM22:
 292 00c8 60E4                  ldi r22,lo8(64)
 293 00ca 89E3                  ldi r24,lo8(57)
 294 00cc 00D0                  rcall CamConfig_setCamReg
 295                            .stabn  68,0,88,.LM23-.LFBB4
 296                    .LM23:
 297 00ce 68E2                  ldi r22,lo8(40)
 298 00d0 82E1                  ldi r24,lo8(18)
 299 00d2 00D0                  rcall CamConfig_setCamReg
 300                            .stabn  68,0,89,.LM24-.LFBB4
 301                    .LM24:
 302 00d4 65E0                  ldi r22,lo8(5)
 303 00d6 88E2                  ldi r24,lo8(40)
 304 00d8 00D0                  rcall CamConfig_setCamReg
 305                            .stabn  68,0,90,.LM25-.LFBB4
 306                    .LM25:
 307 00da 61E0                  ldi r22,lo8(1)
 308 00dc 83E1                  ldi r24,lo8(19)
 309 00de 00D0                  rcall CamConfig_setCamReg
 310                            .stabn  68,0,93,.LM26-.LFBB4
 311                    .LM26:
 312 00e0 00D0                  rcall CamConfig_sendFifoCmds
 313                    /* epilogue: frame size=0 */
 314 00e2 0895                  ret
 315                    /* epilogue end (size=1) */
 316                    /* function CamConfig_init size 17 (16) */
 317                            .size   CamConfig_init, .-CamConfig_init
 318                    .Lscope4:
 319                            .stabs  "",36,0,0,.Lscope4-.LFBB4
 320                            .stabd  78,0,0
 321                    .global CamConfig_txFifoHead
 322                    .global CamConfig_txFifoHead
 323                            .section .bss
 324                            .type   CamConfig_txFifoHead, @object
GAS LISTING /tmp/cczUgJ5X.s                    page 10


 325                            .size   CamConfig_txFifoHead, 1
 326                    CamConfig_txFifoHead:
 327 0000 00                    .skip 1,0
 328                    .global CamConfig_txFifoTail
 329                    .global CamConfig_txFifoTail
 330                            .type   CamConfig_txFifoTail, @object
 331                            .size   CamConfig_txFifoTail, 1
 332                    CamConfig_txFifoTail:
 333 0001 00                    .skip 1,0
 334                            .comm CamConfig_txFifo,16,1
 335                            .stabs  "CamConfig_txFifo:G(0,16)=ar(0,17)=r(0,17);0;0177777;;0;7;(6,1)",32,0,73,0
 336                            .stabs  "CamConfig_txFifoHead:G(0,11)",32,0,74,0
 337                            .stabs  "CamConfig_txFifoTail:G(0,11)",32,0,75,0
 338                            .text
 339                            .stabs  "",100,0,0,.Letext0
 340                    .Letext0:
 341                    /* File "CamConfig.c": code  114 = 0x0072 (  84), prologues  14, epilogues  16 */
GAS LISTING /tmp/cczUgJ5X.s                    page 11


DEFINED SYMBOLS
                            *ABS*:00000000 CamConfig.c
     /tmp/cczUgJ5X.s:2      *ABS*:0000003f __SREG__
     /tmp/cczUgJ5X.s:3      *ABS*:0000003e __SP_H__
     /tmp/cczUgJ5X.s:4      *ABS*:0000003d __SP_L__
     /tmp/cczUgJ5X.s:5      *ABS*:00000000 __tmp_reg__
     /tmp/cczUgJ5X.s:6      *ABS*:00000001 __zero_reg__
     /tmp/cczUgJ5X.s:79     .text:00000000 CamConfig_writeTxFifo
     /tmp/cczUgJ5X.s:326    .bss:00000000 CamConfig_txFifoHead
                            *COM*:00000010 CamConfig_txFifo
     /tmp/cczUgJ5X.s:332    .bss:00000001 CamConfig_txFifoTail
     /tmp/cczUgJ5X.s:133    .text:00000030 CamConfig_setCamReg
     /tmp/cczUgJ5X.s:164    .text:0000003a CamConfig_sendFifoCmds
     /tmp/cczUgJ5X.s:278    .text:000000c2 CamConfig_init

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
I2CInt_writeData
Utility_delay
I2CInt_isI2cBusy