Subversion Repositories svnkaklik

Rev

Blame | Last modification | View Log | Download

GAS LISTING /tmp/ccaC5L8h.s                     page 1


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


  58                            .stabs  "int_fast64_t:t(4,25)=(4,7)",128,0,230,0
  59                            .stabs  "uint_fast64_t:t(4,26)=(4,8)",128,0,235,0
  60                            .stabs  "intmax_t:t(4,27)=(4,7)",128,0,249,0
  61                            .stabs  "uintmax_t:t(4,28)=(4,8)",128,0,254,0
  62                            .stabn  162,0,0,0
  63                            .stabs  "int_farptr_t:t(3,1)=(4,5)",128,0,76,0
  64                            .stabs  "uint_farptr_t:t(3,2)=(4,6)",128,0,80,0
  65                            .stabn  162,0,0,0
  66                            .stabn  162,0,0,0
  67                            .stabn  162,0,0,0
  68                            .stabs  "CamConfig.h",130,0,0,0
  69                            .stabs  "I2CInterface.h",130,0,0,0
  70                            .stabs  "CommonDefs.h",130,0,0,0
  71                            .stabs  "bool_t:t(7,1)=(0,11)",128,0,56,0
  72                            .stabn  162,0,0,0
  73                            .stabs  "i2cCmd_t:t(6,1)=(6,2)=s2configReg:(0,11),0,8;data:(0,11),8,8;;",128,0,53,0
  74                            .stabn  162,0,0,0
  75                            .stabn  162,0,0,0
  76                            .stabs  "CamConfig_writeTxFifo:F(7,1)",36,0,155,CamConfig_writeTxFifo
  77                            .stabs  "cmd:P(6,1)",64,0,154,24
  78                    .global CamConfig_writeTxFifo
  79                            .type   CamConfig_writeTxFifo, @function
  80                    CamConfig_writeTxFifo:
  81                            .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
GAS LISTING /tmp/ccaC5L8h.s                    page 3


  34:CamConfig.c   ****         I2CInterface module to perform this configuration.
  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 */
GAS LISTING /tmp/ccaC5L8h.s                    page 4


  91:CamConfig.c   ****         
  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
GAS LISTING /tmp/ccaC5L8h.s                    page 5


 148:CamConfig.c   ****         adding a new command to the tx fifo.  It adjusts all
 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   **** {
  82                            .stabn  68,0,155,.LM0-CamConfig_writeTxFifo
  83                    .LM0:
  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-CamConfig_writeTxFifo
  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-CamConfig_writeTxFifo
  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-CamConfig_writeTxFifo
 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 09F4                  brne .L2
 108                            .stabn  68,0,163,.LM4-CamConfig_writeTxFifo
 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/ccaC5L8h.s                    page 6


 114                            .stabn  68,0,172,.LM5-CamConfig_writeTxFifo
 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,CamConfig_writeTxFifo-CamConfig_writeTxFifo
 124                            .stabn  224,0,0,.Lscope0-CamConfig_writeTxFifo
 125                    .Lscope0:
 126                            .stabs  "",36,0,0,.Lscope0-CamConfig_writeTxFifo
 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-CamConfig_setCamReg
 136                    .LM6:
 137                    /* prologue: frame size=0 */
 138                    /* prologue end (size=0) */
 139                            .stabn  68,0,110,.LM7-CamConfig_setCamReg
 140                    .LM7:
 141 0030 282F                  mov r18,r24
 142                            .stabn  68,0,111,.LM8-CamConfig_setCamReg
 143                    .LM8:
 144 0032 362F                  mov r19,r22
 145                            .stabn  68,0,113,.LM9-CamConfig_setCamReg
 146                    .LM9:
 147 0034 C901                  movw r24,r18
 148 0036 E4DF                  rcall CamConfig_writeTxFifo
 149                    /* epilogue: frame size=0 */
 150 0038 0895                  ret
 151                    /* epilogue end (size=1) */
 152                    /* function CamConfig_setCamReg size 5 (4) */
 153                            .size   CamConfig_setCamReg, .-CamConfig_setCamReg
 154                            .stabs  "cmd:r(6,1)",64,0,108,18
 155                            .stabn  192,0,0,CamConfig_setCamReg-CamConfig_setCamReg
 156                            .stabn  224,0,0,.Lscope1-CamConfig_setCamReg
 157                    .Lscope1:
 158                            .stabs  "",36,0,0,.Lscope1-CamConfig_setCamReg
 159                            .stabd  78,0,0
 160                            .stabs  "CamConfig_sendFifoCmds:F(0,15)",36,0,132,CamConfig_sendFifoCmds
 161                    .global CamConfig_sendFifoCmds
 162                            .type   CamConfig_sendFifoCmds, @function
 163                    CamConfig_sendFifoCmds:
 164                            .stabd  46,0,0
 165                            .stabn  68,0,132,.LM10-CamConfig_sendFifoCmds
 166                    .LM10:
 167                    /* prologue: frame size=2 */
 168 003a 0F93                  push r16
 169 003c 1F93                  push r17
 170 003e CF93                  push r28
GAS LISTING /tmp/ccaC5L8h.s                    page 7


 171 0040 DF93                  push r29
 172 0042 CDB7                  in r28,__SP_L__
 173 0044 DEB7                  in r29,__SP_H__
 174 0046 2297                  sbiw r28,2
 175 0048 0FB6                  in __tmp_reg__,__SREG__
 176 004a F894                  cli
 177 004c DEBF                  out __SP_H__,r29
 178 004e 0FBE                  out __SREG__,__tmp_reg__
 179 0050 CDBF                  out __SP_L__,r28
 180                    /* prologue end (size=12) */
 181 0052 8E01                  movw r16,r28
 182 0054 0F5F                  subi r16,lo8(-(1))
 183 0056 1F4F                  sbci r17,hi8(-(1))
 184 0058 19C0                  rjmp .L7
 185                    .L8:
 186                    .LBB4:
 187                    .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];   
 188                            .stabn  68,0,187,.LM11-CamConfig_sendFifoCmds
 189                    .LM11:
 190 005a E32F                  mov r30,r19
 191 005c FF27                  clr r31
 192 005e EE0F                  lsl r30
 193 0060 FF1F                  rol r31
 194 0062 E050                  subi r30,lo8(-(CamConfig_txFifo))
 195 0064 F040                  sbci r31,hi8(-(CamConfig_txFifo))
 196 0066 9181                  ldd r25,Z+1
 197 0068 2081                  ld r18,Z
 188:CamConfig.c   ****         tmpTail = (CamConfig_txFifoTail+1) & (CAM_CONFIG_TX_FIFO_MASK);
 189:CamConfig.c   ****         CamConfig_txFifoTail = tmpTail;
 198                            .stabn  68,0,189,.LM12-CamConfig_sendFifoCmds
 199                    .LM12:
 200 006a 832F                  mov r24,r19
 201 006c 8F5F                  subi r24,lo8(-(1))
 202 006e 8770                  andi r24,lo8(7)
 203 0070 8093 0000             sts CamConfig_txFifoTail,r24
 204                            .stabn  68,0,137,.LM13-CamConfig_sendFifoCmds
 205                    .LM13:
 206 0074 9A83                  std Y+2,r25
 207 0076 2983                  std Y+1,r18
 208                    .LBE5:
 209                    .LBE4:
 210                            .stabn  68,0,138,.LM14-CamConfig_sendFifoCmds
GAS LISTING /tmp/ccaC5L8h.s                    page 8


 211                    .LM14:
 212 0078 42E0                  ldi r20,lo8(2)
 213 007a B801                  movw r22,r16
 214 007c 80E6                  ldi r24,lo8(96)
 215 007e 00D0                  rcall I2CInt_writeData
 216                            .stabn  68,0,139,.LM15-CamConfig_sendFifoCmds
 217                    .LM15:
 218 0080 84E6                  ldi r24,lo8(100)
 219 0082 90E0                  ldi r25,hi8(100)
 220 0084 00D0                  rcall Utility_delay
 221                    .L9:
 222                            .stabn  68,0,141,.LM16-CamConfig_sendFifoCmds
 223                    .LM16:
 224 0086 00D0                  rcall I2CInt_isI2cBusy
 225 0088 8130                  cpi r24,lo8(1)
 226 008a E9F3                  breq .L9
 227                    .L7:
 228                            .stabn  68,0,135,.LM17-CamConfig_sendFifoCmds
 229                    .LM17:
 230 008c 3091 0000             lds r19,CamConfig_txFifoTail
 231 0090 8091 0000             lds r24,CamConfig_txFifoHead
 232 0094 8317                  cp r24,r19
 233 0096 09F7                  brne .L8
 234                    /* epilogue: frame size=2 */
 235 0098 2296                  adiw r28,2
 236 009a 0FB6                  in __tmp_reg__,__SREG__
 237 009c F894                  cli
 238 009e DEBF                  out __SP_H__,r29
 239 00a0 0FBE                  out __SREG__,__tmp_reg__
 240 00a2 CDBF                  out __SP_L__,r28
 241 00a4 DF91                  pop r29
 242 00a6 CF91                  pop r28
 243 00a8 1F91                  pop r17
 244 00aa 0F91                  pop r16
 245 00ac 0895                  ret
 246                    /* epilogue end (size=11) */
 247                    /* function CamConfig_sendFifoCmds size 58 (35) */
 248                            .size   CamConfig_sendFifoCmds, .-CamConfig_sendFifoCmds
 249                            .stabs  "cmd:(6,1)",128,0,133,1
 250                            .stabn  192,0,0,CamConfig_sendFifoCmds-CamConfig_sendFifoCmds
 251                            .stabn  224,0,0,.Lscope2-CamConfig_sendFifoCmds
 252                    .Lscope2:
 253                            .stabs  "",36,0,0,.Lscope2-CamConfig_sendFifoCmds
 254                            .stabd  78,0,0
 255                            .stabs  "CamConfig_init:F(0,15)",36,0,85,CamConfig_init
 256                    .global CamConfig_init
 257                            .type   CamConfig_init, @function
 258                    CamConfig_init:
 259                            .stabd  46,0,0
 260                            .stabn  68,0,85,.LM18-CamConfig_init
 261                    .LM18:
 262                    /* prologue: frame size=0 */
 263                    /* prologue end (size=0) */
 264                            .stabn  68,0,86,.LM19-CamConfig_init
 265                    .LM19:
 266 00ae 60E2                  ldi r22,lo8(32)
 267 00b0 84E1                  ldi r24,lo8(20)
GAS LISTING /tmp/ccaC5L8h.s                    page 9


 268 00b2 BEDF                  rcall CamConfig_setCamReg
 269                            .stabn  68,0,87,.LM20-CamConfig_init
 270                    .LM20:
 271 00b4 60E4                  ldi r22,lo8(64)
 272 00b6 89E3                  ldi r24,lo8(57)
 273 00b8 BBDF                  rcall CamConfig_setCamReg
 274                            .stabn  68,0,88,.LM21-CamConfig_init
 275                    .LM21:
 276 00ba 68E2                  ldi r22,lo8(40)
 277 00bc 82E1                  ldi r24,lo8(18)
 278 00be B8DF                  rcall CamConfig_setCamReg
 279                            .stabn  68,0,89,.LM22-CamConfig_init
 280                    .LM22:
 281 00c0 65E0                  ldi r22,lo8(5)
 282 00c2 88E2                  ldi r24,lo8(40)
 283 00c4 B5DF                  rcall CamConfig_setCamReg
 284                            .stabn  68,0,90,.LM23-CamConfig_init
 285                    .LM23:
 286 00c6 61E0                  ldi r22,lo8(1)
 287 00c8 83E1                  ldi r24,lo8(19)
 288 00ca B2DF                  rcall CamConfig_setCamReg
 289                            .stabn  68,0,93,.LM24-CamConfig_init
 290                    .LM24:
 291 00cc B6DF                  rcall CamConfig_sendFifoCmds
 292                    /* epilogue: frame size=0 */
 293 00ce 0895                  ret
 294                    /* epilogue end (size=1) */
 295                    /* function CamConfig_init size 17 (16) */
 296                            .size   CamConfig_init, .-CamConfig_init
 297                    .Lscope3:
 298                            .stabs  "",36,0,0,.Lscope3-CamConfig_init
 299                            .stabd  78,0,0
 300                    .global CamConfig_txFifoHead
 301                    .global CamConfig_txFifoHead
 302                            .section .bss
 303                            .type   CamConfig_txFifoHead, @object
 304                            .size   CamConfig_txFifoHead, 1
 305                    CamConfig_txFifoHead:
 306 0000 00                    .skip 1,0
 307                    .global CamConfig_txFifoTail
 308                    .global CamConfig_txFifoTail
 309                            .type   CamConfig_txFifoTail, @object
 310                            .size   CamConfig_txFifoTail, 1
 311                    CamConfig_txFifoTail:
 312 0001 00                    .skip 1,0
 313                            .comm CamConfig_txFifo,16,1
 314                            .stabs  "CamConfig_txFifo:G(0,16)=ar(0,17)=r(0,17);0;0177777;;0;7;(6,1)",32,0,73,0
 315                            .stabs  "CamConfig_txFifoHead:G(0,11)",32,0,74,0
 316                            .stabs  "CamConfig_txFifoTail:G(0,11)",32,0,75,0
 317                            .text
 318                            .stabs  "",100,0,0,.Letext0
 319                    .Letext0:
 320                    /* File "CamConfig.c": code  104 = 0x0068 (  78), prologues  12, epilogues  14 */
GAS LISTING /tmp/ccaC5L8h.s                    page 10


DEFINED SYMBOLS
                            *ABS*:00000000 CamConfig.c
     /tmp/ccaC5L8h.s:3      *ABS*:0000003f __SREG__
     /tmp/ccaC5L8h.s:4      *ABS*:0000003e __SP_H__
     /tmp/ccaC5L8h.s:5      *ABS*:0000003d __SP_L__
     /tmp/ccaC5L8h.s:6      *ABS*:00000000 __tmp_reg__
     /tmp/ccaC5L8h.s:7      *ABS*:00000001 __zero_reg__
     /tmp/ccaC5L8h.s:80     .text:00000000 CamConfig_writeTxFifo
     /tmp/ccaC5L8h.s:305    .bss:00000000 CamConfig_txFifoHead
                            *COM*:00000010 CamConfig_txFifo
     /tmp/ccaC5L8h.s:311    .bss:00000001 CamConfig_txFifoTail
     /tmp/ccaC5L8h.s:133    .text:00000030 CamConfig_setCamReg
     /tmp/ccaC5L8h.s:163    .text:0000003a CamConfig_sendFifoCmds
     /tmp/ccaC5L8h.s:258    .text:000000ae CamConfig_init

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
I2CInt_writeData
Utility_delay
I2CInt_isI2cBusy