亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        U-boot中自動檢測內存容量機制的設計

        2014-12-02 11:11:34
        關鍵詞:機制內容

        (杭州電子科技大學微電子CAD研究所,浙江 杭州310018)

        0 引 言

        U-boot是目前被廣泛采用并支持數(shù)十種cpu 架構和400 多種開發(fā)板的開源系統(tǒng)[1],被許多學者和公司用于研究和學習,并添加自己編寫的代碼到u-boot中,如輕量級安全TFTP 協(xié)議的研究[2]。但是U-boot 只是給具體架構的cpu 編寫配置內存代碼,無法判斷內存的大小配置是否正確,不具備自動檢測系統(tǒng)內存容量的機制。由于不同的系統(tǒng)所使用的內存不同,而大多數(shù)系統(tǒng)的解決辦法是在U-boot中配置適合自己系統(tǒng)的這一型號的內存。有的在cpu_init.S 文件中增加了適合TQ6410系統(tǒng)的內存識別功能和合適的配置,并沒有介紹在不知內存容量的情況下是如何獲得內存容量[3]。有的介紹了內存的分布,卻沒有實現(xiàn)在不同內存容量的條件下U-boot 還能運行的功能[4]。如果將這些U-boot 用到其他不同內存的系統(tǒng)中就無法工作,這導致對U-boot 移植的難度增加了,同時也增加了開發(fā)時間并降低了應用的廣泛度,基于這一背景,本文介紹了一種自動檢測內存容量的機制,根據(jù)檢測的結果重新配置參數(shù),實現(xiàn)了在不同內存的系統(tǒng)中都可以正常運行和引導操作系統(tǒng)的功能。

        1 自動檢測內存容量的方法

        目前絕大多數(shù)處理器包括arm系列支持外接兩片16/32位的存儲器。處理器上電后,初始化內存控制器,外設存儲器就會映射到處理器內部邏輯空間。自動檢測內存容量機制是先假定一個實際內存大小,然后根據(jù)這一假設進行內存控制器的配置,接著對存儲空間進行訪問,根據(jù)反饋的信息驗證假設是否成立,如果不成立進行下一個假設,直至假設成立。本文以三星S3C6410為例進行說明,S3C6410支持兩片外接16/32位的存儲器,最大內存為256 MB。首先假設內存是256 MB,并配置DRAM控制器為256 MB 內存的參數(shù)。如果內存是128 MB,會出現(xiàn)一種現(xiàn)象:由于XM1_ADDR[13]沒有連接,DDR內存的第1個32 MB和第2個32 MB 存儲的內容對應相同,第3個32 MB和第4個32 MB 存儲的內容對應也是相同,根據(jù)這一現(xiàn)象可以推斷,一共有2 對相同大小的存儲空間的內容互相對應相同。如果內存容量是64 MB,也會有類似的現(xiàn)象:DDR 內存的第1個16 MB、第2個16 MB、第3個16 MB和第4個16 MB 存儲的內容對應是相同的;第5個16 MB、第6個16 MB、第7個16 MB和第8個16 MB 存儲的內容對應也是相同的,也是2 對相同大小的存儲空間的內容互相對應相同。如果XM1_ADDR[13]位連接,內存是256 MB 容量時,沒有出現(xiàn)大段內容互相相同的現(xiàn)象。驗證這種現(xiàn)象,便能檢測出連接的內存容量。以128 MB的內存為例,在U-boot中向內存的第1個32 MB的0x0 地址寫一個32 bit的特殊數(shù)據(jù)0xdeadbeef,接著讀取第2個32 MB 對應的偏移內存地址的內容,假如讀取的數(shù)據(jù)和寫的數(shù)據(jù)相同,便說明這兩個內存段對應的內容相同。為了避免特殊性(這兩個地址的數(shù)據(jù)本身就是一樣的),向第2個32 MB的同一地址處寫入另一個數(shù)據(jù)0xbeefdead,接著讀取第1個32 MB 對應的偏移內存地址的內容,假如讀寫的數(shù)據(jù)相同,便證明這兩個內存段對應的內容相同。

        2 自動檢測內存容量機制的實現(xiàn)

        對于OK6410,128 MB 內存用的是兩片K4X51163PC 芯片構成一個128 MB的內存;256 MB 內存用的是兩片K4X1G163PC 芯片構成一個256 MB的內存。地址線連接如下:

        1)128MB 容量的內存。XM1_ADDR[15∶14]([ba1∶ba0]):XM1_ADDR[12∶0](row addr):XM1_ADDR[9∶0](column addr)。XM1_ADDR[15∶14]是芯片選擇位,與13位行地址和10位列地址組成尋址為128 MB的內存;

        2)256MB 容量的內存。XM1_ADDR[15∶14]([ba1∶ba0]):XM1_ADDR[13∶0](行地址):XM1_ADDR[9∶0](列地址)。XM1_ADDR[15∶14]也是是芯片選擇位,與14位行地址和10位列地址組成尋址為256 MB的內存;

        內存映射后,如果檢測的結果和假設的不同,則要對S3C6410的內存控制器進行重新配置。配置程序要放在啟動代碼的前4 kB(cpu 片上內存)中,不能放在DDR中,因為內存控制器重新配置后會使得內存無法正常運行。所以配置程序必須存儲在U-boot 把自己復制到內存之前的位置,存儲在cpu_init.S 文件中能夠很好地解決這一問題。cpu_init.S 文件中的內存初始化函數(shù)mem_ctrl_asm_init 對DRAM控制器和DDR 做了初始化。識別內存的關鍵代碼如下:

        0x50000000是第1個32 MB的起始地址,0x52000000是第2個8 M×32 bit的起始地址,對這個兩個地址進行讀寫,先讀它們的內存值,如果內存值不一樣,說明這兩個區(qū)域不是鏡像,進入內存識別后的函數(shù)mem_rec_end 中處理下一步。但是這兩個內存值相同這還不能說明內存是128 MB,因為存在這兩個值本身就是相同的情況。繼續(xù)進行檢查分析,將一個比較特殊的數(shù)0xdeadbeef 寫到地址0x50000000,接著讀地址0x52000000,如果地址的內容相同,就證明這兩個區(qū)域是鏡像的,從而證明內存是128 MB,否則就是256 MB。

        如果上面的步驟中測試出了鏡像的存在,說明假設內存為256 MB是錯誤的,實際內存為128 MB,之前的內存是根據(jù)256 MB 內存配置的,所以必須重新配置內存控制器,配置流程如圖1所示。配置內存控制器步驟如下[5]:

        1)設置DRAM控制器的狀態(tài)為paused;

        2)循環(huán)檢測內存狀態(tài)寄存器P1MEMSTAT 低兩位,確認DRAM控制器的狀態(tài)paused 狀態(tài);

        3)設置DRAM控制器的狀態(tài)為config 狀態(tài);

        4)循環(huán)讀內存狀態(tài)寄存器P1MEMSTAT 低兩位,確認DRAM控制器的狀態(tài)config 狀態(tài);

        5)根據(jù)檢測結果修改內存配置寄存器;

        6)設置DRAM控制器為運行go 狀態(tài),重新啟動內存;

        7)循環(huán)讀內存狀態(tài)寄存器P1MEMSTAT 低兩位,確認DRAM控制器的狀態(tài)為ready 狀態(tài)。

        圖1 內存控制器配置圖

        3 實現(xiàn)結果

        把自動檢測內存容量的機制應用在內存為128 MB和256 MB的OK6410 開發(fā)板,識別內存容量后,并重新配置內存控制器,系統(tǒng)上電后加載U-boot,U-boot 啟動后,內存分布如圖2、圖3所示。

        圖2 256 MB 內存空間分布圖

        圖3 128 MB 內存空間分布圖

        在圖2和圖3中,圖的左邊是U-boot 啟動后分配的內存地址,格子里面是內存區(qū)域存放的代碼,圖的右邊是各區(qū)域的代碼指針。根據(jù)圖2和圖3可以看出,對于不同容量的內存,U-boot 各段代碼代碼存放的內存區(qū)域不同,根據(jù)地址的大小和內存分配可以看出U-boot 已經檢測出內存并配置成功,U-boot相同段的內容在容量不同的內存中分配的地址不盡相同。這說明自動檢測內存容量的機制應用在容量為128 MB和256 MB 內存的OK6410 開發(fā)板是可行的,這個機制是正確的,且該機制的代碼只需要不到1 k 字節(jié)的存儲空間就實現(xiàn)了這一功能。

        4 結束語

        本文面向U-boot 設計了一種自動檢測內存容量大小的機制,并在基于S3C6410的開發(fā)板OK6410上進行實例驗證。實現(xiàn)這一機制所需要的代碼不到1k 字節(jié)的存儲空間。這一機制使一個U-boot可以支持多個不同內存大小的S3C6410 開發(fā)板,減少了開發(fā)人員的工作量。

        [1]DENX Software Engineering.Das U-Boot[EB/OL].http://en.wikipedia.org/wiki/Das_U-Boot.2013-07-22.

        [2]Mohd Anuar Mat Isa,Nur Nabila Mohamed,Habibah Hashim,et al.A lightweight and secure TFTP protocol for smart environment[C].Kota Kinabalu:Computer Applications and Industrial Electronics,2012:302-306.

        [3]周健昌,李振興.基于S3C6410的u-boot 分析與移植[J].電子設計工程,2012,17(20):53-56.

        [4]Ding X C,Liao Y G,F(xiàn)u J G,et al.Analysis of Bootloader and Transplantation of U-boot Based on S5PC100 Processor[C].Hangzhou:Intelligent Human-Machine Systems and Cybernetics.2011:61-64.

        [5]Samsung.S3C6410X user's manual Rev 1.20[EB/OL].http://www.Samsungsemi.com.2008-08-22.

        猜你喜歡
        機制內容
        內容回顧溫故知新
        科學大眾(2022年11期)2022-06-21 09:20:52
        內容回顧 溫故知新
        科學大眾(2021年21期)2022-01-18 05:53:48
        構建“不敢腐、不能腐、不想腐”機制的思考
        內容回顧溫故知新
        科學大眾(2021年17期)2021-10-14 08:34:02
        自制力是一種很好的篩選機制
        文苑(2018年21期)2018-11-09 01:23:06
        定向培養(yǎng) 還需完善安置機制
        主要內容
        臺聲(2016年2期)2016-09-16 01:06:53
        破除舊機制要分步推進
        注重機制的相互配合
        打基礎 抓機制 顯成效
        中國火炬(2014年4期)2014-07-24 14:22:19
        国产一级做a爱视频在线| 67194熟妇在线永久免费观看| 国产一区二区三区四区五区vm| 无码一区二区三区在| 日本免费影片一区二区| 丁香五月亚洲综合在线| 水蜜桃亚洲一二三四在线| 久久国产成人午夜av影院| 精品国产一区二区av麻豆不卡| 丰满少妇人妻无码| 精品一区二区三区无码免费视频| 日本免费一区二区三区在线看| 亚洲天堂线上免费av| 人妻熟妇乱又伦精品hd| 日本高清www无色夜在线视频| 中文字幕一区二区三区人妻精品| 国产激情视频高清在线免费观看 | 国产乱对白刺激视频| 无码人妻精品一区二区三区在线 | 在线观看极品裸体淫片av| 亚洲一区精品在线中文字幕| 国产成人精品一区二区三区视频| 国产a级午夜毛片| 国产精品一区二区三区女同| 无人区乱码一区二区三区| 永久免费av无码网站yy| 人妻系列无码专区久久五月天 | 宅男噜噜噜| 国产啪啪视频在线观看| 老鸭窝视频在线观看| 欧美日韩亚洲国产精品| 成人精品免费av不卡在线观看| 日本第一影院一区二区| 免费毛片a线观看| 亚洲制服无码一区二区三区| 一区二区三区在线乱码| 人妻尝试又大又粗久久| 在线观看欧美精品| 亚洲av乱码国产精品观看麻豆| 老妇高潮潮喷到猛进猛出| 亚洲精品毛片一区二区三区 |