[嵌入式Linux] 海思HI3518Ev200平台uboot设置GPIO默认输出

[复制链接]
 楼主| everbright 发表于 2018-7-14 15:42 | 显示全部楼层 |阅读模式
本帖最后由 everbright 于 2018-7-14 21:13 编辑

最近由于项目需要,开始用海思的Hi3518ev200平台,做一个扫二维码的设备;产品要求刚加电时,一些IO口必须立即置为要求的电平状态,否则产品可能不正常。这就要求在刚进入uboot时就必须置为要求状态,如果等到内核启动了为时已晚。

从这个平台uboot的启动流程可知,它的初始化要从uboot源码目录下 board/hi3518ev200/board.c开始,所以从这个文件里设置好电平状态即可。

知道了从那启动,那么下面就着手写代码了。要设置一个GPIO口的输出,需要正确设置引脚复用状态,引脚输入输出状态,然后再置引脚电平就可以了,我们这里需要设置gpio7_6和gpio0_1为高电平输出,即输出1。下面记录下是怎么做的

阅读datasheet“Hi3518EV20X/Hi3516CV200经济型HD IP Camera Soc用户指南”,了解相应的寄存器:

一、找到引脚复用寄存器使命召唤,并找到要用到的gpio的对应寄存器

       二,找到GPIO 寄存器对应的基地址及功能寄存器

三、代码如下:


  1. void gpio_muxctrl_config(unsigned long muxctrl_reg, unsigned int value)
  2. {
  3. unsigned long base;

  4.         base        = IO_CONFIG_REG_BASE+muxctrl_reg;
  5.         __raw_writel(value, base);  
  6. }

  7. void gpio_dir_config(unsigned long gpio_base, unsigned char gpio_offset, unsigned char flag)
  8. {
  9. int value;
  10. unsigned long base;

  11.         base        = gpio_base+GPIO_DIR;                //direction reg offset addr is 0x400
  12.         value = __raw_readl(base);  
  13.         if(flag)
  14.         {
  15.                 value |= (1 << gpio_offset);
  16.         }
  17.         else
  18.         {
  19.                 value &= ~(1 << gpio_offset);
  20.         }
  21.         __raw_writel(value, base);  
  22. }
  23. void gpio_output_set(unsigned long gpio_base, unsigned char gpio_offset, int value)
  24. {
  25. unsigned long base = gpio_base + (1 << (gpio_offset + 2));                /* PADDR[9:2]分别对应 GPIO_DATA[7:0]*/
  26. unsigned long  l;  
  27. unsigned long flags;  
  28.   
  29.     l = (__raw_readl(base) & (~(1 << gpio_offset))) | (!!value << gpio_offset);  
  30.     __raw_writel(l, base);  

  31. }

完整的代码

https://download.csdn.net/download/everbright6666/10541200


欢迎交流,qq:243691732 神仙哥哥

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:/**************个人信息***********/ //联系人:韩先生, //QQ:243691732 //手机:13933870954 /////////////

22

主题

109

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部