Flash as脚本执行出现15秒超时错误---记录

在执行flash的as脚本时,出现了15秒超时错误。查看adobe官网文档有相关描述

http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/runtimeErrors.html

出现15秒超时错误后,脚本可以继续执行 15 秒,然后将终止脚本并引发编号为 1503 的运行时错误(脚本在 30 秒内未能退出,终止其执行)。

 

 

应用背景: 在flash中有一按钮,增加了点击事件处理函数:flaClickHandle,再处理函数中通过ExternalInterface.call,调用jsp页面中的一js函数:callbackForFla,在该函数中,执行window.showModalDialog。

 

在测试中,前面执行正常,当将window.showModalDialog打开的模态窗口关闭时,原页面中的flash报15秒超时错误。

 

初步分析,在callbackForFla,中的window.showModalDialog函数,是在模态窗口关闭时才返回。flash将它调用的外部函数callbackForFla的执行时间,计作as脚本的执行时间,及flaClickHandle函数的执行时间。这种情况下很容易,出现15秒超时错误。因为一个模态窗口只开15秒,就关闭。

 

针对这种情况的一种解决方法,就是把window.showModalDialog换为window.open

 

更一般的解决方法时,更改flash发布设置中的超时时间(不推荐,治标不治本)

 

还有一中方法是(推荐):在flash要掉用的js函数中使用js中的定时器(setTimeout,setInterval)去执行真正的目标的函数,而本函数会很快返回。以上为例就是:

 

flaClickHandle-》ExternalInterface.call-》callbackForFla-》timerRun-》targetFun

 

 

function callbackForFla(){

    window.setTimeout("timerRun",100); //该语句的执行时间不会超过15秒

}

 

function timerRun(){

    window.showModalDialog...//或者其他targetFun函数

}

 

 

<think>好的,用户之前遇到了Flash下载超时的问题,特别是在Cortex-M3芯片上。现在他们再次提问,希望得到更具体的解决方案。我需要参考之前的回答,但这次要更聚焦于Cortex-M3的特性。首先,用户提到Cortex-M3,这可能涉及到特定的调试接口或时钟设置。Cortex-M3通常使用SWD或JTAG,可能需要检查接线和速率。之前的回答里提到了物理连接、复位设备、调整速率等,这些仍然适用,但需要更详细地结合M3的情况。 然后,用户之前的引用[1]提到复位和日志分析,这可能相关。需要强调硬件复位和软件复位的具体步骤,比如使用OpenOCD命令,或者J-Link的复位指令。同时,Cortex-M3的Flash编程可能需要特定的算法,比如ST的STM32系列可能需要正确的Flash loader,这部分需要补充。 另外,时钟配置可能影响SWD的通信。Cortex-M3的HCLK是否在允许范围内?如果目标板的外部时钟未启动,使用内部时钟可能导致通信不稳定,需要检查时钟源设置,比如HSI还是HSE,是否配置正确。还有,Flash保护机制,比如写保护或读保护,可能导致下载失败。用户可能需要解除保护,通过编程工具发送解锁命令,或者在复位时按住某个按键。另外,电源稳定性对Cortex-M3尤其重要,特别是如果板子有外围设备,可能在下载时电流不足,导致电压跌落。建议用户断开不必要的负载,使用外部电源供电。 在软件配置方面,比如Keil或IAR中的设置,是否正确选择了目标设备型号?Flash下载算法是否正确?比如STM32F1系列的算法可能不适用于F4,但用户的问题是针对M3,可能需要确认是否选对了对应的算法。 还有,是否启用了某些低功耗模式,导致调试接口无法访问?比如在初始化代码中过早进入睡眠模式,需要检查启动代码或初始化配置,确保在下载时内核处于活动状态。 最后,可能需要建议用户使用不同的工具链或调试器,比如换用J-Link代替ST-Link,或者尝试不同的IDE,以排除工具本身的问题。需要组织这些点,按照结构化的步骤,从基础到深入,逐步排查。同时,生成的相关问题要围绕Cortex-M3的Flash下载问题,比如SWD速率调整、解除保护、时钟配置等。</think>### Cortex-M3 Flash下载超时解决方案 针对Cortex-M3芯片的**Flash下载失败**(含`timeout`错误),需结合芯片架构特性进行深度排查。以下是优化后的解决方案: --- #### **1. 验证调试接口配置** Cortex-M3的SWD/JTAG接口对时序敏感,需确保: - **引脚复用**:确认`SWDIO`/`SWCLK`引脚未复用为GPIO或其他功能[^1] - **上拉电阻**:接口线需配置$4.7\ \text{k}\Omega$上拉电阻(参考芯片手册) - **速率匹配**:在调试工具中降低SWD时钟至$1\ \text{MHz}$以下,例如: ```bash # OpenOCD配置示例 adapter speed 1000 ``` --- #### **2. 检查Flash编程算法** Cortex-M3的Flash控制器需匹配编程算法: ```c // 典型Flash操作时序参数 FLASH->ACR |= FLASH_ACR_LATENCY_2; // 2等待周期(当HCLK=72MHz时) ``` - **算法文件验证**:在IDE(如Keil)中重新安装对应芯片的**Flash Programming Algorithm** - **擦除模式**:尝试全片擦除而非扇区擦除,排除坏块影响 --- #### **3. 时钟与复位状态验证** - **时钟树一致性**:确保调试器与目标板的HCLK误差小于$2\%$,可通过示波器测量`SWCLK`波形 - **复位电路**:在`NRST`引脚添加$100\ \text{nF}$电容滤波,消除毛刺干扰 - **复位后延时**:在下载脚本中添加$$t_{\text{delay}} > 50\ \text{ms}$$的稳定时间 --- #### **4. 电源与噪声抑制** - **多电源域检测**:若芯片含独立VBAT电源,需维持$1.65\ \text{V} < V_{\text{BAT}} < 3.6\ \text{V}$ - **纹波控制**:核心电压VDD纹波峰峰值需满足$$\Delta V < 50\ \text{mV}$$ - **去耦电容**:在芯片电源引脚就近布置$100\ \text{nF}$+$10\ \mu\text{F}$电容组合 --- #### **5. 固件层面排查** - **中断冲突**:禁用所有中断(`__disable_irq()`)后尝试下载 - **选项字节**:通过STM32CubeProgrammer检查`RDP`/`WRP`保护状态并解除 - **Boot模式**:确认BOOT0/BOOT1引脚电平符合系统存储器启动要求 --- ```python # PyOCD脚本验证连接状态 import pyocd with pyocd.session.Session() as session: board = session.board print(f"Target ID: {hex(board.target.get_target_id())}") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值