Thread 中讨论的其他器件:controlSUITE
嗨、大家好。
我正在协处理器上开发 C28内核的自定义引导加载程序、我需要澄清的事情很少。
1. C28内核从其引导 ROM 阶段跳转到哪个地址?
2.为了测试我的引导加载程序应用程序,我使用了一个简单的 Blinky C28应用程序。 现在,我应该更改 RESET_Vector 所在的地址吗? 或者、我是否应该担心"开始"部分的位置会被称为"codestart"函数?
我为 C28启用了十六进制实用程序文件、该文件确实为我生成了.hex 文件。 但是,如果我尝试对文件的前两行进行解码,我会得到一个初始起始地址为0x00098000,这是我不理解的吗? 当我编辑了闪烁应用程序链接器脚本以从0x0013A000开始其起始地址时?
前两行:
020000040009F1
:20800000761F76221A2400101A200001761F0003180000161800FFFD761FFFFECC00001062
第0页闪烁应用程序的存储器说明
存储器
{
第0页:/*程序内存*/
/*内存(RAM/FLASH/OTP)块可移动到第1页进行数据分配*/
RAML0:origin = 0x008000、length = 0x001000 //片上 RAM 块 L0 */
RAML1:origin = 0x009000,length = 0x001000 //片上 RAM 块 L1 */
FLASHN:origin = 0x100000、length = 0x002000 //片上闪存*/
FLASHM:origin = 0x102000、length = 0x002000 //片上闪存*/
FLASHL:origin = 0x104000、length = 0x002000 //片上闪存*/
FLASHK:origin = 0x106000、length = 0x002000 //片上闪存*/
FLASHJ:origin = 0x108000、length = 0x008000 //片上闪存*/
FLASHI:origin = 0x110000,length = 0x008000 //片上闪存*/
FLASHH:origin = 0x118000,length = 0x008000 //片上闪存*/
FLASHG:origin = 0x120000,length = 0x008000 //片上闪存*/
FLASHF:origin = 0x128000、length = 0x008000 //片上闪存*/
FLASHE:origin = 0x130000,length = 0x008000 //片上闪存*/
FLASHD:origin = 0x138000、length = 0x002000 //片上闪存*/
//csm_PWL_P0:origin = 0x139FF8,length = 0x000008
//ECSL_PWL_P0:origin = 0x139FFC,length = 0x000004
//FLASH_EXT_ONLY _P0:origin = 0x139FFE,length = 0x000002
开始:origin = 0x13A000,length = 0x002000
/*FLASHC:origin = 0x13A000,length = 0x002000 //片上闪存*/
/*FLASHA:origin = 0x13E000,length = 0x001F80 /*片上闪存*/
/*csm_RSVD:origin = 0x13FF80,length = 0x000070*/* FLASHA 的一部分。 当 CSM 正在使用时、使用所有0x0000进行编程。 *
/*begin:origin = 0x13FFF0,length = 0x000002/* FLASHA 的一部分。 用于"引导至闪存"引导加载程序模式。 *
/*FLASH_EXT_ONLY _P0:origin = 0x13FFF2,length = 0x000002/* FLASHA 的一部分。 闪存只执行 FLASHA 中的位置*/
/*ECSL_PWL_P0:origin = 0x13FFF4,length = 0x000004 // FLASHA 的一部分。 FLASHA 中的 ECSL 密码位置*/
/*csm_PWL_P0:origin = 0x13FFF8,length = 0x000008 // FLASHA 的一部分。 FLASHA 中的 CSM 密码位置*/
FPUTABLES:origin = 0x3FD258,length = 0x0006A0 //引导 ROM 中的 FPU 表*/
IQTABLES:origin = 0x3FD8F8,length = 0x000B50 //引导 ROM 中的 IQMath 表*
IQTABLES2:origin = 0x3FE448,length = 0x00008C //引导 ROM 中的 IQMath 表*
IQTABLES3:origin = 0x3FE4D4,length = 0x0000AA /*引导 ROM 中的 IQMath 表*/
BootROM:origin = 0x3FEDA8,length = 0x001200 //引导 ROM */
PIEMISHNDLR:origin = 0x3FFFBE,length = 0x000002/*部分引导 ROM *
复位:origin = 0x3FFFC0,length = 0x000002 //引导 ROM 的部分*/
向量:origin = 0x3FFFC2,length = 0x00003E //引导 ROM 的部分*/
e2e.ti.com/.../Hex-and-cmd-files.7z
4.最后,我读出 C28存储器不像 ARM 架构那样是字节可寻址的,如果我需要存储和连接字符变量,那么最好的解决方案是什么? 下面的示例
例如:
UNION
{
uint32 Val;
结构{
UINT8 FIRSTB;
UINT8 SECONDB;
uint8 THIRDB;
uint8 FOURTHB;
}字节;
}地址;
如果我尝试向 THIRDB 和 FOURTHB 写入一些值、这对 Val 变量没有任何影响?
谢谢