This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 代码不会在重置/关机后再开机时开始。

Guru**** 2582405 points
Other Parts Discussed in Thread: UNIFLASH

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1090701/code-doesn-t-start-on-reset-power-cycle

主题中讨论的其他部分:UNIFLAASH

我遇到了一个问题,在目标电源循环或重置后,我的代码不再启动。

它在调试时工作正常,首次通过JTAG安装时--只是不能在重置/电源循环后继续运行。

直到大约一周前一切都很好,从那时起这个问题就一直存在。

我使用CC1252R1 (Launch-xL)作为编程器/调试器,并将CC1352R2 (LPSTK)作为目标。  我尝试了多个模块(目标和xds110),但这不起作用。

它不运行我的代码,但通过资源管理器运行演示/示例代码选择时会发生相同的情况。

我运行的是10.11 ,但升级到了11.10 ,问题仍然存在。  我使用的是简化版cc135x 26x2 SDK版本5.20 .00.52。

11.10 安装中存在问题,即,我只尝试了演示/示例代码(项目0,传感器/收集器等),没有更改任何设置。

无论config设置为debug还是release (我没有更改其参数,也没有添加任何其他生成配置),都会发生同样的情况。

我正在使用Ubuntu 20.04LTS。

CCS已将XDS110上的固件(即Launch-XL中的固件)更新为其所说的最新固件。

是否存在可能导致此影响的简单配置开关?   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    此外,编译的代码将在通过uniflash安装时正确安装和运行。  我加载时,它是否写入RAM?  配置中是否有一个开关可使其返回写入闪存?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不确定我是否了解最新评论:

    -您的意思是,如果您使用CCS和CCS闪存目标,当您重置时,它不起作用,但如果您使用.out文件CCS生成并闪存目标,则目标在重置后运行?  

    ---

    如果您使用rfCarrierWave或空示例,您是否看到任何差异? 后者使用32 kHz振荡器。 与您所遇到的症状相似的典型问题是32 kHz不工作/未选择。 前一个示例不会进入待机状态,因此32 kHz不是问题。  因此,此测试将判断这是否是与此相关的问题。  

    CCS和Uniflah执行相同的操作,它将生成的文件存储在闪存中。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    第一位是对的-- CCS似乎不是在闪存目标,但.out文件在uniflash中工作。

    我将尝试一下rfcarrierwave和空示例(我尚未对这些示例进行测试)。  谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    当您使用CCS闪存设备时,您是否尝试使用Uniflash读回闪存内容,并将其与使用Uniflash读回闪存后的内容进行比较? 生成的十六进制文件应该相等,但出于某种原因,它似乎不是这样?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我会先尝试一下。  我有一些愚蠢的会议要先离开。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对。  我在周末曾考虑过这方面的几个方面,并刚刚试用过。  这似乎是一件BIM的事情--我显然是在使用工厂BIM,用NVS写入将其擦除,并通过重写BIM来恢复功能。  这就引出了一些新的问题,我找不到答案--有人知道关于BIM实际做什么的技术说明吗?启动顺序和CCS?

    启动的顺序(CCS开关)是什么--据我所能判断,有:

    • syscfg中的'enable bootloader'--这似乎指示bootstrap (而不是BIM)在片外闪存中查找代码,因此是一个红色错误。
    • oad_IMG_x=y (链接程序 预处理程序)似乎指示构建/闪烁程序将代码放入片上或片下闪存中。 x可以是A,B或E,表示片上插槽1,片下插槽2或外部闪存。  但'y'的含义是什么?
    • 更多关于OAD_IMG的信息--我想如果我没有这些,我就不使用BIM --这是吗?  
    • flash_rom_build (编译器预定义符号)是指在可能的情况下使用ROM BLE,还是在编译的代码中创建所有BLE函数,因此这是一个红色错误。  但是,链接程序预处理程序中还有一个flash_rom_build_x--'x'有什么作用?
    • Flash (链接程序预处理程序)似乎未被记录。
    • 不清楚什么秘密(链接程序预处理程序)是怎么做的--它是否以某种方式操纵了代码?  是BIM,引导还是闪存保护(读取拒绝)?
    • 是否有其他重要的开关可用于BIM?

    主要的问题是--我不需要BIM,因为我不需要OAS --在使用TIRTOS时,我可以让ROM bootrap点简单地在片上闪存中编码吗?  这些文档暗示(但不说明)我不能这样做,但我不明白为什么。  我不能坚持BIM和片上,因为我的代码超过了片上的60K限制。

    还有,一件奇怪的事。  我在使用由OAS编译的代码进行测试时意外地使用了BIM (片外),但它仍然有效。  我是否误解了OAS_IMG_A?或者,如果BIM (离芯片)在离芯片闪存中找不到任何内容,它是否也显示在芯片上?

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在详细了解您的问题之前:

    从您所写的内容中,我了解到您出于某种原因使用BIM,但不打算使用OAD。

    -如果不需要,您能否介绍一下您使用BIM的原因?

    您能否涵盖您正在尝试实施的项目类型?  

    我想从较高的层面了解您的需求,并在深入细节之前尝试做些什么  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它是一个简单的蓝牙数据传输器。  它使用常用的RTOS功能(基于时钟的间歇BLE数据发送(如果已连接))。

    我们没有故意使用bim --我的印象(错误的)是bim在引导中,这是不可避免的。

    我们还以prjzero为基础进行了测试,结果很好,除了所有编译器开关都使用bim之外,我真的只是想知道要从bim切换到从bootstrap运行的代码的开关。

    我们不想使用bim,因为它不会添加任何内容。

    感谢您抽出时间参加本次活动。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    如果我理解正确,您希望将应用程序建立在项目零基础上,但希望删除空中固件升级(OAD)兼容性(包括BIM)。  

    1)首先,将项目建立在简单的外设基础上可能会更容易。 如果您喜欢零项目的某些服务(例如 LED服务)您可以将该服务添加到简单外围设备。

    https://dev.ti.com/tirex/explore/node?node=AHupI5sIgV0YGLPXw6gtdg__BSEc4rl__LATEST 

    2)其次,如果使用与OAD不兼容的映像对CC1352R1 LPSTK进行编程,则需要调试器和JTAG线对其进行编程。  

    3)您询问我们是否有关于BIM工作原理的技术说明。 我们的BLE堆栈用户指南中有一节专门介绍BIM:(您的LPSTK预编程了用于片外OAD的BIM)

    https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_5_40_00_40/docs/ble5stack/ble_user_guide/html/oad-secure/bim.html 

    谢谢,

    Marie H

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的。  全部解决。  使Prjzero不是OAD/BIM并不困难。

    代码很简单--只需删除对OAD函数的引用。  请注意,main.c中有一个开关,它会将事情粘结在'USEOAD'上--我发现解决这一问题的唯一方法是对#ifdef USEOAD (和endif)进行注释。

    除了代码之外,主要问题是使内存映射正常工作--.cfg中的简单外设内存映射工作正常。  我注意到一个问题(这让我困扰了几个小时),CCS实际上不会查找一个命名的.cfg,而只是选择它找到的第一个.cfg,并在必要时遍历目录。  唯一的解决方案是只有一个.cfg,而不像我那样执行此操作,并认为重命名.cfg将会起作用。

    TI制作一份文档,说明将projzero迁移到非OAD所需的步骤非常容易-您会使它听起来比它听起来更困难。

    谢谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    感谢您发布解决方案!

    谢谢,

    Marie H