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.

28377串口烧写的步骤

Other Parts Discussed in Thread: CONTROLSUITE

看了下TI提供的FLASH烧写文档《Serial Flash Programming of C2000™ Microcontrollers

貌似我理解的不是很清楚? 首先是要在C++编译那个应用程序,然后通过命令行输入命令? 我现在生成我要的.TXT文件,比如说LED,那怎么将LED.TXT加载到CPU呢?这个FLASH内核的作用还不是很理解。以前的2000是用上位机烧写的。那么我现在是不是可以通过TI提供的应用程序来做啊? 还有没其他资料可以看的。

或者请教下TI工程师,比较细致的步骤。

  • C:\ti\controlSUITE\device_support\~Utilities\serial_flash_programmer

    需要看的是这个资料,f2837xD_fw_upgrade_example.txt

    不用C++编译那个程序,直接通过cmd命令行调用那个指令就好。那个指令就是利用TI设计好的上位机软件serial_flash_programmer.exe 把TXT格式的目标文件传送到CPU里面。

    那个kernel的作用可以理解为bootloader程序,包含通信功能和flash 烧写算法。上位机利用芯片ROM中的出厂boot程序将kernel加载到内部RAM,然后CPU跳转到该kernel运行,接收上位机发送过来的目标文件TXT中的数据,再写入到FLASH中。

    你可以看一下TRM文件中ROM章节中的boot资料。

    ERIC

  • 好 我先看看 谢谢

  • 发现烧写速度比较慢,啥原因。

    一直在提示加载内核中,内核文件的大小并没有那么大吧。我的波特率是用9600。我这个串口的是转了USB的,是否这种硬件设计在串口烧写数据传输的时候会增加很大的延迟?我看英文版的论坛上有人提到,会跟收发器有关。 

  • 参考我在这个帖子的回复,不过那是F28035的,不知有多大差别。你说的延迟是不存在的,烧录速度也不慢,尤其是内核,例程的内核根本不是烧录,只是载入内存,程序又小,根本不花时间,只是下载完了要等待几秒钟,等待内核程序完全启动,例程里好像是等待了5秒。这些例程,不知是我眼拙,还是确实如此,反正光靠这个是不能正常使用的,于真正意义上的“远程更新“也是很难满足需求的。

    http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/p/123613/346487.aspx#346487

  • 步骤都是一样的。就是烧写内核进去,然后烧写应用程序。用的都是基于vc上位机,它这个上位机根据命令行格式选择相应的设备。

    后来我发现问题是我的底板串口的管脚映射和TI默认的不一样,这个有点奇怪,然后我根据手册内容,在相关寄存器(地址0XD000)里面修改,发现在调试下模式能下更改boot mode ,它这个SCI Boot mode分两组管脚。我改成了另外一组。【断电重启这个地址是不是不能更改的?只能在仿真模式下进行了?】然后 串口通讯正常了,烧写正常,但是烧写成功后一直卡在启动过程。 

    我觉得TI的这个串口烧写 和boot rom的开发有点绕 觉得不方便用 其实我是想后面做CAN烧写的 

  • 我说的和例程是很大区别的,我没有烧录内核进去,内核是直接烧录在单片机的一个段上,这么做的目的就是为了不用配置引脚去选择启动模式。

    你这么说,我倒确实想起一个问题,启动SCI,接收了内核程序后,内核是存在RAM中的,那么如何让单片机运行这段内核?硬件重启是不可能的,难道是把引脚配置回去就可以?我当初就因为需要配置引脚启动所以不考虑照搬例程,就没尝试过运行它,这个事情还真没想过。不过就跟我在那个帖子中 说的,光看这几个零碎的例程还是不行的,可能真的需要自己手工让单片机重启一下??

  • 那我明白你的意思了。 所以这么一说,它这几个例程还是不能直接用。我觉得TI的这个东西拐弯拐得太多了。如果在远程控制里面,人为去的拨动拨码开关啊或者重启硬件是不是不太合适。那么每个不同的硬件设计都要自己设计烧写方案了吗,通用性略差。

    我考虑了一下,你这个方案做起来还是相对简单。

    因为我接下面的硬件设计限制不能用GPIO BOOT MODE模式,都是默认FLASH启动,所以我想是不是在应用程序里面,接受命令,然后在应用程序里面烧写。自己再做个上位机程序。

  • Eric Ma 你好

    我有几个问题:

    1.使用上位机软件serial_flash_programmer.exe 把TXT格式的目标文件传送到CPU里面,这种情况下,BOOT MODE是不是要配置为SCI,即GPIO72=0,GPIO84=1?如果是这样的话,不就与GPIO84、85作为SCI的RX、TX冲突了嘛?

    2.如果我想要用F2837xD_sci_flash_kernels这个例程俩烧写程序,如何操作呢,可以列一下烧写步骤嘛?

    3.TI官方有提供关于bootrom例程吗?我在D:\Softwares\CCSv6.2\controlSUITE\libs\utilities\boot_rom\F2837x_revb找到的相关例程用不了,例程有错误。

    看了很多您的对相关问题的回答,还是无从下手。

    谢谢!

  • 1.使用上位��软件serial_flash_programmer.exe 把TXT格式的目标文件传送到CPU里面,这种情况下,BOOT MODE是不是要配置为SCI,即GPIO72=0,GPIO84=1?如果是这样的话,不就与GPIO84、85作为SCI的RX、TX冲突了嘛?

    Eric: 不冲突,BOOT mode配置的GPIO口,只是在上电后,芯片跑到ROM里面的引导代码判断这两个脚的电平,判断过去,进入对应的引导模式,这两个脚的功能就释放了。

    2.如果我想要用F2837xD_sci_flash_kernels这个例程俩烧写程序,如何操作呢,可以列一下烧写步骤嘛?

    Eric: 查看这个路径C:\ti\controlSUITE\device_support\~Utilities\serial_flash_programmer

    这个例程是TI做的SCI bootloader算法,即利用boot mode,将芯片配置成SCI boot模式,然后通过PC端的上位机软件serial_flash_programmer.exe 将这个kernel写进RAM中,kernel接管后续flash烧写的工作, 它将烧写对应的用户程序。

    3.TI官方有提供关于bootrom例程吗?我在D:\Softwares\CCSv6.2\controlSUITE\libs\utilities\boot_rom\F2837x_revb找到的相关例程用不了,例程有错误。

    ERIC: BOOTROM例程里面,应该也只是如何利用串口,将kernel接收后放到RAM而已,然后运行。

    如果你要在线升级的功能,可以看我之间发过的F28M35的例子。如果接收BOOT MODE设置IO口这种模式的话,那就用第2点的这个就好。

    http://www.deyisupport.com/question_answer/microcontrollers/c2000/f/56/t/121859.aspx

  • Eric:

      我想用serial_flash_programmer.exe对TMS280f28034进行串口烧录,关于你说的kernel,我在controlSUITE中找不到,不知道该如何弄到kernel,如果你那边有TMS280f28034现成的文件,可否给我一份?