0,0 → 1,560 |
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 |