在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 一起學(xué)mini2440裸機(jī)開發(fā)(一)--第一個led燈點(diǎn)亮

            一起學(xué)mini2440裸機(jī)開發(fā)(一)--第一個led燈點(diǎn)亮

            作者: 時間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
            開發(fā)板:mini2440, NandFlash:K9F2G08U0B 256M大小,CPU:S3C2440A 。

            開發(fā)環(huán)境:MDK4.11

            本文引用地址:http://www.biyoush.com/article/201611/319294.htm

            仿真器:Jlink v8

            這是我用csdn發(fā)表的第一個文章,之前使用過arm-linux-gcc裸機(jī)開發(fā)mini2440,但是很多函數(shù)什么的不能直接調(diào)用(我的技術(shù)問題),準(zhǔn)備重新整理一下ARM裸機(jī),整理好之后準(zhǔn)備下一階段學(xué)習(xí)。關(guān)于軟件MDK4.11和它的注冊機(jī),我傳不上去,說是由于文件太大,又想要的直接留言要就行了。

            下面開始我們的第一個LED燈的點(diǎn)亮程序吧!

            1、新建一個項(xiàng)目工程

            雙擊MDK圖標(biāo)進(jìn)入開發(fā)環(huán)境,如下圖,

            單擊Project/New uVision Project,選擇你要創(chuàng)建文檔的位置,文檔名為test,單擊保存

            選擇CPU為Samsung/S3C2440A,單擊OK

            單擊完OK按鈕后,咱們先看一下原來的空test文件夾里多了什么文件,當(dāng)然你也可以不用看,我是看看MDK到底是默認(rèn)給咱們提供了什么方便,下圖為單擊OK后多出的文檔

            很容易看出多出來一個test工程文檔。在上一步單擊完OK后,會彈出下圖,該圖是為了讓你選擇是不是將Samsung S3C2440的啟動代碼復(fù)制添加的你的工程文檔。這段啟動代碼咱們以后分析,在這里先選擇“是”

            選擇“是”后,一個工程文檔建好了,如下圖所示。

            你看上圖,可以看到工程文檔自動添加了S3C2440.s,這就是上一步選擇“是”后自動添加的啟動代碼,咱們再看看test文件夾里多了什么文件。很容易可以看出多了三個文件,其中一個就是S3C2440.s,這個代碼很重要啊。咱們現(xiàn)在先不管他,接著下一步。

            2、新建一個文件。選擇File/New,新建一個文件。

            將該文件保存并命名為test1,注意后面要加后綴.c,單擊保存

            將test1.c文件添加到你的工程,對著Source Group1右擊,選擇“Add Files to Group "Source Group 1"...”

            選擇剛才建立的test1.c,單擊Add,該文件就被加到了工程中。

            這里不需要添加別的文件了,直接點(diǎn)擊Close就可以了。下圖可以看到test1.c已經(jīng)被加到工程中了。

            3、編輯test1.c文件。這里我們再添加別的文件,也不再使用include包含什么東西。

            test1.c的代碼如下,可以直接復(fù)制粘貼。里邊的內(nèi)容應(yīng)該可以顯示,這也是我從新浪搬家到這里的原因了,發(fā)現(xiàn)新浪的注釋代碼有時候不能顯示。


            #define rGPBCON (*(volatile unsigned long*)0x56000010)
            #define rGPBDAT (*(volatile unsigned long*)0x56000014)

            #define Led1_On ~(1<<5)
            #define Led1_Off (1<<5)

            void Led_Port_Init(void);
            void delay(int i);

            int main(void)
            {
            Led_Port_Init();
            while(1)
            {
            //Led1亮
            rGPBDAT&=Led1_On;
            delay(10000);
            //Led1滅
            rGPBDAT|=Led1_Off;
            delay(10000);
            }

            }


            void Led_Port_Init(void)
            {
            //設(shè)置GPB5為輸出端口
            rGPBCON &= ~(3<<10);
            rGPBCON |= (1<<10);
            }

            void delay(int t)
            {
            int a,b;
            for(a=0;a<=i;a++)
            for(b=0;b<=100;b++);
            }

            將上面的代碼復(fù)制粘貼完之后,注意保存。這時候還不能編譯,如果編譯,會出現(xiàn)如下圖的錯誤。

            意思是說ROM1沒有定義什么的,下面在用之前需要配置

            4、配置之前的準(zhǔn)備工作

            首先,在你MDK安裝目錄下,找到文件Ext_RAM的配置文件,如下圖是我的Ext_RAM的路徑

            將這個Ext_RAM文件復(fù)制到咱們創(chuàng)建的test工程存放的文件夾中,我的是下圖

            修改該文件的一處內(nèi)容,只修改一處哈,如下圖,

            將LOAD ObjBlinky.axf INCREMENTAL // Download program

            修改為LOAD .test.axf INCREMENTAL // Download program

            這里的.表示當(dāng)前文件夾,test是你的工程文件名,比如說你新建的工程為wangwensong,那么這里就要改為.wangwensong.axf了。

            做完準(zhǔn)備工作,下面開始進(jìn)行配置。

            在Target 1處鼠標(biāo)右擊,選擇Options for Target Target 1....

            彈出下圖,配置Target,如下圖

            配置Debug,如下圖。因?yàn)槲沂褂玫氖荍link仿真,所以選擇J-LINK/J-TRACE,那個.Ext_RAM.ini文件就是剛才我們復(fù)制修改后的文件,添加進(jìn)來就行了

            配置Utilities,如下圖

            至此配置完成,點(diǎn)擊OK,就行了。

            5、編譯

            點(diǎn)擊保存按鈕,先保存一下,再點(diǎn)擊,編譯文件。

            這樣咱們就可以仿真了。

            6、仿真

            我使用的是Jlink仿真,這里你首先要安裝好Jlink的驅(qū)動,要不然不能用。我感覺MDK的Jlink仿真就是比ADS的仿真好,用起來方便。

            首先,將Jlink與你的電腦、mini2440開發(fā)板連接好,將mini2440的開關(guān)注意撥到nor flash啟動,要不然你的jlink不工作的,打開開發(fā)板電源。

            點(diǎn)擊仿真按鈕,然后MDK會進(jìn)入仿真環(huán)境?,不好意思,出現(xiàn)了錯誤error,Error:Flash Download failed -ARM920T

            如下圖。對于這個錯誤,我表示很高興?。?!在解決它的時候我又明白了一個很重要的知識點(diǎn)!

            咱們先把他解決了吧,只需要修改一項(xiàng),那就是咱們在配置Utilities的時候?qū)⒛莻€Update Target before Debugging前面的勾去掉,如下圖

            修改完這一項(xiàng)后,你就可以再點(diǎn)擊仿真按鈕,一會兒你的板子上的燈就會一亮一滅了。

            7、總結(jié)

            到第六步,這篇文章的目的就達(dá)到了,這一步還是針對上一步中出現(xiàn)的錯誤進(jìn)一步分析。

            看一下出現(xiàn)錯誤的時候,Build Output輸出的信息,如下圖

            輸出的信息是:

            No Algorithm found for:30000000H - 30000357H

            Erase skipped!

            那么這是什么意思呢?聯(lián)系出錯提示框中的錯誤信息“Flash Downloaded flashed”,可以看出這里是MDK要找以0x30000000開頭的地址空間的Flash下載算法(algorithm),但是0x30000000開頭的空間不是Flash地址空間,而是內(nèi)存空間(SDRAM的起始地址是0x30000000),記得咱們在配置Target時,設(shè)置的地址其實(shí)就是基于內(nèi)存加載的。這樣解決方法就有了。既然咱們選擇的是基于內(nèi)存的加載方式,就應(yīng)該在配置Ultilities時,取消“Update Target before Debugging”,這個選項(xiàng)只能在Flash加載方式中使用。

            在這里說明一下,RAM(SDRAM也是其中一種)表示的是讀寫存儲器,可其中的任一存儲單元進(jìn)行讀或?qū)懖僮?,?jì)算機(jī)關(guān)閉電源后其內(nèi)的信息將不在保存,再次開機(jī)需要重新裝入,通常用來存放操作系統(tǒng),各種正在運(yùn)行的軟件、輸入和輸出數(shù)據(jù)、中間結(jié)果及與外存交換信息等,我們常說的內(nèi)存主要是指RAM。所以咱們的開發(fā)板如果斷電再重啟,程序就沒有了,解決這個的辦法是將程序從sdram中復(fù)制到nand flash中去,以后就會用到。



            評論


            技術(shù)專區(qū)

            關(guān)閉