diff --git a/docs/Mass_production/zh/CodeEncryption.md b/docs/Mass_production/zh/CodeEncryption.md index ad6d6023f7439ebfce5732caf5310da84c806a05..51bfd9ad433d7fd69bf105b7937c5362cf07f859 100644 --- a/docs/Mass_production/zh/CodeEncryption.md +++ b/docs/Mass_production/zh/CodeEncryption.md @@ -6,12 +6,13 @@ | -------- | ---------- | -------- | ------------ | | 1.0 | 2021-04-07 | Chic | 初始版本 | | 1.1 | 2021-07-08 | Chic | 增加交互保护 | +| 1.2 | 2021-09-06 | Chic | 更新图片 | ## 加密方式介绍 - 在 python 中,可以将 py 文件编译为 pyc 文件。编译后的 pyc 文件是二进制格式,一是可以加快加载速度, 更重要的是可以保护原始代码。在 micropython 中同样提供了这个功能,只是它将 pyc 改名为 mpy,编译出的文件扩展名是.mpy。这一加密过程正是通过 mpy-cross 工具来完成。 +在 python 中,可以将 py 文件编译为 pyc 文件。编译后的 pyc 文件是二进制格式,一是可以加快加载速度, 更重要的是可以保护原始代码。在 micropython 中同样提供了这个功能,只是它将 pyc 改名为 mpy,编译出的文件扩展名是.mpy。这一加密过程正是通过 mpy-cross 工具来完成。 **使用mpy-cross保护py文件** @@ -34,13 +35,13 @@ - 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QPYcom 图形化工具】,具体位置如下图: -image-20210323140746067 +![image-20210906170850437](media\image-20210906170850437.png) -- 打开QPYcom工具后,在**“下载”**选项卡中有【加密】的选项。加密功能用于保护用户的APP代码,加密后使源代码.py编译成.mpy二进制代码; +- 打开QPYcom工具后,在**“下载”**选项卡中有【加密】的选项,加密功能用于保护用户的应用代码,加密后使源代码.py编译成.mpy二进制代码; -3 +![image-20210906171528571](media\image-20210906171528571.png) -​ 注意:工具的加密功能在合并产生固件时生效,具体操作可参考《QuecPython产品开发及量产方案》 +​ 注意:工具的加密功能在合并产生固件时生效 @@ -60,7 +61,7 @@ user.py加密后,就会变成user.mpy,我们可以直接用user.mpy代替原 -## 文件读出保护 +## 文件读保护 ![image-20210708153532854](media\20210708153532854.png) diff --git a/docs/Mass_production/zh/DataEncryption.md b/docs/Mass_production/zh/DataEncryption.md index ebfa29a484213e29066bd41cea59db8a257bf556..e9c66314dedc01669966e9684460642d46a1508f 100644 --- a/docs/Mass_production/zh/DataEncryption.md +++ b/docs/Mass_production/zh/DataEncryption.md @@ -5,6 +5,7 @@ | **版本** | **日期** | **作者** | **变更表述** | | -------- | ---------- | -------- | ------------ | | 1.0 | 2021-04-07 | Chic | 初始版本 | +| 1.1 | 2021-09-06 | Chic | 初始版本 | @@ -68,9 +69,11 @@ import ubinascii # 目前支持 md5,sha1, sha256 data = b"QuecPython" # 待加密数据 +data2 = b"QuecPython" # 待加密数据 hash_obj = uhashlib.md5() hash_obj.update(data) +# hash_obj.update(data2) res = hash_obj.digest() hex_msg = ubinascii.hexlify(res) print("md5加密后的数据:", hex_msg) @@ -78,6 +81,7 @@ print("md5加密后的数据:", hex_msg) hash_obj = uhashlib.sha1() hash_obj.update(data) +# hash_obj.update(data2) res = hash_obj.digest() hex_msg = ubinascii.hexlify(res) print("sha1加密后的数据:", hex_msg) @@ -85,15 +89,26 @@ print("sha1加密后的数据:", hex_msg) hash_obj = uhashlib.sha256() hash_obj.update(data) +# hash_obj.update(data2) res = hash_obj.digest() hex_msg = ubinascii.hexlify(res) print("sha256加密后的数据:", hex_msg) # b'1ec66771b3a9ac3ea4c44f009e545797d42e9e7d426fff8275895468fe27c6cd' + +res = b'\x11\x22\x33123' +print("原始数据:", res) +res = ubinascii.b2a_base64(res) +print("编码base64数据:", res) +res = ubinascii.a2b_base64(res) +print("还原base64数据:", res) + ``` 执行结果如下图: -![DataEncryption_210406_01](media\DataEncryption_210406_01.png) +![image-20210906190809839](media\image-20210906190809839.png) + + ## 更多内容 diff --git a/docs/Mass_production/zh/QuecPythonBack.md b/docs/Mass_production/zh/QuecPythonBack.md index b84351be8948ed29b9627acd9eb10d5b1bef491a..dcf558efcb6344581630478663ae094560451d64 100644 --- a/docs/Mass_production/zh/QuecPythonBack.md +++ b/docs/Mass_production/zh/QuecPythonBack.md @@ -5,6 +5,7 @@ | **版本** | **日期** | **作者** | **变更表述** | | -------- | ---------- | -------- | ------------ | | 1.0 | 2021-04-07 | Chic | 初始版本 | +| 1.1 | 2021-09-06 | Chic | 初始版本 | @@ -90,11 +91,11 @@ file_crc32.calc('/usr/1.txt') - 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QPYcom 图形化工具】,具体位置如下图: -![210331_2023_3](media\210331_2023_3.png) +![image-20210906170850437](media\image-20210906170850437.png) -- 打开QPYcom工具后,在**“下载”**选项卡中有【备份】的选项,然后合并即可生成带备份的生产固件。 +- 打开QPYcom工具后,在**“下载”**选项卡勾选【备份】,合并即可生成带备份的生产固件。 -![210331_2023_4](media\210331_2023_4.png) +![image-20210906171528571](media\image-20210906171528571.png) diff --git a/docs/Mass_production/zh/README.md b/docs/Mass_production/zh/README.md old mode 100755 new mode 100644 index a600bfa4229ea33b2d725ec0e47f6e22381db8ec..76c67164d5838d40d0ae20aca5d2f34e3fe45af5 --- a/docs/Mass_production/zh/README.md +++ b/docs/Mass_production/zh/README.md @@ -5,6 +5,7 @@ | **版本** | **日期** | **作者** | **变更表述** | | -------- | ---------- | -------- | ------------ | | 1.0 | 2021-04-07 | Chic | 初始版本 | +| 1.1 | 2021-09-06 | Chic | 更新部分图片 | @@ -12,17 +13,19 @@ - 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QPYcom 图形化工具】,具体位置如下图: -image-20210323140746067 +![image-20210906170850437](media\image-20210906170850437.png) -- 打开QPYcom工具后,在**“下载”**选项卡中有【加密】【备份】的选项。加密功能用于保护用户的APP代码,加密后使源代码被掩盖;备份功能用于投入市场后,若APP意外丢失、被改写等,可从备份区恢复。 +- 打开QPYcom工具后,在**“下载”**选项卡中有【加密】【备份】的选项。 +- 加密功能用于保护用户的APP代码,加密后使源代码被掩盖; +- 备份功能用于投入市场后,若usr区备份文件意外丢失、篡改等,自动从bak区恢复。 -3 +![image-20210906171528571](media\image-20210906171528571.png) ## 使用QPYcom生成量产固件包 -合并源码后,用户在生产时,只需烧录一次固件即可完成生产,在合并时已经将用户的APP文件嵌入到固件中,因此烧录合并后的固件已经包含了用户的APP文件。 +合并源码后,只需烧录一次固件即可完成生产,在合并时已经将usr区的文件嵌入到固件中,因此烧录合并后的固件已经包含usr区的文件。 ### 合并条件 @@ -46,17 +49,15 @@ from usr import user_file # 用户的.py文件放在usr路径下,要用 from usr 导入APP import utime - PROJECT_NAME = 'QUEC_TEST' # 必须要有这行代码才能合并 PROJECT_VERSION = '1.0.0' # 必须要有这行代码才能合并 - if __name__ == "__main__": # 标准写法,从main.py开始执行 while True: user_file.Qprint() user_file.Qlistdir() utime.sleep_ms(300) - + ``` *user_file.py*文件: @@ -64,55 +65,49 @@ if __name__ == "__main__": # 标准写法,从main.py开始执行 ```python import uos - def Qprint(): print('Hello World !') - def Qlistdir(): print(uos.listdir('/usr')) - + ``` -将以上*main.py* 和*user_file.py*两个文件添加到要合并的*.py*中。固件建议使用官网发布的最新版本:[资源下载专区](https://python.quectel.com/download) 中找到对应的固件 。 - -合并后的固件存放在用户指定的路径下,如《QUEC_TEST_1.0.0.zip》文件,文件名由*mian.py*中的变量**PROJECT_NAME**、**PROJECT_VERSION**组合而成。 - -**注意:** +将以上*main.py* 和*user_file.py*两个文件添加到usr区中。固件建议使用官网发布的最新版本:[资源下载专区](https://python.quectel.com/download) 中找到于模组型号对应的固件 。 -合并要和模组交互操作,故合并时需要连接模块,打开QuecPython的交互串口,并保证没有程序在运行,即能正常交互,方能合并: +合并后的固件存放在用户指定的路径下,如《QUEC_TEST_1.0.0.zip》固件包,固件包名由*mian.py*中的变量**PROJECT_NAME**、**PROJECT_VERSION**组合而成。 -![4](media/mp4.png) +![image-20210906173316872](media\image-20210906173316872.png) 仅需几秒钟,即可完成合并: -![6](media/mp6.png) +![image-20210906173923292](media\image-20210906173923292.png) 合并完成后的文件名是由*mian.py*中的变量**PROJECT_NAME**、**PROJECT_VERSION**组合而成 -![6](media/mp5A.png) +![image-20210906173416123](media\image-20210906173416123.png) 烧录合并后的固件,开机自动运行*main.py*: -![5](media/mp5.png) +![image-20210906174329859](media\image-20210906174329859.png) ## 量产工具 -- 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QMulti 批量下载工具】,具体位置如下图: +- 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QMulti_DL 批量下载工具】,具体位置如下图: -image-20210323143756810 +![image-20210906174758192](media\image-20210906174758192.png) - 打开软件后,在**“Load FW Files”**中选择上面合并后的固件,点击**“Auto ALL”**后,即自动检测8个通道直至烧录完毕: - ​ 首先,夹具通过USB先接入电脑。 + ​ 首先,夹具通过USB先接入电脑; - ​ 其次,在电脑打开QMulti 批量下载工具,并选择要烧录的固件,随后软件会自动检测烧录 + ​ 其次,在电脑打开QMulti_DL批量下载工具,并选择要烧录的固件,随后软件会自动检测烧录。 -![7](media/mp7.png) +![image-202109061rtyurewry4](media\image-202109061rtyurewry4.png) -**注意:** +**提醒:** 只要夹具中的任意一个通信有模块接通电源,就会自动烧录。 @@ -124,22 +119,6 @@ def Qlistdir(): 下载差分包生成教程和工具 -## 失败问题处理(模块中有脚本文件运行) - -**现象**: - -合并失败,QPYcom烧录固件没有反应 - -上传py文件且文件名为*main.py*到模块后,无法任何执行指令(包括上传文件等) - -**原因**: - -模块在开机后会自动寻找运行文件名为*main.py*的脚本文件,如果*main.py*中存在*while*、*for(,,)*等无限循环语句,会导致程序阻塞,串口被占用,无法进行其他操作。 - -**解决方案**: - -目前版本只能通过重刷固件解决此问题,建议在测试阶段尽量不要使用*main.py*文件,可使用*start.py*或其它命名来手动拉起项目,避免重刷固件。 - ## 附录A参考文档及术语缩写 diff --git a/docs/Mass_production/zh/media/image-20210906170850437.png b/docs/Mass_production/zh/media/image-20210906170850437.png new file mode 100644 index 0000000000000000000000000000000000000000..0c87f5d2cc2fdf259d0a3ebf87101a4d26e85815 Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906170850437.png differ diff --git a/docs/Mass_production/zh/media/image-20210906171528571.png b/docs/Mass_production/zh/media/image-20210906171528571.png new file mode 100644 index 0000000000000000000000000000000000000000..79c6cb5d8b21127b0b09edad423bfb69c173ad60 Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906171528571.png differ diff --git a/docs/Mass_production/zh/media/image-20210906173316872.png b/docs/Mass_production/zh/media/image-20210906173316872.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a2e8615f2b2d46d9f5bc796f11bd2f8ca9ed3a Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906173316872.png differ diff --git a/docs/Mass_production/zh/media/image-20210906173416123.png b/docs/Mass_production/zh/media/image-20210906173416123.png new file mode 100644 index 0000000000000000000000000000000000000000..1bbd53aa32076a0d2234e28f63aadec539f73699 Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906173416123.png differ diff --git a/docs/Mass_production/zh/media/image-20210906173923292.png b/docs/Mass_production/zh/media/image-20210906173923292.png new file mode 100644 index 0000000000000000000000000000000000000000..0c063fbd2526734c14bb2200fa62f56a351bc586 Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906173923292.png differ diff --git a/docs/Mass_production/zh/media/image-20210906174329859.png b/docs/Mass_production/zh/media/image-20210906174329859.png new file mode 100644 index 0000000000000000000000000000000000000000..44df4e45d94bbc8a518852772cb6e12d6fd67c25 Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906174329859.png differ diff --git a/docs/Mass_production/zh/media/image-20210906174758192.png b/docs/Mass_production/zh/media/image-20210906174758192.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3cca3a4e2c4d6dc6f85af52d87b91b8ebd676c Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906174758192.png differ diff --git a/docs/Mass_production/zh/media/image-20210906190809839.png b/docs/Mass_production/zh/media/image-20210906190809839.png new file mode 100644 index 0000000000000000000000000000000000000000..5bad7ff90a85bf0d252c2fb58d9bd2764e361598 Binary files /dev/null and b/docs/Mass_production/zh/media/image-20210906190809839.png differ diff --git a/docs/Mass_production/zh/media/image-202109061rtyurewry4.png b/docs/Mass_production/zh/media/image-202109061rtyurewry4.png new file mode 100644 index 0000000000000000000000000000000000000000..c72becdc48e948cf5853038555355ec5ee08daec Binary files /dev/null and b/docs/Mass_production/zh/media/image-202109061rtyurewry4.png differ