前言:
现时同学们对“周立功使用教程”可能比较关切,看官们都需要学习一些“周立功使用教程”的相关知识。那么小编同时在网络上汇集了一些关于“周立功使用教程””的相关资讯,希望同学们能喜欢,你们一起来学习一下吧!本文主要是通过迁移的思维,记录本人初次使用周立功的Aworks框架进行BSP开发1. 首先阅读原理图
正常来说看门狗超时,CPU会直接复位,有时会要求输出复位脉冲。这个功能可以使能,也可以不使能。在Easy_arm_rt1052 开发板上面不使能复位脉冲也是可以复位成功的。
2. 使能Watchdong
在Awork框架下面,模块功能的开启都是在aw_prj_params.h文件内修改。而aw_prj_param_auto_cfg.h则是有依赖的,比如说,使能的LCD显示,一般都配置PWM控制背光,或者访问I2C总线访问EEPROM,需要使能其总线驱动。如下所示:
使能watchdog只需要在aw_prj_params.h 定义相关的宏即可,如下所示
3. 如何测试
在Aworks框架之下,周立功公司提供了对应的编程接口,本人参考AWorks标准API参考手册1.10.chm
static struct awbl_wdt wdt_dev;void wdt_test(){ aw_wdt_add(&wdt_dev, 1000); aw_wdt_feed(&wdt_dev); // force trigger watchdog timeout; aw_mdelay(2000);}4. SDK BUG
在SDK 2.1.0 下,存在看门狗超时,系统复位不成功的问题。
在FAE支持下,通过如下补丁可解决该问题。在笔者的开发初期,只看了Aworks的编程手册,而没有了解其背后的设计框架,认为只要打开相应的宏,即可通过上层接口进行编程,后面跳入坑中。
Index: awbl_imx1050_flexspi.c===================================================================--- awbl_imx1050_flexspi.c (revision 1)+++ awbl_imx1050_flexspi.c (working copy)@@ -42,7 +42,7 @@ *******************************************************************************/ #if defined (__CC_ARM) extern unsigned int Image$$ER_FLEXSPI_DRV_START$$Base; /* __flexspi_drv_start__ */-#define __FLEXSPI_DRV_START (&Image$$ER_FLEXSPI_DRV_START$$Base)+#define __FLEXSPI_DRV_START (&Image$$ER_FLEXSPI_DRV_START$$Base) #elif defined (__GNUC__) extern int __flexspi_drv_start__; #define __FLEXSPI_DRV_START (&__flexspi_drv_start__)@@ -1673,12 +1673,27 @@ } else { status |= (temp & 0x3c); }+ /*+ Note:change for watchdog timeout, but reboot halted, follow it the booting log:+ + Application Start. + feed wdt+ force trigger watchdog timeout /r/n+ AWorks for i.MX RT1050, build Oct 13 2020 + AWorks SDK Version is 2.1.0 <2020-04-20> + use panel: tft_panel 0 (480 x 272 16 bpp)+ current time: 1970-01-01 00:08:51+ P/IP i|AWorks->>> nitializing+ Hostname set to AWorks+ TCP/IP initialized+ */+#if 0 while ((status != temp) && (times-- > 0)) { p_this->serv_func.pfunc_flexspi_nor_flash_write_status(p_dev, status); p_this->serv_func.pfunc_flexspi_nor_flash_read_status(p_dev, &temp, 1); }-+#endif /* 进入四字节地址模式 */ if (p_devinfo->dev_cfg.flash_size >= 16 *1024*1024) { __flexspi_nor_flash_enter_4byte(p_dev);
Index: flexram_config_for_armcc.S===================================================================--- flexram_config_for_armcc.S (revision 1)+++ flexram_config_for_armcc.S (working copy)@@ -35,7 +35,7 @@ ; 配置GPR17中的FLEX RAM,全部为DTCM- ldr r1, = 0xAAAAAAAA;+ ldr r1, = 0xAAAAAAA5; ldr r0, = REG_IOMUXC_GPR17; str r1,[r0]; dsb
Index: easy_arm_rt1052_flexspi_flash.sct===================================================================--- easy_arm_rt1052_flexspi_flash.sct (revision 1)+++ easy_arm_rt1052_flexspi_flash.sct (working copy)@@ -13,9 +13,9 @@ #define FLASH_SIZE 0x400000 /* flash size: 4M */ #define DATA_START 0x20000000 /* data start address */-#define DATA_SIZE 0x7F000 /* code size: 508k */+#define DATA_SIZE 0x6F000 /* code size: 444k */ -#define RELOAD_CODE_START 0x2007F000 /* reload code start address */+#define RELOAD_CODE_START 0x2006F000 /* reload code start address */ #define RELOAD_CODE_SIZE 0x1000 /* reload code size: 4k */ #define STACK_START DATA_START /* stack start address */
标签: #周立功使用教程