EW升级单块板验证成功,批量验证失败
This commit is contained in:
3
.vscode/settings.json
vendored
3
.vscode/settings.json
vendored
@@ -7,6 +7,7 @@
|
||||
"if_can.h": "c",
|
||||
"board.h": "c",
|
||||
"prot_uc.h": "c",
|
||||
"tran_for_slave.h": "c"
|
||||
"tran_for_slave.h": "c",
|
||||
"ewupdata.h": "c"
|
||||
}
|
||||
}
|
@@ -299,7 +299,7 @@
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>0</IsCurrentTarget>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>18</CpuCode>
|
||||
<DebugOpt>
|
||||
@@ -523,7 +523,7 @@
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
<IsCurrentTarget>0</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>18</CpuCode>
|
||||
<DebugOpt>
|
||||
@@ -1399,6 +1399,18 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\source\elec_det\interface\EWUpdata.c</PathWithFileName>
|
||||
<FilenameWithoutPath>EWUpdata.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\source\elec_det\test\EW_TestUsartApp.c</PathWithFileName>
|
||||
<FilenameWithoutPath>EW_TestUsartApp.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -1406,7 +1418,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>55</FileNumber>
|
||||
<FileNumber>56</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1418,7 +1430,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>56</FileNumber>
|
||||
<FileNumber>57</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1430,7 +1442,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>57</FileNumber>
|
||||
<FileNumber>58</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1442,7 +1454,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>58</FileNumber>
|
||||
<FileNumber>59</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1454,7 +1466,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>59</FileNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1466,7 +1478,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>60</FileNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1478,7 +1490,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>61</FileNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1498,7 +1510,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>62</FileNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1510,7 +1522,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>63</FileNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1530,7 +1542,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>64</FileNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1542,7 +1554,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>65</FileNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1554,7 +1566,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>66</FileNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1566,7 +1578,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>67</FileNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1578,7 +1590,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>68</FileNumber>
|
||||
<FileNumber>69</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1590,7 +1602,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>69</FileNumber>
|
||||
<FileNumber>70</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1602,7 +1614,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>70</FileNumber>
|
||||
<FileNumber>71</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1614,7 +1626,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>71</FileNumber>
|
||||
<FileNumber>72</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1626,7 +1638,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>72</FileNumber>
|
||||
<FileNumber>73</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1638,7 +1650,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>73</FileNumber>
|
||||
<FileNumber>74</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1650,7 +1662,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>74</FileNumber>
|
||||
<FileNumber>75</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1662,7 +1674,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>75</FileNumber>
|
||||
<FileNumber>76</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1674,7 +1686,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>76</FileNumber>
|
||||
<FileNumber>77</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1686,7 +1698,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>77</FileNumber>
|
||||
<FileNumber>78</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1698,7 +1710,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>78</FileNumber>
|
||||
<FileNumber>79</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1710,7 +1722,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>79</FileNumber>
|
||||
<FileNumber>80</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1722,7 +1734,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>80</FileNumber>
|
||||
<FileNumber>81</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1734,7 +1746,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>81</FileNumber>
|
||||
<FileNumber>82</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1746,7 +1758,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>82</FileNumber>
|
||||
<FileNumber>83</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1766,7 +1778,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>83</FileNumber>
|
||||
<FileNumber>84</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1778,7 +1790,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>84</FileNumber>
|
||||
<FileNumber>85</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1790,7 +1802,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>85</FileNumber>
|
||||
<FileNumber>86</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1802,7 +1814,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>86</FileNumber>
|
||||
<FileNumber>87</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1814,7 +1826,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>87</FileNumber>
|
||||
<FileNumber>88</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1826,7 +1838,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>88</FileNumber>
|
||||
<FileNumber>89</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1838,7 +1850,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>89</FileNumber>
|
||||
<FileNumber>90</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1850,7 +1862,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>90</FileNumber>
|
||||
<FileNumber>91</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1862,7 +1874,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>91</FileNumber>
|
||||
<FileNumber>92</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1874,7 +1886,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>92</FileNumber>
|
||||
<FileNumber>93</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1886,7 +1898,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>93</FileNumber>
|
||||
<FileNumber>94</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1906,7 +1918,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>94</FileNumber>
|
||||
<FileNumber>95</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1918,7 +1930,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>95</FileNumber>
|
||||
<FileNumber>96</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1930,7 +1942,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>96</FileNumber>
|
||||
<FileNumber>97</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1942,7 +1954,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>97</FileNumber>
|
||||
<FileNumber>98</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1954,7 +1966,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>10</GroupNumber>
|
||||
<FileNumber>98</FileNumber>
|
||||
<FileNumber>99</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1974,7 +1986,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>11</GroupNumber>
|
||||
<FileNumber>99</FileNumber>
|
||||
<FileNumber>100</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -1994,7 +2006,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>100</FileNumber>
|
||||
<FileNumber>101</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2006,7 +2018,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>101</FileNumber>
|
||||
<FileNumber>102</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2018,7 +2030,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>102</FileNumber>
|
||||
<FileNumber>103</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2030,7 +2042,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>103</FileNumber>
|
||||
<FileNumber>104</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2042,7 +2054,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>104</FileNumber>
|
||||
<FileNumber>105</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2054,7 +2066,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>12</GroupNumber>
|
||||
<FileNumber>105</FileNumber>
|
||||
<FileNumber>106</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2074,7 +2086,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>13</GroupNumber>
|
||||
<FileNumber>106</FileNumber>
|
||||
<FileNumber>107</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2094,7 +2106,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>14</GroupNumber>
|
||||
<FileNumber>107</FileNumber>
|
||||
<FileNumber>108</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -2106,7 +2118,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>14</GroupNumber>
|
||||
<FileNumber>108</FileNumber>
|
||||
<FileNumber>109</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@@ -894,6 +894,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\source\elec_det\interface\EWChecker.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>EWUpdata.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\source\elec_det\interface\EWUpdata.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>EW_TestUsartApp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -3450,6 +3455,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\source\elec_det\interface\EWChecker.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>EWUpdata.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\source\elec_det\interface\EWUpdata.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>EW_TestUsartApp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -4894,6 +4904,11 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\source\elec_det\interface\EWChecker.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>EWUpdata.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\source\elec_det\interface\EWUpdata.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>EW_TestUsartApp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
doc/MS-10-30-1.bin
Normal file
BIN
doc/MS-10-30-1.bin
Normal file
Binary file not shown.
Binary file not shown.
@@ -6,8 +6,8 @@ import json
|
||||
|
||||
|
||||
BOOT_PATH ="JW3425_boot_v12.bin"
|
||||
APP_PATH ="MS-IEpro20231007.bin"
|
||||
OUT_PATH = BOOT_PATH.split('.')[0]+".jwt"
|
||||
APP_PATH ="ms-10-30.bin"
|
||||
OUT_PATH = BOOT_PATH.split('.')[0]+APP_PATH.split('.')[0]+".jwt"
|
||||
|
||||
# 创建离线下载器的镜像
|
||||
|
||||
@@ -78,5 +78,11 @@ def creat():
|
||||
|
||||
if __name__ == "__main__":
|
||||
creat()
|
||||
# d=bytearray()
|
||||
# with open("MS-10-30-1.bin","rb") as f:
|
||||
# d+=f.read()
|
||||
# with open("ms-10-30.bin","wb+") as f:
|
||||
# f.write(d[4096:4096+9800])
|
||||
|
||||
|
||||
|
||||
|
BIN
doc/ms-10-30.bin
Normal file
BIN
doc/ms-10-30.bin
Normal file
Binary file not shown.
@@ -263,4 +263,6 @@
|
||||
添加跳转到bootloader命令 jwt_app_runboot
|
||||
解决 EW WriteMTP 命令异常
|
||||
debug 输出设备改为 host
|
||||
|
||||
2023.11.16
|
||||
完成方案中updata调试,支持不处于bootloader中时自动跳转至bootloader
|
||||
单块板验证成功,批量验证失败
|
||||
|
@@ -1,5 +1,6 @@
|
||||
|
||||
#include "EWChecker.h"
|
||||
#include "EWUpdata.h"
|
||||
#include "driver/EWDriver.h"
|
||||
#include "base/delay.h"
|
||||
#include "hardware/adc_cfg.h"
|
||||
@@ -12,15 +13,6 @@
|
||||
#include "mystdlib.h"
|
||||
|
||||
|
||||
#define UPDATA_PACK_LEN 128
|
||||
#define UPDATA_BASE_ADDR 0x1000
|
||||
#define UPDATA_DATA_LEN (12*1024)
|
||||
#define UPDATA_FLAG_ADDR (0x7c)
|
||||
//#define UPDATA_FLAG ((uint8_t []){0x99,0x66,0xaa,0x55})
|
||||
#define UPDATA_FLAG ((uint8_t []){0xaa,0xbb,0xcc,0xdd})
|
||||
|
||||
#define UPDATA_CRC_ALL ((uint32_t *)(MC_CODE_ADDR+16*1024))[0]
|
||||
#define UPDATA_CRC_APP ((uint32_t *)(MC_CODE_ADDR+16*1024))[1]
|
||||
|
||||
#define EW_CHECKER_RUN_BUF 32
|
||||
|
||||
@@ -29,365 +21,6 @@ uint8_t EW_Test_PWD[8]="FBCDabcd";
|
||||
uint8_t EW_RunBuf[EW_CHECKER_RUN_BUF];
|
||||
|
||||
|
||||
// 擦除
|
||||
static uint8_t EW_bootErease(void)
|
||||
{
|
||||
uint8_t data[3]={0xfe,0x00,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,2,1);
|
||||
delay_ms(50);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_erase(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootErease();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_erase,cmd_jwt_boot_erase,"jwt srase in boot")
|
||||
|
||||
|
||||
// 跳转
|
||||
static uint8_t EW_bootJump(void)
|
||||
{
|
||||
uint8_t data[3]={0xf9,0x00,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,2,1);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_jump(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootJump();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_jump,cmd_jwt_boot_jump,"jwt jump in boot")
|
||||
|
||||
|
||||
// 充电
|
||||
static uint8_t EW_bootCharg(void)
|
||||
{
|
||||
uint8_t data[4]={0xf8,0x01,0x01,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,3,1);
|
||||
delay_ms(2);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_charg(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootCharg();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_charg,cmd_jwt_boot_charg,"jwt charg in boot")
|
||||
|
||||
|
||||
|
||||
// 放电
|
||||
static uint8_t EW_bootDisCharg(void)
|
||||
{
|
||||
uint8_t data[4]={0xf8,0x01,0x00,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,3,1);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_discharg(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootDisCharg();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_discharg,cmd_jwt_boot_discharg,"jwt discharg in boot")
|
||||
|
||||
|
||||
|
||||
// 发送数据
|
||||
// len 最长为128字节
|
||||
static uint8_t EW_bootWrite(uint16_t addr,uint8_t *d,uint16_t len)
|
||||
{
|
||||
uint8_t ret=0;
|
||||
uint8_t read[4]={0};
|
||||
uint8_t *buf=rt_malloc(len+2+2+1);
|
||||
if(buf==RT_NULL) return 1;
|
||||
buf[0]=0xfc;
|
||||
buf[1]=2+len;
|
||||
buf[2]=addr&0xff;
|
||||
buf[3]=addr>>8;
|
||||
rt_memcpy(&buf[4],d,len);
|
||||
LED2_Out=0;
|
||||
DMod_SendBytesXor(buf,len+2+2,1);
|
||||
LED2_Out=1;
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
rt_free(buf);
|
||||
if(ret){
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 校验
|
||||
static uint8_t EW_bootCheckCrc(uint16_t adr_start,uint16_t adr_end,uint32_t *crc)
|
||||
{
|
||||
uint8_t ret=0;
|
||||
uint8_t cmd[7]={0xfb,0x04,adr_start&0xff,adr_start>>8,adr_end&0xff,adr_end>>8};
|
||||
uint8_t read[4+4]={0};
|
||||
DMod_SendBytesXor(cmd,6,1);
|
||||
delay_ms(10);
|
||||
ret=DMod_ReadBytesXor(read,8,100);
|
||||
if(ret==0){
|
||||
if(crc){
|
||||
*crc=(read[3]<<24)|(read[4]<<16)|(read[5]<<8)|(read[6]<<0);
|
||||
}
|
||||
}
|
||||
DBG_LOG("addr_start=0x%04x,addr_end=0x%04x.",adr_start,adr_end);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,",
|
||||
ret,read[0],read[1],read[2],read[3],read[4],read[5],read[6],read[7]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_checkcrc(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
uint32_t crc=0;
|
||||
ret=EW_bootCheckCrc(UPDATA_BASE_ADDR,UPDATA_BASE_ADDR+UPDATA_DATA_LEN,&crc);
|
||||
cmd_print("jwt crc32=0x%04x.",crc);
|
||||
//crc=Crc32Calu((uint32_t *)(MC_CODE_ADDR+UPDATA_BASE_ADDR),UPDATA_DATA_LEN);
|
||||
crc=UPDATA_CRC_APP;
|
||||
cmd_print("local crc32=0x%04x.",crc);
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_checkcrc,cmd_jwt_boot_checkcrc,"jwt checkcrc in boot")
|
||||
|
||||
|
||||
|
||||
// 读取
|
||||
static uint8_t EW_bootRead(uint16_t adr,uint8_t *buf,uint16_t len)
|
||||
{
|
||||
uint8_t ret=0;
|
||||
uint8_t cmd[7]={0xfa,0x03,adr&0xff,adr>>8,len};
|
||||
uint16_t read_len=2+len+1+1;
|
||||
uint8_t *read=rt_malloc(read_len);
|
||||
if(read==RT_NULL) return 1;
|
||||
DMod_SendBytesXor(cmd,6,1);
|
||||
ret=DMod_ReadBytesXor(read,read_len,100);
|
||||
rt_memset(buf,0,len);
|
||||
if(ret==0)
|
||||
{
|
||||
rt_memcpy(buf,&read[3],len);
|
||||
}
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
rt_free(read);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// app:通信测试
|
||||
static int EW_appCommTest(void)
|
||||
{
|
||||
uint8_t data[4]={0x11,0x22};
|
||||
uint8_t ret;
|
||||
DBG_LOG("send:%02x,%02x.",data[0],data[1]);
|
||||
ret=EW_CommTest(data,2,300);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,data[0],data[1],data[2],data[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_app_commtest(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_appCommTest();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_app_commtest,cmd_jwt_app_commtest,"jwt commtest in app")
|
||||
|
||||
|
||||
|
||||
// app:读取数据
|
||||
static int EW_appRead(void)
|
||||
{
|
||||
uint8_t read_buf[4]={0};
|
||||
int ret=0;
|
||||
uint8_t addr=(uint8_t)(UPDATA_FLAG_ADDR/4);
|
||||
DBG_LOG("addr=0x%02x.",addr);
|
||||
ret=EW_ReadMTP(1,addr,read_buf,4);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read_buf[0],read_buf[1],read_buf[2],read_buf[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_app_read(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_appRead();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_app_read,cmd_jwt_app_read,"jwt read in app")
|
||||
|
||||
|
||||
// app:runbootloader
|
||||
static void EW_appRunBoot(void)
|
||||
{
|
||||
EW_Charge(1,0,0);
|
||||
delay_ms(6000);
|
||||
EW_RunBootLoader(1,1);
|
||||
DBG_LOG("run boot");
|
||||
}
|
||||
static int cmd_jwt_app_runboot(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
EW_appRunBoot();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_app_runboot,cmd_jwt_app_runboot,"jwt turn to bootloader")
|
||||
|
||||
|
||||
|
||||
|
||||
// 升级
|
||||
void EW_Updata(void)
|
||||
{
|
||||
Checker_RunCfg_st *cfg=&checker_runcfg;
|
||||
uint16_t ret=0;
|
||||
uint8_t read_buf[4]={0};
|
||||
uint8_t *data=(uint8_t *)MC_CODE_ADDR+UPDATA_BASE_ADDR;
|
||||
uint16_t len=UPDATA_DATA_LEN;
|
||||
uint16_t addr=UPDATA_BASE_ADDR;
|
||||
uint8_t pack_len=UPDATA_PACK_LEN;
|
||||
uint32_t crc=0;
|
||||
uint32_t crc_module=0;
|
||||
|
||||
// 充电时间 6000
|
||||
int time_charg=checker_runcfg.params[0];
|
||||
// 加载app时间 6000
|
||||
int time_loadapp=checker_runcfg.params[1];
|
||||
// 总线关断时间 1000
|
||||
int time_poweroff=checker_runcfg.params[2];
|
||||
// 升级模式,0,无app时升级;1,无条件升级
|
||||
int updata_mode=checker_runcfg.params[3];
|
||||
|
||||
retry:
|
||||
delay_ms(100);
|
||||
ret=EW_bootCharg();
|
||||
if(ret){
|
||||
// 有可能在app中
|
||||
delay_ms(time_loadapp);
|
||||
EW_Charge(1,0,0);
|
||||
delay_ms(time_charg);
|
||||
if(EW_appCommTest()==0){
|
||||
if(updata_mode==1){
|
||||
delay_ms(50);
|
||||
EW_RunBootLoader(0,1);
|
||||
updata_mode=2;
|
||||
DBG_LOG("turn to bootloader,retry.");
|
||||
goto retry;
|
||||
}else if(updata_mode==2){
|
||||
// 已经重试过一次了,bootloader还是不能通信
|
||||
DBG_WARN("boot commit failed.");
|
||||
ret=12;
|
||||
goto err;
|
||||
}else if(updata_mode==0){
|
||||
// 有app的时候不需要升级
|
||||
DBG_WARN("no need updata.");
|
||||
ret=0;
|
||||
goto err;
|
||||
}
|
||||
}else{
|
||||
if(updata_mode!=2){
|
||||
// bootloader 和 app 都不能通信
|
||||
DBG_WARN("commit failed");
|
||||
delay_ms(50);
|
||||
EW_RunBootLoader(0,1);
|
||||
updata_mode=2;
|
||||
goto retry;
|
||||
}else{
|
||||
DBG_WARN("retry failed.");
|
||||
ret=13;
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(ret) {ret=1;goto err;}
|
||||
delay_ms(time_charg);
|
||||
ret=EW_bootErease();
|
||||
if(ret) {ret=2;goto err;}
|
||||
delay_ms(600);
|
||||
while(len>0){
|
||||
pack_len=len>UPDATA_PACK_LEN?UPDATA_PACK_LEN:len;
|
||||
LED1_Out=!LED1_Out;
|
||||
ret=EW_bootWrite(addr,data,pack_len);
|
||||
addr+=pack_len;
|
||||
data+=pack_len;
|
||||
len-=pack_len;
|
||||
if(ret) {ret=3;goto err;}
|
||||
delay_ms(1);
|
||||
}
|
||||
//crc=Crc32Calu((uint32_t *)(MC_CODE_ADDR+UPDATA_BASE_ADDR),UPDATA_DATA_LEN);
|
||||
crc=UPDATA_CRC_APP;
|
||||
DBG_LOG("local crc:0x%04x.",crc);
|
||||
ret=EW_bootCheckCrc(UPDATA_BASE_ADDR,UPDATA_BASE_ADDR+UPDATA_DATA_LEN,&crc_module);
|
||||
DBG_LOG("module crc:0x%04x.",crc_module);
|
||||
if(ret) {ret=4;goto err;}
|
||||
if(crc!=crc_module){ret=5;goto err;}
|
||||
delay_ms(50);
|
||||
ret=EW_bootJump();
|
||||
if(ret) {ret=6;goto err;}
|
||||
delay_ms(time_loadapp);
|
||||
ret=EW_EnWriteMTP(0,1);
|
||||
if(ret) {ret=7;goto err;}
|
||||
DBG_LOG("EW_EnWriteMTP success.");
|
||||
delay_ms(1);
|
||||
|
||||
ret=EW_WriteMTP(1,(uint8_t)(UPDATA_FLAG_ADDR/4),UPDATA_FLAG,4);
|
||||
if(ret) {ret=8;goto err;}
|
||||
DBG_LOG("EW_WriteMTP success.");
|
||||
delay_ms(1);
|
||||
ret=EW_ReadMTP(1,(uint8_t)(UPDATA_FLAG_ADDR/4),read_buf,4);
|
||||
if(ret) {ret=9;goto err;}
|
||||
if(memcmp(read_buf,UPDATA_FLAG,4)!=0){
|
||||
DBG_LOG("read_buf=0x%02d,0x%02d,0x%02d,0x%02d.",read_buf[0],read_buf[1],read_buf[2],read_buf[3]);
|
||||
ret=10;goto err;
|
||||
}
|
||||
DBG_LOG("EW_ReadMTP check success.");
|
||||
delay_ms(1);
|
||||
XTBUS_OFF;
|
||||
delay_ms(time_poweroff);
|
||||
XTBUS_ON;
|
||||
delay_ms(time_loadapp);
|
||||
ret=EW_appCommTest();
|
||||
if(ret) {ret=11;goto err;}
|
||||
DBG_LOG("EW_appCommTest success.");
|
||||
|
||||
err:
|
||||
DBG_LOG("ret=%d",ret);
|
||||
Checker_SetRtv(&ret,checker_runcfg.rtv_count);
|
||||
Checker_MaskResult(ret,checker_runcfg.task_info.runindex);
|
||||
}
|
||||
static int cmd_jwt_updata(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
checker_runcfg.params[0]=6000;
|
||||
checker_runcfg.params[1]=6000;
|
||||
checker_runcfg.params[2]=1000;
|
||||
checker_runcfg.params[3]=0;
|
||||
checker_runcfg.rtv_count=0;
|
||||
EW_Updata();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_updata,cmd_jwt_updata,"jwt updata")
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
480
source/elec_det/interface/EWUpdata.c
Normal file
480
source/elec_det/interface/EWUpdata.c
Normal file
@@ -0,0 +1,480 @@
|
||||
|
||||
|
||||
|
||||
#include "base/define.h"
|
||||
#include "basechecker.h"
|
||||
#include "stdint.h"
|
||||
#include "EWUpdata.h"
|
||||
#include "driver/EWDriver.h"
|
||||
#include "base/delay.h"
|
||||
#include "hardware/adc_cfg.h"
|
||||
#include "base/utility.h"
|
||||
#include "hardware/power.h"
|
||||
#include "hardware/timer_cfg.h"
|
||||
#include "debug.h"
|
||||
#include "commend.h"
|
||||
#include "mystring.h"
|
||||
#include "mystdlib.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define UPDATA_PACK_LEN 128
|
||||
#define UPDATA_BASE_ADDR 0x1000
|
||||
#define UPDATA_DATA_LEN (12*1024)
|
||||
#define UPDATA_FLAG_ADDR (0x7c)
|
||||
#define BOOT_FLAG ((uint8_t []){0x99,0x66,0xaa,0x55})
|
||||
#define UPDATA_FLAG ((uint8_t []){0xaa,0xbb,0xcc,0xdd})
|
||||
|
||||
#define UPDATA_CRC_ALL ((uint32_t *)(MC_CODE_ADDR+16*1024))[0]
|
||||
#define UPDATA_CRC_APP ((uint32_t *)(MC_CODE_ADDR+16*1024))[1]
|
||||
|
||||
|
||||
|
||||
// 擦除
|
||||
static uint8_t EW_bootErease(void)
|
||||
{
|
||||
uint8_t data[3]={0xfe,0x00,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,2,1);
|
||||
delay_ms(50);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_erase(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootErease();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_erase,cmd_jwt_boot_erase,"jwt srase in boot")
|
||||
|
||||
|
||||
// 跳转
|
||||
static uint8_t EW_bootJump(void)
|
||||
{
|
||||
uint8_t data[3]={0xf9,0x00,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,2,1);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_jump(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootJump();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_jump,cmd_jwt_boot_jump,"jwt jump in boot")
|
||||
|
||||
|
||||
// 充电
|
||||
static uint8_t EW_bootCharg(void)
|
||||
{
|
||||
uint8_t data[4]={0xf8,0x01,0x01,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,3,1);
|
||||
delay_ms(2);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_charg(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootCharg();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_charg,cmd_jwt_boot_charg,"jwt charg in boot")
|
||||
|
||||
|
||||
|
||||
// 放电
|
||||
static uint8_t EW_bootDisCharg(void)
|
||||
{
|
||||
uint8_t data[4]={0xf8,0x01,0x00,0x00};
|
||||
uint8_t read[4]={0};
|
||||
uint8_t ret=0;
|
||||
DMod_SendBytesXor(data,3,1);
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_discharg(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_bootDisCharg();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_discharg,cmd_jwt_boot_discharg,"jwt discharg in boot")
|
||||
|
||||
|
||||
|
||||
// 发送数据
|
||||
// len 最长为128字节
|
||||
static uint8_t EW_bootWrite(uint16_t addr,uint8_t *d,uint16_t len)
|
||||
{
|
||||
uint8_t ret=0;
|
||||
uint8_t read[4]={0};
|
||||
uint8_t *buf=rt_malloc(len+2+2+1);
|
||||
if(buf==RT_NULL) return 1;
|
||||
buf[0]=0xfc;
|
||||
buf[1]=2+len;
|
||||
buf[2]=addr&0xff;
|
||||
buf[3]=addr>>8;
|
||||
rt_memcpy(&buf[4],d,len);
|
||||
LED2_Out=0;
|
||||
DMod_SendBytesXor(buf,len+2+2,1);
|
||||
LED2_Out=1;
|
||||
ret=DMod_ReadBytesXor(read,4,100);
|
||||
rt_free(buf);
|
||||
if(ret){
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 校验
|
||||
static uint8_t EW_bootCheckCrc(uint16_t adr_start,uint16_t adr_end,uint32_t *crc)
|
||||
{
|
||||
uint8_t ret=0;
|
||||
uint8_t cmd[7]={0xfb,0x04,adr_start&0xff,adr_start>>8,adr_end&0xff,adr_end>>8};
|
||||
uint8_t read[4+4]={0};
|
||||
DMod_SendBytesXor(cmd,6,1);
|
||||
delay_ms(10);
|
||||
ret=DMod_ReadBytesXor(read,8,100);
|
||||
if(ret==0){
|
||||
if(crc){
|
||||
*crc=(read[3]<<24)|(read[4]<<16)|(read[5]<<8)|(read[6]<<0);
|
||||
}
|
||||
}
|
||||
DBG_LOG("addr_start=0x%04x,addr_end=0x%04x.",adr_start,adr_end);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x,",
|
||||
ret,read[0],read[1],read[2],read[3],read[4],read[5],read[6],read[7]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_boot_checkcrc(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
uint32_t crc=0;
|
||||
ret=EW_bootCheckCrc(UPDATA_BASE_ADDR,UPDATA_BASE_ADDR+UPDATA_DATA_LEN,&crc);
|
||||
cmd_print("jwt crc32=0x%04x.",crc);
|
||||
//crc=Crc32Calu((uint32_t *)(MC_CODE_ADDR+UPDATA_BASE_ADDR),UPDATA_DATA_LEN);
|
||||
crc=UPDATA_CRC_APP;
|
||||
cmd_print("local crc32=0x%04x.",crc);
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_boot_checkcrc,cmd_jwt_boot_checkcrc,"jwt checkcrc in boot")
|
||||
|
||||
|
||||
|
||||
// 读取
|
||||
static uint8_t EW_bootRead(uint16_t adr,uint8_t *buf,uint16_t len)
|
||||
{
|
||||
uint8_t ret=0;
|
||||
uint8_t cmd[7]={0xfa,0x03,adr&0xff,adr>>8,len};
|
||||
uint16_t read_len=2+len+1+1;
|
||||
uint8_t *read=rt_malloc(read_len);
|
||||
if(read==RT_NULL) return 1;
|
||||
DMod_SendBytesXor(cmd,6,1);
|
||||
ret=DMod_ReadBytesXor(read,read_len,100);
|
||||
rt_memset(buf,0,len);
|
||||
if(ret==0)
|
||||
{
|
||||
rt_memcpy(buf,&read[3],len);
|
||||
}
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read[0],read[1],read[2],read[3]);
|
||||
rt_free(read);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// app:读取数据
|
||||
static int EW_appRead(void)
|
||||
{
|
||||
uint8_t read_buf[4]={0};
|
||||
int ret=0;
|
||||
uint8_t addr=(uint8_t)(UPDATA_FLAG_ADDR/4);
|
||||
DBG_LOG("addr=0x%02x.",addr);
|
||||
ret=EW_ReadMTP(1,addr,read_buf,4);
|
||||
DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,read_buf[0],read_buf[1],read_buf[2],read_buf[3]);
|
||||
return ret;
|
||||
}
|
||||
static int cmd_jwt_app_read(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_appRead();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_app_read,cmd_jwt_app_read,"jwt read in app")
|
||||
|
||||
|
||||
// app:通信测试
|
||||
static int EW_appCommTest(void)
|
||||
{
|
||||
// uint8_t data[4]={0x11,0x22};
|
||||
// uint8_t ret;
|
||||
// DBG_LOG("send:%02x,%02x.",data[0],data[1]);
|
||||
// ret=EW_CommTest(data,2,300);
|
||||
// DBG_LOG("ret=%d,dat=%02x,%02x,%02x,%02x,",ret,data[0],data[1],data[2],data[3]);
|
||||
// return ret;
|
||||
return EW_appRead();
|
||||
}
|
||||
static int cmd_jwt_app_commtest(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
ret=EW_appCommTest();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_app_commtest,cmd_jwt_app_commtest,"jwt commtest in app")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// app:runbootloader
|
||||
static void EW_appRunBoot(void)
|
||||
{
|
||||
EW_Charge(1,0,0);
|
||||
delay_ms(6000);
|
||||
EW_RunBootLoader(1,1);
|
||||
DBG_LOG("run boot");
|
||||
}
|
||||
static int cmd_jwt_app_runboot(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
EW_appRunBoot();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_app_runboot,cmd_jwt_app_runboot,"jwt turn to bootloader")
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct{
|
||||
// 充电时间 6000
|
||||
int time_charg;
|
||||
// 加载app时间 6000
|
||||
int time_loadapp;
|
||||
// 总线关断时间 1000
|
||||
int time_poweroff;
|
||||
// 升级模式,0,无app时升级;1,无条件升级
|
||||
int updata_mode;
|
||||
// 模块状态
|
||||
int state;
|
||||
}ew_updata_def;
|
||||
|
||||
|
||||
|
||||
// 硬复位
|
||||
int EW_HardReset(ew_updata_def *e)
|
||||
{
|
||||
EW_BUS_OFF;
|
||||
delay_ms(e->time_poweroff);
|
||||
EW_BUS_ON;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// 判断模块在何种工作状态 1:boot 2:app
|
||||
// 3:boot失败且app也失败
|
||||
int EW_CheckState(ew_updata_def *e)
|
||||
{
|
||||
uint16_t ret=0;
|
||||
delay_ms(100);
|
||||
ret=EW_bootCharg();
|
||||
if(ret==0){
|
||||
delay_ms(e->time_charg);
|
||||
e->state=1;
|
||||
}else{
|
||||
EW_HardReset(e);
|
||||
delay_ms(e->time_loadapp);
|
||||
ret=EW_appCommTest();
|
||||
delay_ms(5);
|
||||
if(ret==0){
|
||||
e->state=2;
|
||||
}else{
|
||||
e->state=3;
|
||||
}
|
||||
}
|
||||
return e->state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 跳转到app的方式
|
||||
static int EW_TurnToBoot1(ew_updata_def *e)
|
||||
{
|
||||
DBG_LOG("turn to boot1");
|
||||
delay_ms(5);
|
||||
EW_EnWriteMTP(0,1);
|
||||
delay_ms(5);
|
||||
EW_RunBootLoader(0,1);
|
||||
delay_ms(500);
|
||||
if(EW_bootCharg()==0)
|
||||
return 0;
|
||||
else
|
||||
return 1;
|
||||
}
|
||||
static int EW_TurnToBoot2(ew_updata_def *e)
|
||||
{
|
||||
DBG_LOG("turn to boot2");
|
||||
delay_ms(5);
|
||||
EW_EnWriteMTP(0,1);
|
||||
delay_ms(5);
|
||||
EW_WriteMTP(0,(uint8_t)(UPDATA_FLAG_ADDR/4),BOOT_FLAG,4);
|
||||
delay_ms(5);
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 跳转到bootloader
|
||||
int EW_TurnToBoot(ew_updata_def *e)
|
||||
{
|
||||
typedef int (*turnfun)(ew_updata_def *e);
|
||||
turnfun func_table[]={EW_TurnToBoot2,EW_TurnToBoot2};
|
||||
int ret=0;
|
||||
for(int i=0;i<2;i++){
|
||||
if(e->state!=1){
|
||||
ret=func_table[i](e);
|
||||
if(ret){
|
||||
EW_HardReset(e);
|
||||
}
|
||||
EW_CheckState(e);
|
||||
}else{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return e->state;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void EW_ParamPrint(ew_updata_def *e)
|
||||
{
|
||||
DBG_LOG("time_charg=%d",e->time_charg);
|
||||
DBG_LOG("time_loadapp=%d",e->time_loadapp);
|
||||
DBG_LOG("time_poweroff=%d",e->time_poweroff);
|
||||
DBG_LOG("updata_mode=%d",e->updata_mode);
|
||||
}
|
||||
|
||||
|
||||
// 升级
|
||||
void EW_Updata(void)
|
||||
{
|
||||
Checker_RunCfg_st *cfg=&checker_runcfg;
|
||||
uint16_t ret=0;
|
||||
uint8_t read_buf[4]={0};
|
||||
uint8_t *data=(uint8_t *)MC_CODE_ADDR+UPDATA_BASE_ADDR;
|
||||
uint16_t len=UPDATA_DATA_LEN;
|
||||
uint16_t addr=UPDATA_BASE_ADDR;
|
||||
uint8_t pack_len=UPDATA_PACK_LEN;
|
||||
uint32_t crc=0;
|
||||
uint32_t crc_module=0;
|
||||
|
||||
ew_updata_def ew_updata={0};
|
||||
// 充电时间 6000
|
||||
ew_updata.time_charg=checker_runcfg.params[0];
|
||||
// 加载app时间 6000
|
||||
ew_updata.time_loadapp=checker_runcfg.params[1];
|
||||
// 总线关断时间 1000
|
||||
ew_updata.time_poweroff=checker_runcfg.params[2];
|
||||
// 升级模式,0,无app时升级;1,无条件升级
|
||||
ew_updata.updata_mode=checker_runcfg.params[3];
|
||||
EW_ParamPrint(&ew_updata);
|
||||
PowerCalibration_set(200,120);
|
||||
ret=EW_CheckState(&ew_updata);
|
||||
if(ret==2){
|
||||
// 在app中
|
||||
if(ew_updata.updata_mode==0){
|
||||
DBG_LOG("no need updata.");
|
||||
ret=0;
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
ret=EW_TurnToBoot(&ew_updata);
|
||||
// ret!=1 跳转到bootloader失败
|
||||
if(ret!=1) {
|
||||
DBG_WARN("turn to boot bailed.ret=%d",ret);
|
||||
ret=1;
|
||||
goto err;
|
||||
}
|
||||
DBG_LOG("erase app");
|
||||
ret=EW_bootErease();
|
||||
if(ret) {ret=2;goto err;}
|
||||
delay_ms(600);
|
||||
while(len>0){
|
||||
pack_len=len>UPDATA_PACK_LEN?UPDATA_PACK_LEN:len;
|
||||
LED1_Out=!LED1_Out;
|
||||
ret=EW_bootWrite(addr,data,pack_len);
|
||||
addr+=pack_len;
|
||||
data+=pack_len;
|
||||
len-=pack_len;
|
||||
if(ret) {ret=3;goto err;}
|
||||
delay_ms(1);
|
||||
}
|
||||
//crc=Crc32Calu((uint32_t *)(MC_CODE_ADDR+UPDATA_BASE_ADDR),UPDATA_DATA_LEN);
|
||||
crc=UPDATA_CRC_APP;
|
||||
DBG_LOG("local crc:0x%04x.",crc);
|
||||
ret=EW_bootCheckCrc(UPDATA_BASE_ADDR,UPDATA_BASE_ADDR+UPDATA_DATA_LEN,&crc_module);
|
||||
DBG_LOG("module crc:0x%04x.",crc_module);
|
||||
if(ret) {ret=4;goto err;}
|
||||
if(crc!=crc_module){ret=5;goto err;}
|
||||
delay_ms(50);
|
||||
ret=EW_bootJump();
|
||||
if(ret) {ret=6;goto err;}
|
||||
delay_ms(ew_updata.time_loadapp);
|
||||
ret=EW_EnWriteMTP(0,1);
|
||||
if(ret) {ret=7;goto err;}
|
||||
DBG_LOG("EW_EnWriteMTP success.");
|
||||
delay_ms(1);
|
||||
|
||||
ret=EW_WriteMTP(1,(uint8_t)(UPDATA_FLAG_ADDR/4),UPDATA_FLAG,4);
|
||||
if(ret) {ret=8;goto err;}
|
||||
DBG_LOG("EW_WriteMTP success.");
|
||||
delay_ms(1);
|
||||
ret=EW_ReadMTP(1,(uint8_t)(UPDATA_FLAG_ADDR/4),read_buf,4);
|
||||
if(ret) {ret=9;goto err;}
|
||||
if(memcmp(read_buf,UPDATA_FLAG,4)!=0){
|
||||
DBG_LOG("read_buf=0x%02d,0x%02d,0x%02d,0x%02d.",read_buf[0],read_buf[1],read_buf[2],read_buf[3]);
|
||||
ret=10;goto err;
|
||||
}
|
||||
DBG_LOG("EW_ReadMTP check success.");
|
||||
delay_ms(1);
|
||||
XTBUS_OFF;
|
||||
delay_ms(ew_updata.time_poweroff);
|
||||
XTBUS_ON;
|
||||
delay_ms(ew_updata.time_loadapp);
|
||||
ret=EW_appCommTest();
|
||||
if(ret) {ret=11;goto err;}
|
||||
DBG_LOG("EW_appCommTest success.");
|
||||
|
||||
err:
|
||||
DBG_LOG("ret=%d",ret);
|
||||
Checker_SetRtv(&ret,checker_runcfg.rtv_count);
|
||||
Checker_MaskResult(ret,checker_runcfg.task_info.runindex);
|
||||
}
|
||||
static int cmd_jwt_updata(list_def *argv)
|
||||
{
|
||||
int ret=0;
|
||||
checker_runcfg.params[0]=6000;
|
||||
checker_runcfg.params[1]=6000;
|
||||
checker_runcfg.params[2]=1000;
|
||||
checker_runcfg.params[3]=0;
|
||||
checker_runcfg.rtv_count=0;
|
||||
EW_Updata();
|
||||
return ret;
|
||||
}
|
||||
commend_export(jwt_updata,cmd_jwt_updata,"jwt updata")
|
||||
|
||||
|
||||
|
||||
|
15
source/elec_det/interface/EWUpdata.h
Normal file
15
source/elec_det/interface/EWUpdata.h
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
#ifndef EWUpdata_h__
|
||||
#define EWUpdata_h__
|
||||
|
||||
|
||||
|
||||
void EW_Updata(void);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
|
||||
|
||||
|
||||
#define BUILD_DATE "2023-11-15 17:56:15"
|
||||
#define BUILD_DATE "2023-11-16 17:26:38"
|
||||
#define SOFT_VERSION "2.06"
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user