[NOVATEK] NT96580行车记录仪功能学习笔记

一、u-Boot升级灯

运行u-Boot程序时LED灯闪烁,找到运行过程中一直在运行的函数在里面进行LED引脚电平的翻转

宏定义

Z:\SunFan\AHD580\pip\na51055_PIP\BSP\u-boot\include\configs\nvt-na51055-evb.h

Z:\SunFan\AHD580\pip\na51055_PIP\BSP\u-boot\drivers\mtd\nvt_flash_spi\nvt_flash_spi_cmd.c

自带led引脚电平设置函数

/*      LED function for FW update*/
static void led_set_gpio_high(int operation)
{
	u32 gpio_reg;
	int ofs = NVT_LED_RED_PIN/32;
	int shift = NVT_LED_RED_PIN & 0x1F;

	ofs = ofs*0x4;

	/*Set gpio as high*/
	gpio_reg = INW(IOADDR_GPIO_REG_BASE + 0x20 + ofs);

	#if 0
	if (gpio_reg & (1 << shift))
		RESTORE_GPIO_DIR = 1;
	else {
		gpio_reg |= (1 << shift);
		OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);
	}
	#else
	gpio_reg |= (1 << shift);
	OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);
	#endif

	OUTW(IOADDR_GPIO_REG_BASE + 0x40 + ofs, (1 << shift));

	//LED BLUE
	ofs = NVT_LED_BLUE_PIN/32;
	shift = NVT_LED_BLUE_PIN & 0x1F;
	ofs = ofs*0x4;
	gpio_reg = INW(IOADDR_GPIO_REG_BASE + 0x20 + ofs);
	gpio_reg |= (1 << shift);
	OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);
	OUTW(IOADDR_GPIO_REG_BASE + 0x40 + ofs, (1 << shift));

	#if 0 // do not use delay!!! it will slow down flash erase/program!!!
	/*Config duration*/
	if (operation)
		mdelay(NVT_LED_PROGRAM_DURATION);
	else
		mdelay(NVT_LED_ERASE_DURATION);
	#endif
}

static void led_set_gpio_low(void)
{
	//u32 gpio_reg;
	int ofs = NVT_LED_RED_PIN/32;
	int shift = NVT_LED_RED_PIN & 0x1F;

	ofs = ofs*0x4;
	/*Set gpio as low*/
	OUTW(IOADDR_GPIO_REG_BASE + 0x60 + ofs, (1 << shift));

	//LED BLUE
	ofs = NVT_LED_BLUE_PIN/32;
	shift = NVT_LED_BLUE_PIN & 0x1F;

	ofs = ofs*0x4;
	OUTW(IOADDR_GPIO_REG_BASE + 0x60 + ofs, (1 << shift));

	#if 0
	/*Force gpio direction as original config*/
	if (!(RESTORE_GPIO_DIR)) {
		gpio_reg = INW(IOADDR_GPIO_REG_BASE + 0x20 + ofs);
		gpio_reg &= ~(1 << shift);
		OUTW(IOADDR_GPIO_REG_BASE + 0x20 + ofs, gpio_reg);
		RESTORE_GPIO_DIR = 0;
	}
	#endif
}

在spiNand_programPage和nand_cmd_erase_block里面进行计数电平翻转

相关推荐

  1. 【工作记录】AQS学习笔记

    2024-06-07 23:26:02       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-07 23:26:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-07 23:26:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-06-07 23:26:02       87 阅读
  4. Python语言-面向对象

    2024-06-07 23:26:02       96 阅读

热门阅读

  1. Python微服务架构的15个设计模式

    2024-06-07 23:26:02       25 阅读
  2. vue组件之间的通信方式有哪些

    2024-06-07 23:26:02       27 阅读
  3. 深入理解 Linux 命令 `autom4te`

    2024-06-07 23:26:02       24 阅读
  4. XSS Challenges 闯关游戏环境准备:深入指南

    2024-06-07 23:26:02       30 阅读
  5. 安全测试 之 安全漏洞 :XSS

    2024-06-07 23:26:02       24 阅读
  6. 【杂记-浅谈XSS跨站脚本攻击】

    2024-06-07 23:26:02       32 阅读
  7. XSS 跨站脚本攻击预防(文件上传)

    2024-06-07 23:26:02       30 阅读
  8. cpprestsdk https双向认证小测

    2024-06-07 23:26:02       32 阅读
  9. Qt 中QList、QListIterator 、QMutableListIterator、QMap用法

    2024-06-07 23:26:02       28 阅读
  10. gitleb详细的搭建步骤

    2024-06-07 23:26:02       34 阅读
  11. Tomcat 启动闪退问题解决方法

    2024-06-07 23:26:02       28 阅读
  12. 负载均衡加权轮询算法

    2024-06-07 23:26:02       29 阅读
  13. Nginx 实战-03-nginx 负载均衡

    2024-06-07 23:26:02       30 阅读
  14. Spark大数据 Spark运行架构与原理

    2024-06-07 23:26:02       32 阅读
  15. cesium 之 flyTo、setView、lookat

    2024-06-07 23:26:02       29 阅读