Build OS.bat命令解析

本文介绍了一个用于Touch3G设备的固件构建脚本BuildOS.bat的内容及操作步骤,包括OEM包和SYS的重新打包、模块地址排序、nb文件的处理以及最终nbh文件的生成。

以Touch 3G的英文模板中的Build OS.bat为例

 

@echo off         下面信息不再cmd窗口中显示
TOOLS/BuildOS.exe -auto     OEM包和SYS重新打包成dump目录
TOOLS/greloc.exe -doit -dump      对dump目录的所有模块地址重新排序
copy ROM/OS.nb.payload temp/OS.nb.payload        将ROM/OS.nb.payload拷贝到temp目录
cd temp         进入BuildOS.exe生成的temp目录
../TOOLS/ImgfsFromNb OS.nb.payload imgfs.bin     从nb中提取imgfs.bin
../TOOLS/ImgfsFromDump imgfs.bin imgfs-new.bin       把dump目录打包进imgfs.bin
../TOOLS/ImgfsToNb imgfs-new.bin os.nb.payload os-new.nb.payload      把新的imgfs.bin重新插入到nb中
../TOOLS/NBMerge -kaiser os-new.nb       重新插入extra部分,nbsplit的反过程
../TOOLS/htcrt.exe /buildrom "C:/Jade_Kitchen/TOOLS/Jade.htcrtproj" "C:/Jade_Kitchen/FLASH/RUU_signed.nbh"       把nb文件打包成nbh,其中Jade.htcrtproj这个文件包含了nbh的一些参数,可以用记事本打开看
del boot.hv         删除文件
del boot.rgu         删除文件
del imgfs-new.bin         删除文件
del imgfs.bin         删除文件
del os-new.nb.payload         删除文件
del OS.nb.payload         删除文件
del log.txt         删除文件
pause         暂停

def startRun(self): """启动测试的线程安全方法""" # global name, title, desc, reporter, config proDir = os.path.normpath(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)) scriptsPath = os.path.join(proDir, 'Scripts\StressTest') reporter = "huang990" test_config = {} if self.get_powerConfig()["runState"]: test_config = { "config" : {"test_Can上下电耐久判断首帧时间.py": int(times)}, "name": "上下电扫点耐久判断首帧时间", "title": "上下电扫点耐久判断首帧时间", "desc": "1. Bat off\n2. 等待间隔时间\n3. Bat on\n4. 检查Can首帧报文时间" } elif self.get_sleepConfig()["runState"]: test_config = { "config" : {"test_Can睡眠唤醒耐久判断首帧时间.py": int(sleep_times)}, "name": "睡眠唤醒耐久判断首帧时间", "title": "睡眠唤醒耐久判断首帧时间", "desc": "1. Sleep\n2. 等待间隔时间\n3. Wake up\n4. 检查Can首帧报文时间" } test_params = ( scriptsPath, test_config["config"], reportPath, test_config["name"], test_config["title"], test_config["desc"], reporter ) self.test_thread = TestRunnerThread(test_params) self.test_thread.finished.connect(self.handle_test_result) self.startTestBtn.setEnabled(False) self.test_thread.start() def run(self): try: self.status_updated.emit("自动执行已启动...") # 解析目标时间 target_time = datetime.datetime.combine( datetime.datetime.now().date(), datetime.datetime.strptime(self.time_str, "%H:%M:%S").time() ) # 如果时间已过,设置为明天 if target_time < datetime.datetime.now(): target_time += datetime.timedelta(days=1) # 计算等待时间(秒) wait_seconds = (target_time - datetime.datetime.now()).total_seconds() self.status_updated.emit(f"等待 {wait_seconds:.1f} 秒直到 {target_time.strftime('%H:%M:%S')}") # 分段等待(避免长时阻塞) while wait_seconds > 0: # 每0.5秒检查一次等待状态(保持响应) sleep_time = min(0.5, wait_seconds) time.sleep(sleep_time) wait_seconds -= sleep_time if self.isInterruptionRequested(): self.status_updated.emit("自动执行已取消") return # 执行目标操作 self.status_updated.emit("指定时间已到, 工具开始启动...") self.execution_started.emit() if self.build: print("Jenkins 开始编译代码") if self.download: print("开始下载固件") if self.stress: print("开始执行耐久测试") api.StressTool().startRun() if self.auto: print("开始执行BSW IT测试") self.finished.emit(True, "测试执行完成") except Exception as e: self.error_occurred.emit(f"自动执行错误: {str(e)}") self.finished.emit(False, str(e)) self.autoBtn.triggered.connect(lambda : self.autoRun()) 这串代码执行为什么会报 测试失败: 'config' 这个问题,如何解决
最新发布
10-21
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值