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.

[参考译文] RTOS/TMS320F28335:C28xx:闪存编程器:写入闪存时遇到错误错误

Guru**** 2303350 points
Other Parts Discussed in Thread: TMS320F28335, TMDSDOCK28335, UNIFLASH
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/747344/rtos-tms320f28335-c28xx-flash-programmer-error-encountered-when-writing-to-flash-memory-error

器件型号:TMS320F28335
主题中讨论的其他器件: TMDSDOCK28335UNIFLASH

工具/软件:TI-RTOS

大家好,我是 TMS320F28335的新用户。

我尝试在 F28335中对 MicroC/OS II 进行实验。

我从同事那里下载了 MicroC/OS、 并使用 CCS 将其应用于 F28335。

当时一切都还可以。  

但是、在我在  MicroC/OS 中修改了 app.c 文件(我只向其中添加了一个任务)后 、机器 不再工作(甚至是 hello.c)

我以同样的方式杀死了三个 F28335。

请帮帮我。 我希望恢复这一状态。

---添加的任务---

OSTaskCreateExt(App_Task5,
(空*) 0、
(CPU_STK *)&App_TaskAttestStk[0]、
(INT8U) APP_CFG_TASK_BIST_PRIO、
(INT16U) APP_CFG_TASK_BIST_PRIO、
(CPU_STK *)&App_TaskAttestStk[APP_CFG_TASK_STK_SIZE - 1U]、
(INT32U) APP_CFG_TASK_STK_SIZE、
(空*) 0、
(INT16U)(OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

静态空 App_Task5 (空*p_arg)

(空)&p_arg;
MD5_CTX 上下文;
MD5_CTX 环境1;
INT32U I = 0;
INT16U j = 0;
INT16U *基地址= 0x00300000;
unsigned int rand_num;
无符号长整型;
unsigned char out[16];
INT16U 密钥= 0x1234;
INT32U 时间;
//INT16U 密钥;
while (DEF_true){
printf ("App_Task5 Start\n");
//scanf ("%x"、&key);
时间= OSTimeGet ();
字符检查[128]={0、};
MD5Init (上下文);
I = 0;
J = 0;
PRNG_SEED_BYTES (&KEY、1);
while (i < 128){
PRNG_GET_bytes (&rand_num、1);
//rand_num = PRNG_GET_octet ();
Order = rand_num % 256;
//printf ("%x、%u、%x、%d\n"、rand_num、 rand_num、顺序、顺序);
if (check[ording]=0)

//printf ("%d\n"、顺序);
CHECK [ORDER = 1;
i++;
MD5Update (&context、base + orde*0x800、0x800);

J++;

MD5Final (输出、上下文);
time = OSTimeGet ()- time;
对于(I = 0;I < 16;I++)
printf ("%02x"、out[i]);
printf ("\n");
printf("execution time(ms):%lu\n", time);
printf("j:%d\n",j);
printf ("App_Task5完成\n");
OSTimeDlyHMSM (0、0、10、0);

--错误信息--

C28xx:闪存编程器:写入闪存存储器时遇到错误
C28xx:文件加载程序:内存写入失败:未知错误
C28xx:GEL:文件:C:\Users\OH\Desktop\Micrium (2)\Micrium \Examples\TI\TMDSDOCK28335\OS2\ccs\Debug\OS2.out:加载失败。

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

    您可能需要更好地描述您的问题。 错误消息使我相信您无法对闪存进行编程。 我是对的吗?

    在将带有新任务的操作系统编程到闪存(或)中之后、您是否遇到了此问题?您从未需要对闪存进行编程才能从闪存开始?

    您的器件密码是否受保护?

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

    大家好、Manoj Santha Mohan

    很抱歉迟到了

    1)是的。

    2)是的。  我可以告诉您我所做的步骤

    1]刚刚下载了用于 F28335的 Micro/OS 程序

    2]点击"Import CCS Projects"

    3]加载了操作系统

    4]编辑了 Micro/OS 代码添加了1个任务。 我没有提到我也编辑了 F28335_Link.cmd。 我将 F28335_Link.cmd 更改为 F28335_Flash_Link.cmd

    5]单击"Debug"

    6]所有程序都不起作用。

    有两种类型的误差。

    第一个错误]时、我将会在该示例中使用闪存。 (看起来工作正常、但工作正常。 控制台必须说"Hello World!")

    第二个错误]当我使用闪存存储器时(加载程序错误)

    编辑了 F28335_Link.cmd  

    /*
    (三
    *
    * F28335链接器脚本
    *
    * TI C28x
    * TI C28x 链接器
    *
    *
    *文件名:F28335_Link.cmd
    *版本:V1.00
    *编程器:JFT
    *
    *注:(1)基于德州仪器(TI)的'28335_RAM_LINK_CMD"的声明。
    (三
    *

    /*
    (三
    *内存区域
    *
    *注:(1) PAGE 0将用于程序段。
    *
    *(2)第1页将用于数据段。
    *
    *(3) PAGE 0中的块在 PAGE 1中镜像、无需两次定义它们。
    *
    *(4)此链接器脚本不会为 IQMath 库定义存储器区域。
    (三
    *

    存储器

    /*程序内存。 *
    第0页:
    开始:origin = 0x33FFF6,length = 0x000002
    RAMM0:origin = 0x000050、length = 0x0003B0

    RAMLP:origin = 0x008000、length = 0x005000
    闪存:origin = 0x300000,length = 0x03FF80
    csm_RSVD:origin = 0x33FF80,length = 0x000076 // FLASHA 的一部分。 在...时使用所有0x0000进行编程 *
    /*... CSM 正在使用中。 *
    CSM_PWL:origin = 0x33FFF8,length = 0x000008 // FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/
    ADC_CAL:origin = 0x380080、length = 0x000009

    BootROM:origin = 0x3FF27C,length = 0x000D44
    向量:origin = 0x3FFFC0,length = 0x000040
    /*数据存储器。 *
    第1页:
    BOOT_RSVD:origin = 0x000002,length = 0x00004E // M0的一部分,引导 ROM 将此用于堆栈。 *
    RAMM1:origin = 0x000400,length = 0x000400
    RAML4:origin = 0x00C000、length = 0x001000 //片上 RAM 块 L1 */
    RAML5:origin = 0x00D000、length = 0x003000 //片上 RAM 块 L1 */
    PIE_VRAM:origin = 0x000D00,length = 0x000100


    /*
    (三
    *链接器段
    *
    *注:(1)此块将链接器定义的段映射到先前定义的存储器区域。
    (三
    *

    部分

    /*程序部分。 *
    RAM_START:> Begin,page = 0 /* codestart 到 c_int00()的分支。 *
    ramfuncs:>RAMLP,page = 0
    .cio:>RAMLP,page = 0
    .text:> FLASH、page = 0
    .cinit:> FLASH,page = 0
    .pinit:> FLASH,PAGE = 0
    .switch:> FLASH、PAGE = 0
    /*默认复位处理程序。 未使用。 *
    .reset:> vectors,page = 0,type = DSECT
    /*数据段。 *
    .stack:>RAMM1,PAGE = 1.
    PIE_vram:> PIE_VRAM,page = 1.
    .ebss:> RAML5,PAGE = 1
    econst:> FLASH、PAGE = 0
    .esysmem:>RAML4,page = 1.
    /* 128位 CSM 密码。 未使用。 *
    csm_rsvd:>csm_RSVD,page = 0,type = DSECT
    csmpasswds:>csm_PWL,page = 0,type = DSECT
    /* ADC 校准。 *
    ADC_cal:load = ADC_CAL、page = 0、type = NoLoad

    3) 3)否、它不受保护。

    我已经尝试使用 UniFlash 进行删除恢复、但控制台对我说"执行删除恢复时出错"。 并且"擦除闪存"也不起作用。

    我不知道哪个程序导致了芯片的损坏。 (编辑了 Micro/Cos 或编辑  了 F28335_Link.cmd)

    感谢您的评论。 这对我来说将是一个巨大的希望。

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

    您能否发送运行删除恢复和擦除闪存时收到的错误消息的快照?

    我想知道闪存是否处于耗尽状态。 processors.wiki.ti.com/.../FAQs

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

    Manoj、

    下面是两条错误消息。 第一个是当我单击耗尽按钮时。   另一个是单击"ERASE"按钮时。

    感谢你的帮助

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

    几个问题:

    您发布的屏幕截图之一显示您使用的是"TI XDS100v1 USB 调试探针"、您在 F28335电路板上实际使用的是什么? 由于我们不支持 UniFlash 中的 v1版本、因此您在使用 UniFlash 时是否选择 v2?

    2.能否检查是否可以读取闪存地址(0x300000 - 0x33FFFF)? 具体而言、请确保密码位置(0x33FFF8 - 0x33FFFF)可读。 您可以使用 CCS 或 UniFlash 执行此操作。

    3.在 UniFlash 中,您是否可以尝试为单击擦除按钮的情况生成“调试服务器日志”?

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

    1.是的,我在使用 UniFlash 时选择了 V2。 实际上、当我使用 CCS 编辑代码时、我也会使用 v2。 屏幕截图错误、因为当时我在另一台使用 v1配置的计算机中调试代码。 (v2配置也出错)

    2.我想我可以阅读这个领域。

    0x300000

    0x310000

    0x320000

    0x33FFF8 - 0x33FFFF  

    3. 是的,我附加它们(删除错误和 ERASE_ERROR)。 提前感谢  

    e2e.ti.com/.../depletion_5F00_error.txt

    e2e.ti.com/.../erase_5F00_error.txt

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

    您好!

    我认为您可能提供了 GUI 日志、而不是'Debug Server'日志。 我忘记在我之前的帖子中提供链接、但请在此处查看更多信息:

    您需要在执行操作之前启用日志记录、在之后禁用;然后在用户文件夹中检索日志。

    谢谢、

    Ricky

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

    您好!

    很抱歉迟到了。 现在、我附加 Debug 服务器日志

    我希望这有助于修复我的电路板。

    提前感谢。  

    e2e.ti.com/.../depletion_5F00_error_5F00_debug_5F00_server.log

    e2e.ti.com/.../erase_5F00_error_5F00_debug_5F00_server.log

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

    感谢您提供日志。

    根据这些日志、在耗尽和擦除情况下从运行闪存 API 中获得的错误代码为0xFFFF、这是奇怪的、因为这不是预期的返回代码之一。

    您能为我多尝试几次测试吗?

    1.尝试使用 UniFlash 将 F28335的闪存算法文件加载到您的电路板上,然后单击 verify (验证)以确保正确加载。 位于 UniFlash 安装中的文件位于此处:

    桌面 db\content\TIC扩音器\win\ccs_base\c2000\flashAlgorithms\FlashAPI 接口28335V2_10.out

    2.错误代码符号位于算法中的地址0x900E。 在使用"Memory"视图执行擦除之前和之后、您能否检查该位置的值? 如果您打开"保持连接"选项、则可能会有所帮助、您可以在单击右上角的内核名称时找到该选项。

    顺便说一下、我在办公室找到了 F27335控制卡、并且能够使用 UniFlash 加载程序。 因此、问题似乎出在您的端部特定于器件

    ,请告诉我,您是否有任何其他建议可以看什么。

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

    如果闪存处于耗尽状态并且耗尽恢复失败、则唯一的选择是更换部件。

    processors.wiki.ti.com/.../FAQs

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

    感谢您的评论 Manoj

    但我感到失望的是,唯一的选择是更换部件。

     我们又订购了4款 F28335产品、这些产品昨天已交付。

    其中一个中断导致相同的软件问题。

    如果没有替代的选项、我需要知道它们为什么会被损坏、至少因为我们不能购买更多的产品。

    我们的实验室必须尽快使用 F28335来完成项目。   

    请帮我解决这个问题。 我只能请求支持。   

    谢谢

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

    Ricky、

    感谢您的关注。

    1.是的,它可以正常工作

    2.

    值为 F9F9。 并且在使用"Memory"视图执行擦除后未更改

    我打开它时发现了一个奇怪的情况。

     当我打开损坏的器件时、它会以红色闪烁而不闪烁黄色。  (您可以看到00:13~00:14)

    始终感谢您的帮助

    e2e.ti.com/.../KakaoTalk_5F00_Video_5F00_20181127_5F00_1611_5F00_29_5F00_534.mp4

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

    Junsu、

    是否可以尝试将引导模式设置为检查引导模式:

    使用 controlCARD 上的 SW2 DIP 开关来配置 GPIO84 - GPIO87:

    您可以通过测量 集线站上的 F2833x 引导接头电压来验证引导模式设置:

    Tommy

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

    自上次更新以来已经有一段时间了。 我假设您能够解决您的问题。 如果情况并非如此,请拒绝此解决方案并回复此主题。 如果此主题已锁定、请制作一个描述问题当前状态的新主题。

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