1. Preloader 默認GPIO不做配置
makefile文件中選擇編譯gpio_init即可打開,mt_gpio_set_default按照dws設定,mt_gpio_set_default_dump讀取gpio狀態。
78 #ifeq ("$(PL_MODE)","DUMMY_AP")
79 MOD_SRC += gpio_init.c
80 #endif
2. LK打印GPIO信息
增加gpio dump易導致LK啓動失敗,初步懷疑是dprintf打印導致。將dump信息增加至platform_init可以正常打印。
normal:
[ATF][ 0.000000][BL31] Jump to FIQD for initialization!
INFO: BL3-1: Preparing for EL3 exit to normal world, LK
INFO: BL3-1: Next image address = 0x41e00000
INFO: BL3-1: Next image spsr = 0x1d3
[ATF][ 0.000000][BL31] Final dump!
[0] WDT NONRST=0x20000000
[0] [PROFILE] ------- WDT Init takes 0 ms --------
[0] [pmic_init] LK Start..................
[0] [pmic_init] MT6325 CHIP Code = 0x2820
[0] [pmic_init] Done
[10] ==LK info ==
fail:
[ATF][ 0.000000][BL31] Jump to FIQD for initialization!
INFO: BL3-1: Preparing for EL3 exit to normal world, LK
INFO: BL3-1: Next image address = 0x41e00000
INFO: BL3-1: Next image spsr = 0x1d3
[ATF][ 0.000000][BL31] Final dump!
[ATF][ 0.000000]=> wdt_kernel_cb_addr=0, error before WDT successfully initialized. cpu 0
[ATF][ 0.000000]=> regs->pc : 0x41e028fe
[ATF][ 0.000000]=> regs->lr : 0x0
[ATF][ 0.000000]=> regs->sp : 0x0
...
[ATF][ 0.000000]=> sp is NULL, skip stack dump
[ATF][ 0.000000]=> wait until reboot...
3. GPIO ies
某一些GPIO屬於一組,修改同一組中的某一個GPIO,同時影響改組的所有GPIO。IES 隔離CPU外部信號?
GPIO 0~4屬於GOIO_IES_G1,若更改GPIO2的IES,GOIO_IES_G1的其他GPIO IES亦會同步改變。
19 #define IOCFG_1_BASE (0x10211900)
27 PIN_addr IES_addr[] = {
28 /* 0 */ {IOCFG_1_BASE+0x000},
29 /* 1 */ {IOCFG_1_BASE+0x000},
30 /* 2 */ {IOCFG_1_BASE+0x000},
31 /* 3 */ {IOCFG_1_BASE+0x000},
32 /* 4 */ {IOCFG_1_BASE+0x000},
33 /* 5 */ {IOCFG_2_BASE+0x000},
228 PIN_offset IES_offset[] = {
229 /* 0 */ {10},
230 /* 1 */ {10},
231 /* 2 */ {10},
232 /* 3 */ {10},
233 /* 4 */ {10},
234 /* 5 */ {3},