独自快乐|嵌入式软件开发助手(1),Python实用案例编程入门:第二十章

本章的主题为一个嵌入式软件开发的助手 , 由于嵌入式软件开发的特殊性 , 这里的嵌入式软件开发助手能够提高嵌入式软件开发者的效率 。
20.1要解决什么问题嵌入式软件开发跟传统软件开发不一样 , 嵌入式软件开发是跨平台的 。 传统的软件开发就像我们的Python编程一样 , 在电脑上进行开发 , 在电脑上运行 。 而嵌入式软件开发不一样 , 在电脑上开发 , 但不在电脑上运行 , 而是运行在目标机(嵌入式设备) 。 凡是此类开发和运行不在同一个环境中的软件开发 , 我们基本都可以称为嵌入式软件开发 。
而正如上面的描述的 , 嵌入式软件开发比较特殊 , 因此我们在嵌入式软件开发中会遇到下面的一些问题 。 下面将以作者本人的嵌入式开发过程为例 , 来实现这样的一个工具帮助自己提高效率 , 仅作参考 。 因为每个公司或者项目的实际情况都会有不同差异 , 我们这里的开发过程大致如下:
·在本地电脑上修改代码 , 然后将被修改的代码上传到远端编译服务器上;·登陆到编译服务器进行编译;·将编译后得到的bin或img文件下载到本地电脑上;·将下载到本地电脑的bin或img文件上传到测试环境电脑上;大致流程如上所示 , 我们每次修改代码后都需要重复上面的过程 。 尤其是将本地修改的代码同步到编译服务器上是一件比较麻烦的工作 , 如果修改的文件比较多那就更耗时间 。 所以如果我们能够将这些重复的操作用程序来完成 , 是不是能大大提高我们的工作效率 , 那么接下来我们就用Python来实现这样一个程序 , 来帮助我们完成这些重复性的工作 。
20.2实现思路接下来我们看看如何实现该程序 。
首先 , 我们在本地电脑上安装gitbash , 将代码同步到本地 。 这样我们就可以在本地电脑上阅读和修改源码 , 其次将编译服务器上的代码checkout到同一个节点 , 也就是保证编译服务器上的代码跟本地代码完全一样 。 接下来 , 我们就可以用sourceinsight来阅读和修改源码 。 通过gitstatus命令 , 我们可以找出所有被修改了的源码文件 , 这样就可以利用该结果去同步被修改的了文件 。 下面给出大致的实现思路:
·利用gitstatus命令找出本地被修改了的源码文件;·通过scp命令或Python模块将上面找出的源码文件上传到远端编译服务器;·上传到编译服务器后 , 我们可能需要进行必要的格式转换 , 因为windows和linux的换行符有区别 , 此外可能也需要执行一些代码格式转换或检查的工作;·通过ssh登陆到远端编译服务器进行代码编译 , 同时将编译结果回显到我们的工具界面上 , 便于解决编译错误;·编译成功后 , 将相关的bin文件或img文件下载到本地电脑;·在访问实验室测试电脑之前 , 需要做特定的登陆鉴权 , 然后才能访问实验室电脑;·将下载到本地电脑的bin文件上传到实验室测试电脑;这里的实现只是针对作者个人的使用场景和习惯 , 读者如果从事嵌入式开发 , 可能相应的使用场景比这里简单 。 但没关系 , 代码都是可裁剪的 , 可以很方便删除或注释不需要的步骤 。
20.3相关模块的安装及介绍本节将会涉及很多模块 , 这里只做简单的介绍 。
20.3.1configparser模块configparser模块可以用于解析ini格式的文件 , 利用该模块可以很方便的读写配置文件 。 我们将使用模块进行解析配置文件ini , 程序的配置参数都存储在ini配置文件中 , 通过下面的例子可以进行了解基本的操作接口 。
cf=configparser.ConfigParser()cf.read(file)#Parserconfigfileparser_arg[LOCAL_CODE_DIR]=cf.get('LOCAL','local_code_directory')parser_arg[SSH_IP]=cf.get('COMPILE_SERVER','ip')parser_arg[SSH_PORT]=cf.get('COMPILE_SERVER','port')我们这里不需要修改 , 只需要读取其中的对应的ip地址和port号即可 , 配置文件booking-testline.ini如下面的内容 。


推荐阅读