新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 2440啟動代碼分析心得體會

        2440啟動代碼分析心得體會

        作者: 時間:2016-11-26 來源:網絡 收藏
        通過研究2440啟動代碼,發現這個啟動代碼壓根就沒有從nandflash復制代碼的功能,怪不得下載到nandflash沒現象呢!

        用偽C代碼來描述2440的正常的啟動過程。

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

        2440啟動函數()

        {

        復位函數();

        未定義模式函數()//這個是死循環

        SWI函數();//這個函數在其他文件中存在

        PAbt_Addr函數();//又是個死循環函數

        DAbt_Addr函數();//還是個死循環函數
        ......

        }

        復位函數()

        {

        if(關掉看門狗==1)

        關掉看門狗;

        Else

        不關;

        if(設置時鐘==1)

        設置好時鐘;

        Else

        不設置時鐘;

        If(初始化儲存控制器==1)

        初始化內存控制器;

        Else

        不初始化儲存控制器;

        If(初始化I/O控制寄存器==1)

        初始化I/O控制寄存器;

        Else不初始化I/O控制寄存器

        If(異常中斷向量復制到IRAM==1)

        異常中斷向量到IRAM;//IRAM為0x40000000;

        Else不復制;

        配置相應模式堆棧的大小;//最后配置的是用戶模式堆棧的大小,在用戶模式下進入main函數

        main();//調用main函數,這就是為什么單片機裸奔的時候需要死循環了。

        }

        其實在2440中main函數中不用死循環,在執行main函數完畢之后,相當于復位函數()已經執行完畢,接下來執行的是未定義函數(),由于剛才分析未定義函數是個死循環,相當于最壞的情況是,2440一直在未定義函數中停留著。當然并不希望看到這樣的情況,所以2440裸奔時,最好在main函數中構成死循環!對于51單片機來說,沒有死循環的話,這個51單片機程序會跑飛!!!

        如果想從nandflash啟動,并啟動一個系統的話,需要在C函數之前加入初始化nandflash函數以及從nandflash代碼復制到sdram的函數。如果再加一點其他的東西的話,一個小的bootloader就完成啦!




        評論


        技術專區

        關閉
        主站蜘蛛池模板: 滁州市| 青河县| 即墨市| 金堂县| 太和县| 安岳县| 阳谷县| 囊谦县| 北宁市| 西平县| 全州县| 晋宁县| 元江| 宣武区| 乌兰浩特市| 松滋市| 方城县| 青田县| 哈尔滨市| 鹿邑县| 宜章县| 扬中市| 安吉县| 政和县| 读书| 剑河县| 庆阳市| 台江县| 云霄县| 海兴县| 泰和县| 马公市| 新沂市| 武山县| 三亚市| 阆中市| 黄龙县| 密山市| 汶上县| 海宁市| 集贤县|