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.

[参考译文] 用于ARM Linux上MSP430的BSL

Guru**** 2539500 points
Other Parts Discussed in Thread: MSP430G2553, MSP430F5438A

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/582487/bsl-for-msp430-on-arm-linux

主题中讨论的其他部件:MSP430G2553MSP430F5438AMSP-EXP430G2

您好,

上周,我访问了TI的嵌入式世界,并与MSP MCU的引导加载器专家进行了交谈。  

他告诉我有一个应用说明,描述了MSP430已通过UART在Linux ARM CPU上闪存。

他说,BSL也有一个ARM Linux源代码。  

是否有人知道在哪里可以找到此应用说明?

 

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

    http://www.ti.com/tool/mspbsl

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢,是的,我已经知道此页面,但是BSL脚本程序不适用于基于Linux ARM的操作系统。
    因此,即使BSL脚本程序提供的源代码也能帮助我,因为它适用于x86或64位CPU。
    我正在寻找一个已经开发出的用于闪存MSP430 under ARM Linux系统的解决方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Michael:

    我与您交谈过的工程师交谈过,他指的是MSPBoot (SLAA600)主机项目。 这些设计用于在MSP430F5438A或MSP430G2553器件上运行,但在必要时可以移植到ARM上。

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

    您好,Ryan:

    谢谢! 我将尝试通过ARM Linux CPU在MSP432上运行此项目

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

    您好,Ryan:

    我看到了MSP-EXP430G2_I2CMSPBootHost项目中的代码,并且对目标应用程序.txt数据有疑问。

    Demo Host项目使用应用程序(如"App1_G2553_I2C_BSLBased _G2Host.txt")通过I2C/UART/SPI闪存至目标。

    在此文本文件中,代码在地址段0和1中分隔,如以下所示:

    const uint16_t App1_Addr[2]={

      0xc004,//地址段0

      0xfbce,//地址段1

    };

    const uint16_t App1_size[2]={

    360, // Size segment0

    50, //大小段1

    };

    const uint8_t App1_0[]={

    0xb2,0x40,0x80,0x5a,0x20,0x01,0xd2,0xd3,0x22,0x00,0xd2,0xd3,0x21,0x00,0x0d,0x12,

    0x0E,0x12,0x3d,0x40,0x44,0x28,0x1e,0x43,0x1d,0x83,0x0e,0x73,0xfd,0x23,0x0d,0x93,

    0xfb,0x23,0x3e,0x41,0x3d,0x41,0x00,0x3c,0x03,0x43,0xd2,0xc3,0x21,0x00,0x0d,0x12,

    0x0E,0x12,0x3d,0x40,0x44,0x28,0x1e,0x43,0x1d,0x83,0x0e,0x73,0xfd,0x23,0x0d,0x93,

    0xfb,0x23,0x3e,0x41,0x3d,0x41,0x00,0x3c,0x03,0x43,0xd2,0xd3,0x21,0x00,0x0d,0x12,

    0x0E,0x12,0x3d,0x40,0x44,0x28,0x1e,0x43,0x1d,0x83,0x0e,0x73,0xfd,0x23,0x0d,0x93,

    0xfb,0x23,0x3e,0x41,0x3d,0x41,0x00,0x3c,0x03,0x43,0xd2,0xc3,0x21,0x00,0xf2,0xd2,

    0x21,0x00,0xf2,0xd2,0x27,0x00,0xf2,0xd2,0x24,0x00,0xf2,0xd2,0x25,0x00,0xb2,0x40,

    0x10,0x00,0x62,0x01,0xb2,0x40,0xe7,0x03,0x72,0x01,0xb2,0x40,0x10,0x01,

    0x32,0xd0,0xd8,0x00,0x0c,0x43,0x30,0x41,0x0a,0x12,0x09,0x12,0x3f,0x40,0x00,0x00,

    0x3F,0x90,0x01,0x00,0x19,0x28,0x3f,0x40,0x00,0x00,0x3f,0x90,0x01,0x00,0x14,0x28,

    0x3a,0x40,0x00,0x00,0x3a,0x80,0x00,0x3a,0x50,0x03,0x00,0x0a,0x11,0x0a,0x11,0x11,

    0x39,0x40,0x00,0x00,0x3c,0x49,0x7f,0x4c,0x4f,0x4f,0x0F,0x5f,0x1f,0x4f,0x00,0x00,

    0x3D,0x49,0x8f,0x12,0x1a,0x83,0xf 6,0x23,0x3f,0x40,0x00,0x3f,0x90,0x00,0x00,

    0x08,0x24,0x3a,0x40,0x00,0x02,0x3c,0x3f,0x4a,0x8F,0x12,0x3a,0x90,0x00,0x00,

    0xfb,0x23,0x30,0x40,0x52,0xc1,0x0f,0x12,0x0e,0x12,0x0d,0x12,0x0c,0x12,0x0b,0x12,

    0xc2,0x43,0x23,0xb0,0x12,0x32,0xc1,0x3b,0x41,0x3c,0x41,0x3d,0x41,0x41,

    0x3F,0x41,0x00,0x13,0x31,0x40,0x00,0x04,0xb0,0x12,0x62,0xc1,0x0c,0x93,0x02,0x24,

    0xb0,0x12,0x9c,0xc0,0x43,0xb0,0x12,0x04,0xc0,0xb0,0x12,0x66,0xc1,0xb2,0x40,

    0xde,0xc0,0x00,0x02,0xd2,0xd3,0x02,0x02,0x32,0xc2,0x03,0x43,0xb2,0x40,0x0b,0x5a,

    0x20,0x01,0xff,0x3f,0x34,0x41,0x41,0x36,0x41,0x37,0x41,0x38,0x41,0x39,0x41,

    0x3a,0x41,0x30,0x41,0xd2,0xe3,0x21,0x00,0x92,0xc3,0x62,0x01,0x00,0x13,0x1c,0x43,

    0x30,0x41,0x03,0x43,0xff,0x3f,0xff,0x3f,

    };

    const uint8_t App1_1[]={

    0x30,0x40,0xfa,0xc0,0x30,0x40,0x6a,0xc1,0x30,0x40,0x6a,0xc1,0x30,0x40,0x6a,0xc1,

    0x30,0x40,0x6a,0xc1,0x30,0x40,0x6a,0xc1,0x30,0x40,0x58,0xc1,0x30,0x40,0x6a,0xc1,

    0x30,0x40,0x6a,0xc1,0x30,0x40,0x6a,0xc1,0x30,0x40,0x6a,0xc1,0x30,0x40,0x6a,0xc1,

    0x18,0xc1,

    };

    const uint8_t *应用1_PTR[2]={

    App1_0,

    App1_1,

    };

    在我的情况下,我想为MSP432使用从CCS生成的输出文件.txt。

    问题是我只有十六进制数据值。(见附件)

    如何在这种句段中分隔.text? 我如何知道哪些值属于哪个细分市场?

    e2e.ti.com/.../driverlib_5F00_empty_5F00_project_5F00_from_5F00_source.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    刚刚看到包括一个工具:
    430txt2C:用于将430 .txt文件转换为主机使用的C阵列的Perl脚本
    不知道430 .txt输出文件是否与MSP432相同
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    430txt2C就是这样!
    但什么是MSP432的“CRCType”,“StartAddr”,“EndAddr”和“CRCDr”?
    以下是SLAA600的文档:
    CRCType = CRC16或CRC8
    InputFile =.txt格式的输入文件
    OutputFile =.txt格式的输出文件
    StartAddr =十六进制格式的起始地址
    EndAddr =十六进制格式的结束地址
    CRCAddr =十六进制格式的存储CRC的地址
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很高兴看到您能够找到430txt2c python脚本。 您要查找的信息仅适用于为MSP432创建基于闪存的自定义引导加载程序解决方案的情况,有关详细信息,请参阅SLAA600。 在这种情况下,需要为MSP432移植MSPBoot目标项目材料,并且需要向主机提供BSL启动,结束和CRC闪存地址,以便主机可以正确访问自定义引导加载程序并与之通信。

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

    您好,Ryan:

    是的,我将定制引导加载程序解决方案,以便它使用正确的配置,如BSLBased _UART,而不是I2C (如果这是您的意思)。

    我不明白的是,为什么我必须将目标MSPBoot材料应用到MSP432,因为我使用的是UART BSL端口的WFP 1.2 和WFP 1.3。 我认为,一旦主机启动与引导命令的通信,MSP432将自动进入引导模式。

    例如,如果我在Windows PC上使用BSL-Scriptter,并在相同的端口上通信,使用电平转换器,我就不必在MSP432上添加任何材料,就能像我所理解的那样正常工作。 BSL脚本程序在MSP432在引导模式下自动进入的端口上发送此类命令,擦除闪存,加载新固件。

    MSP432上是否固定了开始/结束/CRC闪点?

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

    您不必为MSP432实施目标MSPBoot解决方案,我只是解释了CRCType / StartAddr / EndAddr / CRAddr的用途。 由于您使用的是驻留BSL而不是主内存解决方案,因此这些地址是固定的,因此主机固件不需要这些变量。 请记住,要从中采样的主机代码设计为与MSPBoot目标项目一起使用。

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

    您好,Ryan:

    如果我不需要这些寄存器地址,我必须对MSPBoot代码进行哪些更改,以便 它可以读取CCS输出文件.text并刷新MSP432?

    或者是否有其他示例代码已执行此操作? 可能是BSL脚本?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的,BSL-脚本编写者Michael也能够通过UART接口对MSP432进行编程。 提供了源代码和MSP432示例,您可以使用示波器或逻辑分析仪评估通信序列。

    此致,
    Ryan