diff --git a/trunk/bsr.lmf b/trunk/bsr.lmf index d24015f..1d6db33 100644 Binary files a/trunk/bsr.lmf and b/trunk/bsr.lmf differ diff --git a/trunk/bsr_k0r.map b/trunk/bsr_k0r.map index c19848a..22f58d8 100644 --- a/trunk/bsr_k0r.map +++ b/trunk/bsr_k0r.map @@ -1,19 +1,20 @@ -78K0R Linker W1.33 Date:22 Nov 2010 Page: 1 +78K0R Linker W1.33 Date:18 Feb 2011 Page: 1 -Command: -yd:\program files\nec electronics tools\dev -_msgoff -obsr.l - mf ..\..\..\..\Program Files\NEC Electronics Tools\CC78K0R\W2 - .12\lib78k0r\s0rm.rel -gi1B339499E033F240BFAAh -pbsr_k0r.map - -nkd -gb7EFBFFh -bC:\Program Files\NEC Electronics Tools\FSL7 - 8K0R_Type02ES\V1.20\lib78k0r\fsl.lib -bcl0rdm.lib -bcl0rm.lib - -bcl0rmf.lib -iD:\Program Files\NEC Electronics Tools\CC78K0 - R\W2.12\lib78k0r -dbsr_mcu.dr -s -w0 loader.rel pm.rel i2c_ct - r.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_twl.rel led. - rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel renge.rel accer - o.rel self_flash.rel sw.rel task_debug.rel task_misc.rel task - _sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_status.rel +Command: -yc:\program files (x86)\nec electronics tools\dev -_msgoff - + obsr.lmf ..\..\..\Program Files (x86)\NEC Electronics Tools\C + C78K0R\W2.13\lib78k0r\s0rm.rel -gi1B339499E033F240BFAAh -pbsr + _k0r.map -nkd -gb7EFBFFh -bC:\Program Files (x86)\NEC Electro + nics Tools\CC78K0R\W2.13\lib78k0r\fsl.lib -bcl0rdm.lib -bcl0r + m.lib -bcl0rmf.lib -iC:\Program Files (x86)\NEC Electronics T + ools\CC78K0R\W2.13\lib78k0r -dbsr_mcu.dr -s -w0 loader.rel pm + .rel i2c_ctr.rel main.rel magic.rel WDT.rel i2c_mcu.rel i2c_t + wl.rel led.rel rtc.rel vreg_ctr.rel vreg_twl.rel adc.rel reng + e.rel accero.rel self_flash.rel sw.rel task_debug.rel task_mi + sc.rel task_sys.rel pedo_alg_thre_det2.rel ini_VECT.rel task_ + status.rel Para-file: Out-file: bsr.lmf Map-file: bsr_k0r.map @@ -22,9 +23,9 @@ Direc-file:bsr_mcu.dr *** Link information *** - 64 output segment(s) - 3EE6H byte(s) real data - 5432 symbol(s) defined + 63 output segment(s) + 3EE5H byte(s) real data + 5497 symbol(s) defined *** Memory map *** @@ -97,54 +98,53 @@ Direc-file:bsr_mcu.dr LDR_CODL task_status 000C4H 00000H ?CSEGSI 000C4H 0000AH CSEG - LDR_CODE 000CEH 00936H CSEG - LDR_CODE loader 000CEH 001F9H - LDR_CODE main 002C7H 00046H - LDR_CODE WDT 0030DH 00000H - LDR_CODE i2c_mcu 0030DH 002F0H + LDR_CODE 000CEH 00944H CSEG + LDR_CODE loader 000CEH 00207H + LDR_CODE main 002D5H 00046H + LDR_CODE WDT 0031BH 00000H + LDR_CODE i2c_mcu 0031BH 002F0H LDR_CODE self_flash - 005FDH 0037FH + 0060BH 0037FH LDR_CODE task_debug - 0097CH 00000H + 0098AH 00000H LDR_CODE task_status - 0097CH 00088H - FSL_CODE 00A04H 00322H CSEG + 0098AH 00088H + FSL_CODE 00A12H 00322H CSEG FSL_CODE fsl_block_cmd - 00A04H 0002BH + 00A12H 0002BH FSL_CODE fsl_block_check - 00A2FH 00013H + 00A3DH 00013H FSL_CODE fsl_common - 00A42H 0014FH + 00A50H 0014FH FSL_CODE fsl_reset - 00B91H 00001H + 00B9FH 00001H FSL_CODE fsl_si_ibf - 00B92H 00064H + 00BA0H 00064H FSL_CODE fsl_phySwap - 00BF6H 0004DH + 00C04H 0004DH FSL_CODE fsl_si_common - 00C43H 00061H - FSL_CODE fsl_swap 00CA4H 00030H + 00C51H 00061H + FSL_CODE fsl_swap 00CB2H 00030H FSL_CODE fsl_write - 00CD4H 00052H - @@LCODE 00D26H 0029BH CSEG - @@LCODE @cstart 00D26H 0006DH - @@LCODE @imul 00D93H 00011H - @@LCODE @lumul 00DA4H 0002BH - @@LCODE @isdiv 00DCFH 00022H - @@LCODE @iudiv 00DF1H 0002DH - @@LCODE @isrem 00E1EH 00021H - @@LCODE @iurem 00E3FH 0002FH - @@LCODE @lsdiv 00E6EH 00039H - @@LCODE @ludiv 00EA7H 0003FH - @@LCODE @divuw 00EE6H 00034H - @@LCODE @ladd 00F1AH 0000FH - @@LCODE @llsh 00F29H 0001BH - @@LCODE @lursh 00F44H 0001FH - @@LCODE @iscmp 00F63H 0000CH - @@LCODE @lband 00F6FH 00014H - @@LCODE @bcdtob 00F83H 0001AH - @@LCODE @bbcd 00F9DH 00024H -* gap * 00FC1H 00035H + 00CE2H 00052H + @@LCODE 00D34H 00277H CSEG + @@LCODE @cstart 00D34H 0006DH + @@LCODE @imul 00DA1H 00011H + @@LCODE @lumul 00DB2H 0002BH + @@LCODE @isdiv 00DDDH 00022H + @@LCODE @iudiv 00DFFH 0002DH + @@LCODE @isrem 00E2CH 00021H + @@LCODE @iurem 00E4DH 0002FH + @@LCODE @lsdiv 00E7CH 00039H + @@LCODE @ludiv 00EB5H 0003FH + @@LCODE @divuw 00EF4H 00034H + @@LCODE @ladd 00F28H 0000FH + @@LCODE @llsh 00F37H 0001BH + @@LCODE @lursh 00F52H 0001FH + @@LCODE @iscmp 00F71H 0000CH + @@LCODE @lband 00F7DH 00014H + @@LCODE @bcdtob 00F91H 0001AH +* gap * 00FABH 0004BH MGC_LOAD 00FF6H 0000AH CSEG AT MGC_LOAD magic 00FF6H 0000AH @@ -154,7 +154,7 @@ Direc-file:bsr_mcu.dr SEGMENT SEGMENT MODULE ADDRESS MGC_MIMI 02000H 0000AH CSEG AT MGC_MIMI magic 02000H 0000AH - @@CNST 0200AH 002C8H CSEG + @@CNST 0200AH 002C6H CSEG @@CNST @cstart 0200AH 00000H @@CNST loader 0200AH 00000H @@CNST pm 0200AH 00214H @@ -180,239 +180,236 @@ Direc-file:bsr_mcu.dr 02288H 00000H @@CNST task_sys 02288H 00000H @@CNST pedo_alg_thre_det2 - 02288H 0004AH - @@CNST ini_VECT 022D2H 00000H + 02288H 00048H + @@CNST ini_VECT 022D0H 00000H @@CNST task_status - 022D2H 00000H - ROM_CODE 022D2H 0277BH CSEG - ROM_CODE pm 022D2H 00A42H - ROM_CODE i2c_ctr 02D14H 00060H - ROM_CODE i2c_twl 02D74H 0005EH - ROM_CODE led 02DD2H 0051AH - ROM_CODE rtc 032ECH 000E0H - ROM_CODE vreg_ctr 033CCH 00475H - ROM_CODE vreg_twl 03841H 0010AH - ROM_CODE adc 0394BH 002FCH - ROM_CODE renge 03C47H 00190H - ROM_CODE accero 03DD7H 0013DH - ROM_CODE sw 03F14H 00112H + 022D0H 00000H + ROM_CODE 022D0H 027EEH CSEG + ROM_CODE pm 022D0H 00AA4H + ROM_CODE i2c_ctr 02D74H 00060H + ROM_CODE i2c_twl 02DD4H 0005EH + ROM_CODE led 02E32H 00546H + ROM_CODE rtc 03378H 000E0H + ROM_CODE vreg_ctr 03458H 00481H + ROM_CODE vreg_twl 038D9H 000FAH + ROM_CODE adc 039D3H 002FCH + ROM_CODE renge 03CCFH 00190H + ROM_CODE accero 03E5FH 0013DH + ROM_CODE sw 03F9CH 00120H ROM_CODE task_misc - 04026H 001B6H - ROM_CODE task_sys 041DCH 0037FH + 040BCH 00175H + ROM_CODE task_sys 04231H 0038BH ROM_CODE pedo_alg_thre_det2 - 0455BH 004F2H - @@BASE 04A4DH 0050EH CSEG BASE - @@BASE loader 04A4DH 00000H - @@BASE pm 04A4DH 0003FH - @@BASE i2c_ctr 04A8CH 00198H - @@BASE main 04C24H 00000H - @@BASE magic 04C24H 00000H - @@BASE WDT 04C24H 00000H - @@BASE i2c_mcu 04C24H 000D9H - @@BASE i2c_twl 04CFDH 000CBH - @@BASE led 04DC8H 00000H - @@BASE rtc 04DC8H 0005EH - @@BASE vreg_ctr 04E26H 00000H - @@BASE vreg_twl 04E26H 00000H - @@BASE adc 04E26H 000B3H - @@BASE renge 04ED9H 00000H - @@BASE accero 04ED9H 0004AH + 045BCH 00502H + @@BASE 04ABEH 004C6H CSEG BASE + @@BASE loader 04ABEH 00000H + @@BASE pm 04ABEH 0003FH + @@BASE i2c_ctr 04AFDH 0018DH + @@BASE main 04C8AH 00000H + @@BASE magic 04C8AH 00000H + @@BASE WDT 04C8AH 00000H + @@BASE i2c_mcu 04C8AH 0009CH + @@BASE i2c_twl 04D26H 000CBH + @@BASE led 04DF1H 00000H + @@BASE rtc 04DF1H 0005EH + @@BASE vreg_ctr 04E4FH 00000H + @@BASE vreg_twl 04E4FH 00000H + @@BASE adc 04E4FH 000B3H + @@BASE renge 04F02H 00000H + @@BASE accero 04F02H 0004AH @@BASE self_flash - 04F23H 00000H - @@BASE sw 04F23H 00000H + 04F4CH 00000H + @@BASE sw 04F4CH 00000H @@BASE task_debug - 04F23H 00000H + 04F4CH 00000H @@BASE task_misc - 04F23H 00000H - @@BASE task_sys 04F23H 00000H + 04F4CH 00000H + @@BASE task_sys 04F4CH 00000H @@BASE pedo_alg_thre_det2 - 04F23H 00000H - @@BASE ini_VECT 04F23H 00038H + 04F4CH 00000H + @@BASE ini_VECT 04F4CH 00038H @@BASE task_status - 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL @cstart 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL pm 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL i2c_ctr 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL i2c_twl 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL led 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL rtc 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL vreg_ctr 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL vreg_twl 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL adc 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL renge 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL accero 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL sw 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP + 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL @cstart 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL pm 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL i2c_ctr 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL i2c_twl 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL led 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL rtc 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL vreg_ctr 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL vreg_twl 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL adc 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL renge 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL accero 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL sw 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP @@CNSTL task_misc - 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL task_sys 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP + 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL task_sys 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP @@CNSTL pedo_alg_thre_det2 - 04F5BH 00000H - @@CNSTL 04F5BH 00000H CSEG PAGE64KP - @@CNSTL ini_VECT 04F5BH 00000H - @@R_INIS 04F5BH 00000H CSEG UNIT64KP - @@R_INIS @cstart 04F5BH 00000H - @@R_INIS loader 04F5BH 00000H - @@R_INIS pm 04F5BH 00000H - @@R_INIS i2c_ctr 04F5BH 00000H - @@R_INIS main 04F5BH 00000H - @@R_INIS magic 04F5BH 00000H - @@R_INIS WDT 04F5BH 00000H - @@R_INIS i2c_mcu 04F5BH 00000H - @@R_INIS i2c_twl 04F5BH 00000H - @@R_INIS led 04F5BH 00000H - @@R_INIS rtc 04F5BH 00000H - @@R_INIS vreg_ctr 04F5BH 00000H - @@R_INIS vreg_twl 04F5BH 00000H - @@R_INIS adc 04F5BH 00000H - @@R_INIS renge 04F5BH 00000H - @@R_INIS accero 04F5BH 00000H - @@R_INIS self_flash - 04F5BH 00000H - @@R_INIS sw 04F5BH 00000H - @@R_INIS task_debug - 04F5BH 00000H - @@R_INIS task_misc - 04F5BH 00000H - @@R_INIS task_sys 04F5BH 00000H - @@R_INIS pedo_alg_thre_det2 - 04F5BH 00000H - @@R_INIS ini_VECT 04F5BH 00000H - @@R_INIS task_status - 04F5BH 00000H - @@R_INIS @rom 04F5BH 00000H - @@CALT 04F5BH 00000H CSEG - @@CALT @cstart 04F5BH 00000H - @@CALT loader 04F5BH 00000H - @@CALT pm 04F5BH 00000H - @@CALT i2c_ctr 04F5BH 00000H - @@CALT main 04F5BH 00000H - @@CALT magic 04F5BH 00000H - @@CALT WDT 04F5BH 00000H - @@CALT i2c_mcu 04F5BH 00000H - @@CALT i2c_twl 04F5BH 00000H - @@CALT led 04F5BH 00000H - @@CALT rtc 04F5BH 00000H - @@CALT vreg_ctr 04F5BH 00000H - @@CALT vreg_twl 04F5BH 00000H - @@CALT adc 04F5BH 00000H - @@CALT renge 04F5BH 00000H - @@CALT accero 04F5BH 00000H - @@CALT self_flash - 04F5BH 00000H - @@CALT sw 04F5BH 00000H - @@CALT task_debug - 04F5BH 00000H - @@CALT task_misc - 04F5BH 00000H - @@CALT task_sys 04F5BH 00000H - @@CALT pedo_alg_thre_det2 - 04F5BH 00000H - @@CALT ini_VECT 04F5BH 00000H - @@CALT task_status - 04F5BH 00000H - @@RLINIT 04F5BH 00000H CSEG UNIT64KP - @@RLINIT loader 04F5BH 00000H - @@RLINIT pm 04F5BH 00000H - @@RLINIT i2c_ctr 04F5BH 00000H - @@RLINIT main 04F5BH 00000H - @@RLINIT magic 04F5BH 00000H - @@RLINIT WDT 04F5BH 00000H - @@RLINIT i2c_mcu 04F5BH 00000H - @@RLINIT i2c_twl 04F5BH 00000H - @@RLINIT led 04F5BH 00000H - @@RLINIT rtc 04F5BH 00000H - @@RLINIT vreg_ctr 04F5BH 00000H - @@RLINIT vreg_twl 04F5BH 00000H - @@RLINIT adc 04F5BH 00000H - @@RLINIT renge 04F5BH 00000H - @@RLINIT accero 04F5BH 00000H - @@RLINIT self_flash - 04F5BH 00000H - @@RLINIT sw 04F5BH 00000H - @@RLINIT task_debug - 04F5BH 00000H - @@RLINIT task_misc - 04F5BH 00000H - @@RLINIT task_sys 04F5BH 00000H - @@RLINIT pedo_alg_thre_det2 - 04F5BH 00000H - @@RLINIT ini_VECT 04F5BH 00000H - @@RLINIT task_status - 04F5BH 00000H - @@RLINIT @rom 04F5BH 00000H - @@CODEL 04F5BH 00000H CSEG - @@CODEL pm 04F5BH 00000H - @@CODEL i2c_ctr 04F5BH 00000H - @@CODEL magic 04F5BH 00000H - @@CODEL i2c_twl 04F5BH 00000H - @@CODEL led 04F5BH 00000H - @@CODEL rtc 04F5BH 00000H - @@CODEL vreg_ctr 04F5BH 00000H - @@CODEL vreg_twl 04F5BH 00000H - @@CODEL adc 04F5BH 00000H - @@CODEL renge 04F5BH 00000H - @@CODEL accero 04F5BH 00000H - @@CODEL sw 04F5BH 00000H - @@CODEL task_misc - 04F5BH 00000H - @@CODEL task_sys 04F5BH 00000H - @@CODEL pedo_alg_thre_det2 - 04F5BH 00000H - @@CODEL ini_VECT 04F5BH 00000H -* gap * 04F5BH 00001H - @@CNSTL 04F5CH 0000AH CSEG PAGE64KP - @@CNSTL @bcdtob 04F5CH 0000AH - @@CNSTL 04F66H 00010H CSEG PAGE64KP - @@CNSTL @bbcd 04F66H 00010H - @@R_INIT 04F76H 0003AH CSEG UNIT64KP - @@R_INIT @cstart 04F76H 00000H - @@R_INIT loader 04F76H 00000H - @@R_INIT pm 04F76H 00002H - @@R_INIT i2c_ctr 04F78H 00002H - @@R_INIT main 04F7AH 00000H - @@R_INIT magic 04F7AH 00000H - @@R_INIT WDT 04F7AH 00000H - @@R_INIT i2c_mcu 04F7AH 00000H - @@R_INIT i2c_twl 04F7AH 00000H - @@R_INIT led 04F7AH 00006H - @@R_INIT rtc 04F80H 00000H - @@R_INIT vreg_ctr 04F80H 00000H - @@R_INIT vreg_twl 04F80H 00000H - @@R_INIT adc 04F80H 0000CH - @@R_INIT renge 04F8CH 00014H - @@R_INIT accero 04FA0H 00000H + 04F84H 00000H + @@CNSTL 04F84H 00000H CSEG PAGE64KP + @@CNSTL ini_VECT 04F84H 00000H + @@CNSTL 04F84H 0000AH CSEG PAGE64KP + @@CNSTL @bcdtob 04F84H 0000AH + @@R_INIT 04F8EH 00036H CSEG UNIT64KP + @@R_INIT @cstart 04F8EH 00000H + @@R_INIT loader 04F8EH 00000H + @@R_INIT pm 04F8EH 00002H + @@R_INIT i2c_ctr 04F90H 00002H + @@R_INIT main 04F92H 00000H + @@R_INIT magic 04F92H 00000H + @@R_INIT WDT 04F92H 00000H + @@R_INIT i2c_mcu 04F92H 00000H + @@R_INIT i2c_twl 04F92H 00000H + @@R_INIT led 04F92H 00006H + @@R_INIT rtc 04F98H 00000H + @@R_INIT vreg_ctr 04F98H 00000H + @@R_INIT vreg_twl 04F98H 00000H + @@R_INIT adc 04F98H 0000CH + @@R_INIT renge 04FA4H 00014H + @@R_INIT accero 04FB8H 00000H @@R_INIT self_flash - 04FA0H 00000H - @@R_INIT sw 04FA0H 00002H + 04FB8H 00000H + @@R_INIT sw 04FB8H 00002H @@R_INIT task_debug - 04FA2H 00000H + 04FBAH 00000H @@R_INIT task_misc - 04FA2H 00000H - @@R_INIT task_sys 04FA2H 00002H + 04FBAH 00000H + @@R_INIT task_sys 04FBAH 00002H @@R_INIT pedo_alg_thre_det2 - 04FA4H 0000AH - @@R_INIT ini_VECT 04FAEH 00000H + 04FBCH 00006H + @@R_INIT ini_VECT 04FC2H 00000H @@R_INIT task_status - 04FAEH 00002H - @@R_INIT @rom 04FB0H 00000H - @@LCODEL 04FB0H 00008H CSEG - @@LCODEL abs 04FB0H 00008H -* gap * 04FB8H 0003EH + 04FC2H 00002H + @@R_INIT @rom 04FC4H 00000H + @@R_INIS 04FC4H 00000H CSEG UNIT64KP + @@R_INIS @cstart 04FC4H 00000H + @@R_INIS loader 04FC4H 00000H + @@R_INIS pm 04FC4H 00000H + @@R_INIS i2c_ctr 04FC4H 00000H + @@R_INIS main 04FC4H 00000H + @@R_INIS magic 04FC4H 00000H + @@R_INIS WDT 04FC4H 00000H + @@R_INIS i2c_mcu 04FC4H 00000H + @@R_INIS i2c_twl 04FC4H 00000H + @@R_INIS led 04FC4H 00000H + @@R_INIS rtc 04FC4H 00000H + @@R_INIS vreg_ctr 04FC4H 00000H + @@R_INIS vreg_twl 04FC4H 00000H + @@R_INIS adc 04FC4H 00000H + @@R_INIS renge 04FC4H 00000H + @@R_INIS accero 04FC4H 00000H + @@R_INIS self_flash + 04FC4H 00000H + @@R_INIS sw 04FC4H 00000H + @@R_INIS task_debug + 04FC4H 00000H + @@R_INIS task_misc + 04FC4H 00000H + @@R_INIS task_sys 04FC4H 00000H + @@R_INIS pedo_alg_thre_det2 + 04FC4H 00000H + @@R_INIS ini_VECT 04FC4H 00000H + @@R_INIS task_status + 04FC4H 00000H + @@R_INIS @rom 04FC4H 00000H + @@CALT 04FC4H 00000H CSEG + @@CALT @cstart 04FC4H 00000H + @@CALT loader 04FC4H 00000H + @@CALT pm 04FC4H 00000H + @@CALT i2c_ctr 04FC4H 00000H + @@CALT main 04FC4H 00000H + @@CALT magic 04FC4H 00000H + @@CALT WDT 04FC4H 00000H + @@CALT i2c_mcu 04FC4H 00000H + @@CALT i2c_twl 04FC4H 00000H + @@CALT led 04FC4H 00000H + @@CALT rtc 04FC4H 00000H + @@CALT vreg_ctr 04FC4H 00000H + @@CALT vreg_twl 04FC4H 00000H + @@CALT adc 04FC4H 00000H + @@CALT renge 04FC4H 00000H + @@CALT accero 04FC4H 00000H + @@CALT self_flash + 04FC4H 00000H + @@CALT sw 04FC4H 00000H + @@CALT task_debug + 04FC4H 00000H + @@CALT task_misc + 04FC4H 00000H + @@CALT task_sys 04FC4H 00000H + @@CALT pedo_alg_thre_det2 + 04FC4H 00000H + @@CALT ini_VECT 04FC4H 00000H + @@CALT task_status + 04FC4H 00000H + @@RLINIT 04FC4H 00000H CSEG UNIT64KP + @@RLINIT loader 04FC4H 00000H + @@RLINIT pm 04FC4H 00000H + @@RLINIT i2c_ctr 04FC4H 00000H + @@RLINIT main 04FC4H 00000H + @@RLINIT magic 04FC4H 00000H + @@RLINIT WDT 04FC4H 00000H + @@RLINIT i2c_mcu 04FC4H 00000H + @@RLINIT i2c_twl 04FC4H 00000H + @@RLINIT led 04FC4H 00000H + @@RLINIT rtc 04FC4H 00000H + @@RLINIT vreg_ctr 04FC4H 00000H + @@RLINIT vreg_twl 04FC4H 00000H + @@RLINIT adc 04FC4H 00000H + @@RLINIT renge 04FC4H 00000H + @@RLINIT accero 04FC4H 00000H + @@RLINIT self_flash + 04FC4H 00000H + @@RLINIT sw 04FC4H 00000H + @@RLINIT task_debug + 04FC4H 00000H + @@RLINIT task_misc + 04FC4H 00000H + @@RLINIT task_sys 04FC4H 00000H + @@RLINIT pedo_alg_thre_det2 + 04FC4H 00000H + @@RLINIT ini_VECT 04FC4H 00000H + @@RLINIT task_status + 04FC4H 00000H + @@RLINIT @rom 04FC4H 00000H + @@CODEL 04FC4H 00000H CSEG + @@CODEL pm 04FC4H 00000H + @@CODEL i2c_ctr 04FC4H 00000H + @@CODEL magic 04FC4H 00000H + @@CODEL i2c_twl 04FC4H 00000H + @@CODEL led 04FC4H 00000H + @@CODEL rtc 04FC4H 00000H + @@CODEL vreg_ctr 04FC4H 00000H + @@CODEL vreg_twl 04FC4H 00000H + @@CODEL adc 04FC4H 00000H + @@CODEL renge 04FC4H 00000H + @@CODEL accero 04FC4H 00000H + @@CODEL sw 04FC4H 00000H + @@CODEL task_misc + 04FC4H 00000H + @@CODEL task_sys 04FC4H 00000H + @@CODEL pedo_alg_thre_det2 + 04FC4H 00000H + @@CODEL ini_VECT 04FC4H 00000H + @@LCODEL 04FC4H 00008H CSEG + @@LCODEL abs 04FC4H 00008H +* gap * 04FCCH 0002AH MGC_TAIL 04FF6H 0000AH CSEG AT MGC_TAIL magic 04FF6H 0000AH @@ -420,230 +417,230 @@ Direc-file:bsr_mcu.dr BASE ADDRESS=FF900H SIZE=00500H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@DATA FF900H 00432H DSEG BASEP + @@DATA FF900H 00430H DSEG BASEP @@DATA @cstart FF900H 00002H @@DATA loader FF902H 00000H - @@DATA pm FF902H 00018H - @@DATA i2c_ctr FF91AH 00006H - @@DATA main FF920H 0021CH - @@DATA magic FFB3CH 00000H - @@DATA WDT FFB3CH 00000H - @@DATA i2c_mcu FFB3CH 0000AH - @@DATA i2c_twl FFB46H 00000H - @@DATA led FFB46H 00088H - @@DATA rtc FFBCEH 00008H - @@DATA vreg_ctr FFBD6H 0005EH - @@DATA vreg_twl FFC34H 00012H - @@DATA adc FFC46H 00018H - @@DATA renge FFC5EH 00022H - @@DATA accero FFC80H 00002H + @@DATA pm FF902H 0001AH + @@DATA i2c_ctr FF91CH 00006H + @@DATA main FF922H 0021CH + @@DATA magic FFB3EH 00000H + @@DATA WDT FFB3EH 00000H + @@DATA i2c_mcu FFB3EH 0000AH + @@DATA i2c_twl FFB48H 00000H + @@DATA led FFB48H 00088H + @@DATA rtc FFBD0H 00008H + @@DATA vreg_ctr FFBD8H 0005EH + @@DATA vreg_twl FFC36H 00010H + @@DATA adc FFC46H 0001AH + @@DATA renge FFC60H 00016H + @@DATA accero FFC76H 00002H @@DATA self_flash - FFC82H 00002H - @@DATA sw FFC84H 00006H + FFC78H 00002H + @@DATA sw FFC7AH 00008H @@DATA task_debug - FFC8AH 00000H + FFC82H 00000H @@DATA task_misc - FFC8AH 0000EH - @@DATA task_sys FFC98H 00002H + FFC82H 00004H + @@DATA task_sys FFC86H 00002H @@DATA pedo_alg_thre_det2 - FFC9AH 00096H - @@DATA ini_VECT FFD30H 00000H + FFC88H 000A6H + @@DATA ini_VECT FFD2EH 00000H @@DATA task_status - FFD30H 00002H - @@DATA @rom FFD32H 00000H - @@INIT FFD32H 0003AH DSEG BASEP - @@INIT @cstart FFD32H 00000H - @@INIT loader FFD32H 00000H - @@INIT pm FFD32H 00002H - @@INIT i2c_ctr FFD34H 00002H - @@INIT main FFD36H 00000H - @@INIT magic FFD36H 00000H - @@INIT WDT FFD36H 00000H - @@INIT i2c_mcu FFD36H 00000H - @@INIT i2c_twl FFD36H 00000H - @@INIT led FFD36H 00006H - @@INIT rtc FFD3CH 00000H - @@INIT vreg_ctr FFD3CH 00000H - @@INIT vreg_twl FFD3CH 00000H - @@INIT adc FFD3CH 0000CH - @@INIT renge FFD48H 00014H - @@INIT accero FFD5CH 00000H + FFD2EH 00002H + @@DATA @rom FFD30H 00000H + @@INIT FFD30H 00036H DSEG BASEP + @@INIT @cstart FFD30H 00000H + @@INIT loader FFD30H 00000H + @@INIT pm FFD30H 00002H + @@INIT i2c_ctr FFD32H 00002H + @@INIT main FFD34H 00000H + @@INIT magic FFD34H 00000H + @@INIT WDT FFD34H 00000H + @@INIT i2c_mcu FFD34H 00000H + @@INIT i2c_twl FFD34H 00000H + @@INIT led FFD34H 00006H + @@INIT rtc FFD3AH 00000H + @@INIT vreg_ctr FFD3AH 00000H + @@INIT vreg_twl FFD3AH 00000H + @@INIT adc FFD3AH 0000CH + @@INIT renge FFD46H 00014H + @@INIT accero FFD5AH 00000H @@INIT self_flash - FFD5CH 00000H - @@INIT sw FFD5CH 00002H + FFD5AH 00000H + @@INIT sw FFD5AH 00002H @@INIT task_debug - FFD5EH 00000H + FFD5CH 00000H @@INIT task_misc - FFD5EH 00000H - @@INIT task_sys FFD5EH 00002H + FFD5CH 00000H + @@INIT task_sys FFD5CH 00002H @@INIT pedo_alg_thre_det2 - FFD60H 0000AH - @@INIT ini_VECT FFD6AH 00000H + FFD5EH 00006H + @@INIT ini_VECT FFD64H 00000H @@INIT task_status - FFD6AH 00002H - @@INIT @rom FFD6CH 00000H - @@INIS FFD6CH 00000H DSEG UNITP - @@INIS @cstart FFD6CH 00000H - @@INIS loader FFD6CH 00000H - @@INIS pm FFD6CH 00000H - @@INIS i2c_ctr FFD6CH 00000H - @@INIS main FFD6CH 00000H - @@INIS magic FFD6CH 00000H - @@INIS WDT FFD6CH 00000H - @@INIS i2c_mcu FFD6CH 00000H - @@INIS i2c_twl FFD6CH 00000H - @@INIS led FFD6CH 00000H - @@INIS rtc FFD6CH 00000H - @@INIS vreg_ctr FFD6CH 00000H - @@INIS vreg_twl FFD6CH 00000H - @@INIS adc FFD6CH 00000H - @@INIS renge FFD6CH 00000H - @@INIS accero FFD6CH 00000H + FFD64H 00002H + @@INIT @rom FFD66H 00000H + @@INIS FFD66H 00000H DSEG UNITP + @@INIS @cstart FFD66H 00000H + @@INIS loader FFD66H 00000H + @@INIS pm FFD66H 00000H + @@INIS i2c_ctr FFD66H 00000H + @@INIS main FFD66H 00000H + @@INIS magic FFD66H 00000H + @@INIS WDT FFD66H 00000H + @@INIS i2c_mcu FFD66H 00000H + @@INIS i2c_twl FFD66H 00000H + @@INIS led FFD66H 00000H + @@INIS rtc FFD66H 00000H + @@INIS vreg_ctr FFD66H 00000H + @@INIS vreg_twl FFD66H 00000H + @@INIS adc FFD66H 00000H + @@INIS renge FFD66H 00000H + @@INIS accero FFD66H 00000H @@INIS self_flash - FFD6CH 00000H - @@INIS sw FFD6CH 00000H + FFD66H 00000H + @@INIS sw FFD66H 00000H @@INIS task_debug - FFD6CH 00000H + FFD66H 00000H @@INIS task_misc - FFD6CH 00000H - @@INIS task_sys FFD6CH 00000H + FFD66H 00000H + @@INIS task_sys FFD66H 00000H @@INIS pedo_alg_thre_det2 - FFD6CH 00000H - @@INIS ini_VECT FFD6CH 00000H + FFD66H 00000H + @@INIS ini_VECT FFD66H 00000H @@INIS task_status - FFD6CH 00000H - @@INIS @rom FFD6CH 00000H - @@DATS FFD6CH 00000H DSEG UNITP - @@DATS @cstart FFD6CH 00000H - @@DATS loader FFD6CH 00000H - @@DATS pm FFD6CH 00000H - @@DATS i2c_ctr FFD6CH 00000H - @@DATS main FFD6CH 00000H - @@DATS magic FFD6CH 00000H - @@DATS WDT FFD6CH 00000H - @@DATS i2c_mcu FFD6CH 00000H - @@DATS i2c_twl FFD6CH 00000H - @@DATS led FFD6CH 00000H - @@DATS rtc FFD6CH 00000H - @@DATS vreg_ctr FFD6CH 00000H - @@DATS vreg_twl FFD6CH 00000H - @@DATS adc FFD6CH 00000H - @@DATS renge FFD6CH 00000H - @@DATS accero FFD6CH 00000H + FFD66H 00000H + @@INIS @rom FFD66H 00000H + @@DATS FFD66H 00000H DSEG UNITP + @@DATS @cstart FFD66H 00000H + @@DATS loader FFD66H 00000H + @@DATS pm FFD66H 00000H + @@DATS i2c_ctr FFD66H 00000H + @@DATS main FFD66H 00000H + @@DATS magic FFD66H 00000H + @@DATS WDT FFD66H 00000H + @@DATS i2c_mcu FFD66H 00000H + @@DATS i2c_twl FFD66H 00000H + @@DATS led FFD66H 00000H + @@DATS rtc FFD66H 00000H + @@DATS vreg_ctr FFD66H 00000H + @@DATS vreg_twl FFD66H 00000H + @@DATS adc FFD66H 00000H + @@DATS renge FFD66H 00000H + @@DATS accero FFD66H 00000H @@DATS self_flash - FFD6CH 00000H - @@DATS sw FFD6CH 00000H + FFD66H 00000H + @@DATS sw FFD66H 00000H @@DATS task_debug - FFD6CH 00000H + FFD66H 00000H @@DATS task_misc - FFD6CH 00000H - @@DATS task_sys FFD6CH 00000H + FFD66H 00000H + @@DATS task_sys FFD66H 00000H @@DATS pedo_alg_thre_det2 - FFD6CH 00000H - @@DATS ini_VECT FFD6CH 00000H + FFD66H 00000H + @@DATS ini_VECT FFD66H 00000H @@DATS task_status - FFD6CH 00000H - @@DATS @rom FFD6CH 00000H - FSL_DATA FFD6CH 00010H DSEG UNITP + FFD66H 00000H + @@DATS @rom FFD66H 00000H + FSL_DATA FFD66H 00010H DSEG UNITP FSL_DATA fsl_common - FFD6CH 00010H - @@INITL FFD7CH 00000H DSEG UNIT64KP - @@INITL loader FFD7CH 00000H - @@INITL pm FFD7CH 00000H - @@INITL i2c_ctr FFD7CH 00000H - @@INITL main FFD7CH 00000H - @@INITL magic FFD7CH 00000H - @@INITL WDT FFD7CH 00000H - @@INITL i2c_mcu FFD7CH 00000H - @@INITL i2c_twl FFD7CH 00000H - @@INITL led FFD7CH 00000H - @@INITL rtc FFD7CH 00000H - @@INITL vreg_ctr FFD7CH 00000H - @@INITL vreg_twl FFD7CH 00000H - @@INITL adc FFD7CH 00000H - @@INITL renge FFD7CH 00000H - @@INITL accero FFD7CH 00000H + FFD66H 00010H + @@INITL FFD76H 00000H DSEG UNIT64KP + @@INITL loader FFD76H 00000H + @@INITL pm FFD76H 00000H + @@INITL i2c_ctr FFD76H 00000H + @@INITL main FFD76H 00000H + @@INITL magic FFD76H 00000H + @@INITL WDT FFD76H 00000H + @@INITL i2c_mcu FFD76H 00000H + @@INITL i2c_twl FFD76H 00000H + @@INITL led FFD76H 00000H + @@INITL rtc FFD76H 00000H + @@INITL vreg_ctr FFD76H 00000H + @@INITL vreg_twl FFD76H 00000H + @@INITL adc FFD76H 00000H + @@INITL renge FFD76H 00000H + @@INITL accero FFD76H 00000H @@INITL self_flash - FFD7CH 00000H - @@INITL sw FFD7CH 00000H + FFD76H 00000H + @@INITL sw FFD76H 00000H @@INITL task_debug - FFD7CH 00000H + FFD76H 00000H @@INITL task_misc - FFD7CH 00000H - @@INITL task_sys FFD7CH 00000H + FFD76H 00000H + @@INITL task_sys FFD76H 00000H @@INITL pedo_alg_thre_det2 - FFD7CH 00000H - @@INITL ini_VECT FFD7CH 00000H + FFD76H 00000H + @@INITL ini_VECT FFD76H 00000H @@INITL task_status - FFD7CH 00000H - @@INITL @rom FFD7CH 00000H - @@DATAL FFD7CH 00000H DSEG UNIT64KP - @@DATAL loader FFD7CH 00000H - @@DATAL pm FFD7CH 00000H - @@DATAL i2c_ctr FFD7CH 00000H - @@DATAL main FFD7CH 00000H - @@DATAL magic FFD7CH 00000H - @@DATAL WDT FFD7CH 00000H - @@DATAL i2c_mcu FFD7CH 00000H - @@DATAL i2c_twl FFD7CH 00000H - @@DATAL led FFD7CH 00000H - @@DATAL rtc FFD7CH 00000H - @@DATAL vreg_ctr FFD7CH 00000H - @@DATAL vreg_twl FFD7CH 00000H - @@DATAL adc FFD7CH 00000H - @@DATAL renge FFD7CH 00000H - @@DATAL accero FFD7CH 00000H + FFD76H 00000H + @@INITL @rom FFD76H 00000H + @@DATAL FFD76H 00000H DSEG UNIT64KP + @@DATAL loader FFD76H 00000H + @@DATAL pm FFD76H 00000H + @@DATAL i2c_ctr FFD76H 00000H + @@DATAL main FFD76H 00000H + @@DATAL magic FFD76H 00000H + @@DATAL WDT FFD76H 00000H + @@DATAL i2c_mcu FFD76H 00000H + @@DATAL i2c_twl FFD76H 00000H + @@DATAL led FFD76H 00000H + @@DATAL rtc FFD76H 00000H + @@DATAL vreg_ctr FFD76H 00000H + @@DATAL vreg_twl FFD76H 00000H + @@DATAL adc FFD76H 00000H + @@DATAL renge FFD76H 00000H + @@DATAL accero FFD76H 00000H @@DATAL self_flash - FFD7CH 00000H - @@DATAL sw FFD7CH 00000H + FFD76H 00000H + @@DATAL sw FFD76H 00000H @@DATAL task_debug - FFD7CH 00000H + FFD76H 00000H @@DATAL task_misc - FFD7CH 00000H - @@DATAL task_sys FFD7CH 00000H + FFD76H 00000H + @@DATAL task_sys FFD76H 00000H @@DATAL pedo_alg_thre_det2 - FFD7CH 00000H - @@DATAL ini_VECT FFD7CH 00000H + FFD76H 00000H + @@DATAL ini_VECT FFD76H 00000H @@DATAL task_status - FFD7CH 00000H - @@DATAL @rom FFD7CH 00000H -* gap * FFD7CH 00084H + FFD76H 00000H + @@DATAL @rom FFD76H 00000H +* gap * FFD76H 0008AH MEMORY=RAM2 BASE ADDRESS=FFE20H SIZE=000C0H OUTPUT INPUT INPUT BASE SIZE SEGMENT SEGMENT MODULE ADDRESS - @@BITS FFE20H 00004H BSEG + @@BITS FFE20H 00005H BSEG @@BITS @cstart FFE20H.0 00000H.0 @@BITS loader FFE20H.0 00000H.0 - @@BITS pm FFE20H.0 00000H.7 - @@BITS i2c_ctr FFE20H.7 00000H.0 - @@BITS main FFE20H.7 00000H.0 - @@BITS magic FFE20H.7 00000H.0 - @@BITS WDT FFE20H.7 00000H.0 - @@BITS i2c_mcu FFE20H.7 00000H.3 - @@BITS i2c_twl FFE21H.2 00000H.0 - @@BITS led FFE21H.2 00000H.5 - @@BITS rtc FFE21H.7 00000H.3 - @@BITS vreg_ctr FFE22H.2 00000H.1 - @@BITS vreg_twl FFE22H.3 00000H.0 - @@BITS adc FFE22H.3 00000H.4 - @@BITS renge FFE22H.7 00000H.3 - @@BITS accero FFE23H.2 00000H.0 + @@BITS pm FFE20H.0 00001H.0 + @@BITS i2c_ctr FFE21H.0 00000H.0 + @@BITS main FFE21H.0 00000H.0 + @@BITS magic FFE21H.0 00000H.0 + @@BITS WDT FFE21H.0 00000H.0 + @@BITS i2c_mcu FFE21H.0 00000H.3 + @@BITS i2c_twl FFE21H.3 00000H.0 + @@BITS led FFE21H.3 00000H.5 + @@BITS rtc FFE22H.0 00000H.3 + @@BITS vreg_ctr FFE22H.3 00000H.1 + @@BITS vreg_twl FFE22H.4 00000H.0 + @@BITS adc FFE22H.4 00000H.4 + @@BITS renge FFE23H.0 00000H.3 + @@BITS accero FFE23H.3 00000H.0 @@BITS self_flash - FFE23H.2 00000H.0 - @@BITS sw FFE23H.2 00000H.2 + FFE23H.3 00000H.0 + @@BITS sw FFE23H.3 00000H.2 @@BITS task_debug - FFE23H.4 00000H.0 + FFE23H.5 00000H.0 @@BITS task_misc - FFE23H.4 00000H.2 - @@BITS task_sys FFE23H.6 00000H.0 + FFE23H.5 00000H.2 + @@BITS task_sys FFE23H.7 00000H.0 @@BITS pedo_alg_thre_det2 - FFE23H.6 00000H.1 - @@BITS ini_VECT FFE23H.7 00000H.0 + FFE23H.7 00000H.2 + @@BITS ini_VECT FFE24H.1 00000H.0 @@BITS task_status - FFE23H.7 00000H.0 -* gap * FFE24H 000B0H + FFE24H.1 00000H.0 +* gap * FFE25H 000AFH @@SEGREG FFED4H 00004H DSEG AT @@SEGREG @SEGREG FFED4H 00004H @@RTARG0 FFED8H 00008H DSEG AT diff --git a/trunk/bsr_system.h b/trunk/bsr_system.h index 75bfcb4..c15dfd4 100644 --- a/trunk/bsr_system.h +++ b/trunk/bsr_system.h @@ -32,19 +32,27 @@ enum model_ MODEL_RESERVED3, }; +enum family_ +{ + FAMILY_CTR, + FAMILY_SPFL, + FAMILY_SHRIMP +}; + // タスクシステムの状態情報など typedef struct _system_status_ { enum pwr_state_ pwr_state; enum poweron_reason_ poweron_reason; unsigned char reboot:1; - unsigned char info_fullcolor:1; +// unsigned char info_fullcolor:1; unsigned char force_off:1; unsigned char captureBox:1; // キャプチャ箱 SDKには実機と返す unsigned char taikendai:1; unsigned char taikendai_nbd:1; unsigned char is_dev:1; enum model_ model; + enum family_ family; }system_status_; diff --git a/trunk/led.c b/trunk/led.c index 0efb448..af0f16a 100644 --- a/trunk/led.c +++ b/trunk/led.c @@ -1,6 +1,5 @@ /* ======================================================== LED.c - ======================================================== */ #pragma sfr @@ -25,59 +24,23 @@ #define BIT_MD0 0 -// ======================================================== -// スリープ中明滅のテーブル。マジか。 -const u8 LED_PTN_SLEEP[] = { - 25, 38, 52, 68, 83, 98, 110, 119, - 125, 128, 128, 125, 119, 110, 98, 83, - 68, 52, 38, 25, 16, 10, 8, 8, - 8, 8, 8, 8, 8, 8, 10, 16 - }; - - -#define LED_SLEEP_FRAME_LEN 71 -#define LED_SLEEP_DIM_LEN 71 -#define LED_SLEEP_FRAME_NUM 32 - - // ======================================================== -static void led_pow_normal( ); -static void led_pow_sleep( ); -static void led_pow_bt_empty(); -static u8 led_pow_batt_low(); - - - -// ======================================================== -// 赤LEDの電池残量LEDの点滅パターン -st_led_red_batt_empty led_red_batt_empty = { 0x55, 0x55, 0x55, 0x55 }; - -bit initialized; +bit ledInitialized; // お知らせLEDのパターンデータ uni_info_LED info_LED; -// フルカラーとの自動判別のため、一時領域としてもっておく -bit LED_pow_red_Mirror; bit info_led_off; bit info_led_override; -bit cam_led_update; - - -// 電源LEDのスリープパターンのステータス類 -u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; -u8 frame_sleep; -st_LED_dim_status LED_dim_status_sleep; // 充電中か否か extern bit BT_IN_CHG_delayed_n; - // ======================================================== #define led_fade_to( now, goal ) now = fade_to( now, goal ) @@ -146,9 +109,6 @@ void LED_init( )         6 電源 L         7 電源 H */ - INFO_LED_IS_FULLCOLOR_PU = 1; // お知らせLEDを識別 先に上げておく - INFO_LED_IS_FULLCOLOR_PM = 1; - TAU0EN = 1; TPS0 = BIT_PRS012 | BIT_PRS002; // マスタークロックはCK01,8M/2 /2^4 = 250kHz @@ -170,32 +130,13 @@ void LED_init( ) TDR00 = LED_BRIGHT_MAX - 1; // 周期 10bit - // お知らせLEDを識別 // -// INFO_LED_IS_FULLCOLOR_PU = 1; // もうちょっと前に上げておかないと… - system_status.info_fullcolor = 1; - if( system_status.model == MODEL_TS_BOARD ) - { -#ifndef _DBG_FORCE_FULLCOLOR_ - system_status.info_fullcolor = 0; -#endif - } - else - { - if( INFO_LED_IS_FULLCOLOR_n ) - { - system_status.info_fullcolor = 0; - } - } - INFO_LED_IS_FULLCOLOR_n = 0; - INFO_LED_IS_FULLCOLOR_PM = 0; +// system_status.info_fullcolor = 1; LED_duty_notify_red = 0; LED_duty_notify_blu = 0; LED_duty_notify_grn = 0; LED_pow_red = 0; LED_CAM = 0; - LED_old_pow_red = 0; - LED_pow_red_Mirror = 0; if( system_status.reboot ) { @@ -203,7 +144,7 @@ void LED_init( ) LED_duty_pow_blu = LED_BRIGHT_MAX; } info_led_off = false; - initialized = true; + ledInitialized = true; } @@ -215,266 +156,12 @@ void LED_stop( ) TAU0EN = 0; LED_pow_red = 0; LED_CAM = 0; - LED_old_pow_red = 0; - initialized = false; + ledInitialized = false; } -/* ======================================================== - // 電源LED - LED_POW_B,R 6,7 - - TDR00 周期(0x03FF。TPS0で250kHzでカウントアップ。10bitなら250Hz位になる) - TDR0x Duty 0で消灯、TDR00(より大 =0x03FF以上)で点灯です。 - - enum pwr_state_{ - OFF_TRIG = 0, - ON_CHECK, - ON_TRIG, - ON, - SLEEP -}; - -enum LED_ILUM_MODE{ - LED_POW_ILM_AUTO, - LED_POW_ILM_ON, - LED_POW_ILM_SLEEP, - LED_POW_ILM_CEOFF -}; - ======================================================== */ -void tsk_led_pow( ) -{ - if( ! initialized ) - { - return; - // おしまい - } - - info_led_override = false; - - switch ( vreg_ctr[VREG_C_LED_POW] ) - { - case ( LED_POW_ILM_AUTO ): - default: - led_pow_normal( ); - break; - - case ( LED_POW_ILM_SLEEP ): - led_pow_sleep( ); - break; - - case ( LED_POW_ILM_ON ): - led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); - LED_pow_red_Mirror = 0; - break; - - case ( LED_POW_ILM_OFF ): - led_fade_to( LED_duty_pow_blu, 0 ); - LED_pow_red_Mirror = 0; - break; - - case ( LED_POW_ILM_ONLY_RED ): - LED_duty_pow_blu = 0; - LED_pow_red_Mirror = 1; - break; - - case ( LED_POW_ILM_ONLY_BLUE ): - LED_duty_pow_blu = LED_BRIGHT_MAX; - LED_pow_red_Mirror = 0; - break; - - case ( LED_POW_ILM_FORCE_BT_EMPTY ): - led_pow_bt_empty(); - break; - } - - if( system_status.pwr_state == OFF || system_status.pwr_state == ON_CHECK ) - { - LED_pow_red_Mirror = 0; - info_led_override = false; - } - - // 実際にLEDの更新 - if( system_status.info_fullcolor ) - { - LED_pow_red = LED_pow_red_Mirror; - } - else - { - LED_old_pow_red = LED_pow_red_Mirror; - } - - if( info_led_override ) - { - if( system_status.info_fullcolor ) - { - LED_duty_notify_blu = 0; - LED_duty_notify_grn = 0; - LED_duty_notify_red = LED_pow_red_Mirror ? 255: 0; - } - else - { - LED_duty_old_NOTIFY = LED_pow_red_Mirror ? 255: 0; - } - } -} - - - -/* ======================================================== - 電池残量で、 青→赤→赤点滅 - ======================================================== */ -static void led_pow_normal( ) -{ - time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; - frame_sleep = 0; - LED_dim_status_sleep.now = (sx16)LED_duty_pow_blu * 128; - - if( led_pow_batt_low() != 0 ) // 赤の点灯も←でやっています - { - return; - // おしまい - } - - // 青点灯 - led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); -} - - - -/* ======================================================== - ホタルパターン - 電池残量で赤→赤点滅にする - ======================================================== */ -static void led_pow_sleep( ) -{ - if( led_pow_batt_low() != 0 ) // 赤の点灯も←でやっています - { - time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; - frame_sleep = 0; - LED_dim_status_sleep.now = (sx16)LED_duty_pow_blu * 128; - return; - // おしまい - } - - LED_dim_status_sleep.to = LED_PTN_SLEEP[frame_sleep] * 128; - - // グラデーションのデルタを計算 - LED_dim_status_sleep.delta = (( LED_dim_status_sleep.to - LED_dim_status_sleep.now ) ) / LED_SLEEP_DIM_LEN; - led_fade_to2( LED_duty_pow_blu, &LED_dim_status_sleep ); - - // 次のフレームに進める? - time_to_next_frame_sleep -= 1; - if( time_to_next_frame_sleep == 0 ) - { - time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; - - frame_sleep += 1; - if( frame_sleep >= LED_SLEEP_FRAME_NUM -1 ) - { - frame_sleep = 0; - } - } -} - - - -/* ======================================================== - 電池が少ないときの共通 - 返値: 0 電池が少なくなかった -     1    少なかったので共通パターンにした - ======================================================== */ -//#define LED_RED_SLEEP_DIM 3 -static u8 led_pow_batt_low() -{ -// static u8 led_red_dim_count; - - if( vreg_ctr[VREG_C_BT_REMAIN] > BATT_TH_LO ) - { - LED_pow_red_Mirror = 0; - return 0; - // おしまい - } - - if(( vreg_ctr[VREG_C_BT_REMAIN] > BATT_TH_EMPTY ) || !BT_IN_CHG_delayed_n ) - // 電池残量が5%(〜10%) または、それ未満でも充電中 - { - // 赤点灯 - led_fade_to( LED_duty_pow_blu, 0 ); - -/* - 減光を試してみたが、このようなお手軽実装ではちらついてしまってだめだ - if( vreg_ctr[VREG_C_LED_POW] == LED_POW_ILM_SLEEP ) - { - if( led_red_dim_count == 0 ) - { - LED_pow_red_Mirror = 1; - led_red_dim_count = LED_RED_SLEEP_DIM; - } - else - { - LED_pow_red_Mirror = 0; - led_red_dim_count -= 1; - } - } - else -*/ - { - LED_pow_red_Mirror = 1; - } - - } - else // 電池が5%未満 かつ アダプタなし - { - led_pow_bt_empty(); - } - return 1; -} - - - - -/* ======================================================== - 電池がないパターン -  指定パターンを流す -  お知らせを上書きしたりする - ======================================================== */ -static void led_pow_bt_empty() -{ - static u8 delay; - static u8 red_blink_poi; - - info_led_override = true; - - // 赤点滅 - led_fade_to( LED_duty_pow_blu, 0 ); - - // 赤の点滅パターンも指定できる - delay += 1; - if( delay < 64 ) // フレームの保持時間稼ぎ - { - return; - } - delay = 0; - - if( led_red_batt_empty.dats[ red_blink_poi / 8 ] & ( 1 << ( red_blink_poi % 8 )) ) - { - LED_pow_red_Mirror = 1; - } - else - { - LED_pow_red_Mirror = 0; - } - red_blink_poi += 1; - if( red_blink_poi >= 32 ) - { - red_blink_poi = 0; - } -} - - @@ -642,145 +329,7 @@ void tsk_led_notify( ) } } - if( system_status.info_fullcolor ) - { - led_fade_to2( LED_duty_notify_blu, &LED_dim_status_info_B ); - led_fade_to2( LED_duty_notify_red, &LED_dim_status_info_R ); - led_fade_to2( LED_duty_notify_grn, &LED_dim_status_info_G ); - } - else - { - led_fade_to2( LED_duty_old_NOTIFY, &LED_dim_status_info_B ); - } -} - - - - -/******************************************************//** - LED_Cam TO02 -\n BLINK,*_PLUSE の時は、1周期分は必ずその状態になります。 -\n その間に OFF→BLINK などされると、OFFが無視されます。 - *********************************************************/ -void tsk_led_cam( ) -{ - static u8 state_led_cam = 0; - static u16 task_interval; - u8 LED_CAM_mirror; - - DI(); // レジスタへの書き込みで強制起動がかかることがあるため - if( !cam_led_update ) - { - if( task_interval != 0 ) - { - task_interval -= 1; - return; - } - } - cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため - EI(); - - if( system_status.pwr_state == SLEEP ) // sleep中、強制消灯 - { - LED_CAM_mirror = 0; - state_led_cam = 0; - } - else - { - // ブリンクのように待たせたいとき以外は毎週起動する - // (レジスタの変更にすぐに反応する) - switch ( vreg_ctr[VREG_C_LED_CAM] ) - { - case ( CAM_LED_OFF ): - default: - LED_CAM_mirror = 0; - state_led_cam = 0; - break; - - case ( CAM_LED_ON ): - LED_CAM_mirror = 1; - state_led_cam = 0; - break; - - case ( CAM_LED_BLINK ): - if( state_led_cam == 0 ) - { - LED_CAM_mirror = 1; - state_led_cam = 1; - } - else - { - LED_CAM_mirror = 0; - state_led_cam = 0; - } - task_interval = 250; - break; - - case ( CAM_LED_ON_PLUSE ): - if( state_led_cam == 0 ) - { - LED_CAM_mirror = 1; - state_led_cam = 1; - task_interval = 250; - } - else - { - vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF; - } - break; - - case ( CAM_LED_OFF_PLUSE ): - if( state_led_cam == 0 ) - { - LED_CAM_mirror = 0; - state_led_cam = 1; - task_interval = 250; - } - else - { - vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON; - } - break; - - case( CAM_LED_BY_TWL ): - // TWL互換 // - switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ //. switchのネストとか… - case( TWL_CAMLED_OFF ): - LED_CAM_mirror = 0; - state_led_cam = 0; - break; - - case( TWL_CAMLED_BLINK ): - if( state_led_cam == 0 ) - { - LED_CAM_mirror = 1; - state_led_cam = 1; - } - else - { - LED_CAM_mirror = 0; - state_led_cam = 0; - } - task_interval = 600 / SYS_INTERVAL_TICK + 250; - break; - - case( TWL_CAMLED_ON ): - case( TWL_CAMLED_DEF_ON ): - default: - LED_CAM_mirror = 1; - state_led_cam = 1; - break; - } - } - } // if( system_status.pwr_state == sleep ) ... else ... - - // 輝度更新 // - if( system_status.info_fullcolor ) - { - LED_CAM = LED_CAM_mirror; - } - else - { - LED_old_CAM = LED_CAM_mirror; - } + led_fade_to2( LED_duty_notify_blu, &LED_dim_status_info_B ); + led_fade_to2( LED_duty_notify_red, &LED_dim_status_info_R ); + led_fade_to2( LED_duty_notify_grn, &LED_dim_status_info_G ); } diff --git a/trunk/led.h b/trunk/led.h index 2ce119b..d745ba4 100644 --- a/trunk/led.h +++ b/trunk/led.h @@ -21,19 +21,6 @@ #define LED_CAM P7.5 -// 旧仕様 ///////////////////////////// -// LED_DUTY -//#define LED_duty_old_pow_blu TDR06 同じ -//#define LED_duty_old_WiFi TDR03 同じ -#define LED_duty_old_NOTIFY TDR05 -//#define LED_duty_old_CAM TDR02 -//#define LED_duty_old_3d TDR01 同じ -// wifi2はPWMできません。 -#define LED_old_pow_red P1.5 -#define LED_old_CAM P1.0 - - - #define NOTIFY_LED_TERM 32 @@ -150,4 +137,10 @@ void LED_stop( ); extern void tsk_led_cam(); + +// ==================================== +extern bit ledInitialized; +extern bit info_led_override; + + #endif diff --git a/trunk/led_cam.c b/trunk/led_cam.c new file mode 100644 index 0000000..a49477e --- /dev/null +++ b/trunk/led_cam.c @@ -0,0 +1,141 @@ +/******************************************************//** + LED_Cam TO02 +\n BLINK,*_PLUSE の時は、1周期分は必ずその状態になります。 +\n その間に OFF→BLINK などされると、OFFが無視されます。 + *********************************************************/ +#pragma sfr + +#include "incs.h" +#include "led.h" + + + +// ======================================================== +static u8 state_led_cam = 0; +static u16 task_interval; + +bit cam_led_update; + + + +// ======================================================== +static void cam_led_twl(); + + + +// ======================================================== +void tsk_led_cam( ) +{ + DI(); // レジスタへの書き込みで強制起動がかかることがあるため + if( !cam_led_update ) + { + if( task_interval != 0 ) + { + task_interval -= 1; + return; + } + } + cam_led_update = false; // TWL のブリンク設定(一発だけ点灯)のため + EI(); + + if( system_status.pwr_state == SLEEP ) // sleep中、強制消灯 + { + LED_CAM = 0; + state_led_cam = 0; + } + else + { + // ブリンクのように待たせたいとき以外は毎週起動する + // (レジスタの変更にすぐに反応する) + switch ( vreg_ctr[VREG_C_LED_CAM] ) + { + case ( CAM_LED_OFF ): + default: + LED_CAM = 0; + state_led_cam = 0; + break; + + case ( CAM_LED_ON ): + LED_CAM = 1; + state_led_cam = 0; + break; + + case ( CAM_LED_BLINK ): + if( state_led_cam == 0 ) + { + LED_CAM = 1; + state_led_cam = 1; + } + else + { + LED_CAM = 0; + state_led_cam = 0; + } + task_interval = 250; + break; + + case ( CAM_LED_ON_PLUSE ): + if( state_led_cam == 0 ) + { + LED_CAM = 1; + state_led_cam = 1; + task_interval = 250; + } + else + { + vreg_ctr[VREG_C_LED_CAM] = CAM_LED_OFF; + } + break; + + case ( CAM_LED_OFF_PLUSE ): + if( state_led_cam == 0 ) + { + LED_CAM = 0; + state_led_cam = 1; + task_interval = 250; + } + else + { + vreg_ctr[VREG_C_LED_CAM] = CAM_LED_ON; + } + break; + + case( CAM_LED_BY_TWL ): + cam_led_twl(); + } + } // if( system_status.pwr_state == sleep ) ... else ... +} + + + +void cam_led_twl() +{ + // TWL互換 // + switch ( vreg_twl[ REG_TWL_INT_ADRS_CAM ] ){ + case( TWL_CAMLED_OFF ): + LED_CAM = 0; + state_led_cam = 0; + break; + + case( TWL_CAMLED_BLINK ): + if( state_led_cam == 0 ) + { + LED_CAM = 1; + state_led_cam = 1; + } + else + { + LED_CAM = 0; + state_led_cam = 0; + } + task_interval = 600 / SYS_INTERVAL_TICK + 250; + break; + + case( TWL_CAMLED_ON ): + case( TWL_CAMLED_DEF_ON ): + default: + LED_CAM = 1; + state_led_cam = 1; + break; + } +} diff --git a/trunk/led_pow.c b/trunk/led_pow.c new file mode 100644 index 0000000..2d0bbe9 --- /dev/null +++ b/trunk/led_pow.c @@ -0,0 +1,265 @@ +/* ======================================================== + // 電源LED + LED_POW_B,R 6,7 + + TDR00 周期(0x03FF。TPS0で250kHzでカウントアップ。10bitなら250Hz位になる) + TDR0x Duty 0で消灯、TDR00(より大 =0x03FF以上)で点灯です。 + + enum pwr_state_{ + OFF_TRIG = 0, + ON_CHECK, + ON_TRIG, + ON, + SLEEP +}; + +enum LED_ILUM_MODE{ + LED_POW_ILM_AUTO, + LED_POW_ILM_ON, + LED_POW_ILM_SLEEP, + LED_POW_ILM_CEOFF +}; + ======================================================== */ +#pragma sfr + +#include "incs.h" +#include "led.h" + + +// ======================================================== +// スリープ中明滅のテーブル。マジか。 +const u8 LED_PTN_SLEEP[] = { + 25, 38, 52, 68, 83, 98, 110, 119, + 125, 128, 128, 125, 119, 110, 98, 83, + 68, 52, 38, 25, 16, 10, 8, 8, + 8, 8, 8, 8, 8, 8, 10, 16 + }; + + +// 赤LEDの電池残量LEDの点滅パターン +st_led_red_batt_empty led_red_batt_empty = { 0x55, 0x55, 0x55, 0x55 }; +#define LED_SLEEP_FRAME_LEN 71 +#define LED_SLEEP_DIM_LEN 71 +#define LED_SLEEP_FRAME_NUM 32 + + + +// ======================================================== +static void led_pow_normal( ); +static void led_pow_sleep( ); +static void led_pow_bt_empty(); +static u8 led_pow_batt_low(); + +#define led_fade_to( now, goal ) now = fade_to( now, goal ) +extern u8 fade_to( u8 now, u8 goal ); + +#define led_fade_to2( led, status ) led = fade_to2( status ) +extern u8 fade_to2( st_LED_dim_status* status ); + + + +// ======================================================== +// 電源LEDのスリープパターンのステータス類 +u8 time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; +u8 frame_sleep; +st_LED_dim_status LED_dim_status_sleep; + +extern bit ledInitialized; +extern bit BT_IN_CHG_delayed_n; + + + +// ======================================================== +void tsk_led_pow( ) +{ + if( ! ledInitialized ) + { + return; + // おしまい + } + + info_led_override = false; + + switch ( vreg_ctr[VREG_C_LED_POW] ) + { + case ( LED_POW_ILM_AUTO ): + default: + led_pow_normal( ); + break; + + case ( LED_POW_ILM_SLEEP ): + led_pow_sleep( ); + break; + + case ( LED_POW_ILM_ON ): + led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); + LED_pow_red = 0; + break; + + case ( LED_POW_ILM_OFF ): + led_fade_to( LED_duty_pow_blu, 0 ); + LED_pow_red = 0; + break; + + case ( LED_POW_ILM_ONLY_RED ): + LED_duty_pow_blu = 0; + LED_pow_red = 1; + break; + + case ( LED_POW_ILM_ONLY_BLUE ): + LED_duty_pow_blu = LED_BRIGHT_MAX; + LED_pow_red = 0; + break; + + case ( LED_POW_ILM_FORCE_BT_EMPTY ): + led_pow_bt_empty(); + break; + } + + if( system_status.pwr_state == OFF || system_status.pwr_state == ON_CHECK ) + { + LED_pow_red = 0; + info_led_override = false; + } + + if( info_led_override ) + { + LED_duty_notify_blu = 0; + LED_duty_notify_grn = 0; + LED_duty_notify_red = LED_pow_red ? 255: 0; + } +} + + + +/* ======================================================== + 電池残量で、 青→赤→赤点滅 + ======================================================== */ +static void led_pow_normal( ) +{ + time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; + frame_sleep = 0; + LED_dim_status_sleep.now = (sx16)LED_duty_pow_blu * 128; + + if( led_pow_batt_low() != 0 ) // 赤の点灯も←でやっています + { + return; + // おしまい + } + + // 青点灯 + led_fade_to( LED_duty_pow_blu, vreg_ctr[VREG_C_LED_BRIGHT] ); +} + + + +/* ======================================================== + ホタルパターン + 電池残量で赤→赤点滅にする + ======================================================== */ +static void led_pow_sleep( ) +{ + if( led_pow_batt_low() != 0 ) // 赤の点灯も←でやっています + { + time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; + frame_sleep = 0; + LED_dim_status_sleep.now = (sx16)LED_duty_pow_blu * 128; + return; + // おしまい + } + + LED_dim_status_sleep.to = LED_PTN_SLEEP[frame_sleep] * 128; + + // グラデーションのデルタを計算 + LED_dim_status_sleep.delta = (( LED_dim_status_sleep.to - LED_dim_status_sleep.now ) ) / LED_SLEEP_DIM_LEN; + led_fade_to2( LED_duty_pow_blu, &LED_dim_status_sleep ); + + // 次のフレームに進める? + time_to_next_frame_sleep -= 1; + if( time_to_next_frame_sleep == 0 ) + { + time_to_next_frame_sleep = LED_SLEEP_FRAME_LEN; + + frame_sleep += 1; + if( frame_sleep >= LED_SLEEP_FRAME_NUM -1 ) + { + frame_sleep = 0; + } + } +} + + + +/* ======================================================== + 電池が少ないときの共通 + 返値: 0 電池が少なくなかった +     1    少なかったので共通パターンにした + ======================================================== */ +static u8 led_pow_batt_low() +{ + if( vreg_ctr[VREG_C_BT_REMAIN] > BATT_TH_LO ) + { + LED_pow_red = 0; + return 0; + // おしまい + } + + if(( vreg_ctr[VREG_C_BT_REMAIN] > BATT_TH_EMPTY ) || !BT_IN_CHG_delayed_n ) + // 電池残量が5%(〜10%) または、それ未満でも充電中 + { + // 赤点灯 + led_fade_to( LED_duty_pow_blu, 0 ); + { + LED_pow_red = 1; + } + + } + else // 電池が5%未満 かつ アダプタなし + { + led_pow_bt_empty(); + } + return 1; +} + + + + +/* ======================================================== + 電池がないパターン +  指定パターンを流す +  お知らせを上書きしたりする + ======================================================== */ +static void led_pow_bt_empty() +{ + static u8 delay; + static u8 red_blink_poi; + + info_led_override = true; + + // 赤点滅 + led_fade_to( LED_duty_pow_blu, 0 ); + + // 赤の点滅パターンも指定できる + delay += 1; + if( delay < 64 ) // フレームの保持時間稼ぎ + { + return; + } + delay = 0; + + if( led_red_batt_empty.dats[ red_blink_poi / 8 ] & ( 1 << ( red_blink_poi % 8 )) ) + { + LED_pow_red = 1; + } + else + { + LED_pow_red = 0; + } + red_blink_poi += 1; + if( red_blink_poi >= 32 ) + { + red_blink_poi = 0; + } +} + + diff --git a/trunk/loader.c b/trunk/loader.c index 686509a..e805c83 100644 --- a/trunk/loader.c +++ b/trunk/loader.c @@ -61,6 +61,9 @@ void FSL_Open( void ); void FSL_Close( void ); void hdwinit( void ); static void hdwinit2( ); +static void chk_platform_type(); +static void chk_firm_broke(); + extern void main_loop( ); @@ -110,70 +113,11 @@ void main( ) hdwinit2( ); // ファームの整合性チェック // - { - u8 i; - u8 comp = 0; - - // ローダーと本体は同じバージョンか? - /// 次へのアップデートの途中で終わってないか? - for( i = 0; i < sizeof( __TIME__ ); i++ ) // sizeof( __TIME__ ) = 8 らし - { - comp += ( *( __far u8 * )( MGC_LOAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1; - comp += ( *( u8 * )( MGC_HEAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1; - } - - if( *( u8 * )( MGC_FOOT +2 ) != ':' ) // 消去済のまま - { - comp += 1; - } - - if( comp != 0 ) - { - // ファームリストアを試みる - firm_restore( ); - // 帰ってこない。リセットをかける。 - } - } + chk_firm_broke(); // 試遊台判定 - // デバッガつないでると上手に判定できないことがあります。 - // P40,41 - // HH 実機 - // HL NBD試遊台 - // LH スタンドアロン試遊台 - // LL ISデバッガ - if( !DIPSW_0 && !DIPSW_1 ) - { - system_status.is_dev = 1; - } - else - { -#ifndef _FORCE_TAIKENDAI_ - if( !DIPSW_0 ) -#else - if(1) -#endif - { - system_status.taikendai = 1; - } - else - { - system_status.taikendai = 0; - } + chk_platform_type(); -#ifndef _FORCE_TAIKENDAI_NBD_ - if( !DIPSW_1 ) -#else - if(1) -#endif - { - system_status.taikendai_nbd = 1; - } - else - { - system_status.taikendai_nbd = 0; - } - } // 通常運転 main_loop( ); } @@ -181,6 +125,80 @@ void main( ) +void chk_firm_broke() +{ + u8 i; + u8 comp = 0; + + // ローダーと本体は同じバージョンか? + /// 次へのアップデートの途中で終わってないか? + for( i = 0; i < sizeof( __TIME__ ); i++ ) // sizeof( __TIME__ ) = 8 らし + { + comp += ( *( __far u8 * )( MGC_LOAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1; + comp += ( *( u8 * )( MGC_HEAD + i ) == *( u8 * )( MGC_FOOT + i ) ) ? 0 : 1; + } + + if( *( u8 * )( MGC_FOOT +2 ) != ':' ) // 消去済のまま + { + comp += 1; + } + + if( comp != 0 ) + { + // ファームリストアを試みる + firm_restore( ); + // 帰ってこない。リセットをかける。 + } +} + + +/* ======================================================== + デバッガつないでると上手に判定できないことがあります。 +●CTRファミリ + DEV_DET(P12.[2:1]) + +●CTR&その開発機材 + P40,41 !注意! デバッグ有効でP40がLだとMCUが起動しません! + HH 実機 + HL NBD試遊台 + LH スタンドアロン試遊台 + LL ISデバッガ +======================================================== */ +void chk_platform_type() +{ + // ●CTRファミリ // + system_status.family = (enum _family)( DEV_DET >> 1 ); /// あぁ... + + // ●CTR&その開発機材 // + // 一応初期化 + system_status.is_dev = 0; + system_status.taikendai = 0; + system_status.taikendai_nbd = 0; + + switch( DIPSW ) + { + case DIPSW_TAIKENDAI: + system_status.taikendai = 1; + break; + + case DIPSW_TAIKENDAI_NBD: + system_status.taikendai_nbd = 1; + break; + + case DIPSW_ISDEV: + system_status.is_dev = 1; + break; + } +#ifdef _FORCE_TAIKENDAI_ + system_status.taikendai = 1; +#endif + +#ifdef _FORCE_TAIKENDAI_NBD_ + system_status.taikendai_nbd = 1; +#endif +} + + // ======================================================== diff --git a/trunk/pm.c b/trunk/pm.c index fddd43b..92a425b 100644 --- a/trunk/pm.c +++ b/trunk/pm.c @@ -796,6 +796,11 @@ err PM_LCD_on( ) PM_VDDLCD_on( ); + if( system_status.family == FAMILY_SPFL ) + { + SPFL_LCD_AMOL_HV_CONT = 1; + } + wait_ms( DELAY_PM_TSS_50B_AND_TCOM ); PM_TCOM_on( ); @@ -822,7 +827,7 @@ err PM_LCD_on( ) // BSR // void PM_LCD_off() { - // BLついてたら消す + // BLついてたら消す。// チェックするのは割り込みの関係 if( ( iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_BL ) & 0x03 ) != 0 ) { u8 tot; @@ -841,9 +846,19 @@ void PM_LCD_off() vreg_ctr[VREG_C_COMMAND2] &= ~( REG_BIT_CMD_BL_U_OFF | REG_BIT_CMD_BL_L_OFF ); } + + // 液晶電源切る // + SPFL_LCD_AMOL_HV_CONT = 0; // 他のファミリでも弊害ないし + + // 50msとか待つし、確認しましょうかね… if( iic_mcu_read_a_byte( IIC_SLA_PMIC, PM_REG_ADRS_VDD_LCD ) != 0 ) { - PM_TCOM_off(); + if( system_status.family == FAMILY_SPFL ) + { + wait_ms( 10 ); // アモルファス15Vを切ったときのウェイト。数字は暫定 + } + + PM_TCOM_off(); wait_ms( 1 ); PM_TCOM_VCS_off( ); wait_ms( DELAY_PM_LCD_OFF ); @@ -852,7 +867,7 @@ void PM_LCD_off() vreg_ctr[VREG_C_STATUS] &= ~REG_BIT_LCD_POW; } - set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); + set_irq( VREG_C_IRQ3, REG_BIT_LCD_OFF ); // 無条件に発生。マスク無ければ。 } diff --git a/trunk/task_misc.c b/trunk/task_misc.c index 9215b1e..ef5dc9a 100644 --- a/trunk/task_misc.c +++ b/trunk/task_misc.c @@ -288,7 +288,7 @@ u8 extinfo_read() infos[5] = (u8)( _dbg_rcomp & 0xFF ); infos[6] = raw_adc_temperature; infos[7] = ( !temp_zone_charge_disable | ( bt_authorized << 1 ) ); - infos[8] = system_status.info_fullcolor; + infos[8] = 1; // system_status.info_fullcolor; iic_burst_state++; return( infos[ iic_burst_state -1 ] ); diff --git a/trunk/user_define.h b/trunk/user_define.h index ba185b6..3fcd73a 100644 --- a/trunk/user_define.h +++ b/trunk/user_define.h @@ -75,6 +75,13 @@ #define SLP_REQ P12.0 +// CTR,SPFL,まだ見ぬ派生機識別 +#define DEV_DET ( P12 & 0x00000110 ) +#define DEV_CTR ( 0b00 << 1 ) +#define DEV_SPFL ( 0b01 << 1 ) +#define DEV_SHRIMP ( 0b10 << 1 ) +#define DEV_RSV2 ( 0b11 << 1 ) + // FCRAM #ifdef _MODEL_TEG2_ #define FCRAM_RST P14.0 @@ -114,11 +121,15 @@ #define BT_TEMP_P P1.7 +// SPFLのアモルファスLCDで必要な±15Vの電源。 +#define SPFL_LCD_AMOL_HV_CONT P20.2 + + // 充電せよ(out) // 負論理です。注意。 #define BT_CHG_ENABLE() ( P4.3 = 0 ) #define BT_CHG_DISABLE() ( P4.3 = 1 ) -#define BT_CHG_Ena_n P4.3 +#define BT_CHG_Ena_n ( P4.3 ) // 充電中(in) #define BT_IN_CHG_n P5.1 @@ -194,8 +205,13 @@ //#define 32k_I1 P12.3 // XT1 //#define 32k_I2 P12.4 // XT2 -#define DIPSW_0 P4.0 // mini cube ソフトウェアディップスイッチ TOOL0、L禁止! -#define DIPSW_1 P4.1 // mini cube ソフトウェアディップスイッチ TOOL1 +// 実機、開発機、試遊台判別。 +#define DIPSW ( P4 & 0b00000011 ) // mini cube & ソフトウェアディップスイッチ TOOL0,1。 P4.0は L 注意! +#define DIPSW_CTR 0b11 // 未使用 +#define DIPSW_ISDEV 0b00 // KuCはBattGaugeで判別 +#define DIPSW_TAIKENDAI 0b10 +#define DIPSW_TAIKENDAI_NBD 0b01 + #ifndef _MODEL_WM0_ #define SHELL_OPEN P7.1 // INTP5 ふた開閉 (閉じるとL) @@ -235,11 +251,6 @@ #define KR_SW_WIFI ( 1 << 4 ) -#define INFO_LED_IS_FULLCOLOR_n P20.2 -#define INFO_LED_IS_FULLCOLOR_PM PM20.2 -#define INFO_LED_IS_FULLCOLOR_PU PU20.2 - - /////////////////////////////////////////////////////////// #define INT_MSK0_IIC_M_DMA 0b0001000000000000 diff --git a/trunk/yav_mcu_bsr.prj b/trunk/yav_mcu_bsr.prj index 62cf6aa..b603d96 100644 --- a/trunk/yav_mcu_bsr.prj +++ b/trunk/yav_mcu_bsr.prj @@ -220,30 +220,6 @@ LT=8 Z=0 CommandFile=0 RA_OPT= -[SrcFile] -Source1=loader.c -Source2=pm.c -Source3=i2c_ctr.c -Source4=main.c -Source5=magic.c -Source6=WDT.c -Source7=i2c_mcu.c -Source8=i2c_twl.c -Source9=led.c -Source10=rtc.c -Source11=vreg_ctr.c -Source12=vreg_twl.c -Source13=adc.c -Source14=renge\renge.c -Source15=accero.c -Source16=self_flash.c -Source17=sw.c -Source18=task_debug.c -Source19=task_misc.c -Source20=task_sys.c -Source21=pedo_alg_thre_det2.c -Source22=ini_VECT.c -Source23=task_status.c [BuildBefore-AfterCmd] Before1=c:\cygwin\bin\touch magic.c After1=ruby nec_s_2_bsrbin2.rb bsr.hex @@ -720,42 +696,6 @@ Tool1=CC78K0R|W2.13 Tool2=RA78K0R|W1.33 Tool3=SK78K0R|V3.10 Tool4=ID78K0R-QB|V3.61 -[IncFile] -Include1=incs_loader.h -Include2=jhl_defs.h -Include3=config.h -Include4=user_define.h -Include5=bsr_system.h -Include6=renge\renge.h -Include7=renge\renge_defs.h -Include8=renge\renge_task_immediate.h -Include9=vreg_ctr.h -Include10=vreg_twl.h -Include11=loader.h -Include12=i2c_mcu.h -Include13=WDT.h -Include14=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h -Include15=fsl_user.h -Include16=i2c_ctr.h -Include17=pm.h -Include18=rtc.h -Include19=reboot.h -Include20=magic.h -Include21=incs.h -Include22=i2c_twl.h -Include23=accero.h -Include24=pedometer.h -Include25=sw.h -Include26=adc.h -Include27=led.h -Include28=batt_params.h -Include29=pool.h -Include30=i2c_twl_defs.h -Include31=voltable.h -Include32=renge\renge_task_intval.h -Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h -Include34=self_flash.h -Include35=pedo_lpf_coeff.h [Options.LK78K0R 0] Version=100 O0=bsr_k0r.lmf @@ -1049,3 +989,65 @@ DefaultMode2=1 DefaultMode3=1 DefaultMode4=1 DefaultMode5=1 +[SrcFile] +Source1=loader.c +Source2=pm.c +Source3=i2c_ctr.c +Source4=main.c +Source5=magic.c +Source6=WDT.c +Source7=i2c_mcu.c +Source8=i2c_twl.c +Source9=led.c +Source10=rtc.c +Source11=vreg_ctr.c +Source12=vreg_twl.c +Source13=adc.c +Source14=renge\renge.c +Source15=accero.c +Source16=self_flash.c +Source17=sw.c +Source18=task_debug.c +Source19=task_misc.c +Source20=task_sys.c +Source21=pedo_alg_thre_det2.c +Source22=ini_VECT.c +Source23=task_status.c +Source24=led_cam.c +Source25=led_pow.c +[IncFile] +Include1=incs_loader.h +Include2=jhl_defs.h +Include3=config.h +Include4=user_define.h +Include5=bsr_system.h +Include6=renge\renge.h +Include7=renge\renge_defs.h +Include8=renge\renge_task_immediate.h +Include9=vreg_ctr.h +Include10=vreg_twl.h +Include11=loader.h +Include12=i2c_mcu.h +Include13=WDT.h +Include14=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\fsl.h +Include15=fsl_user.h +Include16=i2c_ctr.h +Include17=pm.h +Include18=rtc.h +Include19=reboot.h +Include20=magic.h +Include21=incs.h +Include22=i2c_twl.h +Include23=accero.h +Include24=pedometer.h +Include25=sw.h +Include26=adc.h +Include27=led.h +Include28=batt_params.h +Include29=pool.h +Include30=i2c_twl_defs.h +Include31=voltable.h +Include32=renge\renge_task_intval.h +Include33=..\..\..\Program Files (x86)\NEC Electronics Tools\CC78K0R\W2.13\inc78k0r\math.h +Include34=self_flash.h +Include35=pedo_lpf_coeff.h