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.
工具/软件:Code Composer Studio
你(们)好
我正在开发,或者我们可以称之为继续集成F2806X引导加载程序。 (实际上是2.8065万)
我将介绍我理解的获取SCI bootloader的步骤,然后介绍我对SPI bootloader的理解。
我还没有开始。
我正在计划使用CCS从 controlSUITE加载flash_f2.8069万示例: C:\TI\controlSUITE\DEVICE_SUPPORT\f2806x\v151\F2806X_Examples_ccsv5</s>2806
这是唯一从闪存工作的示例。所有~20个示例都是从RAM工作。
如果我理解正确,从RAM工作意味着当我使用JTAG加载固件时, 下次我将执行电源循环时,需要再次下载,位置
从闪存开始工作,这意味着应用程序/固件将在闪存中刻录,即使我执行了电源循环,我也只能开机,应用程序/固件将运行。
如果是,转到SCI引导加载程序,
我需要:
1.编译 f2.8069万_flash_kernel 示例 (C:\TI\controlSUITE\DEVICE_SUPPORT\f2806x\v151\F2806x_Examples_ccsv5\f28069_flash_kernel)</s>2806 2.8069万
此示例已在SCI中 ( SCI_BOOT.c)在项目中。
在输出中执行hex2000以获取十六进制文件
2.在示例 flash_f2.8069万上执行hex2000
当我有这两个十六进制文件时,我需要在 GPIOB中执行make GPIO 34( make it 0)和GPIO 37( make it 1)
如bootrom来源中所示:
引导模式= GpioDataRegs.GPBDAT.bit.GPIO37 <<1;
引导模式|= GpioDataRegs.GPBDAT.bit.GPIO34;
关闭并重新打开主板,然后引导加载程序将等待两个文件,这两个文件将使用flash_programmer命令行工具提供:
serial_flash_programr.exe -d f2.8065万 -k flash_kernels_f2.8065万.txt -a flash_2.8065万.txt -p COM7 -b 9600
其中.txt文件是来自hex2000文件的输出。
按'A'将开始加载。
原始flash_2.8065万已使用JTAG加载,现在它将被serial_flash_programmer取代?
最后,这是引导加载过程。
请确认上述步骤。
现在转到SPI bootloader。
这没有很好的记录,因此请在此处确认我的步骤。
我将用在 f2806x的名为bootrom的项目中找到的SPI_Boot. c替换flash_kernel_f2.8065万项目中的SCI_boot. c文件。
如果我理解正确,装备区项目不需要加载,并且在这场启动游戏中没有规则,我们只能使用其来源选择我们想要的启动模式。
因此,在我用SPI_BOOT. c替换SCI_BOOT. c之后,我将借助hex2000 a txt文件重新编译和创建。
现在,我不能再使用serial_flash_programmer了,因为它使用SCI( UART)
我的目标是在Linux下通过SPI进行固件升级。
因此,下一步是了解串行闪存编程器的代码(源代码在Visual Studio中提供),并创建Linux C程序(使用SPI_DEV接口)来执行同样的操作。 (如果SPI Linux中有这样的工具,请告诉我们)
一旦我要这样做,我就应该让引导加载程序从SPI工作。
但是,我不需要 在以下地址对OTP进行编程:
#define GET_MODE (UINT16 (*)(void)) 0x3D7CC0
要将值设为4 ( SPI )
为此, 我阅读了此线程 https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/167270</s>16.727万
这说明了如何使用代码执行此操作。 如果有不同的方法(可能使用CCS和JTAG,请告诉我)
GPIO 34和GPIO 37需要为1。
并且在SCI和SPI中TRST都需要为0 (TRST也是GPIO?)
如果我将OTP编程错误为4,该怎么办? 我是否需要丢弃芯片,因为它是一次性编程?
如果我只想检查SCI bootloader和SPI,该怎么办?
如果我理解正确,确定引导模式(GPIO和OTP)的逻辑已在bootrom中,并且无法更改??
首先,如果您在此处之前阅读,谢谢。
在TI中使用引导加载程序的这一长故事并不是那么容易。
如果您发现任何问题,请做一些评论,帮助我和其他人。
谢谢!
您好,Sal,
首先,我设法使SCI如上所述正常工作。 ( 我 将 trst设置 为 0。 GPIO 34设置为1 , 37设置为 0, 在hex2000后使用闪存内核和我的应用程序,它工作正常!)
但关于SPI引导加载程序。
我想确定如何进入SPI 启动以及如何让芯片从闪存正常启动
从本文档中:
http://www.ti.com/lit/ug/sprugo0b/sprugo0b.pdfx
我们可以看到有两个表格
独立和仿真。
独立支持SCI, PARALLEL和WAIT的位置(其中WAIT是调试器, 对吗?)
和仿真模式 表。
仿真模式是我需要的(我认为)
以及原因。
II之后将OTP 启动模式编程 为4
我需要 使用trst =1 ( 项目唯一需要的GPIO号)
GPIO 34和37再也不会出现。
现在, 我需要将trst设置为1,并更改emukey和emuboot更多,这些是闪存(而不是OTP)存储器位置!
使用该仿真引导模式时,我需要一次引导至SPI 以升级固件,还需要从闪存正常引导。
请确认。
第二项质询。
它表示我错过了SPI_Boot是一个主设备的事实,它想与SPI从属设备一起读取闪存内核和我的应用程序(使用hex2000实用程序转换为.txt)
因此我需要写入一个Linux SPI从属设备,该设备将把.txt文件传输到SPI_Boot?
(如果是这样,当在SPI驱动程序主要是主驱动程序的Linux中工作时,这不是很方便,而是将其用作从驱动程序不是直接的)
谢谢
Eli