遇到一个问题是与gpio的上拉失效有关。

先看一下我的问题描述和解决过程

关于反复重启1000整机设备,出现PXM板卡启动失败的现象问题描述:
通过当时记录的串口信息,最开始的异常出现在sdk加载上,sdk加载失败后内核打印localbus的错误,设备重启后ubi挂载失败
/home下程序丢失问题分析:
P1020 cpu中的localbus是e500核与外围控制器的通道,与ram,nand都有连接, nand控制器使用的总线是localbus分出的一部分,
在switch异常,PCIe挂载不上switch的时候,sdk加载可能造成localbus异常,导致nand写入异常数据实验现象:
修改uboot,在switch复位附近添删打印或加减延时,不改变原有流程,可复现问题
问题复现后发现复位switch的gpio15为0,即switch处于一直复位状态
经过进一步验证,gpio15有概率无法拉高,即拉低之后拉高没有生效
初步判断gpio15的问题可能与拉低之后延时20ms时间不够长有关(因为在命令行中可手动拉高)
也可能与芯片相关,但其他gpio未发现有这个现象。现象1.添加不必要的打印或延时,一旦出现switch复位后gpio15无法拉高(复位异常),无论断电或重启,仍然出现switch复位异常
现象2.添删不必要的打印或延时,如果switch复位后gpio15可以拉高(复位正常),无论断电或重启, switch复位正常在正式版本v001r001上未复现出问题,判断与现象2相同,但在特殊情况下,如高低温环境或较多次重启有概率出现gpio15拉高没有生效的情况正式版本中switch的复位过程:
配置gpio15输出->配置gpio15拉低->延时20ms->配置gpio15拉高
优化:
配置gpio15输出->配置gpio15拉低->延时20ms->配置gpio15拉高->配置gpio15输入
gpio15外部电路是拉高的,可以避免gpio15拉高失败造成switch一直复位

实际上,原因就在使用gpio拉低复位后,拉高没有生效,程序里确实正确的写了寄存器,实际上gpio还是低的

导致了后续的更严重的问题

这算是一个芯片的bug吧,通过配置成输入,外部加上拉规避。

另附实验中学到的知识点

1、gpio odr寄存器对gpio value的影响

配置gpio的odr

当odr为0 推挽   gpio可迅速上拉

当odr为 1 开漏   gpio可缓慢上拉,导致上拉完立刻打印的数据不准确

2、不管gpio配置成输入输出,data寄存器读出的数据与示波器相同(仅使用P1020芯片)

gpio上拉失效问题相关推荐

  1. 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出的区别,以STM32为例)

    目录 前言 GPIO是什么 GPIO的八大模式 输入模式 浮空输入 上拉输入 下拉输入 模拟输入 输出模式 开漏输出 推挽输出 复用开漏输出 复用推挽输出 GPIO的输出速率 前言 学习了这么久的单片 ...

  2. gpio上拉下拉区别

    gpio上拉下拉区别 GPIO是一颗芯片(MCU)必须具备的最基本外设功能. GPIO通常有三种状态:高电平.低电平和高阻态.高阻态换句话说就是断开状态或浮空态.因此上拉和下拉其中一个强大的理由就是为 ...

  3. 鸿蒙开发板hi3861 hispark code 2.0 canary金丝雀版本,gpio如何上拉电阻呢?

    鸿蒙开发板hi3861 hispark code 2.0 canary金丝雀版本,gpio如何上拉电阻呢? code 2.0 LTS支持,canary没有这个功能呢 IoSetPull(WIFI_IO ...

  4. wringPi 初始化GPIO 为上拉_你彻底弄清GPIO内部结构和各种模式了吗?

    据说能将处理器的GPIO(General Purpose Input and Output)内部结构和各种模式彻底弄清楚的人并不多?那现在就让多一点 GPIO的功能,简单说就是可以根据自己的需要去配置 ...

  5. wringPi 初始化GPIO 为上拉_GPIO接口

    //阅读完大约10min //本文中的正文,改编自以下链接评论,由于非常全面明晰,所以我将之采纳. STM32的I/O口的8种工作模式-OpenEdv-开源电子网​www.openedv.com 前言 ...

  6. 解决git pull 命令失效,不能从远程服务器上拉取代码问题

    解决git pull 命令失效,不能从远程服务器上拉取代码问题 参考文章: (1)解决git pull 命令失效,不能从远程服务器上拉取代码问题 (2)https://www.cnblogs.com/ ...

  7. LPC1768的P0.27,P0.28管脚作为GPIO口输出需要外接上拉电阻才能输出高电平

    实验证明LPC1768的P0.27管脚不能作为GPIO口输出,配置为高电平时总是输出为低电平,不知道为什么! GPIO 引脚 P0.29 和 P0.30 与 USB D+/-引脚共用,并且具有相同的方 ...

  8. TI芯片GPIO的内部上拉

    TI的DSP芯片,GPIO的内部上拉在默认情况下是使能的(能够配置为PWM输出的GPIO除外,这类GPIO默认情况下内部上拉被禁用).对于在默认情况下内部上拉被使能的GPIO来说,有些情况下,需要对其 ...

  9. GPIO口配置为上拉,下拉输入

    每个gpio内部有三种状态:上拉.下拉.不拉. 什么时候,需要选择上拉.下拉或不拉呢 1. 如果是output,那个一般选择no pull,这样,引脚才能根据你的output数据,进行正确输出. 2. ...

最新文章

  1. Vue里标签嵌套限制问题解决------解析DOM模板时注意事项:
  2. 计算机课例,计算机的基本组成教学课例
  3. cmd的rd命令简单解析
  4. 数据结构题:由逆置数组方法——逆置线性表L的所有元素
  5. 3. Recursive AutoEncoder(递归自动编码器)
  6. mysql数据库连接时区设置_springboot 连接数据库之时区设置
  7. LeetCode1. 两数之和
  8. ECharts整合HT#160;for#160;Web的网络拓扑图应用
  9. 新建maven的pom.xml第一行出错的解决思路
  10. Python核心编程-第2章-网络编程(1)
  11. html中模板引擎—前端与后端
  12. 九度OJ1451题-信封错装
  13. 关于在win8下开发c或者c++时,某些特殊情况
  14. php paypal网站对接,php 接入 paypal 支付
  15. 2014年9月16日----暴风影音笔试题
  16. 如何清空c盘只剩系统_win7系统怎么把C盘里垃圾清除干净,只保留系统文件。
  17. python 排列组合函数_python排列组合
  18. c语言水仙花数7位数,C语言水仙花数的实现
  19. 文具行业调研报告 - 市场现状分析与发展前景预测
  20. 手把手教你搭建Hexo博客

热门文章

  1. 详解迭代器的 fail-fast 与 fail-safe 机制
  2. 服务器安全神器,Linux 上安装 Fail2Ban 保护 SSH
  3. 互联网巨头“死磕”不放弃的社交赛道还有生意吗?
  4. 总结——STM32F103C8T6通过MAX31865读取PT100电阻值
  5. 4只鸭子在同一个圆圈内游泳,问:4只鸭子出现在同一个半圆内的概率是多少?Python解答
  6. 四象限工作法:四象限时间管理法则及四象限工作法软件
  7. 网红“小红书”,电商销售新模式
  8. 日历---C++封装一个Date类,Calendar类,实现简单的日历+日期计算器程序
  9. 单人扑克游戏:地城恶棍的Python实现(附实现代码)
  10. mysql获取年月日周季度