diff --git a/docs/Getting_started/zh/mass-production/code/fota.zip b/docs/Getting_started/zh/mass-production/code/fota.zip new file mode 100644 index 0000000000000000000000000000000000000000..c2924174271cb466ee249bb3fa085d94f32ce06a Binary files /dev/null and b/docs/Getting_started/zh/mass-production/code/fota.zip differ diff --git a/docs/Getting_started/zh/mass-production/code/main.zip b/docs/Getting_started/zh/mass-production/code/main.zip new file mode 100644 index 0000000000000000000000000000000000000000..cd9ecb7ca6842eec127ca5c5b8acb78a348aa660 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/code/main.zip differ diff --git a/docs/Getting_started/zh/mass-production/encryption-and-packaging.md b/docs/Getting_started/zh/mass-production/encryption-and-packaging.md new file mode 100644 index 0000000000000000000000000000000000000000..9305bf45435229e597dad443dce8b2e9a3036ba8 --- /dev/null +++ b/docs/Getting_started/zh/mass-production/encryption-and-packaging.md @@ -0,0 +1,60 @@ +## 加密方式介绍 + +在 python 中,可以将 py 文件编译为 pyc 文件。编译后的 pyc 文件是二进制格式,一是可以加快加载速度, 更重要的是可以保护原始代码。在 micropython 中同样提供了这个功能,只是它将 pyc 改名为 mpy,编译出的文件扩展名是.mpy。这一加密过程正是通过 mpy-cross 工具来完成。 + +**使用mpy-cross保护py文件** + +- py 文件 + + python 源代码文件后缀 。 + +- pyc 文件 + + pyc 是一种二进制文件,是由 py 文件经过编译后,编译后的pyc文件是二进制格式,一是可以加快加载速度,更重要的是可以保护原始代码。而且 pyc 是一种跨平台的字节码,是由 Python 虚拟机来执行。 + +- mpy 文件 + + Micropython 中提供了将.py 文件编译成.mpy 文件,和.pyc 文件一样是二进制文件。如:user.py加密后,就会变成user.mpy,我们可以直接用user.mpy代替原有的user.py文件,使用起来和原来一样。 + + + + +## 使用工具加密 + +- 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QPYcom 图形化工具】,具体位置如下图: + +![image-20230420-download](media/image-20230420-download.png) + +- 打开QPYcom工具后,在**“下载”**选项卡中有【加密】的选项,加密功能用于保护用户的应用代码,加密后使源代码.py编译成.mpy二进制代码; + +![image-20230420-backup](media/image-20230421-1682055093154.png) + +​ 注意:工具的加密功能在合并产生固件时生效 + + + +## 单独文件加密 + +使用 mpy-cross-amd64.exe 工具,在工具同目录下编写 user.py 文件,如: + +![2103311410](media/2103311410.png) + +打开 windows 下 cmd 命令行,进入 mpy-cross-amd64.exe 工具所在目录,使用如下命令及参数生成 mpy 文件,如: + +`mpy-cross-amd64.exe -mno-unicode user.py` + +![2103311411](media/2103311411.png) + +user.py加密后,就会变成user.mpy,我们可以直接用user.mpy代替原有的user.py文件,使用起来和原来一样。 + + + +## 文件读保护 + +![image-20210708153532854](media/20210708153532854.png) + + + +## 更多mpy-cross资料 + + mpy-cross官方资料 diff --git a/docs/Getting_started/zh/mass-production/mass-productionproduction-tools.md b/docs/Getting_started/zh/mass-production/mass-productionproduction-tools.md new file mode 100644 index 0000000000000000000000000000000000000000..cfe6be08b574ba04d5a04ac6a4d4691c7240fb87 --- /dev/null +++ b/docs/Getting_started/zh/mass-production/mass-productionproduction-tools.md @@ -0,0 +1,124 @@ +## 代码保护 + +- 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QPYcom 图形化工具】,具体位置如下图: + +![image-20210906170850437](media/image-20230420-download.png) + +- 打开QPYcom工具后,在**“下载”**选项卡中有【加密】【备份】的选项,勾选即可。 +- 加密功能用于保护用户的APP代码,加密后使源代码被掩盖; +- 备份功能用于投入市场后,若usr区备份文件意外丢失、篡改等,自动从bak区恢复。 + +**注意:** + 1. 只有py文件才可加密 + 2. main.py不可加密 + 3. 不符合加密条件的勾选无效, 但不影响正常合并 + +![image-20210906171528571](media/image-20230420-backup.png) + + + +## 使用QPYcom生成量产固件包 + +合并源码后,只需烧录一次固件即可完成生产,在合并时已经将usr区的文件嵌入到固件中,因此烧录合并后的固件已经包含usr区的文件。 + +### 合并条件 + +- 合并的*.py*文件中必须包含*main.py*代码。 + + +**注意:** + +在合并的所有*.py*文件中,*main.py*作为程序入口文件,工具自动不对其加密,故写代码时,从*main.py*调用其他文件的接口更加安全。 + +### 示例工程 + +*main.py*文件: + +```python +from usr import user_file # 用户的.py文件放在usr路径下,要用 from usr 导入APP +import utime + +if __name__ == "__main__": # 标准写法,从main.py开始执行 + while True: + user_file.Qprint() + user_file.Qlistdir() + utime.sleep_ms(300) + +``` + +*user_file.py*文件: + +```python +import uos + +def Qprint(): + print('Hello World !') + +def Qlistdir(): + print(uos.listdir('/usr')) + +``` + +将以上*main.py* 和*user_file.py*两个文件添加到usr区中。固件建议使用官网发布的最新版本:[资源下载专区](https://python.quectel.com/download) 中找到于模组型号对应的固件 。 + +合并后的固件存放在用户指定的路径下,如《QPY_OCPU_V0006_EC600N_CNLC_FW_20230410-1322.zip》固件包,固件包名由 **原固件名** + **时间戳** 组合而成。 + +![image-20210906173316872](media/image-20230421-1682055093154.png) + +![image-20210906173316872](media/image-20230421-1682055557983.png) + +仅需几秒钟,即可完成合并: + +![image-20210906173923292](media/image-20230421-1682055232827.png) + +合并完成后的文件名是由 **原固件名** + **时间戳** 组合而成 + +![image-20210906173416123](media/image-20230421-1682055398521.png) + +烧录合并后的固件,开机自动运行*main.py*: + +![image-20210906174329859](media/image-20210906174329859.png) + +## 量产工具 + +- 登录官方网站“[资源下载](https://python.quectel.com/download)”,在一级分类“资源”,二级分类“工具”栏中找到【QMulti_DL 批量下载工具】,具体位置如下图: + +![image-20210906174758192](media/image-20230421-1682055763975.png) + +- 打开软件后,在**“Load FW Files”**中选择上面合并后的固件,点击**“Auto ALL”**后,即自动检测8个通道直至烧录完毕: + + ​ 首先,夹具通过USB先接入电脑; + + ​ 其次,在电脑打开QMulti_DL批量下载工具,并选择要烧录的固件,随后软件会自动检测烧录。 + +![image-202109061rtyurewry4](media/image-202109061rtyurewry4.png) + + + +**提醒:** + +只要夹具中的任意一个通信有模块接通电源,就会自动烧录。 + +烧录失败,意外终止时,只需要模块重新上电即可继续烧录。 + +## 下载配套代码 + + 下载配套代码模板 + + 下载差分包生成教程和工具 + + + +## 附录A参考文档及术语缩写 + +表1:参考文档 + +| **序号** | **文档名称** | **备注** | 文档位置 | +| -------- | ---------------------------------- | --------------------- | ----------------------- | +| [1] | Quectel_QMulti_DL_用户指导 | QMulti_DL工具使用说明 | QMulti_DL工具压缩包自带 | + +表2:术语缩写 + +| **术语** | **英文全称** | **中文全称** | +| -------- | -------------------- | ------------ | +| USB | Universal Serial Bus | 通用串行总线 | diff --git a/docs/Getting_started/zh/mass-production/media/20210708153532854.png b/docs/Getting_started/zh/mass-production/media/20210708153532854.png new file mode 100644 index 0000000000000000000000000000000000000000..40af642b60bbd3acb8514c91183a10926e7b2be7 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/20210708153532854.png differ diff --git a/docs/Getting_started/zh/mass-production/media/2103311410.png b/docs/Getting_started/zh/mass-production/media/2103311410.png new file mode 100644 index 0000000000000000000000000000000000000000..7a32c28469a540dafb0e2dc1f5b8b6c617b50f0f Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/2103311410.png differ diff --git a/docs/Getting_started/zh/mass-production/media/2103311411.png b/docs/Getting_started/zh/mass-production/media/2103311411.png new file mode 100644 index 0000000000000000000000000000000000000000..65fe61a0eaa846c829f6e9f32a289f98ba0a3dff Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/2103311411.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20210906174329859.png b/docs/Getting_started/zh/mass-production/media/image-20210906174329859.png new file mode 100644 index 0000000000000000000000000000000000000000..44df4e45d94bbc8a518852772cb6e12d6fd67c25 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20210906174329859.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-202109061rtyurewry4.png b/docs/Getting_started/zh/mass-production/media/image-202109061rtyurewry4.png new file mode 100644 index 0000000000000000000000000000000000000000..c72becdc48e948cf5853038555355ec5ee08daec Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-202109061rtyurewry4.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20230420-backup.png b/docs/Getting_started/zh/mass-production/media/image-20230420-backup.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3b897523cb20d6dcae07af324fc3b17db87fd0 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20230420-backup.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20230420-download.png b/docs/Getting_started/zh/mass-production/media/image-20230420-download.png new file mode 100644 index 0000000000000000000000000000000000000000..889c761e03b75748abe18cf0c3673523ad9cfc90 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20230420-download.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20230421-1682055093154.png b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055093154.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8f414757478878c08df43cec055adb95f4a02b Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055093154.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20230421-1682055232827.png b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055232827.png new file mode 100644 index 0000000000000000000000000000000000000000..b368c0f2114df34eb86d52d663b177d6ab74e17c Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055232827.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20230421-1682055398521.png b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055398521.png new file mode 100644 index 0000000000000000000000000000000000000000..af8cb8b5242ee5af4bef95f8e39ce7b8df698ee3 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055398521.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20230421-1682055557983.png b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055557983.png new file mode 100644 index 0000000000000000000000000000000000000000..99b0419573bb37717609080a0ce0cefe2d406947 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055557983.png differ diff --git a/docs/Getting_started/zh/mass-production/media/image-20230421-1682055763975.png b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055763975.png new file mode 100644 index 0000000000000000000000000000000000000000..806837cf39ae52c581ada64f00927a7c8c681774 Binary files /dev/null and b/docs/Getting_started/zh/mass-production/media/image-20230421-1682055763975.png differ