移植Test命令,验证成功

EJ EX 写工厂信息验证成功
This commit is contained in:
ranchuan
2023-10-12 18:43:17 +08:00
parent f0f36cf79a
commit 17b4ebf188
25 changed files with 2363 additions and 87 deletions

View File

@@ -1158,8 +1158,8 @@
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\source\elec_det\elec_det.c</PathWithFileName> <PathWithFileName>.\source\elec_det\test\EW_TestUsartApp.c</PathWithFileName>
<FilenameWithoutPath>elec_det.c</FilenameWithoutPath> <FilenameWithoutPath>EW_TestUsartApp.c</FilenameWithoutPath>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
@@ -1170,11 +1170,71 @@
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2> <bDave2>0</bDave2>
<PathWithFileName>.\source\elec_det\test\EWCheckerTest.c</PathWithFileName>
<FilenameWithoutPath>EWCheckerTest.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>56</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\source\elec_det\test\Test.c</PathWithFileName>
<FilenameWithoutPath>Test.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>57</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\source\elec_det\test\XTCheckerTest.c</PathWithFileName>
<FilenameWithoutPath>XTCheckerTest.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>58</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\source\elec_det\elec_cmd.c</PathWithFileName> <PathWithFileName>.\source\elec_det\elec_cmd.c</PathWithFileName>
<FilenameWithoutPath>elec_cmd.c</FilenameWithoutPath> <FilenameWithoutPath>elec_cmd.c</FilenameWithoutPath>
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<bShared>0</bShared> <bShared>0</bShared>
</File> </File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>59</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\source\elec_det\elec_det.c</PathWithFileName>
<FilenameWithoutPath>elec_det.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>6</GroupNumber>
<FileNumber>60</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\source\elec_det\elec_io.c</PathWithFileName>
<FilenameWithoutPath>elec_io.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group> </Group>
<Group> <Group>
@@ -1185,7 +1245,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>56</FileNumber> <FileNumber>61</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1197,7 +1257,7 @@
</File> </File>
<File> <File>
<GroupNumber>7</GroupNumber> <GroupNumber>7</GroupNumber>
<FileNumber>57</FileNumber> <FileNumber>62</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1217,7 +1277,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>58</FileNumber> <FileNumber>63</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1229,7 +1289,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>59</FileNumber> <FileNumber>64</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1241,7 +1301,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>60</FileNumber> <FileNumber>65</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1253,7 +1313,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>61</FileNumber> <FileNumber>66</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1265,7 +1325,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>62</FileNumber> <FileNumber>67</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1277,7 +1337,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>63</FileNumber> <FileNumber>68</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1289,7 +1349,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>64</FileNumber> <FileNumber>69</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1301,7 +1361,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>65</FileNumber> <FileNumber>70</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1313,7 +1373,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>66</FileNumber> <FileNumber>71</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1325,7 +1385,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>67</FileNumber> <FileNumber>72</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1337,7 +1397,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>68</FileNumber> <FileNumber>73</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1349,7 +1409,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>69</FileNumber> <FileNumber>74</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1361,7 +1421,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>70</FileNumber> <FileNumber>75</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1373,7 +1433,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>71</FileNumber> <FileNumber>76</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1385,7 +1445,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>72</FileNumber> <FileNumber>77</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1397,7 +1457,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>73</FileNumber> <FileNumber>78</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1409,7 +1469,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>74</FileNumber> <FileNumber>79</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1421,7 +1481,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>75</FileNumber> <FileNumber>80</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1433,7 +1493,7 @@
</File> </File>
<File> <File>
<GroupNumber>8</GroupNumber> <GroupNumber>8</GroupNumber>
<FileNumber>76</FileNumber> <FileNumber>81</FileNumber>
<FileType>2</FileType> <FileType>2</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1453,7 +1513,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>77</FileNumber> <FileNumber>82</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1465,7 +1525,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>78</FileNumber> <FileNumber>83</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1477,7 +1537,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>79</FileNumber> <FileNumber>84</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1489,7 +1549,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>80</FileNumber> <FileNumber>85</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1501,7 +1561,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>81</FileNumber> <FileNumber>86</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1513,7 +1573,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>82</FileNumber> <FileNumber>87</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1525,7 +1585,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>83</FileNumber> <FileNumber>88</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1537,7 +1597,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>84</FileNumber> <FileNumber>89</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1549,7 +1609,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>85</FileNumber> <FileNumber>90</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1561,7 +1621,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>86</FileNumber> <FileNumber>91</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1573,7 +1633,7 @@
</File> </File>
<File> <File>
<GroupNumber>9</GroupNumber> <GroupNumber>9</GroupNumber>
<FileNumber>87</FileNumber> <FileNumber>92</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1593,7 +1653,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>88</FileNumber> <FileNumber>93</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1605,7 +1665,7 @@
</File> </File>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>89</FileNumber> <FileNumber>94</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1617,7 +1677,7 @@
</File> </File>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>90</FileNumber> <FileNumber>95</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1629,7 +1689,7 @@
</File> </File>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>91</FileNumber> <FileNumber>96</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1641,7 +1701,7 @@
</File> </File>
<File> <File>
<GroupNumber>10</GroupNumber> <GroupNumber>10</GroupNumber>
<FileNumber>92</FileNumber> <FileNumber>97</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1661,7 +1721,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>11</GroupNumber> <GroupNumber>11</GroupNumber>
<FileNumber>93</FileNumber> <FileNumber>98</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1681,7 +1741,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>12</GroupNumber> <GroupNumber>12</GroupNumber>
<FileNumber>94</FileNumber> <FileNumber>99</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1693,7 +1753,7 @@
</File> </File>
<File> <File>
<GroupNumber>12</GroupNumber> <GroupNumber>12</GroupNumber>
<FileNumber>95</FileNumber> <FileNumber>100</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1705,7 +1765,7 @@
</File> </File>
<File> <File>
<GroupNumber>12</GroupNumber> <GroupNumber>12</GroupNumber>
<FileNumber>96</FileNumber> <FileNumber>101</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1717,7 +1777,7 @@
</File> </File>
<File> <File>
<GroupNumber>12</GroupNumber> <GroupNumber>12</GroupNumber>
<FileNumber>97</FileNumber> <FileNumber>102</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1729,7 +1789,7 @@
</File> </File>
<File> <File>
<GroupNumber>12</GroupNumber> <GroupNumber>12</GroupNumber>
<FileNumber>98</FileNumber> <FileNumber>103</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1741,7 +1801,7 @@
</File> </File>
<File> <File>
<GroupNumber>12</GroupNumber> <GroupNumber>12</GroupNumber>
<FileNumber>99</FileNumber> <FileNumber>104</FileNumber>
<FileType>1</FileType> <FileType>1</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1761,7 +1821,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>13</GroupNumber> <GroupNumber>13</GroupNumber>
<FileNumber>100</FileNumber> <FileNumber>105</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1781,7 +1841,7 @@
<RteFlg>0</RteFlg> <RteFlg>0</RteFlg>
<File> <File>
<GroupNumber>14</GroupNumber> <GroupNumber>14</GroupNumber>
<FileNumber>101</FileNumber> <FileNumber>106</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>
@@ -1793,7 +1853,7 @@
</File> </File>
<File> <File>
<GroupNumber>14</GroupNumber> <GroupNumber>14</GroupNumber>
<FileNumber>102</FileNumber> <FileNumber>107</FileNumber>
<FileType>5</FileType> <FileType>5</FileType>
<tvExp>0</tvExp> <tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg> <tvExpOptDlg>0</tvExpOptDlg>

View File

@@ -724,15 +724,244 @@
<FilePath>.\source\elec_det\interface\EWChecker.c</FilePath> <FilePath>.\source\elec_det\interface\EWChecker.c</FilePath>
</File> </File>
<File> <File>
<FileName>elec_det.c</FileName> <FileName>EW_TestUsartApp.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\source\elec_det\elec_det.c</FilePath> <FilePath>.\source\elec_det\test\EW_TestUsartApp.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
</CommonProperty>
<FileArmAds>
<Cads>
<interw>2</interw>
<Optim>0</Optim>
<oTime>2</oTime>
<SplitLS>2</SplitLS>
<OneElfS>2</OneElfS>
<Strict>2</Strict>
<EnumInt>2</EnumInt>
<PlainCh>2</PlainCh>
<Ropi>2</Ropi>
<Rwpi>2</Rwpi>
<wLevel>0</wLevel>
<uThumb>2</uThumb>
<uSurpInc>2</uSurpInc>
<uC99>2</uC99>
<uGnu>2</uGnu>
<useXO>2</useXO>
<v6Lang>0</v6Lang>
<v6LangP>0</v6LangP>
<vShortEn>2</vShortEn>
<vShortWch>2</vShortWch>
<v6Lto>2</v6Lto>
<v6WtE>2</v6WtE>
<v6Rtti>2</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Cads>
</FileArmAds>
</FileOption>
</File>
<File>
<FileName>EWCheckerTest.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\test\EWCheckerTest.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
</CommonProperty>
<FileArmAds>
<Cads>
<interw>2</interw>
<Optim>0</Optim>
<oTime>2</oTime>
<SplitLS>2</SplitLS>
<OneElfS>2</OneElfS>
<Strict>2</Strict>
<EnumInt>2</EnumInt>
<PlainCh>2</PlainCh>
<Ropi>2</Ropi>
<Rwpi>2</Rwpi>
<wLevel>0</wLevel>
<uThumb>2</uThumb>
<uSurpInc>2</uSurpInc>
<uC99>2</uC99>
<uGnu>2</uGnu>
<useXO>2</useXO>
<v6Lang>0</v6Lang>
<v6LangP>0</v6LangP>
<vShortEn>2</vShortEn>
<vShortWch>2</vShortWch>
<v6Lto>2</v6Lto>
<v6WtE>2</v6WtE>
<v6Rtti>2</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Cads>
</FileArmAds>
</FileOption>
</File>
<File>
<FileName>Test.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\test\Test.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
</CommonProperty>
<FileArmAds>
<Cads>
<interw>2</interw>
<Optim>0</Optim>
<oTime>2</oTime>
<SplitLS>2</SplitLS>
<OneElfS>2</OneElfS>
<Strict>2</Strict>
<EnumInt>2</EnumInt>
<PlainCh>2</PlainCh>
<Ropi>2</Ropi>
<Rwpi>2</Rwpi>
<wLevel>0</wLevel>
<uThumb>2</uThumb>
<uSurpInc>2</uSurpInc>
<uC99>2</uC99>
<uGnu>2</uGnu>
<useXO>2</useXO>
<v6Lang>0</v6Lang>
<v6LangP>0</v6LangP>
<vShortEn>2</vShortEn>
<vShortWch>2</vShortWch>
<v6Lto>2</v6Lto>
<v6WtE>2</v6WtE>
<v6Rtti>2</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Cads>
</FileArmAds>
</FileOption>
</File>
<File>
<FileName>XTCheckerTest.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\test\XTCheckerTest.c</FilePath>
<FileOption>
<CommonProperty>
<UseCPPCompiler>2</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>0</IncludeInBuild>
<AlwaysBuild>2</AlwaysBuild>
<GenerateAssemblyFile>2</GenerateAssemblyFile>
<AssembleAssemblyFile>2</AssembleAssemblyFile>
<PublicsOnly>2</PublicsOnly>
<StopOnExitCode>11</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
</CommonProperty>
<FileArmAds>
<Cads>
<interw>2</interw>
<Optim>0</Optim>
<oTime>2</oTime>
<SplitLS>2</SplitLS>
<OneElfS>2</OneElfS>
<Strict>2</Strict>
<EnumInt>2</EnumInt>
<PlainCh>2</PlainCh>
<Ropi>2</Ropi>
<Rwpi>2</Rwpi>
<wLevel>0</wLevel>
<uThumb>2</uThumb>
<uSurpInc>2</uSurpInc>
<uC99>2</uC99>
<uGnu>2</uGnu>
<useXO>2</useXO>
<v6Lang>0</v6Lang>
<v6LangP>0</v6LangP>
<vShortEn>2</vShortEn>
<vShortWch>2</vShortWch>
<v6Lto>2</v6Lto>
<v6WtE>2</v6WtE>
<v6Rtti>2</v6Rtti>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Cads>
</FileArmAds>
</FileOption>
</File> </File>
<File> <File>
<FileName>elec_cmd.c</FileName> <FileName>elec_cmd.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\source\elec_det\elec_cmd.c</FilePath> <FilePath>.\source\elec_det\elec_cmd.c</FilePath>
</File> </File>
<File>
<FileName>elec_det.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\elec_det.c</FilePath>
</File>
<File>
<FileName>elec_io.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\elec_io.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>
@@ -1952,15 +2181,40 @@
<FilePath>.\source\elec_det\interface\EWChecker.c</FilePath> <FilePath>.\source\elec_det\interface\EWChecker.c</FilePath>
</File> </File>
<File> <File>
<FileName>elec_det.c</FileName> <FileName>EW_TestUsartApp.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\source\elec_det\elec_det.c</FilePath> <FilePath>.\source\elec_det\test\EW_TestUsartApp.c</FilePath>
</File>
<File>
<FileName>EWCheckerTest.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\test\EWCheckerTest.c</FilePath>
</File>
<File>
<FileName>Test.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\test\Test.c</FilePath>
</File>
<File>
<FileName>XTCheckerTest.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\test\XTCheckerTest.c</FilePath>
</File> </File>
<File> <File>
<FileName>elec_cmd.c</FileName> <FileName>elec_cmd.c</FileName>
<FileType>1</FileType> <FileType>1</FileType>
<FilePath>.\source\elec_det\elec_cmd.c</FilePath> <FilePath>.\source\elec_det\elec_cmd.c</FilePath>
</File> </File>
<File>
<FileName>elec_det.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\elec_det.c</FilePath>
</File>
<File>
<FileName>elec_io.c</FileName>
<FileType>1</FileType>
<FilePath>.\source\elec_det\elec_io.c</FilePath>
</File>
</Files> </Files>
</Group> </Group>
<Group> <Group>

View File

@@ -136,8 +136,9 @@ u=protm("com7")
# u.wait() # u.wait()
u.addr=0 u.addr=0
u.host_addr=0 u.host_addr=0
u.cmd=0x13 u.cmd=0x19
print(u.encode(bytearray()).hex(" ")) data=bytearray([0x11,0x22,0x33,0x44])
u.cmd=0x0c crc=crc8(data)
print(u.encode(bytearray()).hex(" ")) data=bytes([4,crc])+data
print(u.encode(data).hex(" "))

View File

@@ -204,3 +204,8 @@
prot_uc 处理命令的时间如果距离接收时间超过100ms时视为过期不处理过期消息 prot_uc 处理命令的时间如果距离接收时间超过100ms时视为过期不处理过期消息
bootloader 在升级之前会进行校验如果不是slave的程序则不会升级 bootloader 在升级之前会进行校验如果不是slave的程序则不会升级
使用赋码仪主板 app升级方案升级验证通过 使用赋码仪主板 app升级方案升级验证通过
2023.10.12
移植Test命令验证成功
EJ EX 写工厂信息验证成功

1
source/elec_det/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
compar/

View File

@@ -17,7 +17,6 @@ static volatile CurrentSample_Range_eu buscurrent_range = Current_Max;
#endif #endif
#define SMod_Read_Idle_Filter 90 #define SMod_Read_Idle_Filter 90
// 根据反码电流改变
#define DMod_Read_Idle_Filter 50 #define DMod_Read_Idle_Filter 50
volatile uint16_t* EW_Read_AD_V = FireBus_ADC_Buf; volatile uint16_t* EW_Read_AD_V = FireBus_ADC_Buf;
@@ -746,7 +745,7 @@ static void DMod_SendBytesSelf(uint8_t* buf, uint8_t len, uint16_t pre,uint8_t r
EW_DIFF_MOD_L; EW_DIFF_MOD_L;
} }
__enable_irq(); __enable_irq();
delay_ms(3);//保障芯片总线空闲监听退出 delay_ms(5);//保障芯片总线空闲监听退出
} }
@@ -814,12 +813,11 @@ void DMod_ReadInspect_Data(uint16_t count,uint8_t* buf)
while(index < count) while(index < count)
{ {
data = *(buf+(index >> 3)); data = *(buf+(index >> 3));
if( DMod_ReadBit(300) > 0) if( DMod_ReadBit(400) > 0)
{ {
data |= (0x01 << (index & 0x07)); data |= (0x01 << (index & 0x07));
}; }
EW_DIFF_MOD_L delay_us(1200);
delay_us(800);
*(buf+(index >> 3)) = data; *(buf+(index >> 3)) = data;
index++; index++;
} }

View File

@@ -152,6 +152,14 @@ void DMod_SendBytes(uint8_t* buf, uint8_t len, uint16_t pre,uint8_t rw_flag);
void DMod_SendBytesXor(uint8_t* buf, uint8_t len, uint8_t rw_flag); void DMod_SendBytesXor(uint8_t* buf, uint8_t len, uint8_t rw_flag);
uint8_t DMod_ReadBytesXor(uint8_t* buf, uint8_t len,uint16_t retry_times); uint8_t DMod_ReadBytesXor(uint8_t* buf, uint8_t len,uint16_t retry_times);
/*
@brief 差分模式读取为应答
@param count 读取的数量
@param 接收数据缓存
*/
void DMod_ReadInspect_Data(uint16_t count,uint8_t* buf);
/* /*
@breif 通信测试 @breif 通信测试
*/ */
@@ -328,6 +336,13 @@ uint8_t EW_ReadRunCfgVersion(uint16_t addr,uint8_t* run_cfg,uint16_t* version);
@param fac_addr 分配因子 @param fac_addr 分配因子
*/ */
uint8_t EW_AutoSetAddr(uint16_t max_addr,uint16_t fac_addr); uint8_t EW_AutoSetAddr(uint16_t max_addr,uint16_t fac_addr);
/*
@brief 读校准值
@param addr 通信地址
@param UID数据
*/
uint8_t EW_ReadUID(uint16_t addr,uint8_t* uid,uint8_t uid_len);
#endif #endif

View File

@@ -1,6 +1,7 @@
#include "board.h" #include "board.h"
#include "bytearray.h" #include "bytearray.h"
#include "mystdlib.h" #include "mystdlib.h"
#include "mystring.h"
#include "debug.h" #include "debug.h"
#include "stdlib.h" #include "stdlib.h"
#include "dev_flash.h" #include "dev_flash.h"
@@ -185,10 +186,30 @@ array_def *elec_write_resistor_cbv(int cbv)
board_st.resistor_diff=cbv; board_st.resistor_diff=cbv;
array_def *r=arr_creat(); array_def *r=arr_creat();
arr_append(r,0); arr_append(r,0);
return 0; return arr_temp(r);
} }
// 写缓存
array_def *elec_write_fat_buff(array_def *d)
{
int ret=0;
int num=arr_length(d);
if(num<CHECKER_FAC_BUF_LEN){
memcpy(Checker_FacBuf,arr_data(d),num);
DBG_LOG("facbuf:%s.",str_temp(arr_string(d)));
ret=0;
}else{
ret=1;
}
array_def *r=arr_creat();
arr_append(r,ret);
return arr_temp(r);
}
// 测量桥丝阻值 // 测量桥丝阻值
array_def *elec_check_resistor(void) array_def *elec_check_resistor(void)
{ {
@@ -303,7 +324,7 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
checker_runcfg.excue_rtv = 0; checker_runcfg.excue_rtv = 0;
checker_runcfg.task_info.retry_time = 0; checker_runcfg.task_info.retry_time = 0;
if(taskid>=CHECKER_MAXID_COUNT){ if(taskid>=CHECKER_MAXID_COUNT){
DBG_WARN("tiskid out of bound."); DBG_WARN("taskid=%d out of bound.",taskid);
break; break;
} }
task_par= s->task_info_array[task_index]; task_par= s->task_info_array[task_index];
@@ -333,6 +354,7 @@ array_def *elec_check_with_scheme(array_def *uid_psw)
break; break;
checker_runcfg.rtv_index-=checker_runcfg.rtv_count; checker_runcfg.rtv_index-=checker_runcfg.rtv_count;
} }
DBG_LOG("task_index:%d,taskid:%d,ret=%d.",task_index,taskid,checker_runcfg.excue_rtv);
// 找寻下一个任务 // 找寻下一个任务
if((checker_runcfg.excue_rtv != 0) if((checker_runcfg.excue_rtv != 0)

View File

@@ -24,6 +24,8 @@ array_def *elec_write_hardversion(int version);
array_def *elec_write_resistor_cbv(int cbv); array_def *elec_write_resistor_cbv(int cbv);
array_def *elec_write_fat_buff(array_def *d);
array_def *elec_check_resistor(void); array_def *elec_check_resistor(void);
array_def *elec_check_with_scheme(array_def *uid_psw); array_def *elec_check_with_scheme(array_def *uid_psw);

65
source/elec_det/elec_io.c Normal file
View File

@@ -0,0 +1,65 @@
#include "base/delay.h"
#include "base/utility.h"
#include "hardware/adc_cfg.h"
#include "hardware/dac_cfg.h"
#include "hardware/gpio_cfg.h"
#include "hardware/jw3425iic.h"
#include "hardware/power.h"
#include "hardware/timer_cfg.h"
#include "driver/EWDriver.h"
#include "driver/JQDriver.h"
#include "driver/XTDriver.h"
#include "interface/BaseChecker.h"
#include "interface/JQChecker.h"
#include "interface/XTChecker.h"
#include "interface/EWChecker.h"
#include "elec_det.h"
#include "dev_flash.h"
#include "mystring.h"
#include "elec_io.h"
// 此文件实现elec模块的输入输出接口
int ConsoleUsart_send_bytes(uint8_t *d,int len)
{
return 0;
}
int SaveBoardInfo(void)
{
sys_param_def *spar=0;
spar=calloc(1,sizeof(sys_param_def));
memcpy(spar,sys_param(),sizeof(sys_param_def));
spar->hard_version=boardinfo_un.boardinfo.hard_v;
spar->resistor_diff=boardinfo_un.boardinfo.resistor_diff;
flash_save_param(spar);
free(spar);
return 0;
}
int LoadBoardInfo(void)
{
boardinfo_un.boardinfo.bootflag=1;
boardinfo_un.boardinfo.hard_v=sys_param()->hard_version;
boardinfo_un.boardinfo.resistor_diff=sys_param()->resistor_diff;
return 0;
}
void Ye_RunPlanCheckTest(void)
{
array_def *data=arr_creat();
array_def *r=elec_check_with_scheme(data);
arr_delete(data);
}

64
source/elec_det/elec_io.h Normal file
View File

@@ -0,0 +1,64 @@
#ifndef elec_io_h__
#define elec_io_h__
// 此文件实现elec模块的输入输出接口
// 引用时,此文件一定要最后包含
#include "stdint.h"
#include "commend.h"
#include "list.h"
#ifdef printf
#undef printf
#endif
#ifdef rt_kprintf
#undef rt_kprintf
#endif
#ifdef MSH_CMD_EXPORT_ALIAS
#undef MSH_CMD_EXPORT_ALIAS
#endif
// 定义最大参数个数
#define MSH_CMD_PARAM_MAX_NUM 50
#define printf cmd_print
#define rt_kprintf cmd_print
#define MSH_CMD_EXPORT_ALIAS(fun_,cmd_,desc)\
static int __msh_##fun_(list_def *argv /* str */)\
{\
char *s[MSH_CMD_PARAM_MAX_NUM]={0};\
int num=list_length(argv);\
int ret=0;\
for(int i=0;i<num;i++){s[i]=list_get_str(argv,i);}\
fun_(num,s);\
return ret;\
}\
commend_export(cmd_,__msh_##fun_,#desc);
int ConsoleUsart_send_bytes(uint8_t *d,int len);
int SaveBoardInfo(void);
int LoadBoardInfo(void);
void Ye_RunPlanCheckTest(void);
#endif

View File

@@ -273,7 +273,8 @@
#define EW_SINGLE_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;} #define EW_SINGLE_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
#define EW_SINGLE_MOD_H HMOS_SWITCH_W_1 #define EW_SINGLE_MOD_H HMOS_SWITCH_W_1
#define EW_DIFF_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;} //#define EW_DIFF_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PBout(OUTAH_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
#define EW_DIFF_MOD_M {PCout(OUTBH_Pin_Nu)=0;PBout(OUTAL_Pin_Nu)=0;PBout(OUTAH_Pin_Nu)=0; delay_nop(50); PBout(OUTBL_Pin_Nu)=1;PAout(LAVC_M_Pin_Nu)=1;}
#define EW_DIFF_MOD_H HMOS_SWITCH_W_1 #define EW_DIFF_MOD_H HMOS_SWITCH_W_1
#define EW_DIFF_MOD_L HMOS_SWITCH_W_0 #define EW_DIFF_MOD_L HMOS_SWITCH_W_0

View File

@@ -88,6 +88,7 @@ uint32_t Power_GetBousV()
{ {
uint32_t abus_v,bbus_v; uint32_t abus_v,bbus_v;
uint16_t adv_buf[10]; uint16_t adv_buf[10];
uint32_t hbus_v=0;
Power_CurCalibration(); Power_CurCalibration();
GetADC1_Value(AD_OUTA_CH,adv_buf,10) ; GetADC1_Value(AD_OUTA_CH,adv_buf,10) ;
Bubble_Sort_u16(adv_buf,10); Bubble_Sort_u16(adv_buf,10);
@@ -104,6 +105,15 @@ uint32_t Power_GetBousV()
abus_v = Power_ADVGetCalVal_106(abus_v); abus_v = Power_ADVGetCalVal_106(abus_v);
abus_v = abus_v*11/100000; abus_v = abus_v*11/100000;
hbus_v=Power_GetHPowerV();
//? 验证电压失调
// 电压相差过大的时候输出一个离谱的值
if((hbus_v>abus_v+10)||(abus_v>hbus_v+10)){
abus_v=500;
}
return abus_v; return abus_v;
} }
@@ -446,7 +456,10 @@ void PowerSetVoltage(PowerInfo_st* info_st)
C_H_DAC_Set(info_st->V_LAH_DAC); C_H_DAC_Set(info_st->V_LAH_DAC);
C_M_DAC_Set(info_st->V_LAM_DAC); C_M_DAC_Set(info_st->V_LAM_DAC);
POWER_ON; POWER_ON;
//? 验证电压失调
delay_ms(5);
C_H_DAC_Set(info_st->V_LAH_DAC);
C_M_DAC_Set(info_st->V_LAM_DAC);
} }
//获取当前电压配置值 //获取当前电压配置值
void PowerGetSet(PowerInfo_st* info_st) void PowerGetSet(PowerInfo_st* info_st)

View File

@@ -213,4 +213,21 @@ uint8_t Checker_FunIsValid(CheckerTask* taskArray,uint16_t run_index)
} }
return 0; return 0;
} }
/*
@brief 缓存空间检测
@rtv 1 失败 0 成功
*/
uint8_t Checker_FacBufCheck()
{
uint8_t uc_len = Checker_FacBuf[0];
uint8_t uc_crc = Checker_FacBuf[1];
if(uc_len > (CHECKER_FAC_BUF_LEN-2) || uc_len == 0)
{
return 1;
}
if(uc_crc != CheckCRC_8(Checker_FacBuf+2,uc_len))
{
return 1;
}
return 0;
}

View File

@@ -98,4 +98,9 @@ uint8_t JQXT_Test_IsNeedBind(void);
检测执行函数是否正常 检测执行函数是否正常
*/ */
uint8_t Checker_FunIsValid(CheckerTask* taskArray,uint16_t run_index); uint8_t Checker_FunIsValid(CheckerTask* taskArray,uint16_t run_index);
/*
@brief 缓存空间检测
@rtv 1 失败 0 成功
*/
uint8_t Checker_FacBufCheck(void);
#endif #endif

View File

@@ -1058,6 +1058,107 @@ void JQ_Test_ReadVersion(void)
Checker_SetRtv(&us_temp,checker_runcfg.rtv_count); Checker_SetRtv(&us_temp,checker_runcfg.rtv_count);
} }
/*
@brief 写入OTP数据
@param0 OTP起始地址
@param1 缓存首地址
@param2 写入长度
*/
void JQ_Test_WriteFacBuff(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_ack;
uint8_t uc_otpAddr = checker_runcfg.params[0];
uint8_t uc_bufIndex = checker_runcfg.params[1];
uint8_t uc_writeCount = checker_runcfg.params[2];
uint8_t uc_count = 0;
uint8_t uc_wcount ;
uint8_t ul_temp[4];
//Checker_FacBuf 验证合法性
if(0 != Checker_FacBufCheck())
{
uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
JQ_EnWOTP();
JQ_EnWOTP();
for(uc_count = 0; uc_count < uc_writeCount;uc_count++,uc_otpAddr++,uc_bufIndex++)
{
uc_ack = JQ_ReadOTP(CHECKER_NET_ID,uc_otpAddr,1,ul_temp);
if(uc_ack < 1)
{
uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
if(Checker_FacBuf[uc_bufIndex+2] == ul_temp[0])
{
continue;
}
if(ul_temp[0] != 0)
{
if((ul_temp[0] & Checker_FacBuf[uc_bufIndex+2]) != ul_temp[0])//OTP不能由1变成0
{
uc_rtv = 3;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
}
uc_wcount = JQ_WriteOTP(uc_otpAddr,1,&Checker_FacBuf[uc_bufIndex+2]);
if(uc_wcount != 1)
{
uc_rtv = 4;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
}
uc_rtv = 0;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
/*
@brief 验证OTP内部与缓存比较
@param0 OTP起始地址
@param1 缓存首地址
@param2 验证长度
*/
void JQ_Test_VerifyFacBuff(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_ack;
uint8_t uc_otpAddr = checker_runcfg.params[0];
uint8_t uc_bufIndex = checker_runcfg.params[1];
uint8_t uc_verifyCount = checker_runcfg.params[2];
uint8_t uc_count = 0;
uint8_t ul_temp[4];
if(0 != Checker_FacBufCheck())
{
uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
for(uc_count = 0; uc_count < uc_verifyCount;uc_count++)
{
uc_ack = JQ_ReadOTP(CHECKER_NET_ID,uc_otpAddr,1,ul_temp);
if((uc_ack < 1) || (Checker_FacBuf[uc_bufIndex+2] != ul_temp[0]))
{
uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
uc_bufIndex++;
uc_otpAddr++;
}
uc_rtv = 0;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
CheckerTask jqtaskArray[CHECKER_MAXID_COUNT] ={ CheckerTask jqtaskArray[CHECKER_MAXID_COUNT] ={
Checker_PowerPrapare, //0 电源准备 Checker_PowerPrapare, //0 电源准备
JQ_Test_PowerOn, //1 上电充能 JQ_Test_PowerOn, //1 上电充能
@@ -1094,6 +1195,8 @@ Checker_ResistorSample,//31 测量桥丝阻值
JQ_Test_EnOTPW ,//32 使能OTP写 JQ_Test_EnOTPW ,//32 使能OTP写
JQ_Test_WriteVersion ,//33 写模块版本 JQ_Test_WriteVersion ,//33 写模块版本
JQ_Test_ReadVersion ,//34 读取版本号 JQ_Test_ReadVersion ,//34 读取版本号
JQ_Test_WriteFacBuff ,//35 写缓存数据
JQ_Test_VerifyFacBuff ,//36 验证缓存数据
(void*)0 //数组结束 (void*)0 //数组结束
}; };

View File

@@ -215,4 +215,18 @@ void JQ_Test_ReadVersion(void);
@param0 模块版本号 @param0 模块版本号
*/ */
void JQ_Test_WriteVersion(void); void JQ_Test_WriteVersion(void);
/*
@brief 写入OTP数据
@param0 OTP起始地址
@param1 缓存首地址
@param2 写入长度
*/
void JQ_Test_WriteFacBuff(void);
/*
@brief 验证OTP内部与缓存比较
@param0 OTP起始地址
@param1 缓存首地址
@param2 验证长度
*/
void JQ_Test_VerifyFacBuff(void);
#endif #endif

View File

@@ -480,34 +480,22 @@ void XT_Test_WriteShell(void)
{ {
uint8_t uc_rtv = 0; uint8_t uc_rtv = 0;
uint8_t uc_count = 0; uint8_t uc_count = 0;
if((checker_runcfg.params[0] + checker_runcfg.params[1] > CHECKER_WRITE_BUF)) if(0 != Checker_FacBufCheck())
{ {
uc_rtv = 1; uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex); Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return; return;
} }
if(CheckCRC_8(&Checker_FacBuf[2],Checker_FacBuf[0]) != Checker_FacBuf[1]) //管壳号最长 13个字节
if((checker_runcfg.params[0] + checker_runcfg.params[1] > CHECKER_WRITE_BUF) || checker_runcfg.params[1] > 13)
{ {
uc_rtv = 1; uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex); Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return; return;
} }
memset(XT_RunBuf,0,XT_CHECKER_RUN_BUF); memset(XT_RunBuf,0,XT_CHECKER_RUN_BUF);
memcpy(XT_RunBuf,&Checker_FacBuf[2]+checker_runcfg.params[0],checker_runcfg.params[1]); memcpy(XT_RunBuf,&Checker_FacBuf[2]+checker_runcfg.params[0],checker_runcfg.params[1]);
uc_rtv |= XT_Write_Shell(XT_RunBuf); uc_rtv |= XT_Write_Shell(XT_RunBuf);
if(checker_runcfg.uid_len > 0)
{
uc_rtv |= XT_Read_Shell(checker_runcfg.writeuid,checker_runcfg.uid_len,XT_RunBuf+16);
}else{
uc_rtv |= XT_Read_Shell_All(XT_RunBuf+16);
}
for(uc_count = 0; uc_count < 13;uc_count++)
{
if(XT_RunBuf[uc_count] != XT_RunBuf[13+uc_count])
{
uc_rtv |= 0x01;
}
}
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex); Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
} }
@@ -1237,7 +1225,49 @@ void XT_CurMonitor(void)
Checker_MaskResult(0,checker_runcfg.task_info.runindex); Checker_MaskResult(0,checker_runcfg.task_info.runindex);
} }
/*
@brief 验证壳码 如果测试器有uid将采用uid方式通信
@param 命令缓存参数的起始
@param 验证数据长度
*/
void XT_Test_VerfyShell(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_count = 0;
uint8_t uc_index = 0;
if(0 != Checker_FacBufCheck())
{
uc_rtv = 1;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
//管壳号最长 13个字节
if((checker_runcfg.params[0] + checker_runcfg.params[1] > CHECKER_WRITE_BUF) || checker_runcfg.params[1] > 13)
{
uc_rtv = 2;
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
return;
}
memset(XT_RunBuf,0,XT_CHECKER_RUN_BUF);
if(checker_runcfg.uid_len > 0)
{
uc_rtv=XT_Read_Shell(checker_runcfg.writeuid,checker_runcfg.uid_len,XT_RunBuf);
if(uc_rtv) uc_rtv =3;
}else{
uc_rtv=XT_Read_Shell_All(XT_RunBuf);
if(uc_rtv) uc_rtv =4;
}
uc_index = checker_runcfg.params[0]+2;
for(uc_count = 0; uc_count < checker_runcfg.params[1];uc_count++)
{
if(Checker_FacBuf[uc_index++] != XT_RunBuf[uc_count])
{
uc_rtv =5;
break;
}
}
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
}
CheckerTask xttaskArray[CHECKER_MAXID_COUNT] ={ CheckerTask xttaskArray[CHECKER_MAXID_COUNT] ={
Checker_PowerPrapare, //0 电源准备 Checker_PowerPrapare, //0 电源准备
@@ -1278,6 +1308,7 @@ Checker_ResistorSample,//34 桥丝电阻测试
XT_Test_UID_PWD_Bind ,//35 检测过程中注码 XT_Test_UID_PWD_Bind ,//35 检测过程中注码
XT_Test_UID_PWD_Verify,//36 验证注码 XT_Test_UID_PWD_Verify,//36 验证注码
XT_OnLine_SCAN ,//37 模块在线检测 XT_OnLine_SCAN ,//37 模块在线检测
XT_Test_VerfyShell ,//38 验证管壳码
(void*)0 //数组结束 (void*)0 //数组结束
}; };

View File

@@ -240,6 +240,12 @@ void XT_OnLine_SCAN(void);
void XT_OFFLine_SCAN(void); void XT_OFFLine_SCAN(void);
/* /*
@brief 验证壳码 如果测试器有uid将采用uid方式通信
@param 命令缓存参数的起始
@param 验证数据长度
*/
void XT_Test_VerfyShell(void);
/*
@brief 芯片离线检测 @brief 芯片离线检测
@param0 充电使能 @param0 充电使能
@param1 采样周期 10ms @param1 采样周期 10ms
@@ -247,4 +253,5 @@ void XT_OFFLine_SCAN(void);
*/ */
void XT_CurMonitor(void); void XT_CurMonitor(void);
#endif #endif

View File

@@ -0,0 +1,379 @@
#include "base/define.h"
#include "stdlib.h"
#include "hardware/gpio_cfg.h"
#include "base/delay.h"
#include "hardware/adc_cfg.h"
#include "hardware/power.h"
#include "base/utility.h"
//#include "usartapp.h"
//#include "database.h"
#include "interface/BaseChecker.h"
#include "hardware/jw3425iic.h"
#include "driver/EWDriver.h"
#include "elec_io.h"
static void MCCheckerTest(int argc, char**argv)
{
uint16_t us_array[20];
uint8_t* puc_buf;
uint16_t us_temp;
rt_memset(&checker_runcfg.params,0,sizeof(checker_runcfg.params));
rt_memset(&checker_runcfg.Task_Result,0,sizeof(checker_runcfg.Task_Result));
checker_runcfg.excue_rtv = 0;
checker_runcfg.param_count = 0;
checker_runcfg.rtv_count = 0;
checker_runcfg.rtv_index = 0;
checker_runcfg.task_info.runindex = 0;
if(argc > 2)
{
checker_runcfg.param_count = argc-2;
us_temp = 0;
while(us_temp < checker_runcfg.param_count)
{
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
us_temp++;
}
}
if (argc < 2)
{
goto MC_help_label_;
}else if(!rt_strcmp(argv[1], "SDAOut")){
SDA_OUT();
if(checker_runcfg.params[0] == 0)
{
IIC_SDA(0);
}else{
IIC_SDA(1);
}
}else if(!rt_strcmp(argv[1], "SDAIn")){
SDA_IN();
rt_kprintf("SDAIn %1\n",READ_SDA);
}else if(!rt_strcmp(argv[1], "SCLOut")){
if(checker_runcfg.params[0] == 0)
{
IIC_SCL(0);
}else{
IIC_SCL(1);
}
}else if(!rt_strcmp(argv[1], "CodeCrc")){
printf("CodeCrc %X\n",boardinfo_un.boardinfo.mc_ICodeCrc32);
}
else if(!rt_strcmp(argv[1], "VrefTrim")){
MC_VrefTrim();
printf("VrefTrim Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "IrefTrim")){
MC_IrefTrim();
printf("IrefTrim Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "RC4MTrim")){
MC_RC4MTrim();
printf("RC4MTrim Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "RC128KTrim")){
MC_RC128KTrim();
printf("RC128KTrim Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "SetMTPVol")){
MC_SetMTPVol();
printf("SetMTPVol Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "EraseMTP")){
MC_EraseMTP();
printf("EraseMTP Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "IICWriteMTP")){
MC_IICWriteMTP();
printf("IICWriteMTP Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "IICEnMTP")){
MC_IICEnMTP();
printf("IICEnMTP Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "IICReadMTP")){
checker_runcfg.rtv_count = (checker_runcfg.params[1]+1)/2;
MC_IICReadMTP();
printf("IICMTPState Excute %d\n",checker_runcfg.Task_Result[0]);
us_temp = 0;
while(us_temp < checker_runcfg.rtv_count)
{
if((us_temp+1) % 4 == 0)
{
printf("\n");
}
printf("%02X %02X ",(checker_runcfg.Test_Rtv[us_temp] & 0xFF) ,((checker_runcfg.Test_Rtv[us_temp] >> 8) & 0xFF));
us_temp++;
}
printf("\n");
}else if(!rt_strcmp(argv[1], "IICMTPState")){
checker_runcfg.rtv_count = 1;
MC_IICCheckMTPState();
printf("IICMTPState Excute %d state %x \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] & 0x0FF);
}else if(!rt_strcmp(argv[1], "IICUpdateMTP")){
checker_runcfg.rtv_count = 1;
POWER_ON
delay_ms(50);
MC_IICUpdateMTP();
POWER_OFF;
printf("IICMTPState Excute %d Error Code %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] & 0x0FF);
}
else{
MC_help_label_:
rt_kprintf("SDAOut [0/1] gpio out\n");
rt_kprintf("SDAIn read gpio pin\n");
rt_kprintf("SCLOut [0/1] gpio out\n");
rt_kprintf("VrefTrim [En_update] [trim_value]\n");
rt_kprintf("IrefTrim [Iref1En_update] [Iref2En_update] [Iref1_value] [Iref2_value]\n");
rt_kprintf("RC4MTrim [En_update] [trim_value] \n");
rt_kprintf("RC128KTrim [En_update] [trim_value] \n");
rt_kprintf("SetMTPVol [L_V_Class] [H_V_Class] \n");
rt_kprintf("EraseMTP [Addr] [Erase_Type] \n");
rt_kprintf("IICWriteMTP [N datas len < 11] \n");
rt_kprintf("IICReadMTP [read len] \n");
rt_kprintf("IICMTPState read MTP status \n");
}
}
MSH_CMD_EXPORT_ALIAS(MCCheckerTest ,MCI, EW IIC CMD );
static void EWDriverTest(int argc, char**argv)
{
uint16_t us_array[20];
uint8_t* puc_buf;
uint16_t us_temp;
uint32_t ul_temp,ul_temp2;
RunCfg_un runcfg;
rt_memset(&checker_runcfg.params,0,sizeof(checker_runcfg.params));
rt_memset(&checker_runcfg.Task_Result,0,sizeof(checker_runcfg.Task_Result));
checker_runcfg.excue_rtv = 0;
checker_runcfg.param_count = 0;
checker_runcfg.rtv_count = 0;
checker_runcfg.rtv_index = 0;
checker_runcfg.task_info.runindex = 0;
if(argc > 2)
{
checker_runcfg.param_count = argc-2;
us_temp = 0;
while(us_temp < checker_runcfg.param_count)
{
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
us_temp++;
}
}
if (argc < 2)
{
goto EW_help_label_;
}else if(!rt_strcmp(argv[1], "BUS_H")){
EW_DIFF_MOD_H
}else if(!rt_strcmp(argv[1], "BUS_L")){
EW_DIFF_MOD_L
}else if(!rt_strcmp(argv[1], "BUS_M")){
EW_DIFF_MOD_M
}else if(!rt_strcmp(argv[1], "BUS_OFF")){
HMOS_SWITCH_OFF
}else if(!rt_strcmp(argv[1], "BUS_ON")){
HMOS_SWITCH_ON
}
else if(!rt_strcmp(argv[1], "BUS_CUR")){
printf("BUS_CUR %d \r\n",Power_GetCurrent());
}
else if(!rt_strcmp(argv[1], "SetV")){
us_temp = PowerCalibration_set(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("SetV Excute %d\n",us_temp);
}else if(!rt_strcmp(argv[1], "DModSend")){
HexStrings2Byte(argv+4,argc-4,(uint8_t*)us_array,20);
DMod_SendBytes((uint8_t*)us_array,checker_runcfg.params[0],checker_runcfg.params[1],1);
}
else if(!rt_strcmp(argv[1], "CommTest")){
memcpy(us_array,"1234567890ABC",4);
if(checker_runcfg.params[0] < 200)
{
checker_runcfg.params[0] = 200;
}
puc_buf = (uint8_t*)us_array;
us_temp = EW_CommTest(puc_buf,4,checker_runcfg.params[0]);
puc_buf[5+1] = '\0';
printf("CommTest Excute %d %s\n",us_temp,puc_buf+2);
}else if(!rt_strcmp(argv[1], "EnWriteMTP")){
us_temp = EW_EnWriteMTP(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("EnWriteMTP Excute %d\n",us_temp);
}else if(!rt_strcmp(argv[1], "WriteMTP")){
HexStrings2Byte(argv+5,argc-5,(uint8_t*)us_array,sizeof(us_array));
us_temp = EW_WriteMTP(checker_runcfg.params[0],checker_runcfg.params[1],(uint8_t*)us_array,checker_runcfg.params[3]);
printf("WriteMTP Excute %d\n",us_temp);
}else if(!rt_strcmp(argv[1], "ReadMTP")){
puc_buf = (uint8_t*)us_array;
us_temp = EW_ReadMTP(checker_runcfg.params[0],checker_runcfg.params[1],puc_buf,checker_runcfg.params[2]);
printf("ReadMTP Excute %d \n",us_temp);
for(us_temp = 0; us_temp < checker_runcfg.params[2]; us_temp++)
{
printf("%02X ",puc_buf[us_temp]);
if((us_temp + 1) %8 == 0)
{
printf("\n");
}
}
if((us_temp + 1) %8 != 0)
{
printf("\n");
}
}else if(!rt_strcmp(argv[1], "Boot")){
us_temp = EW_RunBootLoader(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("Boot Excute %d\n",us_temp);
}else if(!rt_strcmp(argv[1], "WriteRunCfg")){
runcfg.runcfg_st.fire_mos_sw = checker_runcfg.params[1];
runcfg.runcfg_st.vbus_rx_sg = 3;
runcfg.runcfg_st.vbus_mode = 1;
runcfg.runcfg_st.reset_run_step = checker_runcfg.params[2];
runcfg.runcfg_st.uid_len = checker_runcfg.params[3];
runcfg.runcfg_st.pwd_len = checker_runcfg.params[4];
runcfg.runcfg_st.version = checker_runcfg.params[5];
us_temp = EW_WriteRunCfg(checker_runcfg.params[0],&runcfg);
printf("WriteRunCfg Excute %d\n",us_temp);
}else if(!rt_strcmp(argv[1], "SetAddr")){
puc_buf = (uint8_t*)us_array;
memcpy(argv[3],puc_buf,strlen(argv[3]));
us_temp = EW_SetAddrByUID(checker_runcfg.params[0],puc_buf,strlen(argv[3])-1,(uint8_t*)checker_runcfg.Test_Rtv);
printf("SetAddr Excute %d delay %d state %04X\n",us_temp,checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1]);
}else if(!rt_strcmp(argv[1], "FastSet")){
puc_buf = (uint8_t*)us_array;
memcpy(argv[5],puc_buf,strlen(argv[5]));
us_temp = EW_FastSetByUID(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2],puc_buf,strlen(argv[5])-1,(uint8_t*)checker_runcfg.Test_Rtv);
printf("FastSet Excute %d delay %d state %04X\n",us_temp,checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1]);
}else if(!rt_strcmp(argv[1], "SetDelay")){
us_temp = EW_SetDelay(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("SetDelay Excute %d \n",us_temp);
}else if(!rt_strcmp(argv[1], "VerfyPWD")){
puc_buf = (uint8_t*)us_array;
memcpy(argv[3],puc_buf,strlen(argv[3]));
us_temp = EW_VerfyPWD(checker_runcfg.params[0],puc_buf,strlen(argv[3])-1);
printf("VerfyPWD Excute %d \n",us_temp);
}else if(!rt_strcmp(argv[1], "Boom")){
us_temp = EW_Boom(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("Boom Excute %d \n",us_temp);
}else if(!rt_strcmp(argv[1], "Charge")){
us_temp = EW_Charge(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2]);
printf("Charge Excute %d \n",us_temp);
}else if(!rt_strcmp(argv[1], "DisCharge")){
us_temp = EW_DisCharge(checker_runcfg.params[0]);
printf("DisCharge Excute %d \n",us_temp);
}else if(!rt_strcmp(argv[1], "ReadState")){
ul_temp = 0;
us_temp = EW_ReadState(checker_runcfg.params[0],(uint8_t*)&ul_temp);
printf("ReadState Excute %d state %08X\n",us_temp,ul_temp);
}else if(!rt_strcmp(argv[1], "ClkAmend")){
us_temp = EW_ClkAmend(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2]);
printf("ClkAmend Excute %d\n",us_temp);
}else if(!rt_strcmp(argv[1], "Inspect")){
puc_buf = (uint8_t*)us_array;
us_temp = EW_Inspect(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2],puc_buf);
printf("Inspect Excute %d\n",us_temp);
us_temp = (checker_runcfg.params[1] - checker_runcfg.params[0] + 7)/8;
for(ul_temp = 0; ul_temp< us_temp;ul_temp++)
{
printf("%02X ",puc_buf[us_temp]);
if((us_temp + 1) %8 == 0)
{
printf("\n");
}
}
if((us_temp + 1) %8 != 0)
{
printf("\n");
}
}
else if(!rt_strcmp(argv[1], "ClkAmend")){
us_temp = EW_ClkAmend(checker_runcfg.params[0],checker_runcfg.params[1],checker_runcfg.params[2]);
printf("ClkAmend Excute %d\n",us_temp);
} else if(!rt_strcmp(argv[1], "CheckRunCfg")){
ul_temp = HexStrings2UInt(argv[3]);
ul_temp2 = HexStrings2UInt(argv[4]);
us_temp = EW_CheckRunCfg(checker_runcfg.params[0],ul_temp,ul_temp2,(uint8_t*)us_array);
printf("CheckRunCfg Excute %d Checke_Flag %d\n",us_temp,us_array[0]);
}else if(!rt_strcmp(argv[1], "ChecSelf")){
us_array[0] = 0;
us_temp = EW_ChecSelf(checker_runcfg.params[0],checker_runcfg.params[1],(uint8_t*)us_array);
printf("ChecSelf Excute %d SelfCheck Result %d \n",us_temp,us_array[0]);
} else if(!rt_strcmp(argv[1], "SaveFireInfo")){
us_temp = EW_SaveFireInfo(checker_runcfg.params[0]);
printf("SaveFireInfo Excute %d \n",us_temp);
} else if(!rt_strcmp(argv[1], "ReadDelayState")){
us_array[0] = 0;
us_temp = EW_ReadDelay(checker_runcfg.params[0],us_array);
printf("SaveFireInfo Excute %d delay %d \n",us_temp,us_array[0]);
}else if(!rt_strcmp(argv[1], "SetReportCfg")){
us_temp = EW_SetReportCfg(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("SetReportCfg Excute %d \n",us_temp);
} else if(!rt_strcmp(argv[1], "UpdateCommAddr")){
us_temp = EW_UpdateCommAddr(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("UpdateCommAddr Excute %d \n",us_temp);
}else if(!rt_strcmp(argv[1], "ReadClkAmend")){
us_temp = EW_ReadClkAmend(checker_runcfg.params[0],&ul_temp);
printf("ReadClkAmend Excute %d amendValue %d\n",us_temp,ul_temp);
}else if(!rt_strcmp(argv[1], "ReadCfgVer")){
ul_temp2 = 0;
ul_temp = 0;
us_temp = EW_ReadRunCfgVersion(checker_runcfg.params[0],(uint8_t*)&ul_temp,(uint16_t*)&ul_temp2);
printf("ReadCfgVer Excute %d RunCfg %08X Version %04X\n",us_temp,ul_temp,ul_temp2);
}else if(!rt_strcmp(argv[1], "AutoSetAddr")){
us_temp = EW_AutoSetAddr(checker_runcfg.params[0],checker_runcfg.params[1]);
printf("AutoSetAddr Excute %d \n",us_temp);
}else if(!rt_strcmp(argv[1], "EW_ReadUID")){
puc_buf = (uint8_t*)us_array;
us_temp = EW_ReadUID(checker_runcfg.params[0],puc_buf,checker_runcfg.params[1]);
printf("EW_ReadUID Excute %d ",us_temp);
us_temp = checker_runcfg.params[1];
for(ul_temp = 0; ul_temp< us_temp;ul_temp++)
{
printf("%02X ",puc_buf[ul_temp]);
if((ul_temp + 1) %8 == 0)
{
printf("\n");
}
}
if((ul_temp + 1) %8 != 0)
{
printf("\n");
}
}
else{
EW_help_label_:
rt_kprintf("BUS_H Out High Voltage");
rt_kprintf("BUS_M Out Midle Voltage\n");
rt_kprintf("BUS_L Out High Voltage other side\n");
rt_kprintf("BUS_OFF Close Bus\n");
rt_kprintf("BUS_ON Open Bus\n");
rt_kprintf("BUS_CUR Get Bus Current\n");
rt_kprintf("SetV [Hight_V] [Midle_V]\n");
rt_kprintf("CommTest [Cycle]VBusD Transport Test \n");
rt_kprintf("EnWriteMTP [addr][en_flag] Enable or Disable MTP Written \n");
rt_kprintf("WriteMTP [addr][mtp_addr][dataSize][HexData] Write data to MTP \n");
rt_kprintf("ReadMTP [addr][mtp_addr][read_len] Read data from MTP \n");
rt_kprintf("Boot Jump to BootLoader \n");
rt_kprintf("WriteRunCfg [addr][mos_sw][reset_run_flg][uid_len][pwd_len][version] \n");
rt_kprintf("SetDelay [addr][delay]\n");
rt_kprintf("SetAddr [commaddr][UID] Update CommAddr by UID\n");
rt_kprintf("FastSet [commaddr][delay][pwd_flag][UID] Fast Set Delay and CommAddr By UID\n");
rt_kprintf("VerfyPWD [addr][pwd] Verfy PWD\n");
rt_kprintf("Boom [addr][delay] \n");
rt_kprintf("Charge [addr][voltage_class][group] voltage_class 0 bypass 1 16V 2 20V 3 3.5V addr > group*4 \n");
rt_kprintf("DisCharge [addr]\n");
rt_kprintf("ReadState [addr] read delay and state\n");
rt_kprintf("Inspect [bgaddr] [endaddr] [state_mask]\n");
rt_kprintf("ClkAmend [addr] [Cycle] [PlusCount]\n");
rt_kprintf("CheckRunCfg [addr] [Cfg_mask_hex] [Cfg_state_hex]\n");
rt_kprintf("ChecSelf [addr] [Checke_Mode] [Result]\n");
rt_kprintf("SaveFireInfo [addr]\n");
rt_kprintf("ReadDelayState [addr]\n");
rt_kprintf("SetReportCfg [speed][cur]\n");
rt_kprintf("UpdateCommAddr [addr][new_addr]\n");
rt_kprintf("ReadClkAmend [addr]\n");
rt_kprintf("ReadCfgVer [addr]\n");
rt_kprintf("AutoSetAddr [addr][addr_fac]\n");
rt_kprintf("EW_ReadUID [addr][uid_len]\n");
}
}
MSH_CMD_EXPORT_ALIAS(EWDriverTest ,EW, EWPro Driver );

View File

@@ -0,0 +1,302 @@
#include "driver/ewdriver.h"
#include "base/define.h"
#include "base/delay.h"
//#include "console_usart.h"
#include "base/utility.h"
//#include "usartapp.h"
//#include "arrayfifo.h"
//#include "YeCommProtocol.h"
#include "hardware/power.h"
#include "elec_io.h"
#pragma pack(1)
typedef struct{
uint8_t head[2];//<2F>̶<EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uint16_t frame_len;//<2F><>֡<EFBFBD><D6A1><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD><EFBFBD>CRC
uint8_t src_addr;//Դ<><D4B4>ַ
uint8_t dist_addr;//Ŀ<>ĵ<EFBFBD>ַ
uint8_t cmd;//<2F><><EFBFBD><EFBFBD>
uint16_t sq;//<2F><>ˮ<EFBFBD><CBAE>
}EwCmd_st;
typedef struct{
EwCmd_st head;
uint8_t oper_cmd;
uint16_t h_v;
uint16_t m_v;
}EwBusCmd_st;
typedef struct{
EwCmd_st head;
uint8_t oper_cmd;
uint16_t h_v;
uint16_t m_v;
uint16_t bus_v;
uint32_t cur;
uint8_t crc;
}EwHartBeatCmd_st;
typedef struct{
EwCmd_st head;
uint16_t r_len;
uint16_t w_len;
uint16_t reate;
uint8_t cmd_delay;
uint8_t buf[64];
}EwBusRW_st;
typedef struct{
EwCmd_st head;
uint8_t ack;
uint8_t buf[96];
}EwBusRWAck_st;
typedef struct{
EwCmd_st head;
uint16_t w_len;
uint16_t cycle;
uint16_t count;
uint16_t reate;
uint8_t cmd_delay;
uint8_t buf[64];
}EwClkAmend_st;
typedef struct{
EwCmd_st head;
uint16_t reate;
uint8_t w_len;
uint8_t cmd_delay;
uint16_t bitcount;
uint8_t buf[64];
}EwInspect_st;
typedef union{
EwCmd_st head;
EwBusCmd_st busoper01;
EwHartBeatCmd_st heartbeat02;
EwBusRW_st busrw03;
EwBusRWAck_st busrwack03;
EwClkAmend_st clkamend04;
EwInspect_st inspect05;
uint8_t buf[128];
}EWCmd_un;
#pragma pack()
EWCmd_un ewcmd_nu;
EwHartBeatCmd_st ew_beat_ack;
volatile uint8_t ew_app_rec_flag = 0;
volatile uint8_t heard_beat_flag = 0;
struct rt_event ew_usart0_rx_event;
//Ӧ<><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
static void EW_AckCmd(EWCmd_un* cmd_un)
{
uint8_t uc_temp = cmd_un->head.src_addr;
uint8_t uc_last_dist = cmd_un->head.dist_addr;
uint8_t uc_crc = 0;
cmd_un->head.frame_len++;//<2F><><EFBFBD>Ȱ<EFBFBD><C8B0><EFBFBD>CRC
cmd_un->head.src_addr = Gpio_GetDeivceAddr();//cmd_un->head.src_addr;
cmd_un->head.dist_addr = uc_temp;
uc_crc = CheckCRC_8(cmd_un->buf,cmd_un->head.frame_len-1);
cmd_un->buf[cmd_un->head.frame_len-1] = uc_crc;
ConsoleUsart_send_bytes(cmd_un->buf,cmd_un->head.frame_len);
//ConsoleUsart0DMA_send_bytes(cmd_un->yecmdbuf,cmd_un->head.frame_len,10);
}
static void EW_BusCmd01(EWCmd_un* cmd_un)
{
if(cmd_un->busoper01.oper_cmd == 1)
{
PowerCalibration_set(cmd_un->busoper01.h_v,cmd_un->busoper01.m_v);
EW_DIFF_MOD_H;
}else{
PowerCalibration_set(POWER_DEF_V,POWER_DEF_V-10);
EW_BUS_OFF
}
cmd_un->head.frame_len = sizeof(EwCmd_st);
cmd_un->buf[cmd_un->head.frame_len] = 0;
cmd_un->head.frame_len++;
EW_AckCmd(cmd_un);
}
static void EW_HeartBeatCmd02(EWCmd_un* cmd_un)
{
heard_beat_flag = cmd_un->heartbeat02.oper_cmd;
memcpy(&ew_beat_ack,cmd_un,sizeof(EwCmd_st));
cmd_un->head.frame_len = sizeof(EwCmd_st);
cmd_un->buf[cmd_un->head.frame_len] = 0;
cmd_un->head.frame_len++;
EW_AckCmd(cmd_un);
}
extern uint16_t EW_DMOD_READ_Timeout;
static void EW_RWCmd03(EWCmd_un* cmd_un)
{
uint8_t auc_ew_head[2];
uint8_t uc_ack = 0;
uint16_t ul_readlen = cmd_un->busrw03.r_len;
auc_ew_head[0] = cmd_un->busrw03.buf[0];
auc_ew_head[1] = cmd_un->busrw03.buf[1];
if(cmd_un->busrw03.w_len > 0)
{
__disable_irq();
DMod_SendBytes(cmd_un->busrw03.buf,cmd_un->busrw03.w_len, cmd_un->busrw03.reate,ul_readlen);
__enable_irq();
}
delay_ms(cmd_un->busrw03.cmd_delay);
if(ul_readlen > 0)
{
__disable_irq();
uc_ack = DMod_FireBusReadDatasV2(cmd_un->busrwack03.buf,ul_readlen,EW_DMOD_READ_Timeout);
__enable_irq();
if(ul_readlen == 2 && uc_ack == 0)
{
if(auc_ew_head[0] != cmd_un->busrwack03.buf[0] || auc_ew_head[1] != cmd_un->busrwack03.buf[1])
{
uc_ack = 10;
}
}else if(ul_readlen > 2 && uc_ack == 0)
{
if(cmd_un->busrwack03.buf[ul_readlen-1] != CheckCRC_8(cmd_un->busrwack03.buf,ul_readlen-1))
{
uc_ack = 11;
}
}
}
cmd_un->busrwack03.ack = uc_ack;
cmd_un->busrwack03.head.frame_len = sizeof(EwCmd_st) +1+ ul_readlen;
EW_AckCmd(cmd_un);
}
static void EW_ClkAmendCmd04(EWCmd_un* cmd_un)
{
uint16_t us_cycle = cmd_un->clkamend04.cycle;
__disable_irq();
DMod_SendBytes(cmd_un->clkamend04.buf,cmd_un->clkamend04.w_len, cmd_un->clkamend04.reate,0);
__enable_irq();
delay_ms(cmd_un->clkamend04.cmd_delay);
EW_SendTrimSquare(us_cycle,us_cycle>>1,cmd_un->clkamend04.count);
cmd_un->busrwack03.ack = 0;
cmd_un->busrwack03.head.frame_len = sizeof(EwCmd_st) +1;
EW_AckCmd(cmd_un);
}
static void EW_InspectCmd05(EWCmd_un* cmd_un)
{
uint16_t us_cycle = cmd_un->clkamend04.cycle;
uint16_t us_count = 0;
us_count = cmd_un->inspect05.bitcount;
__disable_irq();
DMod_SendBytes(cmd_un->inspect05.buf,cmd_un->inspect05.w_len, cmd_un->inspect05.reate,1);
__enable_irq();
delay_ms(cmd_un->inspect05.cmd_delay);
cmd_un->busrwack03.ack = 0;
DMod_ReadInspect_Data(us_count,cmd_un->busrwack03.buf);
cmd_un->busrwack03.head.frame_len = sizeof(EwCmd_st) +((us_count+7)>>3)+1;
EW_AckCmd(cmd_un);
}
void EW_DoCmd(EWCmd_un* cmd_un)
{
switch(cmd_un->head.cmd)
{
case 0x01: EW_BusCmd01(cmd_un);break;
case 0x02: EW_HeartBeatCmd02(cmd_un);break;
case 0x03: EW_RWCmd03(cmd_un); break;
case 0x04: EW_ClkAmendCmd04(cmd_un);break;
case 0x05: EW_InspectCmd05(cmd_un);break;
}
}
static void DoHeartBeat()
{
uint8_t uc_crc;
ew_beat_ack.oper_cmd = 1;
ew_beat_ack.h_v = Power_GetHPowerV();
ew_beat_ack.m_v = Power_GetMPowerV();
ew_beat_ack.bus_v = Power_GetBousV();
ew_beat_ack.cur = Power_GetCurrent();
ew_beat_ack.head.frame_len = sizeof(EwHartBeatCmd_st);
uc_crc = CheckCRC_8((uint8_t*)&ew_beat_ack,ew_beat_ack.head.frame_len-1);
ew_beat_ack.crc = uc_crc;
ConsoleUsart_send_bytes((uint8_t*)&ew_beat_ack,ew_beat_ack.head.frame_len);
}
void EWUsartApp_Task(void* param)
{
rt_uint32_t event;
uint32_t idle_count = 0;
UNUSED(param);
rt_event_init(&ew_usart0_rx_event, "ew_usart_rx_e", RT_IPC_FLAG_PRIO);
ew_app_rec_flag = 0;
while(1)
{
if(idle_count > 9)
{
idle_count = 0;
if(heard_beat_flag > 0)
{
DoHeartBeat();
}
}
if(rt_event_recv(&ew_usart0_rx_event, UART_MC_FRAME_EVENT,RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,100, &event) != RT_EOK)
{
idle_count++;
continue;
}
if((event & UART_MC_FRAME_EVENT) > 0)
{
ConsoleRxDisable();
if(ewcmd_nu.buf[0]=='E' && ewcmd_nu.buf[1] == 'w')
{
if(ewcmd_nu.buf[ewcmd_nu.head.frame_len-1] == CheckCRC_8(ewcmd_nu.buf,ewcmd_nu.head.frame_len-1))
{
EW_DoCmd(&ewcmd_nu);
}
}
ConsoleRxEnable();
ew_app_rec_flag = 0;
}
}
}
/*
@brief <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
@param buf Դ<><D4B4><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD>ռ<EFBFBD>
@paran len <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
@rtv <20><>
*/
void EW_UsartApp_Push_Cmd(uint8_t* buf, uint16_t len)
{
if(ew_app_rec_flag > 0)
{
return;
}
if(len > sizeof(EWCmd_un))
{
len = sizeof(EWCmd_un);
}
rt_memcpy((void*)&ewcmd_nu,buf,len);
rt_event_send(&ew_usart0_rx_event,UART_MC_FRAME_EVENT);//<2F><><EFBFBD>ʹ<EFBFBD><CDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD>¼<EFBFBD>
ew_app_rec_flag = 1;
}

597
source/elec_det/test/Test.c Normal file
View File

@@ -0,0 +1,597 @@
#include "base/define.h"
#include "stdlib.h"
#include "hardware/gpio_cfg.h"
#include "base/delay.h"
#include "hardware/adc_cfg.h"
#include "hardware/power.h"
#include "base/utility.h"
//#include "usartapp.h"
#include "driver/jqdriver.h"
#include "interface/jqchecker.h"
//#include "database.h"
#include "driver/XTDriver.h"
#include "interface/Basechecker.h"
#include "elec_io.h"
volatile uint16_t jq_adc_test_buf[2048];
static void OutGroup1(uint32_t count,uint32_t delay,uint32_t cycle)
{
__disable_irq();
while(count > 0)
{
PCout(OUTBH_Pin_Nu) = 1;
PBout(OUTAH_Pin_Nu) = 1;
delay_us(delay);
PBout(OUTBL_Pin_Nu) = 0;
PBout(OUTAL_Pin_Nu) = 0;
delay_us(cycle);
PCout(OUTBH_Pin_Nu) = 0;
PBout(OUTAH_Pin_Nu) = 0;
delay_us(delay);
PBout(OUTBL_Pin_Nu) = 1;
PBout(OUTAL_Pin_Nu) = 1;
delay_us(cycle);
count--;
}
__enable_irq();
}
static void GpioTest(int argc, char**argv)
{
uint32_t io_value = 0;
uint32_t count = 0,delay,cycle;
if (argc < 3)
{
goto IO_help_label_;
}
if(argc == 3)
{
io_value = atoi(argv[2]);
}
if (!rt_strcmp(argv[1], "LAVC_M"))
{
PAout(LAVC_M_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "SEG0"))
{
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG0_Pin_Nu));
}else if(!rt_strcmp(argv[1], "R10_ON"))
{
PBout(R10_ON_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "R510_ON")){
PBout(R510_ON_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "LED1")){
PBout(LED1_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "IO_APD12")){
PBout(IO_APD12_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "LED2")){
PBout(LED2_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "OUTAL"))
{
PBout(OUTAL_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "OUTBL"))
{
PBout(OUTBL_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "OUTAH"))
{
PBout(OUTAH_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "R100_ON"))
{
PCout(R100_ON_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "OUTBH"))
{
PCout(OUTBH_Pin_Nu) = io_value;
}
else if(!rt_strcmp(argv[1], "Power_ON"))
{
PCout(POWER_ON_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "SEG4"))
{
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG4_Pin_Nu));
}else if(!rt_strcmp(argv[1], "SEG3"))
{
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG3_Pin_Nu));
}else if(!rt_strcmp(argv[1], "SEG1"))
{
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG1_Pin_Nu));
}else if(!rt_strcmp(argv[1], "SEG2"))
{
rt_kprintf("Read SEG4 value = %d \n",PCin(SEG2_Pin_Nu));
}else if(!rt_strcmp(argv[1], "IO_APD22"))
{
PCout(IO_APD22_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "IO_APD21"))
{
PCout(IO_APD21_Pin_Nu) = io_value;
}else if(!rt_strcmp(argv[1], "IO_APD11"))
{
PCout(IO_APD11_Pin_Nu) = io_value;
}
else if(!rt_strcmp(argv[1], "Group1"))
{
count = atoi(argv[2]);
delay = atoi(argv[3]);
cycle = atoi(argv[4]);
OutGroup1(count,delay,cycle);
}
else
{
IO_help_label_:
rt_kprintf("IO [IO_name] 0/1/R \n");
rt_kprintf("IO Group[number] count delay cycle \n");
}
}
MSH_CMD_EXPORT_ALIAS(GpioTest,IO,I/O Input Output test);
static void DACTest(int argc, char**argv)
{
uint32_t da_value = 0;
if (argc < 3)
{
goto DAC_help_label_;
}
if(argc == 3)
{
da_value = atoi(argv[2]);
}
if(!rt_strcmp(argv[1], "C_H_DAC"))
{
if(da_value < 125)
{
rt_kprintf("C_H_DAC Min value 1400");
}else{
C_H_DAC_Set(da_value);
}
}else if(!rt_strcmp(argv[1], "C_M_DAC"))
{
C_M_DAC_Set(da_value);
}else{
DAC_help_label_:
rt_kprintf("DA [C_H_DAC/C_M_DAC] Value(0~4096) \n");
}
}
MSH_CMD_EXPORT_ALIAS(DACTest,DA,Out DA Voltage);
static void ADCTest(int argc, char**argv)
{
uint16_t adv;
uint16_t ul_count = 0;
if (argc < 2)
{
goto ADC_help_label_;
}else if(!rt_strcmp(argv[1], "V_LA_M"))
{
GetADC1_Value(V_LA_M_CH,&adv,1);
rt_kprintf("V_LA_M = %d \n",adv);
}else if(!rt_strcmp(argv[1], "V_LA_H"))
{
GetADC1_Value(V_LA_H_CH,&adv,1);
rt_kprintf("V_LA_H = %d \n",adv);
}else if(!rt_strcmp(argv[1], "VCC_2V5"))
{
GetADC1_Value(VCC_2V5_CH,&adv,1);
rt_kprintf("VCC_2V5 = %d \n",adv);
}else if(!rt_strcmp(argv[1], "VCC_1V25"))
{
GetADC1_Value(VCC_1V25_CH,&adv,1);
rt_kprintf("VCC_1V25 = %d \n",adv);
}else if(!rt_strcmp(argv[1], "RAD_01"))
{
GetADC1_Value(RAD_01_CH,&adv,1);
rt_kprintf("RAD_01 = %d \n",adv);
}else if(!rt_strcmp(argv[1], "AD_OUTA"))
{
GetADC1_Value(AD_OUTA_CH,&adv,1);
rt_kprintf("AD_OUTA = %d \n",adv);
}
else if(!rt_strcmp(argv[1], "AD_OUTB"))
{
GetADC1_Value(AD_OUTB_CH,&adv,1);
rt_kprintf("AD_OUTB = %d \n",adv);
}
else if(!rt_strcmp(argv[1], "V_BASE"))
{
GetADC1_Value(ADC_Channel_17,&adv,1);
rt_kprintf("V_BASE = %d \n",adv);
}else if(!rt_strcmp(argv[1], "TEMP"))
{
GetADC1_Value(ADC_Channel_16,&adv,1);
rt_kprintf("TEMP = %d \n",adv);
}
else if(!rt_strcmp(argv[1], "AN_UA"))
{
StartADC2Channel(AN_UA_CH,ADC_SPEED_MIDLE);
rt_kprintf("AN_UA = %d \n",GetADC1_Fast());
}else if(!rt_strcmp(argv[1], "AN_MAL"))
{
StartADC2Channel(AN_MAL_CH,ADC_SPEED_MIDLE);
rt_kprintf("AN_MAL = %d \n",GetADC1_Fast());
}
else if(!rt_strcmp(argv[1], "FMA"))
{
JQBUS_OFF;
rt_kprintf("Close Bus \n");
delay_ms(1000);
rt_kprintf("Open Bus \n");
POWER_ON;
StartADC2Channel(AN_MAL_CH,ADC_SPEED_HIGH);
Power_SetSampleCurrentRange(R100_0p2mA_3mA_MC);
JQBUS_ON;
delay_ms(1);
ul_count = 0;
while(ul_count < 2048)
{
jq_adc_test_buf[ul_count++] = GetADC1_Fast();
}
ul_count = 0;
rt_kprintf("Sample data \n");
while(ul_count < 2048)
{
rt_kprintf("%d\t%d\t%d\t%d\n",jq_adc_test_buf[ul_count],jq_adc_test_buf[ul_count+1],jq_adc_test_buf[ul_count+2],jq_adc_test_buf[ul_count+3]);
ul_count +=4;
}
}
else if(!rt_strcmp(argv[1], "FUA"))
{
JQBUS_OFF;
rt_kprintf("Close Bus \n");
delay_ms(1000);
rt_kprintf("Open Bus \n");
StartADC2Channel(AN_UA_CH,ADC_SPEED_HIGH);
POWER_ON;
Power_SetSampleCurrentRange(R10_0p1mA_1p6mA_UC);
JQBUS_ON;
delay_ms(1);
ul_count = 0;
while(ul_count < 2048)
{
jq_adc_test_buf[ul_count++] = GetADC1_Fast();
}
ul_count = 0;
rt_kprintf("Sample data \n");
while(ul_count < 2048)
{
rt_kprintf("%d\t%d\t%d\t%d\n",jq_adc_test_buf[ul_count],jq_adc_test_buf[ul_count+1],jq_adc_test_buf[ul_count+2],jq_adc_test_buf[ul_count+3]);
ul_count +=4;
}
}
else{
ADC_help_label_:
rt_kprintf("AD [ChannelName] \n");
rt_kprintf("AD FUA / FMA \n");
}
}
MSH_CMD_EXPORT_ALIAS(ADCTest,AD,Get AD Value);
static void PowerTest(int argc, char**argv)
{
PowerInfo_st infos_st;
if (argc < 2)
{
goto FB_help_label_;
}else if(!rt_strcmp(argv[1], "ON"))
{
POWER_ON
}else if(!rt_strcmp(argv[1], "OFF"))
{
POWER_OFF
}
else if(!rt_strcmp(argv[1], "HV"))
{
rt_kprintf("POWER HV(10) %d \n" , Power_GetHPowerV());
}else if(!rt_strcmp(argv[1], "MV"))
{
rt_kprintf("POWER MV(10) %d \n" , Power_GetMPowerV());
}else if(!rt_strcmp(argv[1], "CURRENT")){
rt_kprintf("CURRENT 0.1uA %d \n" , Power_GetCurrent());
}else if(!rt_strcmp(argv[1], "SET"))
{
infos_st.V_LAH = atoi(argv[2]);
infos_st.V_LAM = atoi(argv[3]);
infos_st.V_LAH_DAC = 0;
infos_st.V_LAM_DAC = 0;
PowerCalibration(&infos_st);
if( infos_st.V_LAH_DAC > 0)
PowerSetVoltage(&infos_st);
}
else{
FB_help_label_:
rt_kprintf("POWER [ ON |HV | MV | CURRENT] \n");
rt_kprintf("POWER [SET] [HV max 260] [MV ] \n");
}
}
MSH_CMD_EXPORT_ALIAS(PowerTest ,POWER, BUS POWER );
extern Checker_RunCfg_st checker_runcfg;
static void CheckerTest(int argc, char**argv)
{
uint32_t h_power,m_power;
uint16_t us_array[20];
uint8_t* puc_buf;
uint16_t us_temp;
rt_memset(&checker_runcfg,0,sizeof(Checker_RunCfg_st));
if(argc > 2)
{
checker_runcfg.param_count = argc-2;
us_temp = 0;
while(us_temp < checker_runcfg.param_count)
{
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
us_temp++;
}
}
if (argc < 2)
{
goto CH_help_label_;
}else if(!rt_strcmp(argv[1], "ON")){
JQBUS_ON
}else if(!rt_strcmp(argv[1], "OFF")){
JQBUS_OFF
}
else if(!rt_strcmp(argv[1], "H")){
JQBUS_W_1
}else if(!rt_strcmp(argv[1], "L")){
JQBUS_W_0
}else if(!rt_strcmp(argv[1], "CURRENT")){
}else if(!rt_strcmp(argv[1], "PowerPrapare")){
Checker_PowerPrapare();
rt_kprintf("PowerPrapare Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "PowerOn")){
checker_runcfg.rtv_count = 2;
JQ_Test_PowerOn();
rt_kprintf("PowerOn Excute %d BusV %d Energy %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
}else if(!rt_strcmp(argv[1], "SetBusV")){
checker_runcfg.rtv_count = 1;
JQ_Test_SetBusV();
rt_kprintf("SetBusV Excute %d BusV %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] );
}else if(!rt_strcmp(argv[1], "BaseCur")){
checker_runcfg.rtv_count = 2;
JQ_Test_BaseCur();
rt_kprintf("BaseCur Excute %d BusCur1 %d BusCur2 %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
}
else if(!rt_strcmp(argv[1], "ScanUID")){
checker_runcfg.rtv_count = 8;
JQ_Test_ScanUID();
rt_kprintf("ScanUID excute %d, max_cur %d, max_time %d, min_cur %d, min_time %d UID\t",\
checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[2],checker_runcfg.Test_Rtv[3]);
us_temp = 0;
while(us_temp < 4)
{
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp+4]) & 0x0FF);
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp+4]>>8) & 0x0FF);
us_temp++;
}
printf("\n");
}else if(!rt_strcmp(argv[1], "ReadChipID")){
checker_runcfg.rtv_count = 1;
JQ_Test_ReadChipID();
printf("ReadChipID Excute %d ChipID %04x \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "PWCheck")){
JQ_Test_PWCheck();
printf("PWCheck Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "OTPCheck")){
JQ_Test_OTPCheck();
printf("OTPCheck Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "FTCheck")){
JQ_Test_FTCheck();
printf("FTCheck Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ReadState")){
checker_runcfg.rtv_count = 1;
JQ_Test_ReadState();
printf("ReadState Excute %d State %02x\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "WriteUserInfo")){
JQ_Test_WriteUserInfo();
printf("WriteUserInfo Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ChgEnergy")){
checker_runcfg.rtv_count = 4;
JQ_Test_ChgEnergy();
printf("ReadState Excute %d Energy_0.1ms %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
printf("EndCur_0.1uA %d ",checker_runcfg.Test_Rtv[1]);
printf("MaxCur_0.1mA %d ",checker_runcfg.Test_Rtv[2]);
printf("ShakeADV %d \n",checker_runcfg.Test_Rtv[3]);
}else if(!rt_strcmp(argv[1], "CheckDAC")){
checker_runcfg.rtv_count = 1;
JQ_Test_CheckDAC();
printf("CheckDAC Excute %d End_DAC %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "WaitDelay")){
checker_runcfg.rtv_count = 1;
Checker_WaitDelay();
printf("CheckDAC Excute %d End_DAC %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "SetDelay")){
JQ_Test_SetDelay();
printf("SetDelay Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ReadDelay")){
checker_runcfg.rtv_count = 1;
JQ_Test_ReadDelay();
printf("ReadDelay Excute %d Delay %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "ClkTrim")){
JQ_Test_ClkTrim();
printf("ClkTrim Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "Discharge")){
JQ_Test_Discharge();
printf("Discharge Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "Reset")){
JQ_Test_Reset();
printf("Reset Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "BootEn")){
JQ_Test_BootEn();
printf("BootEn Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ClearBoom")){
JQ_Test_ClearBoom();
printf("ClearBoom Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "BoomEnergy")){
checker_runcfg.rtv_count = 4;
JQ_Test_BoomEnergy();
printf("BoomEnergy Excute %d Energy_0.1ms %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
printf("PlusShakeADV %d ",checker_runcfg.Test_Rtv[1]);
printf("MaxChgCur_0.1mA %d ",checker_runcfg.Test_Rtv[2]);
printf("ChgShakeADV %d \n",checker_runcfg.Test_Rtv[3]);
}else if(!rt_strcmp(argv[1], "EnCommEndCur")){
JQ_Test_EnCommEndCur();
printf("BootEn Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "GetCommEndCur")){
checker_runcfg.rtv_count = 1;
JQ_Test_GetCommEndCur();
printf("GetCommEndCur Excute %d CommCur %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "PowerOff")){
JQ_Test_PowerOff();
printf("PowerOff Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "WriteOTP")){
HexStrings2Byte(argv+4,argc-4,(uint8_t*)(&checker_runcfg.params[2]),8);
JQ_Test_WriteOTP();
printf("WriteOTP Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ReadOTP")){
us_temp = checker_runcfg.params[1];
checker_runcfg.rtv_count = (us_temp + 1)/2;
JQ_Test_ReadOTP();
printf("ReadOTP Excute %d ReadDatas ",checker_runcfg.Task_Result[0]);
puc_buf = (uint8_t*)checker_runcfg.Test_Rtv;
while(us_temp > 0)
{
printf("%02x ",*puc_buf++);
us_temp--;
}
printf("\n");
}else if(!rt_strcmp(argv[1], "WriteBuf2OTP")){
JQ_Test_WriteBuf2OTP();
printf("WriteBuf2OTP Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "BindUIDPWD")){
memcpy(us_array,argv[2],strlen(argv[2]));
UidCode_YM2JQ(checker_runcfg.writeuid,(uint8_t*)us_array);
m_power = GetPasswordByUidCode((uint8_t*)us_array);
memcpy(checker_runcfg.writepwd,(uint8_t*)&m_power ,4);
checker_runcfg.pwd_len = 4;
checker_runcfg.uid_len = 8;
JQ_UID_PWD_Bind();
printf("BindUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "VerifyUIDPWD")){
JQ_Verify_UID_PWD();
printf("VerifyUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}
else if(!rt_strcmp(argv[1], "SetHardVer")){
HexStrings2Byte(argv+2,argc-2,(uint8_t*)(&boardinfo_un.boardinfo.hard_v),2);
SaveBoardInfo();
printf("SetHardVer %04x\n",boardinfo_un.boardinfo.hard_v);
}else if(!rt_strcmp(argv[1], "SetRsisDiff")){
boardinfo_un.boardinfo.resistor_diff = checker_runcfg.params[0];
SaveBoardInfo();
printf("SetRsisDiff %d\n",boardinfo_un.boardinfo.resistor_diff);
}else if(!rt_strcmp(argv[1], "ReadBoard")){
LoadBoardInfo();
printf("BootFlag %08x HardVersion %02x RsistorDiff %d\n",\
boardinfo_un.boardinfo.bootflag,boardinfo_un.boardinfo.hard_v,boardinfo_un.boardinfo.resistor_diff);
}else if(!rt_strcmp(argv[1], "ExcuePlan")){
Ye_RunPlanCheckTest();
}
else if(!rt_strcmp(argv[1], "SetWriteBuf")){
HexStrings2Byte(argv+2,argc-2,Checker_FacBuf+2,CHECKER_FAC_BUF_LEN-2);
if(argc > CHECKER_FAC_BUF_LEN)
{
Checker_FacBuf[0] = CHECKER_FAC_BUF_LEN-2;
}else{
Checker_FacBuf[0] = argc-2;
}
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
printf("SetWriteBuf Excute 0 \n");
}else if(!rt_strcmp(argv[1], "ResistorSample")){
checker_runcfg.rtv_count = 1;
Checker_ResistorSample();
printf("CheckPWD Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "CapVoltage")){
checker_runcfg.rtv_count = 1;
JQ_Test_CapVoltage();
printf("CheckPWD Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "EnOTPW")){
JQ_Test_EnOTPW();
printf("EnOTPW Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "WriteVersion")){
JQ_Test_WriteVersion();
printf("WriteVersion Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ReadVersion")){
checker_runcfg.rtv_count = 1;
JQ_Test_ReadVersion();
printf("ReadVersion Excute %d Ver %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "WriteFacBuff")){
JQ_Test_WriteFacBuff();
printf("WriteFacBuff Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "VerifyFacBuff")){
JQ_Test_VerifyFacBuff();
printf("VerifyFacBuff Excute %d ",checker_runcfg.Task_Result[0]);
}
else{
CH_help_label_:
rt_kprintf("CH [ON | OFF | H | L ] \n");
rt_kprintf("PowerPrapare [V1,V2,V3...V10] \n");
rt_kprintf("PowerOn [Voltage] [TimeOut] [End_ADC_V] \n");
rt_kprintf("SetBusV [Voltage] \n");
rt_kprintf("BaseCur \n");
rt_kprintf("ScanUID [EN_CommCur] [E_UID_Equal_0] \n");
rt_kprintf("PWCheck [EN_PW_0] \n");
rt_kprintf("ReadChipID \n");
rt_kprintf("OTPCheck [EN_UID_PWD_0] [EN_Delay_Re_0] [EN_Factory_0]\n");
rt_kprintf("FTCheck \n");
rt_kprintf("ReadState [State_Mask] \n");
rt_kprintf("WriteUserInfo [2bytes] [2bytes]\n");
rt_kprintf("ChgEnergy [End_ADV] [Sample_timeout] [End_Cur_0.1] [Wait_Timeout] [Chg_Hold]\n");
rt_kprintf("CheckDAC [Bg_DAC] [End_DAC]\n");
rt_kprintf("WaitDelay [Delay_0.1S] [En_Monitor] \n");
rt_kprintf("SetDelay [Delay] \n");
rt_kprintf("ReadDelay \n");
rt_kprintf("ClkTrim [Cycle_us] [Pluse_count] \n");
rt_kprintf("Discharge \n");
rt_kprintf("Reset \n");
rt_kprintf("BoomEnergy [End_ADV] [Plus_Count] [DelaySample_ms]\n");
rt_kprintf("BootEn \n");
rt_kprintf("ClearBoom \n");
rt_kprintf("EnCommEndCur \n");
rt_kprintf("GetCommEndCur \n");
rt_kprintf("PowerOff \n");
rt_kprintf("WriteOTP [OTP_Addr] [Write_Len] [DATA ...]\n");
rt_kprintf("ReadOTP [OTP_Addr] [Read_Len] \n");
rt_kprintf("WriteBuf2OTP [OTP_Addr] [Buffer_Addr] [WriteLen] \n");
rt_kprintf("BindUIDPWD [uid_str] \n");
rt_kprintf("VerifyUIDPWD \n");
rt_kprintf("SetHardVer [HardVersion 2Bytes] \n");
rt_kprintf("SetRsisDiff [RsistorDiff *100] \n");
rt_kprintf("ReadBoardInfo \n");
rt_kprintf("ExcuePlan \n");
rt_kprintf("SetWriteBuf [HexData...]\n");
rt_kprintf("ResistorSample [Test_Modle]\n");
rt_kprintf("CapVoltage [WaitTime 0.1S]\n");
rt_kprintf("EnOTPW \n");
rt_kprintf("WriteVersion [Product Ver] \n");
rt_kprintf("ReadVersion \n");
rt_kprintf("WriteFacBuff [otp_addr][buf_bg][w_len] \n");
rt_kprintf("VerifyFacBuff [otp_addr][buf_bg][r_len] \n");
}
}
MSH_CMD_EXPORT_ALIAS(CheckerTest ,JCH, BUS POWER );

View File

@@ -0,0 +1,303 @@
#include "base/define.h"
#include "stdlib.h"
#include "hardware/gpio_cfg.h"
#include "base/delay.h"
#include "hardware/adc_cfg.h"
#include "hardware/power.h"
#include "base/utility.h"
//#include "usartapp.h"
//#include "database.h"
#include "driver/XTDriver.h"
#include "interface/BaseChecker.h"
#include "interface/XTChecker.h"
#include "elec_io.h"
//volatile uint16_t jq_adc_test_buf[2048];
static void XTCheckerTest(int argc, char**argv)
{
uint32_t h_power,m_power;
uint16_t us_array[20];
uint8_t* puc_buf;
uint16_t us_temp;
rt_memset(&checker_runcfg.params,0,sizeof(checker_runcfg.params));
rt_memset(&checker_runcfg.Task_Result,0,sizeof(checker_runcfg.Task_Result));
checker_runcfg.excue_rtv = 0;
checker_runcfg.param_count = 0;
checker_runcfg.rtv_count = 0;
checker_runcfg.rtv_index = 0;
checker_runcfg.task_info.runindex = 0;
if(argc > 2)
{
checker_runcfg.param_count = argc-2;
us_temp = 0;
while(us_temp < checker_runcfg.param_count)
{
checker_runcfg.params[us_temp] = atoi(argv[us_temp+2]);
us_temp++;
}
}
if (argc < 2)
{
goto CH_help_label_;
}else if(!rt_strcmp(argv[1], "ON")){
XTBUS_ON
}else if(!rt_strcmp(argv[1], "OFF")){
XTBUS_OFF
}
else if(!rt_strcmp(argv[1], "H")){
XTBUS_W_1
}else if(!rt_strcmp(argv[1], "L")){
XTBUS_W_0
}else if(!rt_strcmp(argv[1], "CURRENT")){
rt_kprintf("Bus Cur %d 0.1uA \n",Power_GetCurrent());
}else if(!rt_strcmp(argv[1], "PowerPrapare")){
Checker_PowerPrapare();
rt_kprintf("PowerPrapare Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "PowerOn")){
checker_runcfg.rtv_count = 2;
XT_Test_PowerOn();
rt_kprintf("PowerOn Excute %d BusV %d Energy %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
}else if(!rt_strcmp(argv[1], "SetBusV")){
checker_runcfg.rtv_count = 1;
XT_Test_SetBusV();
rt_kprintf("SetBusV Excute %d BusV %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0] );
}else if(!rt_strcmp(argv[1], "BaseCur")){
checker_runcfg.rtv_count = 2;
XT_Test_BaseCur();
rt_kprintf("BaseCur Excute %d BusCur1 %d BusCur2 %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1] );
}
else if(!rt_strcmp(argv[1], "ScanUID")){
checker_runcfg.rtv_count = (checker_runcfg.params[0]+8+1)/2;
XT_Test_ScanUID();
rt_kprintf("ScanUID excute %d \t",checker_runcfg.Task_Result[0]);
us_temp = 0;
while(us_temp < checker_runcfg.rtv_count)
{
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]) & 0x0FF);
printf("%02x ",(checker_runcfg.Test_Rtv[us_temp]>>8) & 0x0FF);
us_temp++;
}
printf("\n");
}else if(!rt_strcmp(argv[1], "WriteChipCfg")){
XT_Test_WriteChipCfg();
printf("WriteChipCfg Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckChipCfg")){
XT_Test_CheckChipCfg();
printf("CheckChipCfg Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "BindTestCode")){
XT_Test_BindTestCode();
printf("BindTestCode Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ChgEnergy")){
checker_runcfg.rtv_count = 4;
XT_Test_ChgEnergy();
printf("ReadState Excute %d Energy_0.1ms %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
printf("EndCur_0.1uA %d ",checker_runcfg.Test_Rtv[1]);
printf("MaxCur_0.1mA %d ",checker_runcfg.Test_Rtv[2]);
printf("ShakeADV %d \n",checker_runcfg.Test_Rtv[3]);
} else if(!rt_strcmp(argv[1], "WriteRunField")){
XT_Test_WriteRunField();
printf("WriteRunField Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckRunField")){
checker_runcfg.rtv_count = 4;
XT_Test_CheckRunField();
printf("ReadState Excute %d MaxCur %d MaxTime %d MinCur %d MinTime %d\n",checker_runcfg.Task_Result[0],\
checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[2],checker_runcfg.Test_Rtv[3]);
}else if(!rt_strcmp(argv[1], "Resister")){
checker_runcfg.rtv_count = 1;
XT_Test_Resister();
printf("Resister Excute %d R_adc %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "Cap")){
checker_runcfg.rtv_count = 1;
XT_Test_Cap();
printf("Cap Excute %d Cap %d 0.1uf\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "WaitDelay")){
Checker_WaitDelay();
printf("Cap Excute %d C\n",checker_runcfg.Task_Result[0]);
}
else if(!rt_strcmp(argv[1], "WriteShell")){
XT_Test_WriteShell();
printf("WriteShell Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "WriteUID")){
XT_Test_WriteUID();
printf("WriteUID Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "WritePWD")){
XT_Test_WritePWD();
printf("WritePWD Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckBackFlag")){
XT_Test_CheckBackFlag();
printf("CheckBackFlag Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "ReadBackFlag")){
checker_runcfg.rtv_count = 2;
XT_Test_ReadBackFlag();
printf("Discharge Excute %d BackBytes %04X %04X\n ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1]);
}else if(!rt_strcmp(argv[1], "Trim")){
XT_Test_Trim();
printf("Trim Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "Discharge")){
XT_Test_Discharge();
printf("Discharge Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "EnCommEndCur")){
XT_Test_EnCommEndCur();
printf("EnCommEndCur Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "GetCommEndCur")){
checker_runcfg.rtv_count = 1;
XT_Test_GetCommEndCur();
printf("GetCommEndCur Excute %d Cur_ADC %d ",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "OneLineCheck")){
XT_Test_OneLineCheck();
printf("OneLineCheck Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CheckState")){
checker_runcfg.rtv_count = 1;
XT_Test_CheckState();
printf("CheckState Excute %d CommCur %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "Boom")){
checker_runcfg.rtv_count = 2;
XT_Test_Boom();
printf("Boom Excute %d delay %d 0.1ms net_id %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "Reset")){
XT_Test_Reset();
printf("Reset Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "PowerOFF")){
XT_Test_PowerOFF();
printf("PowerOFF Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "LockCmdC")){
XT_Test_LockCmdC();
printf("LockCmdC Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "CodeBindEn")){
XT_Test_CodeBindEn();
printf("LockCmdC Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "SetWriteBuf")){
Checker_FacBuf[0] = strlen(argv[2]);
memcpy(Checker_FacBuf+2,argv[2],Checker_FacBuf[0]);
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
printf("SetWriteBuf Excute 0 \n");
}else if(!rt_strcmp(argv[1], "SetWriteBufHex")){
HexStrings2Byte(argv+2,argc-2,Checker_FacBuf+2,48);
Checker_FacBuf[0] = argc-2;
Checker_FacBuf[1] = CheckCRC_8(Checker_FacBuf+2,Checker_FacBuf[0]);
printf("SetWriteBufHex Excute 0 \n");
}else if(!rt_strcmp(argv[1], "InputCheck")){
checker_runcfg.rtv_count = 1;
XT_Test_InputCheck();
printf("InputCheck Excute %d BusVoltage %d \n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "CheckPWD")){
XT_Test_CheckPWD();
printf("CheckPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "UID_PWD_Bind")){
printf("UID_PWD_Bind Excute %d \n",XT_UID_PWD_Bind());
}else if(!rt_strcmp(argv[1], "ResistorSample")){
checker_runcfg.rtv_count = 1;
Checker_ResistorSample();
printf("ResistorSample Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}
else if(!rt_strcmp(argv[1], "LoadChipCfg")){
checker_runcfg.rtv_count = 4;
XT_Test_LoadChipCfg();
printf("LoadChipCfg Excute %d UID_LEN %d PWD_LEN %d CUR_CLASS %d Ver %d\n",\
checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0],checker_runcfg.Test_Rtv[1],checker_runcfg.Test_Rtv[3],checker_runcfg.Test_Rtv[2]);
}
else if(!rt_strcmp(argv[1], "CapVoltage")){
checker_runcfg.rtv_count = 1;
XT_Test_CapVoltage();
printf("CheckPWD Excute %d Res(0.01) %d\n",checker_runcfg.Task_Result[0],checker_runcfg.Test_Rtv[0]);
}else if(!rt_strcmp(argv[1], "BindUIDPWD")){
memcpy(us_array,argv[2],strlen(argv[2]));
UidCode_YM2JQ(checker_runcfg.writeuid,(uint8_t*)us_array);
m_power = GetPasswordByUidCode((uint8_t*)us_array);
memcpy(checker_runcfg.writepwd,(uint8_t*)&m_power ,4);
checker_runcfg.pwd_len = 4;
checker_runcfg.uid_len = 8;
XT_Test_UID_PWD_Bind();
printf("BindUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "VerifyUIDPWD")){
XT_Test_UID_PWD_Verify();
printf("VerifyUIDPWD Excute %d \n",checker_runcfg.Task_Result[0]);
}
else if(!rt_strcmp(argv[1], "SetHardVer")){
HexStrings2Byte(argv+2,argc-2,(uint8_t*)(&boardinfo_un.boardinfo.hard_v),2);
SaveBoardInfo();
printf("SetHardVer %04x\n",boardinfo_un.boardinfo.hard_v);
}else if(!rt_strcmp(argv[1], "SetRsisDiff")){
boardinfo_un.boardinfo.resistor_diff = checker_runcfg.params[0];
SaveBoardInfo();
printf("SetRsisDiff %d\n",boardinfo_un.boardinfo.resistor_diff);
}else if(!rt_strcmp(argv[1], "ReadBoard")){
LoadBoardInfo();
printf("BootFlag %08x HardVersion %02x RsistorDiff %d\n PlanID " ,\
boardinfo_un.boardinfo.bootflag,boardinfo_un.boardinfo.hard_v,boardinfo_un.boardinfo.resistor_diff);
}else if(!rt_strcmp(argv[1], "ExcuePlan")){
Ye_RunPlanCheckTest();
}else if(!rt_strcmp(argv[1], "CurMonitor")){
XT_CurMonitor();
printf("CurMonitor Excute %d\n",checker_runcfg.Task_Result[0]);
}else if(!rt_strcmp(argv[1], "VerfyShell")){
XT_Test_VerfyShell();
printf("VerfyShell Excute %d\n",checker_runcfg.Task_Result[0]);
}
else{
CH_help_label_:
rt_kprintf("CH [ON | OFF | H | L ] \n");
rt_kprintf("PowerPrapare [V1,V2,V3...V10] \n");
rt_kprintf("PowerOn [Voltage] [TimeOut] [End_ADC_V] \n");
rt_kprintf("SetBusV [Voltage] \n");
rt_kprintf("BaseCur \n");
rt_kprintf("ScanUID [UID_LEN] [E_UID_Equal_0]\n");
rt_kprintf("WriteChipCfg [UID_LEN] [PWD_LEN] [FreeBack_Class] [Ver] \n");
rt_kprintf("CheckChipCfg [UID_LEN] [PWD_LEN] [FreeBack_Class] [Ver] \n");
rt_kprintf("BindTestCode \n");
rt_kprintf("ChgEnergy [Vol_Class] [End_ADV] [End_Cur_0.1] [Wait_Timeout] [Chg_Hold]\n");
rt_kprintf("WriteRunField [Net_ID] [Delay] [Local_Num]\n");
rt_kprintf("CheckRunField [Net_ID] [Delay] [Local_Num] [En_Freebakc_0]\n");
rt_kprintf("Resister \n");
rt_kprintf("Cap [Chg_Class][Measure_Time]\n");
rt_kprintf("WriteShell [Buf_Bg] [Len] \n");
rt_kprintf("WaitDelay [Delay_0.1S] [En_Monitor] \n");
rt_kprintf("WriteUID [Buf_Bg] [Len] \n");
rt_kprintf("WritePWD [Buf_Bg] [Len]\n");
rt_kprintf("CheckBackFlag [EN_1Checke_0Write] [2BytesMask] [2BytesData]\n");
rt_kprintf("ReadBackFlag \n");
rt_kprintf("Trim [Trim_Mode][Cycle][Count]\n");
rt_kprintf("Discharge \n");
rt_kprintf("EnCommEndCur \n");
rt_kprintf("GetCommEndCur \n");
rt_kprintf("OneLineCheck [NetID] [MaxNetId]\n");
rt_kprintf("CheckState [StateMask] \n");
rt_kprintf("Boom [Monitor_time]\n");
rt_kprintf("Reset \n");
rt_kprintf("PowerOFF \n");
rt_kprintf("LockCmdC \n");
rt_kprintf("CodeBindEn \n");
rt_kprintf("InputCheck [BusVoltage][TimeOut_1ms]\n");
rt_kprintf("CheckPWD \n");
rt_kprintf("SetHardVer [HardVersion 2Bytes] \n");
rt_kprintf("SetRsisDiff [RsistorDiff *100] \n");
rt_kprintf("ReadBoardInfo \n");
rt_kprintf("SetWriteBuf [HexData...]\n");
rt_kprintf("ResistorSample [Test_Modle]\n");
rt_kprintf("CapVoltage [WaitTime 0.1S]\n");
rt_kprintf("BindUIDPWD [uid_str] \n");
rt_kprintf("VerifyUIDPWD \n");
rt_kprintf("OnlineScan [BusV][TimeOUt][UIDLen] \n");
rt_kprintf("VerfyShell [buf_bg][len] \n");
rt_kprintf("ExcuePlan \n");
}
}
MSH_CMD_EXPORT_ALIAS(XTCheckerTest ,XCH, XT CHecker );

View File

@@ -6,7 +6,7 @@
#define BUILD_DATE "2023-10-11 17:33:01" #define BUILD_DATE "2023-10-12 18:40:51"
#define SOFT_VERSION "0.03" #define SOFT_VERSION "0.03"

View File

@@ -494,5 +494,22 @@ transmit_export(ym_slave,0x13,bootinfo)
// 写缓存
static int write_fatbuf_dolater(ucport_def *u,uint8_t cmd,array_def *data,char *err_str)
{
emit tran_reply_signal(u->p,arr_temp(elec_write_fat_buff(data)));
return 0;
}
static ucport_def *write_fatbuf(tran_def *t, uint8_t cmd,array_def *data)
{
int ret=0;
slave_def *u=slave_creat();
u->u.p=t;
u->u.del=slave_del;
u->u.dolater=write_fatbuf_dolater;
u->u.dolater(&u->u,cmd,data,"ok");
return (ucport_def *)u;
}
transmit_export(ym_slave,0x19,write_fatbuf)