1. 程式人生 > >JZ2440學習筆記,第二部分,移植uboot2015支援JZ2440的nor flash

JZ2440學習筆記,第二部分,移植uboot2015支援JZ2440的nor flash

JZ2440學習筆記

Chili

2015.5

第二部分,移植uboot2015支援JZ2440的nor flash
5,修改uboot支援nor flash
繼續跟著韋老師手冊或者視訊所講的uboot啟動流程走,我們發現nor flash的初始化在檔案u-boot-2015.04-rc4\u-boot-2015.04-rc4-my2440\arch\arm\lib\Board.c 中的函式void board_init_r(gd_t *id, ulong dest_addr)中的flash_init()中進行,層層深入發現uboot判斷如果使用者定義了board_flash_get_legacy函式則採用flash_detect_legacy函式進行nor flash檢測,否則用標準CFI介面進行檢測,我們分別說明。


圖 1 

5.1 legacy檢測nor flash方式
Legacy檢測方式是通過AMD和Intel的標準指令進行nor flash的ID讀取,隨後將讀取的ID跟 u-boot-2015.04-rc4\u-boot-2015.04-rc4-my2440\drivers\mtd\Jedec_flash.c中的jedec_table定義的器件ID進行對比,從而獲取器件資訊,以及該器件對應的讀寫控制指令集。

圖 2 

看JZ2440v2電路圖,我們發現採用的nor flash器件為MX29LV800BBTC(實際採用的nor flash器件應該不是這個,可能是第一版本的,沒有更新過來,發現原因下面來講)
因為我們在jedec_table中發現其實有定義該器件的資訊,但是為何uboot讀不到呢,當我把uboot的Debug開啟,打印出除錯資訊時,發現uboot檢測nor flash ID為0x2249,對應於Jedec_flash.c巨集定義的AM29LV160DB,那麼實際開發板上的nor flash型號應該是這個,害我糾結半天,檢視jedec_table中並沒有器件定義。因此修改如下:

[email protected]:~/uboot/u-boot-2015.04-rc4$ vim drivers/mtd/jedec_flash.c 
在jedec_table中新增以下結構,這是拷貝jedec_table後面的MX29LV800BBTC結構資訊並進行修改的(注意不要在條件編譯裡面定義,否則可能還是未定義,建議放在table的第一個元素出,便於檢視)
{
.mfr_id = (u16)MX_MANUFACT,
.dev_id = AM29LV160DB,
.name = "AM29LV160DB",
.uaddr = {
[0] = MTD_UADDR_0x0555_0x02AA
},
.DevSize = SIZE_2MiB,

.CmdSet = CFI_CMDSET_AMD_LEGACY,
.NumEraseRegions= 4,
.regions = {
ERASEINFO(0x10000, 15),
ERASEINFO(0x08000, 1),
ERASEINFO(0x02000, 2),
ERASEINFO(0x04000, 1),
}
},

圖 3 

儲存更改,再次make
[email protected]:~/uboot/u-boot-2015.04-rc4$make
編譯成功,將生成uboot.bin燒寫進開發板,重啟,列印如下:


圖 4 

由列印資訊可知,現在nor flash可以識別了,但是flash大小和扇區數量不對啊,注意採用legacy獲取nor flash資訊引數的來源,這些引數都是根據我們新增進jedec_table表的器件資訊算出來的,但由於我這個器件資訊是在原來1M的MX29LV800BBTC基礎上修改了一個器件ID得來的,因此uboot實際計算出來的資訊就跟MX29LV800BBTC一模一樣了。這種老的方式需要自己實現定義器件資訊,因此不是很靈活,本次也只是讓讀者知道這個原理,legacy檢測nor flash方式也就介紹到這裡,下面介紹一種更加靈活的,也是uboot或者說nor flash今後支援的方向,標準的檢測方式:CFI方式。
5.2 CFI介面檢測方式
CFI大家可自行百度瞭解,簡單說就是nor flash的一種通用介面規範,大家都按照這種規範來生產flash器件,這樣就可以實現一種軟體可以適用於各個不同廠家的flash,進而實現了軟體的複用性,設計上更改flash器件而不需要更改驅動程式,極大的方便了flash驅動的維護工作。
首先根據AM29LV160DB手冊(要學會看手冊哦,那些都是些比較簡單的英語,多看幾遍把主要的單詞記下,以後翻來覆去就是那麼幾個專業詞彙)更改支援的最大扇區數
[email protected]:~/uboot/u-boot-2015.04-rc4$ vim include/configs/smdk2410.h 
修改如下:

圖 5 

修改函式返回值,使uboot採用CFI方式進行nor flash檢測:
[email protected]:~/uboot/u-boot-2015.04-rc4$ vim board/samsung/smdk2410/smdk2410.c 
如圖所示,將返回值改為0即採用CFI方式,return 1就是legacy方式,具體可檢視原始碼,二種方式只能取其一哦。

圖 6

儲存,make again!!
[email protected]:~/uboot/u-boot-2015.04-rc4$ make
編譯成功,燒寫進nor flash,啟動,列印如下:

圖 7

flash大小,扇區都正確,ok,nor flash驅動移植成功。

轉載:http://bbs.csdn.net/topics/391037136

相關推薦

JZ2440學習筆記第二部分移植uboot2015支援JZ2440的nor flash

JZ2440學習筆記Chili2015.5第二部分,移植uboot2015支援JZ2440的nor flash5,修改uboot支援nor flash繼續跟著韋老師手冊或者視訊所講的uboot啟動流程走,我們發現nor flash的初始化在檔案u-boot-2015.04-

JZ2440學習筆記第四部分移植uboot2015支援JZ2440的DM9000

JZ2440學習筆記Chili2015.5第四部分,移植uboot2015支援JZ2440的DM90007,修改uboot支援DM9000Uboot 核心已經支援DM9000網口,先開啟DM9000的驅動看看,因為我們看電路圖知道DM9000通過記憶體介面連到了JZ2440

《Oracle PL/SQL開發指南》學習筆記31——原始碼除錯——函式和過程(第二部分函式)

  1. 命名塊函式原型 [{EDITIONALBE | NONEDITIONALBE}] FUNCTION function_name ( parameter [IN][OUT] [NOCOPY] sql_datatype | plsql_datatype [, parame

MongoDB 學習筆記之 TTL索引部分索引和文本索引

強制 類型 支持 行存儲 pan 事件 搜索 篩選 ext TTL索引: TTL集合支持mongodb對存儲的數據進行失效時間設置,經過指定的時間段後、或在指定的時間點過期,集合自動被mongod清除。這一特性有利於對一些只需要保存一定時間的數據信息進行存儲,比如機器產生

學習筆記TF057:TensorFlow MNIST卷積神經網絡、循環神經網絡、無監督學習

back ide str 描述 com 類別 bat softmax 比例 MNIST 卷積神經網絡。https://github.com/nlintz/TensorFlow-Tutorials/blob/master/05_convolutional_net.py 。Te

12W學習筆記——獨立子查詢更新刪除建立視圖

記錄 date 筆記 獨立 https 清空 名單 sel 方式 查詢的學習進入了最後階段了,接下來我就來介紹一下查詢最後的獨立子查詢。 獨立子查詢基本上都是用SELECT FROM WHERE 三個語句。 例:在學院表、專業表中,查詢人文與管理學院下設各專業的簡稱

python 學習筆記(循環print的幾種寫法操作符)

alt 例如 並且 col str .com 判斷 標準 一起 一、循環( for, while) while循環是指在給定的條件成立時(true),執行循環體,否則退出循環。for循環是指重復執行語句。 break 在需要時終止for /while循環 continue

【大話存儲】學習筆記(八)數據保護

clip 調度員 系統管 區域 工具 管理軟件 安裝 inf 利用 第一章 數據保護 所謂數據保護是指對當前位置上的數據進行備份,不一定是實時的。這樣帶來的好處是如果發生磁盤損壞或者說被修改了,可以通過備份數據找回 1.1 文件級備份 文件級備份:將磁盤上所有文件通過調用文

【大話存儲】學習筆記(一)磁盤

關註 安裝程序 參數 使用 tle 外部 相互 瓶頸 代碼 第一章 計算機的IO世界 1.1 總線 1.1.1 總線的概念 計算機中所有的IO都通過共享總線的方式來實現。 總線實際上就是一條或多條的物理導線。密密麻麻的印到電路板上,而且為了避免高頻振蕩的幹擾,一般都會分組

Python培訓知識總結系列- 第二章Python數據結構第二部分字符串拼接

拼接 連接 pytho 適用場景 必須 不可 第二章 但是 通過 python字符串連接的三種方法及其效率、適用場景詳解python字符串連接的方法,一般有以下三種:方法1:直接通過加號(+)操作符連接website=& 39;python& 39;+&am

kubernetes學習筆記(四)kube-dns搭建

try ssl highlight 記錄 原因 ali html edi dff 此為記錄,借鑒博客園多位高手的文章 1、鏡像準備 docker.io/redis:latest 1a8a9ee54eb7 r

yii學習筆記(5)視圖操作

this 添加 func 創建 fun brush 視圖 urn AS 在控制器調用$this->render()方法來輸出視圖 function actionLogin(){ $name = "admin";    // 加載視圖 return $

Linux學習筆記5用戶組和權限

方式 無法 表示 組密碼 保存 pan upa 1.2 chmod u+s 1.用戶和組 1.1常用的幾個文件: /etc/passwd 用戶信息文件 /etc/shadow 用戶密碼文件 /etc/group 用

小白讀《HTML5權威指南》第二部分HTML元素

地址:http://note.youdao.com/noteshare?id=ca45c17e98435e0a6095f05bd7e7f565 下面是直接複製貼上過來的,沒有圖片和亂版了。 HTML5元素背景基本知識 1.語義與呈現分離 ①HTML5中的一大主要變化是基本信念方面的:

[Linux學習筆記]linux截圖截圖

[Linux學習筆記]截圖,截圖 我的小筆記本用的是Lubuntu,一個輕量級Ubuntu,而我想記錄學習Lubuntu的一些步驟什麼的,需要截圖 可是我是單系統,沒有qq,所以不能使用qq快捷鍵 就去找了一下linux的截圖程式 Ubuntu等 Ubuntu的相關版本

吳恩達機器學習筆記(一)含作業及附加題答案連結

吳恩達機器學習筆記(一) 標籤(空格分隔): 機器學習 吳恩達機器學習筆記一 一機器學習簡介 機器學習的定義 監督學習 非監督學習

大資料分析學習筆記(Z檢驗分類器以及Association Rule)

大資料分析學習筆記(Z檢驗,分類器以及Association Rule) Task 1 – Hypothesis Testing To improve student learning performance, a teacher developed two new learning app

fast.ai 深度學習筆記:第一部分第二

原文:Deep Learning 2: Part 1 Lesson 2 作者:Hiromi Suenaga 論壇 筆記本 回顧上一課 [01:02] 我們使用 3 行程式碼來構建影象分類器。 為了訓練模型,需要在PATH下以某種方式組織資料(在本例中為data/do

MySQL學習筆記05(redismongoDB)

一、python遠端操作 redis 1.1 前提準備 1、安裝redis第三方庫 pip install redis 2、修改配置檔案 vim redis.conf 註釋掉/bind中:bind 127.0.0.1 (ip) 修改/protected: