Uboot USB模式(RK3288變磚頭的解決辦法)

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397614.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397614.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397614.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java郵件實例_java郵件小實例

新建一個包&#xff0c;名為mail第一個類&#xff1a;MailSenderInfo.java###########################################package com.util.mail;/*** 發送郵件需要使用的基本信息*author by wangfunhttp://www.5a520.cn 小說520*/import java.util.Properties;public class Mai…

DEV GridView嵌套

/// <summary> /// 綁定主表和明顯表到GridView /// </summary> /// <param name"machineProduct">主表</param> /// <param name"configureData">字表</param> private void Mas…

局域網大型文件分發的可能解決方案

客戶原來的做法是把文件上傳到服務器&#xff0c;然后后形成一個普通的HTTP地址下入網站后臺系統&#xff0c;然后客戶端用戶看到后&#xff0c;則下載下來。但是隨著文件越來越大&#xff0c;客戶端下載量增加&#xff0c;在局域內網環境中這種文件分發方式的弊端立現。服務器…

android——獲取ImageView上面顯示的圖片bitmap對象

獲取的函數方法為&#xff1a;Bitmap bitmapimageView.getDrawingCache(); 但是如果只是這樣寫我們得到的bitmap對象可能為null值&#xff0c;正確的方式為&#xff1a; imageView.setDrawingCacheEnabled(true);Bitmap bitmapimageView.getDrawingCache();imageView.setDrawin…

java監聽com口_簡單了解Java接口+事件監聽機制

1.接口&#xff1a;定義方法&#xff1a;public interface interName //extends interName2, interName3...可繼承多個接口在接口里只能定義常量和抽象方法。public static final String Name;public abstract void method(String Name);//這里不能用大括號&#xff0c;不然就不…

例子:好友列表選中效果

<style type"text/css"> *{ margin:0px auto; padding:0px; font-family:微軟雅黑; font-size:16px;} .f{ width:200px; height:30px; background-color:#63C; color:white; text-align:center; line-height:30px; vertical-align:middle; margin-top:3px} .f:…

sublime 常用插件

AutoFileName 文件提示路徑&#xff0c;在img,script的[src]屬性。link,a的[href]屬性&#xff0c;background 的[url]屬性后提示文件的路徑 CSS Format css格式化工具 Pretty JSON json格式化工具轉載于:https://www.cnblogs.com/zhangtao1990/p/9231608.html

有一句說一千句,是作家....

有一句說一千句&#xff0c;是作家&#xff0c;這叫文采&#xff1b;有一句說一百句&#xff0c;是演說家&#xff0c;這叫口才&#xff1b;有一句說十句&#xff0c;是教授&#xff0c;這叫學問&#xff1b;有一句說一句&#xff0c;是律師&#xff0c;這叫嚴謹&#xff1b;說…

java jsoup爬取動態網頁_java通過Jsoup爬取網頁(入門教程)

一&#xff0c;導入依賴org.jsoupjsoup1.10.3org.apache.httpcomponentshttpclient二&#xff0c;編寫demo類注意不要導錯包了,是org.jsoup.nodes下面的package com.taotao.entity;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResp…

Java設計模式之七大結構型模式

總體來說設計模式分為三大類&#xff1a;創建型模式、結構型模式和行為型模式。 結構型模式&#xff0c;共有七種&#xff1a;適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。 其中適配器模式主要分為三類&#xff1a;類的適配器模式、對象的適配…

一個Option請求引發的深度解析

在當前項目中&#xff0c;前端通過POST方式訪問后端的REST接口時&#xff0c;發現兩條請求記錄&#xff0c;一條請求的Request Method為Options&#xff0c;另一條請求的Reuest Method為Post。想要解決這個疑惑還得從以下3個概念說起。 Http Options Method RFC2616標準&#x…

ionic+AnjularJs實現省市縣三級聯動效果

建議對ionic和AnjularJs有一定了解的人可以用到&#xff0c;很多時候我們要用到選擇省份、城市、區縣的功能&#xff0c;現在就跟著我來實現這個功能吧&#xff0c;用很少的代碼&#xff08;我這里是根據客戶的要求&#xff0c;只顯示想要顯示的部分省份和其相對應的城市、區縣…

md5和SHA校驗碼

md5已經不安全了,中國山東大學女學霸王小云破解了一系列密碼,當真是巾幗不讓須眉.說是破解,其實就是給你一個md5碼,讓你求出這個md5碼所對應的原始信息,顯然一個md5對應無數種原始信息.而md5的特性就是難以還原初始信息,但是王小云可以迅速找到給定md5碼的可行解.md5的解空間雖…

Confluence 6 附件存儲文件系統的分級

從 Confluence 3.0 開始&#xff0c;附件的存儲方式有了重大的改變和升級。如果你是從 Confluence 2.10 及其早期版本升級上來的&#xff0c;請參考 Upgrading Confluence 頁面中推薦的升級路徑&#xff0c;同時請閱讀 Confluence 3.0 文檔中 Hierarchical File System Attachm…

Fragment與Activity交互(使用接口)

在Fragment中: 1. // 定義一個回調接口&#xff0c;該Fragment所在Activity需要實現該接口// 該Fragment將通過該接口與它所在的Activity交互 { public void onItemSelected(Integer id);}2. // 當該Fragment被添加、顯示到Activity時&#xff0c;回調該方法 public void onA…

java保齡球計分_自己寫的java保齡球記分

package com.java.bowlingscore1;import java.util.Arrays;public class Game { int[] bowlingScore new int[21]; //用來存放投擲擊倒的數目 int ball0; //數組下標 int score;//分數 int countframe0;//記錄當前是第幾輪 boolean firs…

你不知道的JavaScript-0

【數組】 刪除數組的幾種方法&#xff1a; https://www.cnblogs.com/Joans/p/3981122.html http://www.cnblogs.com/qiantuwuliang/archive/2010/09/01/1814706.html 【數字轉換】 parseInt(num, radix): 【寬松相等和嚴格相等】 允許在相等比較中進行強制類型轉換&#xff0c…

真是,原來可以這樣啊

一下午&#xff0c;解決了兩個問題。。。。。 先列上這兩個真是Bug的問題&#xff1a; 1、數據庫有個表book&#xff0c;里面有個字段 create_time Datetime類型的字段&#xff0c;這個字段是 not null 的。下午下代碼往數據庫里插入數據時&#xff0c;總是提示&#xff0c;cre…

1026. Table Tennis (30)

題目如下&#xff1a; A table tennis club has N tables available to the public. The tables are numbered from 1 to N. For any pair of players, if there are some tables open when they arrive, they will be assigned to the available table with the smallest numb…

java運行時異常中文_JAVA——運行時異常(RuntimeException)

Exception中有一個特殊的子類異常RuntimeException運行時異常。如果在函數內拋出該異常&#xff0c;函數上可以不用聲明&#xff0c;編譯一樣通過。如果在函數上聲明了該異常。調用者可以不用進行處理。編譯一樣通過。之所以不用在函數上聲明&#xff0c;是因為不需要讓調用者處…