16 Import(
'buildTargets env')
25 PIC24SupportLibSources = [
26 'lib/common/dataXfer.c',
27 'lib/common/dataXferImpl.c',
28 'lib/common/pic24_adc.c',
29 'lib/common/pic24_clockfreq.c',
30 'lib/common/pic24_configbits.c',
31 'lib/common/pic24_ecan.c',
32 'lib/common/pic24_flash.c',
33 'lib/common/pic24_i2c.c',
34 'lib/common/pic24_serial.c',
35 'lib/common/pic24_spi.c',
36 'lib/common/pic24_timer.c',
37 'lib/common/pic24_uart.c',
38 'lib/common/pic24_util.c' ]
40 PIC24SupportLibSourcesSmall = [
41 'lib/common/pic24_clockfreq.c',
42 'lib/common/pic24_configbits.c',
43 'lib/common/pic24_serial.c',
44 'lib/common/pic24_spi.c',
45 'lib/common/pic24_timer.c',
46 'lib/common/pic24_uart.c',
47 'lib/common/pic24_util.c' ]
50 PIC24SupportLibSourcesSmall3 = [
51 'lib/common/pic24_clockfreq.c',
52 'lib/common/pic24_configbits.c',
53 'lib/common/pic24_serial.c',
54 'lib/common/pic24_spi.c',
55 'lib/common/pic24_i2c.c',
56 'lib/common/pic24_adc.c',
57 'lib/common/pic24_timer.c',
58 'lib/common/pic24_uart.c',
59 'lib/common/pic24_util.c' ]
62 PIC24SupportLibSourcesSmall2 = [
63 'lib/common/pic24_clockfreq.c',
64 'lib/common/dataXfer.c',
65 'lib/common/dataXferImpl.c',
66 'lib/common/pic24_configbits.c',
67 'lib/common/pic24_serial.c',
68 'lib/common/pic24_spi.c',
69 'lib/common/pic24_i2c.c',
70 'lib/common/pic24_adc.c',
71 'lib/common/pic24_timer.c',
72 'lib/common/pic24_uart.c',
73 'lib/common/pic24_util.c' ]
95 def cof2hex(cofName, buildEnvironment, aliasString):
96 f = os.path.splitext(cofName)[0]
97 myHex = buildEnvironment.Hex(f, f)
99 buildEnvironment.Alias(aliasString, myHex)
108 def buildProgramWithCommonSources(sourceFileList, commonSources, buildEnvironment,
110 be = buildEnvironment
111 be.Program(sourceFileList + commonSources)
113 cof2hex(sourceFileList[0], be, aliasString)
129 def buildWithCommonSources(sourceFileList, commonSources, buildEnvironment,
130 exceptionDict, aliasString):
131 for sourceFileGlob
in sourceFileList:
132 for sourceFile
in Glob(sourceFileGlob,
True,
True,
True):
134 if sourceFile
in exceptionDict:
136 be = buildEnvironment.Clone()
137 flags = exceptionDict[sourceFile]
146 be = buildEnvironment
147 buildProgramWithCommonSources([sourceFile], commonSources, be,
160 def buildWithCommonLibs(sourceFileList, commonLibs, buildEnvironment):
161 for sourceFileGlob
in sourceFileList:
162 for sourceFile
in Glob(sourceFileGlob,
True,
True,
True):
163 f=os.path.splitext(sourceFile)[0]
164 print sourceFile, f, commonLibs
165 buildEnvironment.Program([sourceFile], LIBS=commonLibs)
166 myHex = buildEnvironment.Hex(f,f)
167 Depends( myHex, commonLibs)
185 PIC24SupportLibObjects = env.Object(PIC24SupportLibSources)
186 PIC24SupportLibObjectsSmall = env.Object(PIC24SupportLibSourcesSmall)
187 PIC24SupportLibObjectsSmall2 = env.Object(PIC24SupportLibSourcesSmall2)
190 if 'reset' in buildTargets:
191 buildWithCommonSources([
'chap8/reset.c'], PIC24SupportLibObjectsSmall, env, {},
'reset')
192 if 'echo' in buildTargets:
193 buildWithCommonSources([
'chap8/echo.c'], PIC24SupportLibObjectsSmall, env, {},
'reset')
194 if 'ledsw1' in buildTargets:
195 buildWithCommonSources([
'chap8/ledsw1.c'], PIC24SupportLibObjectsSmall, env, {},
'ledsw1')
196 if 'chap8' in buildTargets:
197 buildWithCommonSources([
'chap8/*.c'], PIC24SupportLibObjects, env, {},
'chap8')
198 if 'chap9' in buildTargets:
199 buildWithCommonSources([
'chap9/*.c'], PIC24SupportLibObjects, env, {},
'chap9')
200 if 'chap10' in buildTargets:
201 buildWithCommonSources([
202 'chap10/mcp24lc515_i2c_eeprom.c',
203 'chap10/reverse_string.c',
204 'chap10/reverse_string1.c',
205 'chap10/soft_uart.c',
206 'chap10/spi_master_revstring.c',
207 'chap10/spi_slave_revstring.c'],
208 PIC24SupportLibObjects, env,
209 {
'chap10\\reverse_string.c' : {
'CPPDEFINES':
'UART1_RX_INTERRUPT'},
210 'chap10\\reverse_string1.c' : {
'CPPDEFINES': [
'UART1_RX_INTERRUPT',
'UART1_TX_INTERRUPT']}},
212 if 'chap10large' in buildTargets:
213 buildWithCommonSources([
'chap10/stdio_test.c',
214 'chap10/reverse_string_stdio.c',
'chap10/ds1621_i2c.c',
'chap10/ds1631_i2c.c',
'chap10/ds1722_spi_tempsense.c',
215 'chap10/mcp41xxx_spi_pot.c',],
216 PIC24SupportLibObjects, env, {},
'chap10stdio')
217 if 'chap11_24E' in buildTargets:
218 buildWithCommonSources([
'chap11/adc_spidac_test.c',
220 'chap11/adc_test_12bit.c'], PIC24SupportLibSourcesSmall3, env, {},
'chap11')
221 if 'chap11nodma' in buildTargets:
222 buildWithCommonSources([
'chap11/adc2pots1.c',
'chap11/adc4simul.c',
'chap11/adc7scan1.c',
'chap11/adc7scan2.c',
'chap11/adc_spidac_test.c',
224 'chap11/adc_test_12bit.c',
'chap11/dac_r2r.c'], PIC24SupportLibSourcesSmall3, env, {},
'chap11')
225 if 'chap11dma' in buildTargets:
226 buildWithCommonSources([
'chap11/adc4simul_dma.c',
'chap11/adc7scan1_dma_conv_order.c',
227 'chap11/adc7scan1_dma_scatter_gather_1.c'],
228 PIC24SupportLibObjects, env, {},
'chap11dma')
229 if 'chap12_24E' in buildTargets:
230 buildWithCommonSources([
'chap12/incap_freqmeasure.c',
'chap12/incap_switch_pulse_measure.c',
231 'chap12/ir_biphase_decode.c',
'chap12/manual_switch_pulse_measure.c',
232 'chap12/outcompare_contpulse.c',
'chap12/outcompare_squarewave.c',
233 'chap12/outputcompare_multiservo.c',
'chap12/outputcompare_oneservo.c',
234 'chap12/pwm_dac.c',
'chap12/pwm_dac_test.c',
'chap12/timer32bit_switch_pulse_measure.c'], PIC24SupportLibSourcesSmall3, env, {},
'chap12')
235 if 'chap12' in buildTargets:
236 buildWithCommonSources([
'chap12/incap_freqmeasure.c',
'chap12/incap_switch_pulse_measure.c',
237 'chap12/ir_biphase_decode.c',
'chap12/ledpwm_pic24f.c',
'chap12/manual_switch_pulse_measure.c',
238 'chap12/outcompare_contpulse.c',
'chap12/outcompare_squarewave.c',
239 'chap12/outputcompare_multiservo.c',
'chap12/outputcompare_oneservo.c',
240 'chap12/pwm_dac.c',
'chap12/pwm_dac_test.c',
'chap12/timer32bit_switch_pulse_measure.c'], PIC24SupportLibSourcesSmall3, env, {},
'chap12')
241 if 'chap12big' in buildTargets:
242 buildWithCommonSources([
'chap12/ledpwm.c'], PIC24SupportLibSourcesSmall2, env, {},
'chap12')
243 if 'chap13' in buildTargets:
244 buildWithCommonSources([
'chap13/*.c'], PIC24SupportLibObjects, env,
245 {
'chap13\\i2c_multmaster_rstring.c' : {
'CPPDEFINES':
'CPU_ID=1' },
246 'chap13\\i2c_multmaster_rstring1.c' : {
'CPPDEFINES':
'CPU_ID=2' }},
248 if 'chap14' in buildTargets:
249 buildWithCommonSources([
'chap14/*.c'], PIC24SupportLibObjects, env, {},
'chap14')
250 if 'chap15' in buildTargets:
252 buildProgramWithCommonSources([
'chap15/audio.c',
'chap15/audio_adpcm.c', ],
253 PIC24SupportLibObjects, env,
'chap15')
254 buildProgramWithCommonSources([
'chap15/reflow_oven.c',
'chap15/reflow_debug.c',
255 'chap15/reflow_flash.c',
'chap15/reflow_operate.c'], PIC24SupportLibObjects,
257 buildProgramWithCommonSources([
'chap15/robot.c',
'chap15/robot_ir_decode.c', ],
258 PIC24SupportLibObjects, env,
'chap15')
259 if 'explorerh' in buildTargets:
260 buildWithCommonSources([
'explorer16_100p/adc_test.c',
'explorer16_100p/lcd4bit.c',
261 'explorer16_100p/mcp25lc256_spi_eeprom.c',
'explorer16_100p/reset.c',
262 'explorer16_100p/timer1_sosc.c'], PIC24SupportLibObjects, env, {},
'explorerh')
263 if 'explorer' in buildTargets:
264 buildWithCommonSources([
'explorer16_100p/*.c'], PIC24SupportLibObjects, env, {},
'explorer')
265 if 'bootloader' in buildTargets:
266 targetName =
'p${MCU}_230400baud_bootldr'
267 env.Program(target=targetName, source = [
'bootloader/24h_24f_target/main.c',
268 'bootloader/24h_24f_target/mem.c',
269 'bootloader/24h_24f_target/pic24_clockfreq.c',
270 'bootloader/24h_24f_target/pic24_configbits.c'])
271 cof2hex(targetName, env,
'bootloader')