本文主要是介绍在BootLoader中使用gpio--获取gpio的高低电平,以及设置相应的管脚的电平高低,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
以下以rv1108平台为例:
在项目中,需要实现一个功能,在Linux kernel加载前BootLoader判断一个引脚电平的高低状态,从而决定加载不同的kernel,以及相应的文件系统,以实现双系统的功能。
//判断按键的电平高点状态:
#if 1//set gpio3_a4's direction intputu32Reg = read_XDATA32(0x10330000 + 0x0004);u32Reg &= ~0x10;write_XDATA32(0x10330000 + 0x0004, u32Reg);//read levelu32Reg = read_XDATA32(0x10330000 + 0x0050);uint32 level = (u32Reg & 0x10);if(level){boot_sys_flg = 1;PRINT_E("now gpio pin is high\n", "");}else{boot_sys_flg = 0;PRINT_E("now gpio pin is low\n", "");}
#endif
//根据按键的不同状态,决定不同的kernel的加载地址:
if(boot_sys_flg==0)
{kernel_addr = KERNEL_PART_A;PRINT_E("now is load KERNEL_PART_A\n", "");
}
else
{kernel_addr = KERNEL_PART_B;
这篇关于在BootLoader中使用gpio--获取gpio的高低电平,以及设置相应的管脚的电平高低的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!