以MEC1428为例来介绍EC的开发流程和基本原理。按照惯例从链接开始介绍。

一.自定义链接脚本。默认Mplab x默认使用xc32提供的脚本,在Mplab x也可以按照下图自定义链接脚本。

Cstyle的UEFI导读之Embedded Controller链接过程

 

Cstyle的UEFI导读之Embedded Controller链接过程

 

二.定义地址映射

针对MEC1428其地址及内存映射关系如下Data RAM:32K(0xBFD18000),Code RAM:160K(0xBFCF0000),ROM:192K(0xBFC00000),MMCR:2M(0xA0000000)

Cstyle的UEFI导读之Embedded Controller链接过程

/*************************************************************************

* Memory Regions

* Memory regions without attributes cannot be used for orphaned sections.

* Only sections specifically assigned to these regions can be allocated

* into these regions.

*************************************************************************/

MEMORY

{

kseg1_boot_mem : ORIGIN = 0xBFC00000, LENGTH = 0x30000 (192K)

kseg0_program_mem (rx) : ORIGIN = 0xBFCF0000, LENGTH = 0x28000 (Code RAM:160K,读+执行)

sfrs : ORIGIN = 0xA0000000, LENGTH = 0x100000 (MMCR:1M?)

kseg1_data_mem (rwx) : ORIGIN = 0xBFD18000, LENGTH = 0x8000 (Data RAM:32K,读写+执行)

}

下面的sections段,定义了.reset也就是系统reset之后执行的user app第一行代码reset hander的位置(0xBFD00000),在在使用mec142x_spi_gen.exe编译SPI flash文件的时候,.toml脚本的

fw1EntryAddress段必须填入0xBFD00000作为开机后执行的第一条user app指令。fw1LoadAddress必须是kseg0_program_mem就是是user app必须加载到code ram的开始位置。

 

SECTIONS

{

.reset _RESET_ADDR :

{

KEEP(*(.reset))

} > kseg0_program_mem

 

.app_excpt _GEN_EXCPT_ADDR :

{

KEEP(*(.gen_handler))

} > kseg0_program_mem

}

Cstyle的UEFI导读之Embedded Controller链接过程

下面是编译输出的最终地址映射表,可以从中看到代码段的加载基地址(.text),reset hander(.reset),异常向量表(.app_excpt),C startup如口段(.startup)

.reset 0xbfd00000 0x18 /microchip/xc32/v2.10/bin/bin/../../lib/gcc/pic32mx/4.8.3/../../../../pic32mx/lib/./proc/MEC1428/crt0_mips32r2.o

.gen_handler 0xbfd00180 0x10 ./microchip/xc32/v2.10/bin/bin/../../lib/gcc/pic32mx/4.8.3/../../../../pic32mx/lib/./proc/MEC1428/crt0_mips32r2.o

.reset.startup 0xbfd017ac 0x140 ./microchip/xc32/v2.10/bin/bin/../../lib/gcc/pic32mx/4.8.3/../../../../pic32mx/lib/./proc/MEC1428/crt0_mips32r2.o

.text.main_entry 0xbfcf8b64 0x54 ./microchip/xc32/v2.10/bin/bin/../../lib/gcc/pic32mx/4.8.3/../../../../pic32mx/lib/./proc/MEC1428/crt0_mips32r2.o

0xbfcf8b98 __crt0_exit

 

Cstyle的UEFI导读之Embedded Controller链接过程

转载请注明出处,亦可关注微信公众号:固件C字营

[email protected]   //  http://blog.csdn.net/CStyle_0x007

Cstyle的UEFI导读之Embedded Controller链接过程

 

相关文章:

  • 2021-12-04
  • 2021-12-26
  • 2022-12-23
  • 2021-11-27
  • 2022-12-23
  • 2021-06-07
  • 2021-04-06
猜你喜欢
  • 2021-06-24
  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2021-12-20
  • 2022-12-23
  • 2022-01-03
相关资源
相似解决方案