RK3288启动后有三种模式,可以分别进行操作。

第一种是normal也就是正常的启动模式。这个模式无法刷固件。一般板子通电就是这个模式

第二种是loader模式。就是刷固件模式。这个模式可以刷各种image。按住recover按键再通电,通过uboot的检测进入这个模式

第三种是MASKROM模式。这种模式用于拯救砖头机器。比如bootloader无法启动。无法进入loader正常下载。需要通过在板子上找对应的T13 C155 焊点,短接后通电,进入MASKROM模式,这些点需要问板子的生产商。 也可参考链接:http://www.t-firefly.com/doc/product/info/287.html

对于模式的检测是在uboot里面进行的。如果uboot执行有问题。没法进入loader模式,就需要进入maskrom模式。检测的代码在uboot的board_late_init->board_fbt_preboot->board_fbt_key_pressed->checkKey() 根据按键的结果确定接下来执行哪一步。checkKey通过配置数据使用GetPortState函数得到是否有按键。

配置的内容如下

RockusbKeyInit中

key->type = KEY_AD;
key->key.adc.index = KEY_ADC_CN;
key->key.adc.keyValueLow = 0;
key->key.adc.keyValueHigh= 30;
key->key.adc.data = SARADC_BASE;
key->key.adc.stas = SARADC_BASE+4;
key->key.adc.ctrl = SARADC_BASE+8;

#define SARADC_BASE             RKIO_SARADC_PHYS

在io-rk3288.h中

#define RKIO_SARADC_PHYS                0xFF100000
#define RKIO_SARADC_SIZE                SZ_64K

接下来就是到芯片手册中看资料了

http://rockchip.fr/RK3288%20TRM/

http://wiki.t-firefly.com/index.php/Firefly-RK3288/RK3288_TRM

三通道的模拟信号转数字信号

Rockchip RK3288TRM V1.0 Technical Reference Manual.pdf

可以看到地址FF100000是SAR-ADC的基地址

内存地址从0-FF100000 16M-4GB大小

key->key.adc.index = 1;  key->key.adc.keyValueLow = 0;  key->key.adc.keyValueHigh= 30;  key->key.adc.data = SARADC_BASE;  key->key.adc.stas = SARADC_BASE+4;  key->key.adc.ctrl = SARADC_BASE+8;
typedef struct
{  uint32  index;  uint32  keyValueLow;  uint32  keyValueHigh;  uint32  data;  uint32  stas;  uint32  ctrl;
}adc_conf;  

对照SAR-ADC源码进行解析:

for(tt = 0; tt < 10; tt++)
{  // read special gpio port value.
    uint32 value;  uint32 timeout = 0;  /* 控制寄存器清零 初始化状态 */  write_XDATA32( adc->ctrl, 0);  DRVDelayUs(1);  /* 写入 0x0028| 1=0x29 第0 3 5 bit为1 0:2为001 表示选择输入源 Input source 1 (SARADC_AIN[1]) 第3bit为1 表示ADC电源启动 第5bit为1 表示开启中断 */  write_XDATA32( adc->ctrl, 0x0028|(adc->index));  DRVDelayUs(1);  do {  /* 接下来读取控制寄存器如果第6bit为0那么持续读取,直到第6bit为1 6bit是中断状态位,当转换结束以后会被设置为1,设置为0表示清除中断 */  value = read_XDATA32(adc->ctrl);  timeout++;  } while((value&0x40) == 0);  /* 前面的操作就是设置好输入源开启中断这些并开始转换。 然后等待转换结束 使用read_XDATA32(adc->data)读取数据 adc->data得到的是最后一次AD转换的值 */  value = read_XDATA32(adc->data);  //printf("adc key = %d\n",value);  //DRVDelayUs(1000);  /* 如果最后一次AD转化的值处于keyValueLow和keyValueHigh之间。 表明电源被接通。计数器+1 keyValueLow和keyValueHigh控制着不同的按键类型? */  if( value<=adc->keyValueHigh && value>=adc->keyValueLow)  hCnt++;
}
/*
清空初始化状态
如果10次里面有8次接通,那么说明电源按钮被按下。返回1
*/
write_XDATA32( adc->ctrl, 0);
return (hCnt>8)  

总之根据keyValueHigh和keyValueLow检测完不同的按键后就根据这些按键做对应的操作。比如进入loader模式还是normal模式

如果进入的是rockusb那么执行 do_rockusb(NULL, 1, 0, NULL)

参考复制自:https://blog.csdn.net/groundhappy/article/details/56280576

转载于:https://www.cnblogs.com/debruyne/p/9225730.html

Uboot USB模式(RK3288变砖头的解决办法)相关推荐

  1. 使用webpack打包后,vscode中vue代码变白色的解决办法

    使用webpack打包后,vscode中vue代码变白色的解决办法 卸载vetur,重装vetur

  2. Windows10 关于系统中断CPU占用过高导致电脑变卡的解决办法

    Windows10 关于系统中断CPU占用过高导致电脑变卡的解决办法   最近一段时间笔记本一直很卡,不管打开几个程序,任务管理器中总会有CPU占用80%以上,这一度让我抓狂,开始网上搜教程,然后开始 ...

  3. 重装系统后网速变慢的解决办法

    重装系统后网速变慢的解决办法 2011-07-27 18:40 来源:http://www.ijinshan.com/zt/ws_zbqdxz.shtml 摘要:在系统遇到难以修复的问题或运行缓慢时, ...

  4. Microsoft Office Word 2007 文档结构图突然变小的解决办法

    前记: 一个word文档不知道修改了什么,突然发现文档结构图显示的文字变得非常的小了. 用ctrl+鼠标滚轮只能放大或是缩小行间距,对文字没有什么变化. 解决办法: 1.打开文档结构图 点击视图,勾选 ...

  5. USB接口键盘不能使用故障解决办法

    公司最近买的很多DELL电脑都是配置的USB接口的键盘与鼠标,但最近发现有好些电脑启动进系统后键盘都不能使用.其在开机检测时是可以正常使用的,只是进入系统后不行.后来打电话咨询DELL技术支持,才明白 ...

  6. 计算机前置usb应用,电脑前面usb不能用的原因及解决办法

    原因: 1.前置USB线接错 2.USB接口电压不足 3.主板和系统的兼容性问题 4.系统或BIOS问题 5.可能就是系统被人篡改了注册表,使USB设备无法读取 解决办法: 方法一: 1.右键点击 我 ...

  7. win10系统之下字母与数字间隔变大的解决办法

    1.现象 sssss11112222 2.解决办法 原因:是输入法导致的(全/半角转换) 1.shift + 空格解决 如果上述方法没有解决 2. 找到输入法,右键选择设置, 点击 按键 先点击shi ...

  8. 手机通过usu共享给电脑网络(win10),电脑变卡的解决办法

    有些时候电脑没网络,而手机流量充足,我们会选择用手机给电脑通过usb共享网络,最近发现win10系统的电脑,使用共享网络后,电脑会变得很卡,打开软件或者系统设置需要很久才弹出来,在网上查了查发现原因是 ...

  9. iPhone 12屏幕发黄怎么办?拯救屏幕变黄的解决办法!

    转自:https://www.pinlue.com/article/2021/01/1400/0011487039000.html iPhone 12 开卖后就被不少用户吐槽屏幕的色彩比较暖,屏幕变黄 ...

最新文章

  1. php 7 显示错误信息,PHP 7 错误处理
  2. Material Designer的低版本兼容实现(一)—— 简介 目录
  3. cls_template.php on line 1072,博客 – 联发多彩网页技术博客
  4. leetcode511. 游戏玩法分析 I(SQL)
  5. 计算机专业能不能转音乐系,中国音乐学院可以转专业吗,中国音乐学院新生转专业政策...
  6. 轻而易举地激发变革:开放的方法
  7. Fragment懒加载预加载
  8. Redis学习总结(23)——Redis集群化方案对比:Codis、Twemproxy、Redis Cluster
  9. dubbo之服务降级
  10. openjudge1.2
  11. 前端开发中使用build.js完成区分环境的打包配置
  12. 关于WAP技术的介绍
  13. matlab2017a安装出现license checkout failed Error-8
  14. ssd1306.py
  15. 头歌-自己动手画CPU(第五关)-寄存器文件设计-Logisim
  16. 好用的mysql可视化工具_介绍一款免费好用的可视化数据库管理工具
  17. 恭喜Minya Konka获得第一块银牌!
  18. OA的部门管理和员工管理模块的实现总结
  19. 我的世界服务器怎么发全部消息,我的世界服务器指令
  20. nginx+createrepo搭建局域网yum源

热门文章

  1. 遇到attemp to invoke virtual method
  2. 65个漂亮的WordPress博客主题
  3. 使用SDL打造游戏世界之入门篇 - 5
  4. Asp导出到Excel之二
  5. ACM-ICPC北京赛区2017网络同步赛H
  6. ElastciSearch简单总结(笔记)
  7. 批量移动AD用户到指定OU
  8. 《Excel 职场手册:260招菜鸟变达人》一第 13 招 利用数据验证给单元格添加注释,不用批注...
  9. Udi Dahan对于业务逻辑重用以及微服务方面的观点
  10. (转) java 复制文件,不使用输出流复制,高效率,文件通道的方式复制文件