Browse Source

更新MCU-iram工程
屏蔽了安全启动相关功能配置(存在不可逆行为),防止误操作导致空片升级后启动异常问题。
更新fastboot工程
优化部分注释乱码问题
更新ImgcrGUI工具
后续可以支持修改bootrom后设置norflash的QE,另外工具配置完关闭后,之前配置的参数会保存到ini文件,下次打开的时候会自动加载这个值
更新用户说明文档
更新Doc/AMT630HV160_bsp_user_guider.pdf

helen 3 tháng trước cách đây
mục cha
commit
3d28495674

+ 13 - 6
Doc/AMT630HV160_bsp_user_guider.pdf

@@ -89,7 +89,7 @@ amt630hv160.bin、bootanim.bin 和 rom.bin 六个升级文件)。
      image.bin
      MCU 应用程序。由 amt630hv160.bin 通过工具 Tools/ImgcrGUI/ImgcrGUI.exe
 转换得到(其中 amt630hv160.bin 文件由 amt630hv160-mcu 工程编译生成, 工具
-使用请参考“ Doc/AMT630HV160 启动流程说明 .pdf”)。编译前需要将宏定义
+使   参考“ Doc/AMT630HV160 启动流程说明 .pdf”)。编译前需要将宏定义
 APP_FOR_BURN 屏蔽掉 (文件路径 amt630hv160-mcu/src/amt630hv160_conf.h)。
      amtldr.bin
 
@@ -186,7 +186,7 @@ IMAGE_RESOURCES_BACKUP 宏定义,bootanim.bin 和 rom.bin 文件做 OTA 升级
      7.16 支持屏幕旋转(横屏竖用或者竖屏横用),修改 board.h 头文件中宏定义
 LCD_ROTATE_ANGLE 的值来设置旋转角度。
 
-     7.17 支持屏幕水平或者垂直镜像显示,修改 board.h 头文件 中宏定 
+     7.17 支持 屏幕水平或者垂直镜像显示,修改 board.h 头文件中宏定义
 LCD_H_FLIP 和 LCD_H_FLIP 的值打开相应的功能。
 
      7.18 支持 wav 格式音频放音和录音功能,默认是关闭的,如果需要打开可以
@@ -248,15 +248,22 @@ DCIC_FAULT_DETECT 宏定义与 CPU 中的 ADC_KEY 宏定义和 ERROR_CHECK_TEST
      按键 8 按下画面显示偏暗,再按下恢复
      按键 9 按下进入故障检测界面,再按下恢复正常界面显示切换
      7.30 支持 WRAP 畸变校正,打开 CPU 端 board.h 头文件中宏定义 WRAP_SUPPORT。
-把  数 据通 过 Jlink 写  到 srcwrap_buf 数  ,同  也 把校 正 坐 标写 入 
+把原数 据通过 Jlink 写入到 srcwrap_buf 数组, 同时也 把校 正 坐标写 入到
 coordinatewrap_buf 中。
+     7.31 支持 SPI+EMMC 版本运行(MCU 程序存储在 spi nor flash 中,CPU 程序
+存储在 EMMC 中),使用时需将 MCU app 工程 amt630hv160_conf.h 文件中的
+DEVICE_TYPE_SELECT 宏定义修改为 SPI_NOR_FLASH,CPU_DEVICE_TYPE_SELECT 宏
+定 义 修 改 为 EMMC_FLASH 。 同 时 需 要 将 CPU app 工 程 board.h 文 件 中 的
+
+                                                                   10 / 11
+DEVICE_TYPE_SELECT 宏定义修改为 EMMC_FLASH,MCU_DEVICE_TYPE_SELECT 宏定义
+修改为 SPI_NOR_FLASH。
 备注:
 1. 文中出现的一些代码文件完整路径如下:
+
   amt630hv160-freertos-beta\ArkmicroFiles\libboard-amt630hv160\include\board.h
   amt630hv160-freertos-beta\ArkmicroFiles\libcpu-amt630hv160\source\pinctrl.c
-
-                                                                   10 / 11
-  amt630hv160-freertos-beta\app\main_awtk.c
+  amt630hv160-freertos-beta\app\main_awtk.c
   amt630hv160-freertos-beta\FreeRTOSConfig.h
   amt630hv160-freertos-beta\lib\awtk\awtk\src\platforms\ark\ platform.c
 2. 文中提到的修改工程设置,添加或者删除某个符号定义是指下图所示位置添加

BIN
Tools/ImgcrGUI/ImgcrGUI.exe


+ 64 - 0
Tools/ImgcrGUI/config.ini

@@ -0,0 +1,64 @@
+[Settings]
+priKeyPath = 
+randomCount = 
+pagesize = 2048
+imagefile = 
+flasherasesize = 
+pagespblock = 64
+rootkey = 
+imagekey = 
+outputkeyhash = 
+rootprikey = 
+outputpubkey = 
+filetosign = 
+signimgkey = 
+certkey = 
+openckey = 
+enckey = 
+filetoenc = 
+ivfile = 
+opimgkey = 
+emmclk = 24000000
+drvdelay = 0
+emmcbus = 1
+sampledelay = 0
+busreg = 0x18
+pllondelay = 0
+cpureg = 0x00a0c803
+ahbreg = 0x00b05a03
+ehseSrc = 1
+plloffdelay = 0
+ehseDiv = 1
+efuse = 0
+rsta = 
+wsta = 
+snfreg = 
+qebit = 
+qri = 
+qins = 
+qspiaddr = 
+dummycycle = 
+qspidata = 
+snblock1 = 0
+snblock2 = 0
+snblock3 = 0
+snblock4 = 0
+snblock5 = 0
+snblock6 = 0
+snblock7 = 0
+snblock8 = 0
+filepath = 
+loadaddr = 0x104000
+spiclk = 12000000
+spierase = 0x20
+spisampledelay = 0xFFFFFFFF
+aeskey = 16
+rsakey = 3
+cid = 0
+emmcspeedmode = Legacy
+storage = None
+spinand = false
+clkdiv = false
+clkdrvdiv = false
+qspi = false
+crc = false

+ 4 - 4
amt630hv160-fastboot/src/ArkmicroFiles/libcpu-amt630hv160/source/amt630hv160_rtc.c

@@ -117,13 +117,13 @@ void RTC_PowerDown(int fastboot)
 	//rtc mcu reset delay 100ms
 	val = RTC->RAM_L;
 	val &= ~0xff;
-	val |= 100;					//确保该延时时间大于power信号拉高到控制的所有电源稳定时间
+	val |= 100;					//纭�繚璇ュ欢鏃舵椂闂村ぇ浜巔ower淇″彿鎷夐珮鍒版帶鍒剁殑鎵€鏈夌數婧愮ǔ瀹氭椂闂�
 	RTC_WriteReg(RTC_RAML, &RTC->RAM_L, val);
 
 	//rtc mcu power on/off delay 100ms
 	val = RTC->PMC;
 	val &= ~(0xff << 8);
-	val |= (100 << 8);			//确保延时时间的两倍大于休眠时从power信号拉低到外部器件完全掉电的时间
+	val |= (100 << 8);			//纭�繚寤舵椂鏃堕棿鐨勪袱鍊嶅ぇ浜庝紤鐪犳椂浠巔ower淇″彿鎷変綆鍒板�閮ㄥ櫒浠跺畬鍏ㄦ帀鐢电殑鏃堕棿
 	RTC_WriteReg(RTC_PMC, &RTC->PMC, val);
 
 	//rtc switch to 32k crystal
@@ -157,7 +157,7 @@ void RTC_CanStbOut(int id, int value)
 }
 
 /*
-	各唤醒源默认为打开状态,不使用的唤醒源需手动将其关闭
+	鍚勫敜閱掓簮榛樿�涓烘墦寮€鐘舵€侊紝涓嶄娇鐢ㄧ殑鍞ら啋婧愰渶鎵嬪姩灏嗗叾鍏抽棴
 */
 void RTC_SetWakeup(eRTCWakeupSource src, eRTCWakeupMode mode, int enable)
 {
@@ -203,7 +203,7 @@ void RTC_SetWakeup(eRTCWakeupSource src, eRTCWakeupMode mode, int enable)
 	enbit = 26 + (src - RTC_WAKEUP_GPIO1);
 	if (mask) {
 		val |= 1 << enbit;
-		//关闭唤醒需要切换到沿唤醒模式
+		//鍏抽棴鍞ら啋闇€瑕佸垏鎹㈠埌娌垮敜閱掓ā寮�
 		if (src != RTC_WAKEUP_RTC && src != RTC_WAKEUP_ACC)
 			val &= ~(1 << (mbit - 1));
 	} else {

+ 3 - 2
amt630hv160-mcu/amt630hv160-mcu-iram/src/amt630hv160_conf.h

@@ -429,8 +429,9 @@ emmc DDR address space
 
 /************ update config configuration ************/
 #define BURN_IMAGE					0
-#define BURN_SECURE_IMAGE			1  //选择该宏定义升级时会烧录EFUSE,该行为不可逆,不确定的情况下不要选择
-//#define APP_FOR_BURN				BURN_IMAGE
+//#define BURN_SECURE_IMAGE			1	//选择该宏定义升级时会烧录EFUSE,该行为不可逆,不确定的情况下不要选择
+										//若有安全启动方面需求,需与工程师对接放开此功能。
+#define APP_FOR_BURN				BURN_IMAGE
 #define MEDIA_UPDATE_SUPPORT
 #if defined(MEDIA_UPDATE_SUPPORT) && !defined(MAILBOX_UPDATE_SUPPORT)
 #error "Error! Should define MAILBOX_UPDATE_SUPPORT to support media update"

+ 5 - 2
amt630hv160-mcu/amt630hv160-mcu-iram/src/main.c

@@ -161,6 +161,7 @@ static void prvSetupHardware( void )
 #ifdef APP_FOR_BURN
 extern int UsbHostInit(void);
 
+#ifdef BURN_SECURE_IMAGE
 #if	APP_FOR_BURN == BURN_SECURE_IMAGE
 static u32 aeskey[8] = {
 	0x543f6ccb, 0xad08aa59, 0xdb825b6b, 0x0f219d51,
@@ -172,6 +173,7 @@ static u32 rotk_hash0[8] = {
 	0x7e7cf66b, 0x4ce36ddf, 0x1444a7f5, 0xe1fd197b,
 };
 #endif
+#endif
 
 static int BurnImage(eUpdateMedia umedia)
 {
@@ -200,6 +202,7 @@ static int BurnImage(eUpdateMedia umedia)
 	fret = f_stat(filename, &fileinfo);
 	if (fret != FR_OK) {
 		printf("Get file info fail\n");
+		f_close(&fp);
 		return -1;
 	}
 
@@ -230,6 +233,7 @@ static int BurnImage(eUpdateMedia umedia)
 	f_close(&fp);
 	vPortFree(filebuf);
 
+#ifdef BURN_SECURE_IMAGE
 #if	APP_FOR_BURN == BURN_SECURE_IMAGE
 	EFUSE_WriteWords(0, aeskey, 8);
 	EFUSE_LoadKeyData();
@@ -244,6 +248,7 @@ static int BurnImage(eUpdateMedia umedia)
 	EFUSE_SetFieldValue(EFUSE_SECURE_BOOT_TYPE, EFUSE_SECURE_BOOT_TYPE_AUTH | EFUSE_SECURE_BOOT_TYPE_ENCRYPT);
 	EFUSE_SetFieldValue(EFUSE_SECURE_BOOT_EN, 1);
 	EFUSE_WriteBootcfgParity();
+#endif
 #endif
 
 	if (UPDATE_CheckApp(1, 0)) {
@@ -439,8 +444,6 @@ int LoadFastboot(void)
 	return -1;
 }
 
-
-
 static void MainTask(void *pvParameters)
 {
 #if DEVICE_TYPE_SELECT != EMMC_FLASH