新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TCC89x的內存分布區域設置

        TCC89x的內存分布區域設置

        作者: 時間:2016-09-12 來源:網絡 收藏

        //=====================================================================

        本文引用地址:http://www.104case.com/article/201609/304826.htm

        //TITLE:

        // TCC89x的內存分布區域設置

        //AUTHOR:

        // norains

        //DATE:

        // Friday 7-January-2011

        //Environment:

        // Visual Studio 2005

        // TCC89x Magellan V1.9.1

        //=====================================================================

        對于TCC89x而言,如何正確設置內存分布區域是一件很重要的事情。當然,如果你開發的產品和官方的EVB一致,也不會超過官方的范圍,那么你一切皆可安心,直接采用默認設置即可。但如果不是,那么你就必須要自己手動更改了。

        TCC89x的內存設置在magellan.bib文件,而該文件在BSP包Magellan的Files文件夾之下。在討論這個問題之前,我們先看看內存分配的大概領域,如圖:

        方框指的是每個范圍領域的內容,如果方框為灰色,意味著這兩個領域只有在XIP模式下才有效。而紅色的字體,對應magellan.bib文件中相應的宏,表示需要需要設置的數值。從圖中可以看出,需要設置的數值分為兩個,一個是起始地址,另一個則是大小。

        Telechips原廠的magellan.bib文件末尾給出了一種計算這些數值的方法,只不過這方法是針對從零開始的狀況,對于我們只需要修改某些數值的使用者而言,無疑顯得稍有繁瑣。其實回過頭來說,一般magellan.bib文件我們并不需要大的修改,最常見的是由于添加的組件太多,導致編譯的NK比規定的范圍要大,這時候才需要對magellan.bib文件進行修正。

        結合我們的所給的例圖,修改NK的大小很簡單。NKSTART數值維持不動,我們只是將NKLEN擴大。而NKLEN增大以后,就會影響到RAMSTART和RAMLEN的取值,而這兩個數值在原有的基礎上修改也是很簡單的事情。

        對于新的RAMSTART,其計算方法如下:

        RAMSTART(new) = NKSTART + NKLEN(new)

        新的RAMLEN,計算方式也大同小異,如下:

        RAMLEN(new) = DDRAWST - RAMSTART(new)

        這里需要注意一個問題,就是NKLEN超過33M的話,雖然可以編譯成功,但用FWDN燒錄系統的時候,會出錯,其信息如圖:

        從圖中的信息告訴我們,Kernel空間不夠,無法燒錄NK.ROM!那是不是意味著我們的NK只能少于33M呢?當然不是。不過,為了支持超過33M的大小,我們必須修改相應的代碼。

        打開./Magellan/Src/LIB/SOC/NAND_DRV/nand_drv_v7.c文件,找到NAND_HIDDEN_0_PAGESIZE宏,其源代碼如下:

        [cpp] view plaincopy#define NAND_HIDDEN_0_PAGESIZE (33/*MB*/*1024*2)

        #define NAND_HIDDEN_1_PAGESIZE (3/*MB*/*1024*2) // for LOGO

        #define NAND_HIDDEN_2_PAGESIZE (2/*MB*/*1024*2)

        #define NAND_HIDDEN_3_PAGESIZE (3/*MB*/*1024*2)

        聰明的讀者可能已經想到,如果需要NK支持更大的容量,只需要更改NAND_HIDDEN_0_PAGESIZE宏即可。原來的大小是33,你可以選擇36,甚至更多,只要能容得下你NK的大小即可。



        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 宿松县| 工布江达县| 南昌市| 大化| 蓬安县| 舒城县| 寿宁县| 慈利县| 奎屯市| 沽源县| 开平市| 静乐县| 仪征市| 密山市| 封丘县| 偃师市| 浦江县| 木兰县| 望奎县| 五寨县| 宕昌县| 威远县| 金乡县| 邯郸县| 麻阳| 资溪县| 化隆| 新田县| 教育| 修水县| 哈密市| 虎林市| 荥阳市| 大名县| 牡丹江市| 江口县| 太白县| 体育| 阜新| 安国市| 伊宁市|